Персональная метеостанция (Arduino + ESP8266 + Thingspeak)
Компоненты и расходные материалы
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 5 | |||
| × | 1 |
Необходимые инструменты и машины
| ||||
![]() |
| |||
![]() |
| |||
| ||||
|
Приложения и онлайн-сервисы
![]() |
| |||
![]() |
|
Об этом проекте
Введение:создание персональной метеостанции
Сидя в своей комнате, вы начинаете потеть или чувствовать озноб; Вы задаетесь вопросом, какой будет температура в вашей комнате? или какая будет влажность? Это случилось со мной некоторое время назад.
Это привело к созданию персональной метеостанции, которая отслеживает температуру, влажность, давление и интенсивность освещения в вашей комнате и загружает их на частный канал на сайте thingspeak.com.
Давайте начнем.
Шаг 1. Быстрое видео
Вот небольшое видео, в котором все резюмируется за 5 минут.
Нажмите здесь, чтобы посмотреть на YouTube.
Шаг 2. Необходимые компоненты электроники для персональной метеостанции
Описание: Мы будем использовать DHT11 для измерения влажности, BMP180 для измерения температуры и давления и светозависимый резистор (LDR), чтобы получить приблизительное представление об интенсивности света. Arduino nano будет собирать данные с этих датчиков и отправлять их на ESP8266 для загрузки на ваш частный канал на сайте thingspeak.com. Мы будем питать нашу Arduino nano от настенного адаптера 12В-2А, а датчики и ESP8266 будут получать понижающее напряжение от понижающего преобразователя на основе LM2596.
Список компонентов:
- Датчик давления и температуры BMP180,
- датчик влажности DHT11,
- Светозависимый резистор (LDR),
- Модуль Wi-Fi ESP8266 (готовая прошивка),
- Arduino nano,
- 2 резистора - 51 кОм и 4,7 кОм,
- понижающий преобразователь LM2596
- разъем постоянного тока,
- Переключить и
- Сетевой адаптер 12В-2А.


Шаг 3. Инструменты и дополнительные предметы, необходимые для персональной метеостанции
Описание: Мы будем использовать инструмент для зачистки проводов для зачистки проводов, файл для сглаживания порезов / отверстий на корпусе, клеевой пистолет для размещения компонентов внутри корпуса, отвертку для закрытия крышки корпуса и паяльник с припоем для сборки схемы на печатной плате общего назначения (GCB). . Пластиковая коробка 4x4x2 дюйма действует как ограждение. Для правильной сборки на GCB нам также понадобятся штекер и гнездовая полоса Berg вместе с гнездовыми разъемами.
Список инструментов:
- Инструмент для зачистки проводов
- Файл,
- Клеевой пистолет,
- Отвертка и
- Припой и припойная проволока.
Список дополнительных элементов:
- Пластиковая коробка 4x4x2 дюйма (я использовал этот размер, любые соседние размеры подойдут),
- Печатная плата общего назначения,
- мужской и женский айсберг и
- розетки.

Шаг 4. Требования к программному обеспечению
Описание:Чтобы увидеть значение данных датчиков, нам понадобится частный канал на сайте thingspeak.com. Нам понадобится Arduino IDE, чтобы написать код arduino для arduino nano. (Я предполагаю, что у вас есть ПК / ноутбук и Wi-Fi с доступом в Интернет)
Список требований к программному обеспечению:
- Частный канал на Thingspeak.com и
- Arduino IDE (желательно последняя версия).
Вы можете скачать последнюю версию Arduino IDE с arduino.cc. Теперь давайте создадим частный канал на сайте thingspeak.com.
Шаг 5. Создание частного канала на сайте Thingspeak.com
Чтобы сделать частный канал на сайте thingspeak.com, выполните следующие действия:
- Откройте свой веб-браузер, перейдите на сайт thingspeak.com и щелкните вкладку «Зарегистрироваться» в правом верхнем углу (изображение №1).
- Введите данные и нажмите "Создать учетную запись" (изображение № 2).
- Теперь перейдите на вкладку "Новый канал" (изображение №3).
- Снова заполните данные для канала и активируйте 4 поля (так как мы будем отправлять 4 значения датчика), прокрутите вниз и нажмите вкладку «Сохранить канал» (изображение №4 / 5).
- На этой странице перейдите на вкладку "Ключи API" и запишите свой "Ключ API записи".






