Умная электроника

Сайт для гиков! Электроника, программирование и 3D печать

Метеорологическая станция на esp8266

Просмотров: 260Комментарии: 0
Электроника
Метеорологическая станция на esp8266

Этим проектом поделился наш товарищ - Lis.

Сейчас для ARDUINO существует куча датчиков измеряющих все и вся. Естественно точность измерений некоторых оставляет желать лучшего, но для бытовых/любительских нужд этого вполне достаточно. Поэтому постепенно были закуплены следующие датчики. Датчики покупались в одном известном китайском магазине.

Влажность DTH11

dth11.jpg

Давление BPM180

bmp180.jpg

Также вся информация на текущий момент сохраняется на SD карту, плюс часы реального времени.

micro-sd.jpg

rtc.jpg

На часах реального времени обнаружено место для установки температурного датчика. Я не стал ставить DS18B20+, а поставил аналоговый LM35. Единственное необходимо отпаять резистор.

Есть еще датчик влажности почвы и датчик дождя, но так как пока все собранно на макетной плате установить эти датчики не представляется возможным.

Показания также можно посмотреть через WIFI. Использован ESP8266. На моем модуле GPIO 4 почему то подписан как GPIO5

esp-7_esp8266.jpg

Описание кода:

Для arduino алгоритм очень простой. С помощью delay организованна задержка на одну минуту, после нее выполняется чтение времени и показаний датчиков после чего это все записывается на SD карту.

Для ESP8266 читаем с serial порта значения, поступающие от arduino и записываем в массивы. Если появляется, wifi подключение к серверу, генерируем HTML страницу и отдаем клиенту.

Выглядит это примерно так:

meteostation.jpg

Итоги:

По факту получилась простейшая метеорологическая станция.

Особых проблем при монтаже не возникло, все собранно на макетной плате.

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

Единственное чтобы было удобно в дальнейшем обрабатывать полученные показания между значениями вставлен &.

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

Вот так выглядит сейчас HTML страница

html.jpg

И вот так записи на SD карте:

22.6.2015 18:53:36&MSK&LM35&26.37&BMP180&Pressure(mm Hg)&755.84&Temp&27.90&DTH11&Humidity&35&Temp&29&

22.6.2015 18:54:40&MSK&LM35&25.88&BMP180&Pressure(mm Hg)&755.82&Temp&27.90&DTH11&Humidity&35&Temp&29&

22.6.2015 18:55:44&MSK&LM35&26.37&BMP180&Pressure(mm Hg)&755.82&Temp&27.90&DTH11&Humidity&35&Temp&29&

22.6.2015 18:56:48&MSK&LM35&26.37&BMP180&Pressure(mm Hg)&755.81&Temp&27.90&DTH11&Humidity&35&Temp&29&

22.6.2015 18:57:52&MSK&LM35&26.37&BMP180&Pressure(mm Hg)&755.81&Temp&27.90&DTH11&Humidity&35&Temp&29&

Что хотелось бы сделать.

1. Записывать значения не с помощью delay, а по изменению времени в часах реального времени.

2. Использовать энергонезависимую память установленную на часах реального времени. Не понятно для каких целей ее можно использовать.

3. В случае пропадания внешнего питания, автоматический перевод контроллера в режим экономии энергии c более большим периодом записи показаний датчиков. Плюс отключение wifi.

4. Для модуля ESP8266, придумать, для каких целей использовать свободные GPIO выводы.

5. На страницу генерируемую ESP8266 добавить графики для наглядности.

6. Добавить запасной канал, контроля состояния/управления используя, например NRF24L01+ так как выяснено, что ESP8266 имеет свойство подвисать и приходиться перезагружать модуль.

7. Перейти на питание от солнечных батарей. Сейчас питание от сети 220V.

8. Понять необходимо ли как либо управлять солнечными батареями или стационарной установки будет достаточно.