Автор: Питер Дженсен
Это моя первая попытка «полезного» проекта IoT. У меня некоторое время был arduino uno, но на самом деле не использовал его ни для чего, кроме как пройти мигающий руководство. Пришло время заставить его использовать. Я нахожу полезным придумывать идею проекта, а затем искать необходимую вам информацию, когда вам это нужно. Конечно, часто вы обнаруживаете, что другие сделали что -то подобное, но это нормально, вы все равно учитесь на процессе.
Я хотел, чтобы устройство измеряло энергопотребление в моем доме, и оно сообщило об этом на «облачный» сервис, когда все изменилось; Огни включается/выключен и т. Д. Кроме того, я хотел дисплей на коробке, чтобы я мог прочитать, каково текущее энергопотребление.
Я начал с подключения тока датчиков к аналоговому входному штифту; так:
Источник: openerergymonitor.org
Для калибровки я использовал мультиметр, который был способен измерять до 10А, и подключил его к проводе, который питал лампу с тремя лампами. Каждую из луковиц можно включить и выключать индивидуально. С 60 Вт ламп в розетках я мог получить образцы для 60 Вт, 120 Вт и 180 Вт.
Обратите внимание, что датчик тока должен проходить только один провод, чтобы ток переменного тока проходил через этот провод, чтобы вызвать ток в датчике.
Измеренный ток - это ток, который проходит через линию электроэнергии, которую обертывает датчик тока.
Если все, что вы делаете в функции loop() в вашем эскизе Arduino, это вызов analogRead() и сохранить результат в буфере памяти, вы сможете получить около 100 образцов в течение одного цикла (60 Гц - 16,7 мс). Ардуно работает на 16 МГц. Этого должно быть достаточно, чтобы вычислить значение в среднеквадратичном (RMS) входе довольно точно.
Зачем вам значение среднеквадратичного значения? Вход на аналоговый входной штифт - это падение напряжения на резисторе нагрузки/бремени. Это падение напряжения прямо пропорционально тем, что ток проходит через линию электропередачи, измеряемая во время измерения.
Когда ток и напряжение различаются с течением времени, мощность вычисляется как средняя мощность в течение периода волны синуса 60 Гц, используя среднеквадратичные значения I и V:
Компонент V RMS постоянно поддерживается энергетической компанией в 120 В, поэтому интересным является значение I RMS . Аналог-цифровые преобразователи Arduino составляют 10-битные, а схема разработана таким образом, чтобы средняя точка входа пазухи составляет 2,5 В, что должно привести к чтению ~ 511. Если показания одинаково расставлены во времени, значение I RMS может быть рассчитано как:
где n - это количество образцов, которые требуются для покрытия полного периода 60 Гц синусовой волны, k - это калибровочная константа, которая будет определена после измерения фактических значений I RMS с помощью мультиметра, а V I - значения, возвращаемые вызовы для analogRead()
Больше информации о математике можно найти здесь: Википедия
<Todo: вставьте изображение настройки измерения теста>
Я купил все, что мне нужно, на Amazon Prime. Если вы не основной подписчик, вы можете заплатить немного больше. Для некоторых предметов имело смысл купить более одного устройства, так как это было всего на несколько долларов больше, и всегда приятно иметь запасной на случай, если вы обжаритесь. Кроме того, если вы хотите сделать второе (или третье) блок, у вас уже есть то, что вам нужно.
| Элемент | Общая стоимость | Единица стоимость |
|---|---|---|
| Arduino Pro mini (3-й пакет) | 11 долларов | 4 доллара |
| 3,3 В/5 В модуль питания (5 упаковка) | 9 долларов | 2 доллара |
| ESP8266 ESP-01 (4 упаковка) | $ 14 | 4 доллара |
| 2x SCT-013-000 неинвазивный датчик тока переменного тока | $ 26 | 13 долларов |
| 16x2 модуль дисплея 16x2 | 6 долларов | 6 долларов |
| 110VAC-> 9 В адаптер | 6 долларов | 6 долларов |
| 10pcs 4x6 см двойной прототип PCB | 7 долларов | $ 1 |
| 10шт 3,5 мм женские печатные платы | 8 долларов | 2 доллара |
| Разное: конденсатор, резисторы, кнопка, провода | ~ 2 доллара | 2 доллара |
| Общий | 89 долларов | 40 долларов |
Вот как я все сложил вместе:
Я использовал программное обеспечение Digikey Scheam-It для создания аппаратной схемы подключения выше. Он работает в браузере!
Есть несколько вещей, которые нужно указать:
Информация, показанная на ДНК -циклических циклах 2 линии через эту информацию, когда нажата кнопка:
Если длинная нажавка обнаруживается, когда показаны «расширенные параметры», эти дополнительные экраны включены в вращение:
Чтобы изменить состояние включения/выключения или сбросить данные, необходимо выполнить долгое нажатие на кнопку.
Общая мощность | Линейная сила |
Линия ток | Общее использование энергии с момента последнего сброса |
Локальный IP -адрес | Long Press for Advanced Options |
Wi -Fi передача включения/выключения | Передавать каждое значение выборки |
Передача в процессе |
Дисплей/интерфейс браузера в настоящее время выглядит так:

