제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
| ||||
| ||||
| ||||
|
| ||||
| ||||
|
집을 더 똑똑하게 만들고 싶다면 아마도 월별 청구서(예:에너지, 가스 등...)부터 시작하고 싶을 것입니다. 일부에서는 지구, 지갑 및 결론에 도움이 됨이라고 말합니다. . 오픈 소스 하드웨어는 가정 환경에서 지속 가능성에 도달하는 우리의 방법입니다! 이 아이디어를 통해 MQTT를 통해 데이터를 노출하므로 모든 홈 자동화 소프트웨어와 쉽게 통합할 수 있는 간단하고 안전한 솔루션을 구축할 수 있었습니다(이 경우 Home Assistant에 통합하는 방법을 알려드립니다).
개요
전기 에너지 소비량을 측정하기 위해 Finder Energy Meter를 사용하기로 결정했습니다. Finder Energy Meter는 DIN 레일용으로 설계되었으며 우리 집의 메인 캐비닛에 완벽하게 들어맞기 때문입니다. 이 제품의 멋진 점은 RS485 Modbus가 있다는 것입니다. 인터페이스, Arduino와 정말 쉽게 대화할 수 있게 해주는 산업 표준 통신 프로토콜입니다. 실제로 Arduino는 공식 방패인 MKR485를 출시했습니다. 프로토콜을 디코딩하는 두 개의 라이브러리. 메인 보드로 Arduino MKR WiFi를 선택했습니다. 1010, MKR 폼 팩터를 공유하고 WiFi 연결이 있기 때문입니다.
설정
경고! 집 전기 시스템 취급에 대한 국가 규정을 확인하고 치명적일 수 있으므로 각별히 주의하십시오! 모르는 경우 어떻게, 전기 기술자에게 전화하세요. 첫 번째 단계는 전기 캐비닛에 미터를 설치하는 것입니다. 안전한 환경에서 작업하려면 시스템 앞에 있는 전기 단자의 전원을 끕니다 터미널 사이에 전압이 없는지 멀티미터로 다시 확인 .
그런 다음 캐비닛 내부에 에너지 미터를 놓고 메인 차단기의 라이브 및 중성선을 미터의 입력에 연결합니다. 색상 규칙을 사용하는 것을 기억하십시오(EU에서는 중성선은 파란색, 라이브는 갈색/검정색/회색). 출력은 시스템의 나머지 부분에 연결되어야 합니다.
완료? RS485 연결을 나사로 조일 때입니다! 일반적으로 전화선에 사용되는 접지가 있는 꼬인 단일 쌍 케이블을 사용합니다. 이 케이블을 사용하면 장거리(1.2km)까지 전송할 수 있습니다. 그러나 우리는 캐비닛을 빠져나오고 arduino를 접근 가능한 장소에 놓을 만큼 충분히 긴 케이블을 사용합니다.
RS485 인터페이스는 터미널 A, B 및 COM의 이름을 지정합니다.
MKR 실드는 전이중 통신도 지원하기 때문에 Y와 Z라는 두 개의 다른 터미널이 표시됩니다. 데이터시트에서 반이중 통신이 Y와 Z에서만 발생한다는 것을 알고 있기 때문에 여기에서 케이블의 다른 쪽 끝을 조이겠습니다. 터미널. COM 단자는 ISOGND에 연결해야 합니다. 우리는 반이중 연결을 사용하고 케이블링은 P2P이므로 설정과 일치하도록 MKR485 실드의 스위치를 설정해야 합니다. HALF(2를 OFF)로 설정하고 YZ(3 켜짐); 첫 번째 것은 중요하지 않습니다. 종단은 간섭을 줄이기 위해 두 데이터 단자를 연결하는 저항입니다.
이거 야. 이제 캐비닛을 닫고 소프트웨어 측면에 집중할 수 있습니다!
소프트웨어
컴퓨터를 시작하고 IDE를 엽니다. Arduino IDE 또는 Arduino Create Editor를 사용할 수 있습니다. 코드는 다음 요청을 충족합니다:
<울>Modbus는 산업용 센서 및 기계용 오픈 소스 프로토콜입니다. 아두이노가 모드버스를 말하게 하기 위해 우리는 아두이노 모드버스 라이브러리를 사용할 것입니다. 이 라이브러리는 모든 핸들러를 포장하고 모든 Modbus 장치를 매우 빠르게 연결할 수 있도록 합니다. 미터의 데이터 시트를 따라 레지스터를 읽을 것이기 때문에 기능 코드, 레지스터 주소 및 레지스터 크기와 같은 필요한 모든 정보를 단어로 찾을 수 있습니다. 그러나 더 명확하게 하기 위해 Modbus의 작동 방식을 설명하겠습니다.
Modbus 메시지는 다음과 같은 간단한 구조를 따릅니다.
<코드>01 03 04 00 16 00 02 25 C7
0x01
기기 주소 입니다.
0x03
함수 코드입니다. 데이터를 읽거나 쓸지 여부를 장치에 알려주는 *이 경우 홀딩 레지스터 읽기
0x04
바이트 수00 16의 경우 - 4바이트의 레지스터 주소를 보냅니다. (00 16) 읽고 싶은 내용을 기기에 알려줍니다.
00 02
- 레지스터의 크기 (00 02) 말로 (모든 단어의 길이는 2바이트입니다)
마지막 4바이트는 CRC 코드입니다. . 이 코드는 이전 바이트에 대한 수학 함수에서 생성되므로 메시지가 올바르게 수신되었는지 확인합니다.
Arduino에서 이 모든 것은 if
상태:
// 제작자 Alberto Perro - Officine Innesto//// 레지스터를 보유하는 모드버스 장치에서 정수 읽기float readCurrent(){ float ampere =0.; //다음 명령은 요청을 형식화하고 RS485를 통해 전송 if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0016, 2)) { //Error Handling Serial.print("failed to read voltage! "); Serial.println(ModbusRTUClient.lastError()); } else { uint16_t word1 =ModbusRTUClient.read(); // 버퍼에서 MSW 읽기 uint16_t word2 =ModbusRTUClient.read(); // 버퍼에서 LSW 읽기 int32_t milliamp =word1 <<16 | 단어2; //검색하기 위해 단어를 결합합니다. int ampere =milliamp/1000.0; //암페어로 변환 } return 암페어;}
else
에서 부분에는 응답 핸들러가 있습니다.
이 레지스터는 길이가 두 단어이므로 이진 수학으로 결합해야 합니다. 버퍼에서 단어를 읽고 부호 없는 정수 16비트 길이(2바이트 또는 워드)에 저장한 다음 부호 있는 정수 32비트 길이로 결합하여 첫 번째 단어를 왼쪽으로 비트시프트하고 또는
두 번째 단어 이상. 이 방법으로 mA 단위의 전류 측정값을 검색하고 이를 1000으로 나누면 암페어 단위의 전류가 있습니다.
이 동일한 프로세스가 우리가 읽고자 하는 모든 것에 적용됩니다.
나머지 코드는 MQTT 및 WiFi 네트워킹 처리 전용입니다.
홈 어시스턴트 통합
홈 어시스턴트에 미터를 추가하는 것은 매우 간단합니다. MQTT 브로커가 구성되어 있다고 가정하고(여기에 가이드가 있습니다), configuration.yaml 파일 아래에 새 정의를 추가하기만 하면 됩니다.
센서:- 플랫폼:mqtt 이름:"주 전압" state_topic:"에너지/주/전압" unit_of_measurement:"V"
여기에 측정 이름, 읽을 MQTT 주제 및 수량의 측정 단위를 입력해야 합니다. 파일을 저장하고 구성을 확인한 다음 Home Assistant를 다시 로드하십시오. 이제 측정값이 메인 페이지에 나타납니다.
Home Assistant는 그래프 생성을 처리하고 판독 값에 의해 트리거되는 프로세스를 자동화합니다. 이 튜토리얼은 끝났습니다. 이제 기능을 추가하고 자신의 목적에 맞게 사용자 정의하는 것은 귀하에게 달려 있습니다!
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">제조공정
구성품 및 소모품 Arduino Leonardo 기타 Arduino 장치 또는 UART 변환기가 있는 Atmega × 1 LCD 16x2 × 1 점퍼 와이어(일반) × 1 이 프로젝트 정보 소개 이 프로젝트의 아이디어는 실제로 재미와 지식의 필요성에서 태어났습니다. 이 프로젝트는 만들기 쉽고 많은 응용 프로그램이 있습니다. 예를 들어 일부 하드웨어 변수를 제어, 저장 및 표시하는 데 사용할 수 있습니다. 시작하겠습니다 먼저 LCD를 연결해야
이 Arduino 및 Matlab 자습서에서는 Matlab GUI(그래픽 사용자 인터페이스)를 사용하여 Arduino 보드를 제어하는 방법을 배웁니다. LED를 켜고 끄기 위한 두 개의 버튼과 광전지(광 종속 저항)의 아날로그 입력을 플롯하기 위한 축이 있는 Matlab GUI를 만들 것입니다. 이것은 따라하기 쉬운 단계별 비디오 자습서입니다. 또한 동영상 아래에서 이 튜토리얼에 필요한 구성요소와 동영상의 예제 소스 코드를 찾을 수 있습니다. 이 튜토리얼에 필요한 구성요소 구성요소는 아래 사이트에서 얻을 수 있습니다.