저자 : Peter Jensen
이것은 '유용한'IoT 프로젝트에서의 첫 번째 시도입니다. 나는 Arduino Uno를 잠시 동안 가지고 있었지만 깜박이는 LED 튜토리얼을 통과하는 것 외에는 실제로 사용하지 않았습니다. 그것을 사용할 시간이었습니다. 프로젝트 아이디어를 생각하고 필요할 때 필요한 정보를 찾는 것이 보람있는 것을 알았습니다. 물론, 종종 다른 사람들이 비슷한 일을했다는 것을 알게되지만 괜찮습니다. 여전히 그 과정에서 배울 것입니다.
나는 집안의 전력 소비를 측정하고 상황이 바뀌면 '클라우드'서비스에 대해보고 할 수있는 장치를 원했습니다. 조명이 켜지거나 끄기 등. 또한 상자에 디스플레이를 원했기 때문에 현재 전력 소비가 무엇인지 읽을 수있었습니다.
현재 센서를 아날로그 입력 핀에 연결하여 시작했습니다. 이와 같이:
출처 : OpenEnergyMonitor.org
교정을 위해 최대 10A를 측정 할 수있는 멀티 미터를 사용하여 3 개의 전구 램프에 전원을 공급하는 와이어에 연결했습니다. 각 전구는 개별적으로 켜지거나 끄질 수 있습니다. 소켓에 60W 전구를 사용하면 60W, 120W 및 180W에 대한 샘플을 얻을 수 있습니다.
AC 전류가 해당 와이어를 통과하여 센서의 전류를 유도하기 위해서는 전류 센서가 하나의 와이어 만 이동해야합니다.
측정 된 전류는 현재 센서가 감싸는 전력선을 통과하는 전류입니다.
Arduino 스케치에서 loop() 함수에서 수행하는 모든 것이 analogRead() 호출하고 결과를 메모리 버퍼에 저장하는 것이면 한주기 (60Hz -16.7ms) 동안 약 100 개의 샘플을 얻을 수 있습니다. Arduino는 16MHz에서 운영됩니다. 입력의 루트 평균 제곱 (RMS) 값을 상당히 정확하게 계산하기에 충분해야합니다.
RMS 값이 필요한 이유는 무엇입니까? 아날로그 입력 핀의 입력은 하중/부담 저항에 대한 전압 강하입니다. 이 전압 강하는 측정시 측정되는 전력선을 통과하는 전류와 직접 비례합니다.
전류 및 전압이 시간이 지남에 따라 다양 할 때, 전력은 I 및 V의 RMS 값을 사용하여 60Hz 부비동 파의 기간에 대한 평균 전력으로 계산됩니다.
V rms 구성 요소는 Power Company에 의해 120v로 일정하게 유지되므로 흥미로운 것은 i rms 값입니다. Arduino 아날로그-디지털 컨버터는 10 비트이며 회로는 부비동 입력의 중간 지점이 2.5V로 설계되어 ~ 511의 판독 값을 초래해야합니다. 판독 값이 제 시간에 동일하게 간격을두면 i rms 값을 다음과 같이 계산할 수 있습니다.
여기서 n은 60Hz 부비동 파의 전체 기간을 커버하는 데 필요한 샘플의 수, k는 멀티 미터로 실제 i rms 값을 측정 한 후 결정되는 교정 상수이며, v i는 analogRead() 에 대한 호출에 의해 반환 된 값입니다.
수학에 대한 자세한 정보는 여기에서 찾을 수 있습니다 : Wikipedia
<todo : 테스트 측정 설정 사진 삽입>
Amazon Prime에서 필요한 모든 것을 샀습니다. 당신이 주요 가입자가 아니라면 조금 더 지불하게 될 것입니다. 일부 품목의 경우 하나 이상의 유닛을 구입하는 것이 합리적이었습니다. 단지 몇 달러 이상이었고, 볶을 경우 여분의 여분을 갖는 것이 항상 좋습니다. 또한, 두 번째 (또는 세 번째) 장치를 만들고 싶다면 이미 필요한 것을 이미 가지고 있습니다.
| 목 | 총 비용 | 단가 |
|---|---|---|
| Arduino Pro Mini (3 팩) | $ 11 | $ 4 |
| 3.3V/5V 전원 공급 장치 모듈 (5 팩) | $ 9 | $ 2 |
| ESP8266 ESP-01 (4 팩) | $ 14 | $ 4 |
| 2X SCT-013-000 비 침습적 AC 전류 센서 | $ 26 | $ 13 |
| 16x2 LCD 디스플레이 모듈 | $ 6 | $ 6 |
| 110VAC-> 9V 어댑터 | $ 6 | $ 6 |
| 10pcs 4x6cm 더블 사이드 프로토 타입 PCB | $ 7 | $ 1 |
| 10pcs 3.5mm 암 PCB 장착 잭 | $ 8 | $ 2 |
| 기타 : 커패시터, 저항기, 버튼, 와이어 | ~ $ 2 | $ 2 |
| 총 | $ 89 | $ 40 |
다음은 모든 것을 함께 연결하는 방법입니다.
Digikey Scheme-IT 소프트웨어를 사용하여 위의 하드웨어 배선 다이어그램을 만듭니다. 브라우저에서 실행됩니다!
지적해야 할 몇 가지 사항이 있습니다.
2 라인 LCD에 표시된 정보는 버튼을 누르면이 정보를 통해 순환합니다.
'고급 옵션'이 표시되면 긴 프레스가 감지되면 이러한 추가 화면이 회전에 포함됩니다.
ON/OFF 상태를 변경하거나 데이터를 재설정하려면 버튼의 긴 누르기를 수행해야합니다.
총 전력 | 라인 파워 |
라인 전류 | 마지막 에너지 사용 마지막 재설정 이후 |
로컬 IP 주소 | 고급 옵션을 위해 긴 누르기 |
Wi -Fi 전송 ON/OFF | 각 샘플 값을 전송합니다 |
진행중인 전송 |
브라우저 디스플레이/인터페이스는 현재 다음과 같습니다.