Черные и красные линии представляют мощность, извлеченную из каждой из двух фаз, входящих в дом. Кнопки стрелка влево и правый сверху перейдут на предыдущий день или на следующий день. Если вы на сегодняшний день, будут извлечены новые данные. Не нужно нажимать «Обновление»!
Вот некоторые из вещей, которые можно получить из этого:
Потребление «черного» отстаивания составляет примерно 125 Вт, а «красный» - 25 Вт. Это паразитный рисунок всех устройств, которые находятся в режиме ожидания (телевидение, микроволновая печь, компьютеры, веб -камеры и т. Д.)
Квадратный рисунок вверх/вниз на линии «черный» - это компрессор в холодильнике, включенном и выключена.
Я проснулся около 6 утра и начал включать свет и телевизор. Телевизор рисует из линии «черного».
Спайк в «красном» - мой вентилятор CO2 на моем водонагревателе. Водонагреватель работает около 10 минут
Меньший всплеск после всплеска водонагревателя - открытие двери гаража.
Я использовал OpenScad для разработки коробки. Файл .Scad и файлы. Коробка с вырезами для дисплея, кнопки и различных разъемов выглядит так:

Плохим источником питания
Опираясь на источник питания от USB, вызвал некоторую шелухость в аналоговых показаниях PIN -кода. Кроме того, для того, чтобы поставлять питание в ESP-01, мне потребовалось поставка 3,3 В. Arduino Pro Mini не имеет регулятора напряжения 3,3 В, как это делает ООН. Очень недорогой модуль питания соответствует счету и, похоже, обеспечивает достаточно стабильную питание для обеспечения стабильных показаний.
Скорость бодского уровня ESP8266 ESP-01
Мне пришлось использовать пару цифровых контактов ввода-вывода на Arduino для последовательной связи между Arduino и модулем ESP-01. Регулярные контакты TX/RX необходимы для мигания программного обеспечения на Arduino. При использовании программного модуля с цифровыми выводами ввода-вывода не было возможно получить надежную связь по связям с ESP-01 по уровне 115200-таковой скорости. Поскольку объем обмена данными между Arduino и ESP-01 довольно ограничен, я установил ставку бода на безопасное 9600 бод.
Заканчивается памятью на Arduino
У Arduino есть только 2 тыс. Память памяти. ОЗУ используется для всех глобальных данных, данных стека и даже постоянных строковых данных. Компилятор ATMEL 328 GCC выполняет хорошую работу, устраняя все мертвые код и данные, и я довольно удивлен, что вы действительно можете запустить программу C ++ 1000+ в этом небольшом количестве оперативной памяти. Потребуется некоторый погрузчик, чтобы сделать его подходящим, хотя.
new оператора для распределения объектов:String объектов: Верхний вид | Разъемы питания |
КТ разъемы | Антенна часть ESP8266 |
Взгляд внизу | Вид на дно без ардуино |
Вид внизу без Arduino и ESP8266 | ![]() |
Кнопка и ЖК -дисплей, прикрепленные к верхней части | ![]() |
Печата нижняя сторона | Коробка с крышкой |
here's some code
Вот таблица:
| 1 | 2 | | | | | adadf | adfadf |