Еще одна погодная станция на ESP8266 Избранное
Я решил мониторить погодные показатели у себя дома. У меня уже есть богатый опыт сборки устройств на arduino и esp8266 и на esp мне понравилось больше (из-за наличия wi-fi).
для полноценной картины погодных условий нам необходимо знать температуру внутри и снаружи, давление воздуха, влажность и качество воздуха (количество CO и CO2). Показания буду считывать домашним сервером на Linux при помощи самописного скрипта и выводить через MRTG в виде графика.
Собственно детали были заказаны на Aliexpress: MP180 (температура и давление), MQ135 (качество воздуха), DTH11 (температура и влажность), DTH22 (уличная температура и влажность), 662k (стабилизаторы на 3.3 вольта). Доставка была быстрой, и уже через две недели все было готово к сборке.
К сожалению, на момент написания статьи DTH22 еще не пришел, но я оставил для него выведенный внешний разъем.
Я не буду выкладывать схему, так как нет принципиальной разницы к каким GPIO что цеплять (за исключением i2c шины, она необходима для датчика давления). Сборку начнем с впаивания esp8266 в плату с контактами, где кстати, сразу отпаяем перемычку и впаяем стабилизатор на 3.3 вольта. Как раз для этого были куплены десяток 662k стабилизаторов. Это нам очень упростит дальнейшее подключение, так как все датчики работают либо от 3.3 до 5 в, либо строго от 3.3. Получается питать всю схему можем любым напряжением и не париться, что что-то сгорит.
Для удобства, я вывел питание со стабилизатора на макетку, откуда потом развел на плюс всех устройтв.
Далее расположил все на макетной плате, чтоб было поудобнее, все впаял, развел провода сзади (плюс на плюс, GND на минус, остальное на GPIO, сопротивления для светодиодов и аналогового входа, об этом чуь позже), вывел несколько светодиодов, чтобы понимать что происходит, поставил PC спикер для понта (пищит при включении и превышении показаний).
Кстати у ESP8266 есть один аналоговый вход, но он считывает напряжение до 1 вольта. У датчика загазованности MQ135, есть два выхода - цифровой и аналоговый. Цифровой срабатывает при превышении показаний, поэтому для мониторинга он бесполезен, а второй выгод аналоговый. Вот его то мы и подключим к ESP. Но для корректной работы нам нужно собрать простой делитель напряжения на двух сопротивлениях.
После подключения и написания скетча на Adruino оказалось, что в режиме i2c могут работать не все контакты (как я ранее упоминал). В итоге мне так и не удалось заставить работать по i2c никакие GPIO кроме дефолтных (GPIO4, GPIO5). Конечно не принципиально, но пришлось разок перепаять схему.
Экранчик я решил не подключать, так как показания всегда можно посмотреть с мобильника или компьютера. Кроме того показания мониторятся с сервера (у меня дома свой сервер) и выводятся в MRTG.
Собственно сам скетч будет в самом низу, но сразу скажу, пока еще не финальная версия, так как DTH22 не пришел.
Для мониторинга температуры выбрал SimpleDHT.h, потому что с ним не глючит, а со стандартным постоянно вместо температуры "nan". Кроме того оказалось, что по одному датчику температуры и по другому (один в DHT11, другой MP180) температура отличается на 3 градуса, при этом на настольном градуснике температура равна средненму от них обоих. Я не стал заморачиваться и считаю, что верная температура, та которая средняя. Для датчика давления использовал SFE_BMP180.h. Загазованность можно просто считывать с аналогового выгода, но зависимость показаний не линейная, поэтому сложно анализировать. Для того, чтобы упростить скетч я использовал MQ135.h. Главное, после того как установите MQ135, необходимо дать ему 24 часа поработать, чтобы прогреться. Затем нужно считать нулевые значения при помощи команды:
float rzero = gasSensor.getRZero();
Как получили нулевые значения, их нужно вписать в файл MQ135.h в переменную RZERO.
Далее, давайте рассмотрим веб-страничку, которую генерит погодная станция.
Если посмотреть код страницы, в самом низу можно увидеть скрытый код. Между скрытыми элементами <!start data> и <!stop data> находятся данные для сервера.
Так проще обрабатывать.
На сервере (Linux) по крону запускается MRTG, которая стартует скрипт:
curl -s http://192.168.1.63 | sed -n '/<!start data><!/,/><!stop data>/p'|grep -v "data" > /tmp/ws.tmp grep nvAvrIntTemp /tmp/ws.tmp -A1|tail -1 grep nvHmD1 /tmp/ws.tmp -A1|tail -1 |
Ну и по аналогии получаем остальные данные. То есть вместо nvAvrIntTemp может быть, например, nvMq1, тогда мы получим не среднюю температуру, а качество воздуха. Настройку MRTG я не буду расписывать, она совершенно стандартна, но если будет интересно, выложу, хотя там ничего замороченного нет.
Скетч:
#include <Wire.h>
int led=16; // Имя хоста int MD=0;
void setup() { Serial.printf("\n\nFree memory %d\n",ESP.getFreeHeap()); // Подлючение к WiFi
if( server.hasArg("MQA") ){
// Retrieve the completed temperature measurement: status = pressure.getTemperature(T); status = pressure.startPressure(3); // Retrieve the completed pressure measurement: status = pressure.getPressure(P,T); // The pressure sensor returns abolute pressure, which varies with altitude. p0 = pressure.sealevel(P,ALTITUDE); // we're at 1655 meters (Boulder, CO) // On the other hand, if you want to determine your altitude from the pressure reading, a = pressure.altitude(P,p0); String out = ""; out =
out+="\n\n<!start data><!\ //---
server.send ( 200, "text/html", out );
void Alarm() |
Всем спасибо. Продолжение следует...
4158 комментарии
-
buy spironolactone 25 mg 26.03.2023 09:55 Комментировать
verapamil usa verapamil 40mg without a doctor prescription verapamil 40 mg nz
-
atorvastatin cost 26.03.2023 04:11 Комментировать
propecia united states where to buy propecia 1mg propecia 5 mg otc
-
HarryViany 25.03.2023 23:43 Комментировать
Amazing forum posts. Cheers!
reviews research paper writing service paper writing service college pay someone to write a paper paper writing service for college -
loperamide tablet 25.03.2023 17:10 Комментировать
how to purchase prevacid 15 mg order prevacid 30 mg prevacid 15 mg without a prescription
-
online prescriptions without script 25.03.2023 16:20 Комментировать
online pharmacies without prescription
https://canadianfirstpharmacies.com/
best online pharmacy -
tgwinbet 25.03.2023 11:01 Комментировать
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
We are tickled to agreeable you to the 1around official website! Here you can wager on a heterogeneity of sports and esports events. Also, you fool access to a prodigious catalog of games and slots benefit of every mode: from model options to ultra-modern offers. The greatest games and inimitable experiences await you at 1come in!
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win -
tgwinbet 25.03.2023 09:30 Комментировать
a href=http://ahovey.damienwoods.oldiestation.es/php.php?a%5B%5D=1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
We are chuffed to welcome you to the 1gain a victory in certified website! Here you can wager on a multiplicity of sports and esports events. Also, you contain access to a prodigious catalog of games and slots repayment for every taste: from model options to ultra-modern offers. The most appropriate games and inimitable experiences await you at 1charm!
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win -
tgwinbet 25.03.2023 09:30 Комментировать
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
We are chuffed to welcome you to the 1win official website! Here you can bet on a multiplicity of sports and esports events. Also, you fool access to a gigantic catalog of games and slots benefit of every bit: from master-work options to ultra-modern offers. The greatest games and incomparable experiences await you at 1win!
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win -
amoxicillin 500mg cost 25.03.2023 06:56 Комментировать
celebrex 200 mg australia celebrex without prescription buy celebrex
-
tgwinbet 25.03.2023 06:47 Комментировать
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
We are chuffed to agreeable you to the 1win ceremonious website! Here you can bet on a variety of sports and esports events. Also, you have access to a prodigious catalog of games and slots quest of every bit: from classic options to ultra-modern offers. The pre-eminent games and unique experiences await you at 1out first!
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win
1win