검은 색과 빨간색 선은 집으로 들어오는 두 단계 각각에서 얻은 힘을 나타냅니다. 상단의 왼쪽 및 오른쪽 화살표 버튼은 전날 또는 다음 날로 이동합니다. 오늘날의 날이라면 새로운 데이터가 가져올 것입니다. 'Refresh'를 치를 필요가 없습니다!
다음은 이것에서 파생 될 수있는 것들입니다.
'블랙'대기 소비는 대략 125W이고 '빨간색'은 25W입니다. 이것은 대기 모드에있는 모든 장치 (TV, 마이크로파, 컴퓨터, 웹캠 등)의 기생 드로우입니다.
'검은 색'라인의 위/아래 사각형 패턴은 냉장고의 압축기입니다.
나는 오전 6 시경에 일어 났고 조명과 TV를 켜기 시작했다. TV는 '검은 색'라인에서 나와 있습니다.
'빨간색'의 스파이크는 내 온수기의 CO2 팬입니다. 온수기는 약 10 분 동안 작동합니다
온수기 스파이크 후 작은 스파이크는 차고 문 개구부입니다.
나는 OpenScad를 사용하여 상자를 디자인했습니다. .Scad 파일과 렌더링 된 .Stl 파일은이 리포지어에 있습니다. 디스플레이, 버튼 및 다양한 커넥터의 컷 아웃이있는 상자는 다음과 같습니다.

벗겨진 전원 공급 장치
USB의 전원 공급 장치에 의존하면 아날로그 핀 판독 값이 약간 떨어졌습니다. 또한 ESP-01에 전력을 공급하기 위해서는 3.3V 공급이 필요했습니다. Arduino Pro Mini에는 UNO와 마찬가지로 3.3V 전압 조절기가 없습니다. 매우 저렴한 전원 공급 장치 모듈은이 법안에 적합하며 안정적인 판독 값을 보장하기에 충분한 전력을 제공하는 것으로 보입니다.
ESP8266 ESP-01의 보드 비율
Arduino와 ESP-01 모듈 사이의 직렬 통신을 위해 Arduino에 두 개의 디지털 I/O 핀을 사용해야했습니다. 소프트웨어를 Arduino로 플래시하려면 일반 TX/RX 핀이 필요합니다. Digital I/O 핀과 함께 소프트웨어 모듈을 사용할 때는 기본 115200 보드 속도에서 ESP-01에 대한 신뢰할 수있는 통신 링크를 얻을 수 없었습니다. Arduino와 ESP-01 사이의 데이터 교환량은 상당히 제한되어 있기 때문에 Baud 요금을 안전한 9600 Baud로 설정했습니다.
Arduino의 기억이 떨어집니다
Arduino는 2K 분량의 RAM 메모리 만 있습니다. RAM은 모든 글로벌 데이터, 스택 데이터 및 상수 문자열 데이터에 사용됩니다. ATMEL 328 GCC 컴파일러는 모든 데드 코드와 데이터를 제거하는 데 좋은 작업을 수행하며 실제로 소량의 RAM에서 1000 개 이상의 라인 C ++ 프로그램을 실행할 수 있다는 사실에 놀랐습니다. 그래도 적합하게하려면 약간의 충격이 필요합니다.
new 연산자를 사용하여 개체를 할당하지 마십시오.String 객체 사용을 피하십시오. 최고보기 | 전원 공급 장치 커넥터 |
CT 커넥터 | ESP8266의 안테나 부분 |
하단보기 | Arduino가없는 하단보기 |
Arduino 및 ESP8266이없는 하단보기 | ![]() |
버튼과 LCD가 상단에 연결되었습니다 | ![]() |
PCB 밑면 | 뚜껑이있는 상자 |
here's some code
테이블은 다음과 같습니다.
| 1 | 2 | | | | | adadf | adfadf |