산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino에 중앙 난방 연결

구성품 및 소모품

Arduino UNO
× 1
Arduino OpenTherm 실드
× 1
24V 전원 공급 장치
× 1

이 프로젝트 정보

보일러가 언제, 왜 가동되고 집에 난방이 되는지 궁금해 한 적이 있습니까? Arduino로 난방 시스템을 자동화하고 싶습니까? OpenTherm 실드는 귀하를 위해 설계되었습니다. Arduino로 OpenTherm 보일러를 모니터링하고 제어할 수 있습니다.

배경

작년에 나는 가스 난방 보일러와 벽난로 조절기를 결합하고 싶었습니다. 내 BAXI 보일러와 온도 조절 장치는 꽤 똑똑해서 자연스럽게 보일러를 확장하여 벽난로도 제어하고 싶었습니다. 나는 그렇게 할 수 있게 해주는 모든 값비싼 공식 BAXI 확장에 지쳤습니다.

그래서 온도 조절 장치와 보일러 간의 통신을 가로채서 보일러를 작동시키거나 벽난로의 열을 사용하는 알고리즘을 배치할 수 있는 OpenTherm 게이트웨이를 직접 구축했습니다. [조절기에 대해 자세히 알아보기]

비슷한 것을 원하는 사람들이 많았기 때문에 누구나 쉽게 집 난방을 제어할 수 있는 모듈인 Arduino 실드를 만들기로 결정했습니다.

방패는 무엇에 좋은가요?

<울>
  • 자신만의 Arduino 기반 보일러 만들기 기존 OpenTherm 온도 조절 장치로. 아무도 그렇게 하지 않을 가능성이 높지만 가능합니다.
  • 실드를 사용하여 나만의 Arduino 기반 온도 조절기 구축 보일러와 가정 난방을 완전히 인수하십시오. 홈 오토메이션에 적합합니다. 이 애플리케이션은 외부 5V 전원 공급 장치만 필요합니다.
  • OpenTherm 실드를 기존 보일러와 온도 조절기 사이의 라인에 배치하고 모니터 를 만듭니다. 보일러가 집을 난방하는 시기와 방법을 확인합니다. 예를 들어 난방을 무선으로 제어하기 위해 통신을 가로챌 수도 있습니다.
  • OpenTherm은 중간자(게이트웨이 ) 보일러와 온도 조절 장치 모두와 통신하는 장치. 이것이 제가 쉴드를 사용하여 OpenTherm 레귤레이터를 만든 방법입니다.
  • 사용 가능한 데이터 및 명령

    <울>
  • 실온
  • 실온 설정점
  • 난방 수온
  • 반환 수온
  • 국내 온수 온도*
  • 국내 온수 압력*
  • 국내 온수 유량*
  • 외부 온도*
  • 보일러 상태(실행 중 / 실행되지 않음 / 오류)
  • 변조 레벨
  • 배기 온도*
  • 보일러가 작동된 시간 통계
  • * 보일러에 필요한 액세서리가 장착된 경우에만 사용할 수 있습니다.

    방패 만들기

    전자 회로는 PIC 마이크로컨트롤러를 사용하는 OpenTherm 게이트웨이 프로젝트를 기반으로 합니다. Arduino에 맞게 조정하고 멋진 Arduino UNO 호환 레이아웃을 만들었습니다.

    위의 회로도 및 Gerber 파일을 사용하여 직접 방패를 만들 수 있습니다. 나는 PCBWay로 내 보드를 제조하고 있습니다. - 쉬운 방법의 PCB 프로토타입. 일주일 안에 멋진 파란색 아름다움을 만들어 배송하도록 할 수 있습니다. 블루 솔더 마스크는 기본 그린과 동일한 가격! 나는 또한 그들의 고객 서비스를 사랑합니다. 아무 문제가 없습니다. 또는 미리 포장된 DIY 키트를 주문할 수 있습니다.

    쉴드를 사용하여 온도 조절기 만들기

    첫 번째 예에서는 실드를 사용하여 맞춤형 온도 조절기를 만드는 방법을 보여줍니다. 필요한 것:

    <울>
  • OpenTherm 보일러
  • Arduino UNO, WeMos D1 또는 모든 Arduino UNO 호환 보드. 보드에 대한 유일한 요구 사항은 핀 2 및 3의 핀 인터럽트 지원입니다.
  • 5V 전원 공급 장치. 이 설정에서는 24V 전원 공급 장치가 필요하지 않습니다. 온도 조절 장치와 통신하는 경우에만 필요하기 때문입니다.
  • 위 그림과 같이 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 버스에 연결하여 보일러와 온도 조절기를 모니터링하거나 이들의 통신을 차단하는 방법을 보여줍니다. 필요한 것:

    <울>
  • OpenTherm 온도 조절기
  • 24V 500mA 전원 공급 장치
  • 위 그림과 같이 보일러와 온도 조절기 사이의 버스에 실드를 연결합니다. 이 두 장치 사이의 버스를 인터럽트하는 것을 볼 수 있습니다. 이제 명령과 응답을 온도 조절 장치에서 보일러로 전달하거나 그 반대로 전달하는 게이트웨이 소프트웨어를 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="코드">

    코드

    Arduino용 Opentherm IO 라이브러리
    https://github.com/jpraus/arduino-opentherm

    회로도


    제조공정

    1. 내 중앙 난방 보일러 모니터링
    2. 가정에 무선 센서 네트워크 구축
    3. 라즈베리 파이에 센서를 연결하여 유해 가스가 있을 때 경고합니다!
    4. Arduino 및 Raspberry Pi로 인터넷 제어 비디오 스트리밍 로봇 구축
    5. GrabCAD Print를 Stratasys 3D 프린터와 연결하는 방법
    6. 귀사의 난방유 효율성을 개선하기 위한 팁
    7. 천장 선풍기에 Alexa 제어 기능을 사용하도록 설정
    8. Arduino 스파이봇
    9. FlickMote
    10. 프로젝트에 애니메이션(선택 윤곽) 조명 추가