Оглавление:
- Шаг 1. Отправляйтесь за покупками
- Шаг 2: настройка и фон
- Шаг 3: Arduino - часть ESP12
- Шаг 4. Тестирование ESP в качестве клиента протокола сетевого времени (NTP)
- Шаг 5: Тестирование датчика DHT22
- Шаг 6. Собираем вместе…
- Шаг 7. Серверная сторона вещей
Видео: Датчик температуры домашней сети: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Что нужно знать, чтобы сделать этот проект:
Вы должны знать о: - некоторых навыках работы с электроникой (пайка)
- Linux
- Arduino IDE
(вам потребуется обновить дополнительные платы в IDE:
- обновление / программирование платы ESP через Arduino IDE.
(в сети есть несколько хороших руководств)
Это можно сделать с помощью Arduino Uno или FTDI (переходник с USB на последовательный).
Я использовал свой Uno, потому что у меня не было ни последовательного порта на моем ПК, ни FTDI.
Шаг 1. Отправляйтесь за покупками
Что вам нужно для этого?
Для цифрового датчика температуры и влажности:
- Либо макет, либо альтернатива, например, прототип печатной платы, припой, паяльник…
- какой-то провод
- две перемычки
- резистор 10кОм
- ESP12F (другие модели тоже могут работать…)
- DHT22 (немного дороже DHT11, но точнее)
- 3 аккумуляторные батареи AA и батарейный отсек
- маленькая пластиковая коробочка для вашего проекта
- На более позднем этапе я планирую добавить HT7333 с двумя конденсаторами по 10 мкФ между аккумулятором и ESP.
для стабилизации входного напряжения (VCC) до рекомендуемых 3,3 В, а также для защиты ESP от перенапряжения.
По сетевой части:
- Ваша домашняя сеть Wi-Fi
По Серверной части:
- Любая система на базе Linux (всегда включена!)
Я использовал Raspberry Pi (который я также использую в качестве сервера для своих уличных IP-камер).
- компилятор gcc для компиляции вашего серверного кода
- пакет rrdtool для хранения данных и создания графиков
- apache (или другой веб-сервер)
Ваш любимый ПК или ноутбук с Arduino IDE на нем.
Шаг 2: настройка и фон
В этой версии подключенного Wi-Fi - не говоря уже о IOT - датчик температуры и влажности я использовал ESP12F, DHT22 и 3 батарейный отсек AA с перезаряжаемыми батареями.
Каждые 20 минут ESP снимает измерения с DHT22 и отправляет их на сервер (Raspberry Pi) через UDP в моей домашней сети Wi-Fi. После отправки результатов измерений ESP переходит в глубокий сон. Это означает, что только часы реального времени модуля остаются под напряжением, что приводит к невероятной экономии энергии. Примерно на 5 секунд модулю требуется около 100 мА, затем в течение 20 минут глубокого сна всего 150 мкА.
Я не хотел использовать какой-либо интернет-сервис, потому что у меня есть Raspberry Pi, который все равно всегда включен, и таким образом я имел удовольствие написать и серверную часть.
На сервере (Raspberry Pi с Raspbian) я написал простой прослушиватель UDP (сервер), который сохраняет значения в простом RRD. (База данных Round Robin с использованием RRDtool Тобиаса Оетикера.)
Преимущество RRDtool в том, что вы создаете свою базу данных один раз, а ее размер остается прежним. Кроме того, вам не нужно, чтобы сервер базы данных (например, mySQLd) работал в фоновом режиме. RRDtool дает вам инструменты для создания базы данных и генерации графиков.
Мой сервер периодически создает графики и отображает все на очень простой странице http. Я могу просмотреть свои показания в простом браузере, подключившись к веб-серверу Apache2 на Raspberry Pi!
Наконец, у меня не было FTDI (USB to Serial), поэтому я использовал свой Arduino UNO. Вам нужно подключить TX и RX, а также GND ESP и UNO. (Я знаю, ваш инстинкт может сказать вам скрестить RX и TX … тоже пробовал, не работает.)
Я не выполнял преобразование уровня (UNO: High = 5V, но ESP - это, по сути, устройство на 3,3 В … На рынке есть несколько хороших FTDI, где вы даже можете выбрать высокий уровень, равный 5 или 3,3 В.
Моя схема питается от 3-х аккумуляторных батарей AA - фактически 3 х 1,2 В. На более позднем этапе я намерен поместить HT7333 между аккумуляторной батареей и схемой для безопасности; Вновь заряженные батареи могут иметь напряжение более 1,2 В, а питание ESP должно быть мин. 3 В и макс. 3,6 В. Кроме того, если я решу - в момент слабости - вставить щелочные батарейки (3 х 1,5 В = 4,5 В), мой ESP не сгорит!
Я также рассматривал возможность использования солнечной панели 10 см x 10 см, но это не стоило хлопот. Выполняя 3 измерения в час (в основном 3 раза по 5 секунд при максимальном токе 100 мА, а в остальное время при 100 мкА), я надеюсь обеспечить питание своей схемы в течение 1 года от одних и тех же аккумуляторных батарей.
Шаг 3: Arduino - часть ESP12
Я делал этот проект в несколько этапов.
Есть несколько ссылок, которые помогут вам импортировать ESP12 (также известный как ESP8266) в Arduino IDE. (Мне пришлось использовать версию 2.3.0 вместо последней из-за ошибки, которая, возможно, уже была решена…)
Я начал с подключения ESP через мой Arduino UNO (используется только как мост между моим ПК через USB и последовательный порт) к последовательному интерфейсу ESP. Есть отдельные инструкции, объясняющие это.
В моем законченном проекте я оставил провода для подключения к последовательному порту на случай, если мне когда-нибудь понадобится устранить неполадки.
Затем вам нужно подключить ESP12 следующим образом:
Штифты ESP…
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Первоначально я попытался запитать свой ESP от 3,3 В на UNO, но я быстро перешел к питанию моего ESP с помощью настольного источника питания, но вы также можете использовать свой аккумулятор.
GPIO0 Я подключил его перемычкой к GND, чтобы разрешить перепрошивку (= программирование) ESP.
Первый тест: оставьте перемычку открытой и запустите последовательный монитор в Arduino IDE (на скорости 115200 бод!).
Выключите и снова включите ESP, вы должны увидеть несколько символов мусора, а затем сообщение вроде:
Готовность Ai-Thinker Technology Co. Ltd
В этом режиме ESP работает как старомодный модем. Вам нужно использовать AT-команды.
Попробуйте следующие команды:
AT + RST
и следующие две команды
AT + CWMODE = 3
Ok
AT + CWLAP
Это должно дать вам список всех сетей Wi-Fi в этом районе.
Если это сработает, вы готовы к следующему шагу.
Шаг 4. Тестирование ESP в качестве клиента протокола сетевого времени (NTP)
В среде Arduino IDE в разделе Файл, Примеры, ESP8266WiFi загрузите NTPClient.
Требуются незначительные изменения, чтобы заставить его работать; вам необходимо ввести свой SSID и пароль вашей сети Wi-Fi.
Теперь установите перемычку, замыкающую GPIO0 на GND.
Выключите и снова включите ESP и загрузите эскиз в ESP.
После компиляции должна начаться загрузка в ESP. Синий светодиод на ESP будет быстро мигать во время загрузки кода.
Я заметил, что мне пришлось немного поиграться с перезапуском IDE, перезапуском ESP, прежде чем загрузка будет работать.
Перед тем, как начать компиляцию / загрузку скетча, обязательно закройте последовательную консоль (= последовательный монитор), потому что это помешает вам выполнить загрузку.
После успешной загрузки вы можете повторно открыть монитор последовательного порта, чтобы увидеть, как ESP эффективно получает время из Интернета.
Отлично, вы запрограммировали свой ESP, подключились к Wi-Fi и получили время из Интернета.
Следующим шагом мы протестируем DHT22.
Шаг 5: Тестирование датчика DHT22
Теперь требуется дополнительная проводка.
Контакты DHT… Подключите контакт 1 (слева) датчика к VCC (3,3 В)
Подключите контакт 2 ESP GPIO5 (DHTPIN на скетче)
Подключите контакт 4 (справа) датчика к ЗАЗЕМЛЕНИЮ.
Подключите резистор 10 кОм от контакта 2 (данные) к контакту 1 (питание) датчика.
Как и в случае с тестом NTP, найдите эскиз DHTtester и настройте его следующим образом:
#define DHTPIN 5 // мы выбрали GPIO5 для подключения к датчику # define DHTTYPE DHT22 // поскольку мы используем DHT22, но этот код / библиотека также подходит для DHT11
Снова закройте монитор последовательного порта, выключите и снова включите ESP, скомпилируйте и запрограммируйте ESP.
Если все пойдет хорошо, вы должны увидеть, как измерения появятся на серийном мониторе.
С сенсором можно немного поиграться. Если вы подышите на него, вы увидите, что влажность повышается.
Если у вас настольная лампа (не светодиодная), вы можете посветить на датчик, чтобы немного нагреть его.
Большой! Две большие части датчика теперь работают.
На следующем этапе я прокомментирую окончательный код.
Шаг 6. Собираем вместе…
Опять же, дополнительная проводка… это сделано для того, чтобы DeepSleep стал возможен.
Помните, DeepSleep - невероятная функция для устройств IoT.
Однако, если ваш датчик жестко подключен к DeepSleep, может быть сложно перепрограммировать ESP, поэтому мы собираемся установить еще одно соединение перемычки между
GPIO16-RST.
Да, это ДОЛЖНО быть GPIO16, потому что это GPIO, который жестко запрограммирован, чтобы разбудить устройство, когда часы реального времени отключаются после DeepSleep!
Во время тестирования вы можете выбрать 15-секундный DeepSleep.
Когда я занимался отладкой, я переставлял перемычку на GPIO0, чтобы я мог прошить свою программу.
По завершении загрузки я переставил перемычку на GPIO16, чтобы DeepSleep работал.
Код ESP называется TnHclient.c.
Вам необходимо изменить свой SSID, пароль и IP-адрес вашего сервера.
Есть дополнительные строки кода, которые вы можете использовать для устранения неполадок или тестирования вашей настройки.
Шаг 7. Серверная сторона вещей
Распространенное заблуждение, что UDP ненадежен, а TCP…
Это так же глупо, как сказать, что молоток полезнее отвертки. Это просто разные очень полезные инструменты, и у них обоих есть свое применение.
Кстати, без UDP Интернет не работал бы … DNS основан на UDP.
Итак, я выбрал UDP, потому что он очень легкий, простой и быстрый.
Я склонен думать, что мой Wi-Fi очень надежен, поэтому клиент отправит не более 3 пакетов UDP, если подтверждение "ОК!" не получил.
C-код для TnHserver находится в файле TnHServer.c.
В коде есть несколько комментариев, объясняющих это.
Нам понадобятся дополнительные инструменты на сервере: rrdtool, apache и, возможно, tcpdump.
Чтобы установить rrdtool на Raspbian, вы можете просто установить пакет следующим образом: apt-get install rrdtool
Если вам нужно отладить сетевой трафик, пригодится tcpdump apt-get install tcpdump
Мне нужен веб-сервер, чтобы иметь возможность использовать браузер для просмотра графиков: apt-get install apache2
Я использовал этот инструмент: https://rrdwizard.appspot.com/index.php, чтобы получить команду для создания базы данных Round Robin. Вам нужно запустить это только один раз (если у вас все получится правильно с первого раза).
rrdtool create TnHdatabase.rrd --start now-10s
- шаг '1200'
'DS: Температура: ИЗМЕРИТЕЛЬ: 1200: -20,5: 45,5'
'DS: Влажность: ИЗМЕРИТЕЛЬ: 1200: 0: 100.0'
'RRA: СРЕДНИЙ: 0,5: 1: 720'
'RRA: AVERAGE: 0,5: 3: 960'
«RRA: AVERAGE: 0,5: 18: 1600»
Наконец, я использую запись crontab для перезапуска TnHserver каждый день в полночь. Я запускаю TnHserver как обычный пользователь (т.е. НЕ root) в качестве меры безопасности.
0 0 * * * / usr / bin / pkill TnHserver; / home / user / bin / TnHserver> / dev / null 2> & 1
Вы можете проверить, что TnHserver запущен, выполнив
$ ps -elf | grep TnHserver
и вы можете убедиться, что он прослушивает пакеты на порту 7777, выполнив
$ netstat -anu
Активные интернет-соединения (серверы и установленные)
Proto Recv-Q Send-Q Локальный адрес Состояние внешнего адреса
UDP 0 0 0.0.0.0:7777 0.0.0.0:*
Наконец, CreateTnH_Graphs.sh.txt - это пример сценария для создания графиков. (Я создаю сценарии как root, возможно, вы не захотите этого делать.)
Используя очень простую веб-страницу, вы можете просматривать графики из любого браузера в вашей домашней сети.
Рекомендуемые:
Датчик температуры и освещенности: 8 шагов
Датчик температуры и освещенности: эта инструкция предназначена для базового датчика температуры и освещенности. Вот об этом
Датчик / датчик температуры двигателя с беспроводным датчиком для классических автомобилей: 7 шагов
Датчик / датчик температуры двигателя с беспроводным датчиком для классических автомобилей: я сделал этот датчик для своего любимого Çipitak. Автомобиль fiat 126 с 2-цилиндровым двигателем с воздушным охлаждением под задним капотом. У ipitak нет датчика температуры, показывающего, насколько горячий двигатель, поэтому я подумал, что датчик будет полезен. Также хотел, чтобы датчик был проводным
ESP8266 NodeMCU Access Point (AP) для веб-сервера с датчиком температуры DT11 и печатью температуры и влажности в браузере: 5 шагов
ESP8266 NodeMCU Access Point (AP) для веб-сервера с датчиком температуры DT11 и печатью температуры и влажности в браузере: Привет, ребята, в большинстве проектов мы используем ESP8266, а в большинстве проектов мы используем ESP8266 в качестве веб-сервера, чтобы данные могли быть доступны на любое устройство через Wi-Fi, получив доступ к веб-серверу, размещенному на ESP8266, но единственная проблема в том, что нам нужен рабочий маршрутизатор для
Дверной датчик с питанием от аккумулятора, интеграция с домашней автоматикой, Wi-Fi и ESP-NOW: 5 шагов (с изображениями)
Дверной датчик с питанием от аккумулятора с интеграцией домашней автоматизации, Wi-Fi и ESP-NOW: в этой инструкции я покажу вам, как я сделал дверной датчик с питанием от аккумулятора с интеграцией домашней автоматизации. Я видел и другие хорошие датчики и системы сигнализации, но хотел сделать сам. Мои цели: датчик, который обнаруживает и сообщает о неисправности
Arduino для проводной домашней сети помощников: 5 шагов
Arduino для проводной домашней сети помощника: компоненты Wi-Fi, такие как различные Sonoff, Tasmota и ESP8266, очень просты в настройке и использовании, но часто все не так просто, как кажется. В промышленных / бизнес-средах беспроводная автоматизация не так распространена. Беспроводные компоненты менее надежны