Оглавление:

Датчик температуры домашней сети: 7 шагов
Датчик температуры домашней сети: 7 шагов

Видео: Датчик температуры домашней сети: 7 шагов

Видео: Датчик температуры домашней сети: 7 шагов
Видео: Датчики температуры для ectoControl. Основные возможности и отличия. 2024, Ноябрь
Anonim
Датчик температуры домашней сети
Датчик температуры домашней сети

Что нужно знать, чтобы сделать этот проект:

Вы должны знать о: - некоторых навыках работы с электроникой (пайка)

- 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

Arduino - Часть ESP12
Arduino - Часть ESP12
Arduino - Часть ESP12
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)

Тестирование ESP в качестве клиента протокола сетевого времени (NTP)
Тестирование ESP в качестве клиента протокола сетевого времени (NTP)
Тестирование ESP в качестве клиента протокола сетевого времени (NTP)
Тестирование ESP в качестве клиента протокола сетевого времени (NTP)

В среде Arduino IDE в разделе Файл, Примеры, ESP8266WiFi загрузите NTPClient.

Требуются незначительные изменения, чтобы заставить его работать; вам необходимо ввести свой SSID и пароль вашей сети Wi-Fi.

Теперь установите перемычку, замыкающую GPIO0 на GND.

Выключите и снова включите ESP и загрузите эскиз в ESP.

После компиляции должна начаться загрузка в ESP. Синий светодиод на ESP будет быстро мигать во время загрузки кода.

Я заметил, что мне пришлось немного поиграться с перезапуском IDE, перезапуском ESP, прежде чем загрузка будет работать.

Перед тем, как начать компиляцию / загрузку скетча, обязательно закройте последовательную консоль (= последовательный монитор), потому что это помешает вам выполнить загрузку.

После успешной загрузки вы можете повторно открыть монитор последовательного порта, чтобы увидеть, как ESP эффективно получает время из Интернета.

Отлично, вы запрограммировали свой ESP, подключились к Wi-Fi и получили время из Интернета.

Следующим шагом мы протестируем DHT22.

Шаг 5: Тестирование датчика DHT22

Тестирование датчика DHT22
Тестирование датчика 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, возможно, вы не захотите этого делать.)

Используя очень простую веб-страницу, вы можете просматривать графики из любого браузера в вашей домашней сети.

Рекомендуемые: