Оглавление:

Регистратор температуры WiFi (с ESP8266): 11 шагов (с изображениями)
Регистратор температуры WiFi (с ESP8266): 11 шагов (с изображениями)

Видео: Регистратор температуры WiFi (с ESP8266): 11 шагов (с изображениями)

Видео: Регистратор температуры WiFi (с ESP8266): 11 шагов (с изображениями)
Видео: как передать температуру на сервер по WIFI и сохранить температуру в базе данных. 2024, Ноябрь
Anonim
Image
Image
Материалы
Материалы

Здравствуйте, рад вас здесь видеть. Я надеюсь, что в этом руководстве вы найдете полезную информацию. Не стесняйтесь присылать мне предложения, вопросы … Вот некоторые основные данные и краткий обзор проекта. Для мобильных пользователей: видео. Дайте мне знать, что вы думаете о проекте, в разделе комментариев, спасибо. Я недавно купил плату NodeMcu (на основе esp8266), просто чтобы попробовать, так что это не очень продвинутый проект. Но он работает, и это то, что мне нужно, так что все в порядке. Основная функция этого регистратора данных - собирать температуру и сохранять ее на сервере. Это позволяет пользователям проверять данные и графики в режиме онлайн, даже если они не находятся в одном месте с регистратором (например, для метеостанции). Еще одна полезная функция - это обновление OTA, включенное в код, которое позволяет пользователю легко обновлять и настраивать программное обеспечение. Я проанализирую два датчика и связанный с ними метод сбора данных, чтобы сбалансировать все «за» и «против».

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

Шаг 1: материалы

Материалы
Материалы
Материалы
Материалы
Материалы
Материалы

Это минимальный проект с небольшим количеством внешних компонентов, поэтому список спецификаций будет очень коротким. Однако посмотрим, какой материал запрашивается:

  • NodeMcu V3 (или любой совместимый микропроцессор ESP8266);
  • Светодиод RGB (общий анод);
  • Резисторы для светодиода (1х10 Ом, 1х22 Ом, 1х100 Ом, 1х10кОм)
  • DS18B20 (термометр Maxim Integrated);
  • LM35 (термометр Texas Instrument);
  • Внешний аккумулятор (опция);
  • Кабель;
  • Коннектор (чтобы сделать его более «продвинутым»);
  • Коробка (необязательно, опять же, чтобы сделать ее более «продвинутой»);
  • Держатель светодиода (опция);