Вот и все, теперь у вас есть личный канал ThingSpeak.
Теперь давайте соберем всю электронику вместе.
Шаг 6. Схема персональной метеостанции
Прилагаю изображение схемы персональной метеостанции. Для этого прилагаю также файл фритзинга. Подключения довольно простые.
- BMP180 подключается к порту I2C на Arduino nano.
- LDR соединен как делитель напряжения с резистором 51 кОм, а переход соединен с выводом A1 Arduino nano.
- Вывод данных DHT11 подтягивается высоко с помощью резистора 4,7 кОм и подключается к выводу A0 Arduino nano.
- TX и RX ESP8266 подключаются к D10 и D11 Arduino nano соответственно. CH_PD ESP8266 подключается к шине 3,3 В.
- Отрегулируйте выход модуля LM2596 на 3,3 В, поворачивая потенциометр на этом модуле. Подключите выход этого модуля к Vcc и Gnd BMP180, DHT11, LDR и Vcc и Gnd ESP8266 соответственно.
- Вход модуля LM2596 осуществляется от настенного адаптера 12 В-2 А, который также подключается к Vin и Gnd Arduino nano.

Нам нужно собрать эту схему на плате общего назначения. Давайте сделаем это.
Шаг 7. Сборка схемы на плате общего назначения (GCB)
Аппаратные средства и дополнительные элементы из шага 3 теперь в деле.
- Используйте полоску женского айсберга для размещения Arduino nano и ESP8288 на GCB,
- Используйте припой и припой для электрического соединения их с платой.
- Используйте гнездовые соединители для увеличения досягаемости всех датчиков и модуля LM2596, поскольку они будут прилипать к крышке и стенке корпуса.
- Используйте мужскую полоску айсберга, чтобы сделать точки соединения для женских удлинителей, сделанных выше,
- Реализуйте принципиальную схему на GCB, используя провода (зачистите их с помощью инструмента для зачистки проводов) или направляющую из расплавленной припойной проволоки и, наконец,
- Проверьте сортировку перед включением цепи с помощью мультиметра.




Теперь, когда все оборудование размещено на GCB, давайте посмотрим на код.
Шаг 8. Код
Код для персональной метеостанции довольно прост. Я правильно прокомментировал код для удобства переноса. Перед записью кода позаботьтесь о следующем.
- Убедитесь, что установлены все библиотеки,
- Замените дефис на SSID вашей точки доступа (маршрутизатора Wi-Fi) в строке 14 кода,
- Замените дефис на ПАРОЛЬ вашей сети Wi-Fi в строке 15 кода,
- Замените дефисы ключом API записи частного канала ThingSpeak в строке 17 и
- При программировании Arduino nano убедитесь, что источник питания 12 В постоянного тока ВЫКЛЮЧЕН.
Вот ссылка на github (Personal Weather Station) для загрузки кода и библиотек, которые я использовал.
Теперь, когда у нас есть оборудование и программное обеспечение, остается только упаковка.
Шаг 9. Подготовка корпуса
Теперь нам нужно проделать отверстия разной формы и размера на коробке 4х4х2 дюйма. Нам нужно проделать отверстия для разъема постоянного тока и включить любую желаемую стену корпуса. Еще нам нужно проделать отверстия для датчиков на крышке корпуса.
Я приложил изображение, показывающее размеры отверстий, которые нам нужно проделать в корпусе.

Используйте горячее лезвие, чтобы разрезать пластик.
Воспользуйтесь напильником, чтобы сгладить отверстия.




