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 зламати не складно), тоді зловмисник зможе щось учудити. Тому слід подбати про хоч якесь шифрування даних.Успіхів.
Недавні записи
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
- DC-DC для IGBT драйверів ізольований 2 W +15 -8 вольт
- U-FOC - Векторне керування безколекторними моторами
- FOC - своя реалізація векторного керування. Підбиваю підсумки 2022 року
Tags
raspberry-pi st-link bldc timer max1674 bluetooth eb-500 python ngnix rtc atmega servo avr pwm web tim uart remap brushless bme280 smd esp8266 eeprom bkp capture dht11 ethernet sensors websocket mongodb 3d-printer piezo rs-232 led css meteo i2c options exti html battery soldering bmp280 wifi mpu-9250 examples dma adc gpio sms motor solar hih-4000 lcd docker ssd1306 encoder dc-dc displays pmsm barometer watchdog java-script flask git gps mpu-6050 flash nvic books foc nodemcu programmator usb usart rfid mpx4115a stm32 ssd1331
Архіви