Wi-Fi Метео станція
Чергове радикальне оновлення моєї метеостанції відбулося.
Раніше в мене працювала метеостанція, яку я зробив на базі NETAlarm (я про неї так і не написав). Її задача була досить простою: знімати дані з датчиків атмосферного тиску, вологості і температури і відправляти на сайт. Ця метеостанція досить довго і справно працювала. Та, коли постало питання щодо її подальшого розвитку, з`ясувалося, що у мікроконтролері вже не вистачає пам`яті. Ще одна, досить прикра, особливість - метеостанція повинна одночасно знаходитись у досяжності живлення(220В), комп’ютерної мережі і дротів від датчиків, які знаходяться знадвору. Для того, щоб дотягнути мережу, доводилось використовувати комутатора. До того ж, на час оновлення програмного забезпечення, доводилося її вимикати на тривалий час.
Нова версія метеостанції

Ідея нової метеостанції стала реальною, коли з`явились доступні WiFi модулі ESP8266. За допомогою цього модуля можна підключити до WiFi мережі навіть самого простенького мікроконтролера, обвішаного різноманітними датчиками та виконуючими механізмами. Доступ до такого модуля здійснюється по IP протоколу. Використання ESP8266 розширює можливості розташування датчиків, оскільки тепер немає потреби тягнути інформаційні дроти. Залишаються тільки дроти живлення. Якщо виникає потреба використовувати декілька модулів з датчиками, розташованих на досить великій відстані один від одного, - це теж не проблема.
До того ж автоматично вирішується питання гальванічної розв`язки між датчиком та центральним пристроєм, який збирає показники датчиків. Це дуже актуально, коли постає питання захисту від блискавок та інших перешкод при розташуванні датчиків знадвору на даху будинку, тощо.
Опитування датчиків, попередній аналіз, зберігання та передачу інформації має виконувати мікрокомп’ютер (Raspberry Pi). Ціна мікрокомп’ютерів на сьогодні досить демократична і оскільки мікрокомп`ютер використовується для рішення інших побутових питань, таке технічне рішення цілком виправдане. Мікрокомп’ютер також підключається до комп’ютерної мережі за допомогою WiFi. Тобто його розташування не прив`язане до дротів метеостанції та дротів комп`ютерної мережі. Використання бездротових технологій спрощує розташування датчиків. А використання мікрокомп’ютера робить цю задачу тривіальною та дозволяє в подальшому дуже просто і без зайвих зусиль розширювати функціонал системи.
Як це працює
Модулі датчиків підключаються до WiFi мережі. При надходженні до запиту по IP на відповідний порт, надсилається відповідь. Запит може містити команди на перемикання виконуючих приладів. В нашому випадку модуль з датчиками просто надсилає дані з датчиків.Мікрокомп’ютер періодично опитує модулі датчиків, аналізує дані і виконує необхідні дії. В моєму випадку відправляє дані на сайт.
Схема модуля датчиків

P.S. В схему був добавлений кварц частотою 8 Мгц. Без кварцу схема працювала не стабільно і при перепаді температури інколи некоректно працювала з модулем ESP8266.
Прошивка
Програма для мікроконтролера написана на основі прикладу у статті WiFi модуль ESP8266При надходженні запиту (любого символу) на порт 88, надсилається відповідь у наступному форматі: P:<тиск>:T:<температура>:H:<вологість повітря>:L:<датчик освітлення>
Приклад можна скачати тут: WiFiMeteo.zip
P.S. У прошивку про всяк випадок добавлена функція перезавантаження мікроконтролера для повторної ініціалізації модулю ESP8266. Перезавантаження виконується раз на хвилину. Це не обов`язково і було зроблено, коли у схемі не було кварца і зв`язок з модулем ESP8266 інколи глючив через нестабільну частоту мікроконтролера.
Налаштування модуля датчиків та WiFi роутера
Модуль датчиків зроблений таким чином, щоб модуль ESP8266 можна було від’єднати для налаштування. Отже підключаємо ESP8266 до UART-USB перехідника і підключаємо до вашої Wi-Fi мережі (подробиці дивись у статті: WiFi модуль ESP8266). ESP8266 запам`ятає це з’єднання. Тепер вставимо ESP8266 до нашого модуля датчиків і вмикаємо. Модуль підключиться до WiFi мережі. IP адресу йому видасть WiFi роутер. Для того, щоб DHCP сервер завжди видавав одну і ту ж адресу, в налаштуваннях роутера треба "закріпити" IP адресу за MAC адресою модуля ESP8266. У різних моделях роутерів з різними прошивками це робиться по-різному. Тому, як це робити на вашому пристрої, шукайте у Інтернеті.Налаштування мікрокомп’ютера Raspberry Pi
Тепер, з любого комп’ютера можна отримати інформацію з модулю датчиків, наприклад командою:telnet <IP> <порт>
або:
wget http://<IP>:<порт>
Я використовую мікрокомп’ютер Raspberry Pi з операційною системою Raspbian. Нас цікавить, як можна отримати інформацію скриптом, розібрати її, обробити та передати далі. Приклад скрипта wifi_weather.py:
import urllib2
import time
counter=0
result=0
# Get data from WiFi meteo
while (result==0):
try:
response = urllib2.urlopen(`http://192.168.1.127:88`)
result=1
except Exception as e:
counter+=1;
if (counter > 3):
print "Oops!"
quit()
time.sleep(1)
# Parse data
html = response.read()
value = html.split(":")
s=value[1]+":"+str(int(value[3])/10)+":0:"+value[5].strip()+":"
# Send To site
response = urllib2.urlopen("http://mysite.com.ua/getdata.php?data="+s)
Дописуємо рядок у /etc/crontab : */15 * * * * root /usr/bin/python /home/pi/scripts/wifi_weather.py
Тепер скрипт буде запускатися кожні 15 хвилин.
Наведений скрипт виконує прості операції: отримання інформації, її розбір, формування http-запиту на web-сервер, відправка даних. Ви можете доопрацювати скрипта і записувати дані на мікрокомп’ютері, наприклад, у базу даних - на випадок, якщо тимчасово відсутній зв`язок з отримувачем, створити свого web-сервіса, виводити дані на дисплеї, тощо.
Безпека
У цьому простому прикладі інформацію з WiFi meteo може отримати хто завгодно у локальній бездротовій мережі. Та це не становить загрози. Замислитися про безпеку треба, коли аналогічний модуль керує пристроями. Наприклад, годує рибок чи відкриває вікно для вентиляції. Якщо не подбати про безпеку (домашній WiFi зламати не складно), тоді зловмисник зможе щось учудити. Тому слід подбати про хоч якесь шифрування даних.Успіхів.
Недавні записи
- FOC - своя реалізація векторного керування. Підбиваю підсумки 2022 року
- Конструктор регуляторів моторів. Підбиваю підсумки 2022 року.
- Чому трифазні мотори стали такими популярними?
- FOC & Polar coordinates
- Конструктор регуляторів PMSM, BLDC двигунів
- Своя бібліотека для векторного керування безколекторними моторами
- Not Allowed
- Адаптивний ПІД регулятор
- Конструктор регуляторів моторів. Структура.
- Конструктор регуляторів моторів. Анонс.
Tags
wifi bme280 lcd dht11 solar displays bldc i2c adc usart gpio books brushless raspberry-pi python nodemcu bkp ethernet web git servo rfid stm32 ssd1331 barometer piezo timer battery sms mpu-9250 flash smd soldering st-link bmp280 exti bluetooth esp8266 watchdog nvic dc-dc max1674 hih-4000 flask websocket ngnix ssd1306 gps rs-232 eb-500 html mpu-6050 usb rtc encoder pwm avr led motor mpx4115a programmator capture dma css atmega eeprom foc meteo options examples docker 3d-printer pmsm mongodb tim uart sensors remap java-script
Архіви