제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
보일러가 언제, 왜 가동되고 집에 난방이 되는지 궁금해 한 적이 있습니까? Arduino로 난방 시스템을 자동화하고 싶습니까? OpenTherm 실드는 귀하를 위해 설계되었습니다. Arduino로 OpenTherm 보일러를 모니터링하고 제어할 수 있습니다.
배경
작년에 나는 가스 난방 보일러와 벽난로 조절기를 결합하고 싶었습니다. 내 BAXI 보일러와 온도 조절 장치는 꽤 똑똑해서 자연스럽게 보일러를 확장하여 벽난로도 제어하고 싶었습니다. 나는 그렇게 할 수 있게 해주는 모든 값비싼 공식 BAXI 확장에 지쳤습니다.
그래서 온도 조절 장치와 보일러 간의 통신을 가로채서 보일러를 작동시키거나 벽난로의 열을 사용하는 알고리즘을 배치할 수 있는 OpenTherm 게이트웨이를 직접 구축했습니다. [조절기에 대해 자세히 알아보기]
비슷한 것을 원하는 사람들이 많았기 때문에 누구나 쉽게 집 난방을 제어할 수 있는 모듈인 Arduino 실드를 만들기로 결정했습니다.
방패는 무엇에 좋은가요? <울>
사용 가능한 데이터 및 명령 <울>
* 보일러에 필요한 액세서리가 장착된 경우에만 사용할 수 있습니다.
방패 만들기
전자 회로는 PIC 마이크로컨트롤러를 사용하는 OpenTherm 게이트웨이 프로젝트를 기반으로 합니다. Arduino에 맞게 조정하고 멋진 Arduino UNO 호환 레이아웃을 만들었습니다.
위의 회로도 및 Gerber 파일을 사용하여 직접 방패를 만들 수 있습니다. 나는 PCBWay로 내 보드를 제조하고 있습니다. - 쉬운 방법의 PCB 프로토타입. 일주일 안에 멋진 파란색 아름다움을 만들어 배송하도록 할 수 있습니다. 블루 솔더 마스크는 기본 그린과 동일한 가격! 나는 또한 그들의 고객 서비스를 사랑합니다. 아무 문제가 없습니다. 또는 미리 포장된 DIY 키트를 주문할 수 있습니다.
쉴드를 사용하여 온도 조절기 만들기
첫 번째 예에서는 실드를 사용하여 맞춤형 온도 조절기를 만드는 방법을 보여줍니다. 필요한 것:
<울>위 그림과 같이 Arduino OpenTherm 실드에 보일러를 연결하고 Arduino에 실드를 부착하면 프로그래밍을 시작할 수 있습니다. Arduino OpenTherm IO 라이브러리에는 보일러와 통신하는 방법을 보여주는 다음 예제가 포함되어 있습니다.
void loop() { if (OPENTHERM::isIdle()) { message.type =OT_MSGTYPE_READ_DATA; message.id =OT_MSGID_SLAVE_CONFIG; 메시지.값HB =0; 메시지.값LB =0; Serial.print("-> "); OPENTHERM::printToSerial(메시지); 직렬.println(); OPENTHERM::보내기(BOILER_OUT, 메시지); // 보일러에 메시지 보내기 } else if (OPENTHERM::isSent()) { OPENTHERM::listen(BOILER_IN, 800); // 보일러가 응답할 때까지 기다립니다. } else if (OPENTHERM::getMessage(message)) { // 보일러가 OPENTHERM::stop(); Serial.print("<- "); OPENTHERM::printToSerial(메시지); 직렬.println(); 직렬.println(); 지연(100); // 다음 통신 전 최소 지연 } else if (OPENTHERM::isError()) { OPENTHERM::stop(); Serial.println("<- 타임아웃"); 직렬.println(); }}
먼저 OPENTHERM::isIdle을 사용하여 보류 중인 명령이 없는지 확인합니다. . 그렇지 않은 경우 다음을 보낼 수 있습니다. 이 예에서는 슬레이브 구성 플래그를 요청합니다. 명령이 성공적으로 전송되면 OPENTHERM::listen을 사용하여 보일러의 응답 수신을 시작해야 합니다. 전화. OPENTHERM::getMessage 메소드 슬레이브에서 응답이 보류 중이고 문제가 발생하거나 시간 초과가 발생하는 즉시 true를 반환합니다. 메서드 OPENTHERM::isError true를 반환합니다. 라이브러리에는 프로토콜에서 디코딩된 데이터가 포함된 OpenTherm 메시지 구조가 포함되어 있으므로 형식에 대해 전혀 신경 쓸 필요가 없습니다. 잘 문서화되어 있는 소스 코드를 확인하십시오. 모든 유형의 메시지는 상수에 나열되어 있거나 OpenTherm 설명서를 확인할 수 있습니다.
struct OpenthermData { 바이트 유형; 바이트 ID; 바이트 값HB; 바이트 값LB; 플로트 f88(); 무효 f88(부동 값); uint16_t u16(); 무효 u16(uint16_t 값); int16_t s16(); 무효 s16(int16_t 값);}
쉴드를 사용하여 모니터, 게이트웨이 또는 레귤레이터 생성
두 번째 예에서는 중간자(man-in-the-middle) 장치를 OpenTherm 버스에 연결하여 보일러와 온도 조절기를 모니터링하거나 이들의 통신을 차단하는 방법을 보여줍니다. 필요한 것:
<울>
위 그림과 같이 보일러와 온도 조절기 사이의 버스에 실드를 연결합니다. 이 두 장치 사이의 버스를 인터럽트하는 것을 볼 수 있습니다. 이제 명령과 응답을 온도 조절 장치에서 보일러로 전달하거나 그 반대로 전달하는 게이트웨이 소프트웨어를 Arduino에 업로드하지 않으면 통신이 끊어집니다. 다시 한 번 Arduino OpenTherm IO 라이브러리에 훌륭한 예가 있습니다.
void 루프() { if (모드 ==MODE_LISTEN_MASTER) { if (OPENTHERM::isSent() || OPENTHERM::isIdle() || OPENTHERM::isError()) { OPENTHERM::listen( 온도 조절기_IN); } else if (OPENTHERM::getMessage(message)) { Serial.print("-> "); OPENTHERM::printToSerial(메시지); 직렬.println(); OPENTHERM::보내기(BOILER_OUT, 메시지); // 보일러 모드로 메시지 전달 =MODE_LISTEN_SLAVE; } } else if (모드 ==MODE_LISTEN_SLAVE) { if (OPENTHERM::isSent()) { OPENTHERM::listen(BOILER_IN, 800); // 응답은 800ms 후에 다시 보내야 합니다. } else if (OPENTHERM::getMessage(message)) { Serial.print("<- "); OPENTHERM::printToSerial(메시지); 직렬.println(); 직렬.println(); OPENTHERM::send(THERMOSTAT_OUT, 메시지); // 온도 조절기 모드로 다시 메시지 보내기 =MODE_LISTEN_MASTER; } else if (OPENTHERM::isError()) { 모드 =MODE_LISTEN_MASTER; Serial.println("<- 타임아웃"); 직렬.println(); } }}
게이트웨이는 단순히 온도 조절기 명령을 수신하기 시작합니다. 요청이 감지되면 구문 분석하여 보일러로 전달합니다. 게이트웨이는 이제 보일러 응답을 대신 수신하기 시작합니다. 800ms 게이트웨이에서 수신된 응답이 있으면 응답을 온도 조절기로 다시 전달합니다. 온도 조절 장치와 보일러는 둘 다 그들 사이에 추가 요소가 있다는 것을 결코 알지 못할 것입니다. 보시다시피 메시지를 캡처하고 메시지에서 유용한 정보(상태, 온도, 압력, 통계 등)를 읽을 수 있는 고유한 코드를 작성할 수 있는 여지가 많습니다. 원하지 않는 요청이나 응답을 무시하거나 무시할 수도 있습니다.
보시다시피 스마트 난방 시스템과 통신하고 더 똑똑하게 만드는 것은 정말 쉽습니다. 다음 기사에서는 OpenTherm 레귤레이터에서 이 하드웨어의 보다 실용적인 사용법을 보여드리겠습니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">제조공정
로봇이나 장난감 자동차를 설계하려는 경우 모터에 대한 지식이 가장 중요합니다. 이러한 모터를 제어하는 매우 비용 효율적이고 쉬운 방법은 L293D 드라이버 모터 실드를 사용하는 것입니다. 더 나은 방법은 Arduino와 같은 마이크로 컨트롤러와 인터페이스에서 사용하는 것입니다. 그 중에서도 L293D 모터 드라이버는 동종 칩셋 중 가장 인기 있는 칩셋 중 하나입니다. 더욱이 서보, 스테퍼 및 DC 모터와 같은 전자 제품의 다양한 응용 분야에 적합합니다. 그러나 그것의 중요한 속성은 두 개의 독립적인 DC 모터에서 방향과 속도
프로토타입을 빠르게 구축할 수 있는 방법을 찾고 계십니까? 아니면 새로운 프로젝트를 시도할 개발 보드를 찾고 계십니까? 그렇다면 STM32 Nucleo 개발 보드가 필요합니다. SMT32 Nucleo는 개발자를 위한 여러 확장 기능, 저전력 소비 및 기타 기능을 제공합니다. 그러나 STM32 Nucleo는 어떻게 작동합니까? 이 기사에서는 STM32 Nucleo, Arduino IDE와 함께 사용하는 방법 등에 대한 모든 것을 배울 것입니다. 시작합니다! STM32 Nucleo 보드란 무엇입니까? STM32 보드 핀아웃