Примечание. Как я уже сказал, вам нужно выбрать один из двух методов. Если вы выберете термометр LM35, вам понадобится еще несколько компонентов:

  • Attiny45 / 85;
  • Программист AVR (или Arduino как ISP);
  • Резистор (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Разъем для ленты 2,54 мм (опционально)
  • Диод (2x1N914)
  • Перфорированная или печатная плата;

Шаг 2: выбор датчика

Выбор датчика
Выбор датчика

Выбор датчика может быть трудным шагом: сегодня существует множество датчиков (TI предлагает 144 различных элемента), как аналоговых, так и цифровых с разным температурным диапазоном, точностью и корпусом. Аналоговые датчики (46 деталей доступны от TI): Плюсы:

  • Регистратор данных можно легко изменить с температуры на другую величину (напряжение, ток,…);
  • Может быть немного дешевле;
  • Прост в использовании, так как не требует специальной библиотеки;

Минусы:

  • Требуется АЦП (который может повлиять на точность измерения) и другие внешние компоненты. Поскольку esp8266 имеет только один АЦП (и не совсем точный), я бы посоветовал использовать внешний.
  • Требуется специальный кабель с шумоподавлением, поскольку любое наведенное напряжение может изменить результат.

Немного подумав, я решил использовать LM35, линейный датчик с масштабным коэффициентом + 10 мВ / ° C с точностью 0,5 ° C и очень низким током (около 60 мкА) с рабочим напряжением от 4 В до 30 В. Более подробно предлагаю посмотреть даташит: LM35.

Цифровые датчики (настоятельно рекомендуется) Плюсы:

Практически любые необходимые внешние компоненты;

Интегрированный АЦП

Минусы:

Библиотека запроса или программное обеспечение для декодирования цифрового сигнала (I2C, SPI, Serial, One Wire,…);

Более дорогой;

Я выбрал DS18B20, потому что нашел на Amazon набор из 5 водонепроницаемых датчиков и потому, что он широко документирован в Интернете. Основная особенность - измерение 9-12 бит, шина 1-Wire, напряжение питания от 3,0 до 5,5, точность 0,5 ° C. Опять же, для более подробной информации вот техническое описание: DS18B20.

Шаг 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Давайте проанализируем, как я реализовал внешний АЦП и другие функции термометра LM35. Нашел кабель с тремя проводами, один с экраном и два без. Я решил добавить развязывающий конденсатор для стабилизации напряжения питания рядом с датчиком. Чтобы преобразовать аналоговую температуру в цифровую, я использовал микропроцессор Attiny85 в корпусе dip8 (снова для получения дополнительной информации см. Техническое описание: attiny85). Для нас важнее всего 10-битный АЦП (не самый лучший, но для меня достаточно точный). Для связи с Esp8266 я решил использовать последовательную связь, имея в виду, что esp8266 работает с напряжением 3,3 В, а attiny85 - с напряжением 5 В (поскольку от него требуется питание датчика). Для этого я использовал простой делитель напряжения (см. Схему). Чтобы считывать отрицательную температуру, нам нужно добавить некоторые внешние компоненты (резистор 2x1N914 и 1x18k), так как я не хочу использовать отрицательный источник питания. Вот код: репозиторий TinyADC. Примечание: для компиляции этого кода вам необходимо установить attiny в ide (вставьте это в option: https://drazzy.com/package_drazzy.com_index.json), если вы не знаете, как это сделать, просто выполните поиск в Google или загрузите файл.hex напрямую.

Шаг 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Я купил эти датчики на Amazon (5 стоят около 10 евро). Он поставляется с крышкой из нержавеющей стали и кабелем длиной 1 м. Этот датчик может возвращать 9–12-битные данные о температуре. Многие датчики могут быть подключены к одному и тому же контакту, поскольку все они имеют уникальный идентификатор. Чтобы подключить DS18B20 к esp8266, вы можете просто следовать схеме (второе фото). Поскольку я решил, что у моего регистратора должно быть три зонда, мне пришлось различать, какой из них есть. Поэтому я решил дать им цвет, связанный с помощью программного обеспечения, на их адрес. Я использовал термоусадочную трубку (третье фото).

Шаг 5: Код ESP8266

Код ESP8266
Код ESP8266
Код ESP8266
Код ESP8266

Поскольку я новичок в этом мире, я решил использовать множество библиотек. Как сказано во введении, основными характеристиками являются:

  • Обновление OTA: вам не нужно подключать esp8266 к компьютеру каждый раз, когда вам нужно загрузить код (это нужно делать только в первый раз);
  • Диспетчер беспроводной связи, при изменении беспроводной сети повторно загружать скетч не нужно. Вы можете просто заново настроить параметры сети при подключении к точке доступа esp8266;
  • Передача данных Thingspeak;
  • Поддерживаются как LM35, так и DS18B20;
  • Простой пользовательский интерфейс (светодиодный индикатор RGB указывает на некоторую полезную информацию);

Пожалуйста, извините меня, потому что мое программное обеспечение не самое лучшее и не очень хорошо организовано. Перед загрузкой на устройство вам необходимо изменить некоторые параметры, чтобы код соответствовал вашей настройке. Здесь вы можете скачать программное обеспечение. Обычная конфигурация LM35 и DS18B20. Для обновления OTA необходимо изменить определение пина, токен, номер канала, пользователя и пароль. Линия с 15 по 23.

#define red YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char * host = "выбрать адрес хоста"; // на самом деле не нужно, вы можете оставить esp8266-webupdate const char * update_path = "/ firmware"; // изменить адрес для обновления ex: 192.168.1.5/firmware const char * update_username = "YOURUSERHERE"; const char * update_password = "ВАШ ПАРОЛЬ; длинное беззнаковое myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Шаг 6: ESP8266 Код: Пользователь LM35

Вам необходимо подключить плату attiny к esp8266, для питания блока ADC используйте вывод VU и вывод G. Вам нужно выбрать, какой вывод вы хотите использовать для последовательной связи (чтобы аппаратный последовательный порт оставался свободным для целей отладки). Должен быть выбран вывод Tx, но на самом деле он не используется. (Строка 27). SoftwareSerial mySerial (RXPIN, TXPIN); Сверху нужно добавить: #define LM35USER

Шаг 7: ESP8266 Код: DS18B20 Пользователь

В качестве первой операции вам необходимо определить адрес устройства для каждого датчика. Скомпилируйте и запрограммируйте этот код на esp и посмотрите последовательно результаты. Код можно найти здесь (поиск по этому заголовку на странице: «Прочитать отдельные внутренние адреса DS18B20»). Подключите только один датчик для получения адреса, результаты должны быть примерно такими (здесь случайное число! Как пример): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Затем вам нужно изменить мой код в разделе " Конфигурация для DS18B20 "(строки 31-36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (от 9 до 12) #define delayDallas READINTERVAL // (в миллисекундах, минимум 15 с или 15000 мс) DeviceAddress blueSensor = {0x17D 0x11 0x11 0x12}; // ИЗМЕНИТЬ АДРЕС DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ИЗМЕНИТЬ АДРЕС DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ИЗМЕНИТЬ СВОЙ АДРЕС Вверху нужно добавить: #define DSUSER

Шаг 8: Маленькая хитрость с ESP8266

ESP8266 Маленькая хитрость
ESP8266 Маленькая хитрость

После небольшого тестирования я обнаружил, что если вы подключите esp8266 без программирования, он не запустит код, пока вы не нажмете сброс один раз. Чтобы решить эту проблему, после небольшого исследования я обнаружил, что вам нужно добавить подтягивающий резистор от 3,3 В до D3. Это укажет процессору загрузить код из флэш-памяти. С помощью этого метода D3 можно напрямую использовать для ввода данных для датчиков DS18B20.

Шаг 9: Первое включение

Первая операция
Первая операция
Первая операция
Первая операция

Если вы правильно загрузили код, но никогда не используете библиотеку менеджера Wi-Fi, пора настроить подключение к Wi-Fi. Подождите, пока светодиод RGB мигает быстрее, чем раньше, затем найдите на своем мобильном телефоне или ПК сеть Wi-Fi под названием «AutoConnectAp» и подключитесь. После подключения откройте веб-браузер и введите 192.168.4.1, вы найдете графический интерфейс менеджера Wi-Fi (см. Фотографии) и нажмите «Настроить Wi-Fi». Подождите, пока esp8266 выполнит поиск сетей Wi-Fi, и выберите нужную. Вставьте пароль и нажмите «сохранить». Esp8266 перезапустится (на этот раз не беспокойтесь о светодиоде RGB, потому что он будет выводить некоторую случайную информацию) и подключится к сети.

Шаг 10: Заключение

Заключение
Заключение
Заключение
Заключение
Заключение
Заключение
Заключение
Заключение

В конце концов, вот график, снятый регистратором данных в действии при регистрации температуры в морозильной камере. Оранжевым цветом обозначен DS18B20, а синим - LM35 и его схема. Вы можете увидеть самую большую разницу в точности от цифрового датчика к аналоговому (с моей бедной «схемой АЦП»), который дает некоторые нефизические данные. Подводя итог, если вы хотите построить этот регистратор, я предлагаю использовать цифровой датчик температуры DS18B20, поскольку он легче читать и почти «подключи и работай», он более стабилен и точен, он работает при 3,3 В и требует только один контакт для множества датчиков. Спасибо за внимание, я надеюсь, что этот проект подходит вам и вам нашел полезную информацию. А тем, кто хочет это осознать, я хочу, чтобы я дал всю необходимую информацию. Если не смогла задать все вопросы, с удовольствием отвечу на все вопросы. Так как я не говорю по-английски, если что-то не так или непонятно, дайте мне знать. Если вам понравился этот проект, проголосуйте за него в конкурсах и / или оставьте комментарий ☺. Это побудит меня продолжать обновлять и публиковать новое содержимое. Спасибо.

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