Теперь ваш корпус готов к размещению вашей схемы.
Шаг 10. Закройте крышку
Поместите собранный GCB внутрь корпуса.
Поместите выключатель и разъем постоянного тока в отверстия на стене; датчики на отверстиях крышки. Завершите их положение и используйте клеевой пистолет, чтобы зафиксировать их. Наконец, используйте отвертку, чтобы закрыть крышку.
Вот и все, ваша персональная метеостанция. Включите источник питания и наблюдайте за температурой, влажностью, давлением и интенсивностью света в вашей комнате из любой точки мира через свой смартфон / ПК / ноутбук / планшет на частном канале ThingSpeak.
Это все для этого проекта. Комментарий в случае сомнений. Спасибо за чтение.
Код
- Код
Код Arduino
#include#include #include #include #define DEBUG 0 // измените значение на 1, чтобы включить отладку с использованием последовательного монитора #define dht_pin A0 // определение контакта A0 для датчика DHT # define lightSensor A1 // определение контакта A1 как входного контакта для делителя напряжения LDR dht DHT; Adafruit_BMP085 bmp; SoftwareSerial esp8266Module (10, 11); // RX, TXString network ="----"; // ваша точка доступа SSIDString password ="-------------"; // пароль вашей точки доступа Wi-Fi # define IP "184.106.153.149" // IP-адрес thingspeak.comString GET ="GET / update? key =----------------"; // заменить на ваш канал keyvoid setup () {if (DEBUG) {Serial.begin (9600); // Установка аппаратной скорости последовательной передачи данных на 9600} esp8266Module.begin (9600); // Установка скорости передачи программной последовательной передачи на 9600 if (! Bmp.begin ()) {if (DEBUG) {Serial.println ("Не удалось найти действующий датчик BMP085, проверьте проводку!"); } в то время как (1) {}} задержка (2000);} недействительный цикл () {setupEsp8266 (); DHT.read11 (dht_pin); двойной увлажнитель =DHT. влажность; двойной bmp_temp =bmp.readTemperature (); двойной bmp_pressure =bmp.readPressure (); int lightIntensity =analogRead (световой датчик); updateTemp (Строка (bmp_temp), Строка (lightIntensity), Строка (bmp_pressure), Строка (humi)); delay (30000);} // ------------------------------------------ ------------------------- // После настройки функции esp8266, поместите его в созданную станцию и // подключитесь к точке доступа Wi-Fi. //- -------------------------------------------------- --------------- void setupEsp8266 () {if (DEBUG) {Serial.println ("Сброс esp8266"); } esp8266Module.flush (); esp8266Module.println (F ("AT + RST")); задержка (7000); if (esp8266Module.find ("OK")) {if (DEBUG) {Serial.println ("Найдено OK"); Serial.println («Смена режима espmode»); } esp8266Module.flush (); changeMode (); задержка (5000); esp8266Module.flush (); connectToWiFi (); } else {if (DEBUG) {Serial.println («ОК не найдено»); }}} // --------------------------------------------- ---------------------- // Следующая функция устанавливает esp8266 в режим станции // ----------------- -------------------------------------------------- bool changeMode () {esp8266Module.println (F ("AT + CWMODE =1")); if (esp8266Module.find ("OK")) {if (DEBUG) {Serial.println ("Режим изменен"); } вернуть истину; } else if (esp8266Module.find ("БЕЗ ИЗМЕНЕНИЙ")) {if (DEBUG) {Serial.println ("Уже в режиме 1"); } вернуть истину; } else {if (DEBUG) {Serial.println ("Ошибка при изменении режима"); } return false; }} // ---------------------------------------------- --------------------- // Следующая функция подключает esp8266 к точке доступа Wi-Fi // ----------------- -------------------------------------------------- bool connectToWiFi () {if (DEBUG) {Serial.println ("внутри connectToWiFi"); } Строка cmd =F ("AT + CWJAP =\" "); cmd + =network; cmd + =F (" \ ", \" "); cmd + =пароль; cmd + =F (" \ ""); esp8266Module.println (cmd); задержка (15000); if (esp8266Module.find ("OK")) {if (DEBUG) {Serial.println ("Подключен к точке доступа"); } вернуть истину; } else {if (DEBUG) {Serial.println («Не удалось подключиться к точке доступа»); } return false; }} // ---------------------------------------------- --------------------- // Следующая функция отправляет данные датчика на thingspeak.com //---------------- -------------------------------------------------- -void updateTemp (String Voltage1, String Voltage2, String Voltage3, String Voltage4) {String cmd ="AT + CIPSTART =\" TCP \ ", \" "; cmd + =IP; cmd + =" \ ", 80"; esp8266Module.println (cmd); задержка (5000); if (esp8266Module.find ("Ошибка")) {if (DEBUG) {Serial.println ("ОШИБКА при отправке"); } возвращение; } cmd =GET + "&field1 =" + напряжение1 + "&field2 =" + напряжение2 + "&field3 =" + напряжение3 + "&field4 =" + напряжение4 + "\ r \ n"; esp8266Module.print ("AT + CIPSEND ="); esp8266Module.println (cmd.length ()); задержка (15000); если (esp8266Module.find (">")) {esp8266Module.print (cmd); if (DEBUG) {Serial.println ("Данные отправлены"); }} else {esp8266Module.println ("AT + CIPCLOSE"); if (DEBUG) {Serial.println ("Соединение закрыто"); }}}
Библиотека и код для персональной метеостанции
Ознакомьтесь с Readmehttps://github.com/jayraj4021/Personal-Weather-Station-14Схема

Производственный процесс
- Метеостанция на основе Raspberry Pi
- Метеостанция Raspberry Pi 2
- Метеостанция Raspberry Pi
- Присоединяйтесь к IOT со своей метеостанцией - CWOP
- Weather Monitor
- Метеостанция V 2.0
- Умные жалюзи
- MKR1000 для ThingSpeak.com
- Портативная метеостанция Arduino (AWS) за 10 долларов
- eDOT - точные часы и метеостанция на базе Arduino