
Съдържание:
2025 Автор: John Day | day@howwhatproduce.com. Последно модифициран: 2025-01-23 12:59

Какво трябва да знаете, за да направите този проект:
Трябва да знаете за:- Някои умения за електроника (запояване)
- Linux
- IDE на Arduino
(ще трябва да актуализирате допълнителни платки в IDE:
- актуализиране/програмиране на ESP платка чрез Arduino IDE.
(в мрежата има някои хубави уроци)
Това може да стане с помощта на Arduino Uno или с помощта на FTDI (адаптер usb към сериен).
Използвах моя Uno, защото нямах сериен порт на компютъра си, нито FTDI
Стъпка 1: Отидете да пазарувате

Какво ще ви е необходимо, за да се случи това?
За цифровия сензор за температура и влажност:
- Или макет, или алтернатива като прототипна печатна платка, спойка, поялник …
- Някакъв проводник
- два джъмпера
- 10k Ohm резистор
- ESP12F (може да работят и други модели …)
- DHT22 (малко по -скъп от DHT11, но по -точен)
- 3 презареждащи се батерии AA и държач за батерии
- малка пластмасова кутия, в която да поставите вашия проект
- На по -късен етап планирам да добавя HT7333 с два 10uF кондензатора между батерията и ESP
за стабилизиране на входното напрежение (VCC) до препоръчаните 3.3V, но и за защита на ESP от пренапрежение.
За частта Мрежа:
- Вашата домашна WiFi мрежа
За сървърната част:
- Всяка система, базирана на Linux (винаги включена!)
Използвах Raspberry Pi (който използвам и като сървър за моите външни IP камери.)
- gcc компилатор за компилиране на кода на вашия сървър
- пакет rrdtool за съхраняване на данните и генериране на графики
- apache (или друг уеб сървър)
Вашият любим компютър или лаптоп с Arduino IDE.
Стъпка 2: Настройка и фон

В тази версия на свързан WiFi - да не кажа IOT - сензор за температура и влажност използвах ESP12F, DHT22 и държач за батерии 3 AA с презареждащи се батерии.
На всеки 20 минути ESP взема измерване от DHT22 и го изпраща на сървър (Raspberry Pi) през UDP в домашната ми WiFi мрежа. След изпращането на измерванията ESP влиза в дълбок сън. Това означава, че само часовникът в реално време на модула остава захранван, което води до невероятна икономия на енергия. За около 5 секунди модулът изисква около 100mA, след това през 20 -те минути дълбоко заспиване само 150uA.
Не исках да използвам интернет базирана услуга, защото имам моя Raspberry Pi, който така или иначе винаги е включен и по този начин имах удоволствието да напиша и сървърната част.
На сървъра (Raspberry Pi, работещ с Raspbian) написах прост UDP слушател (сървър), който съхранява стойностите в обикновен RRD. (Round Robin база данни с помощта на RRDtool от Tobias Oetiker.)
Предимството на RRDtool е, че създавате базата данни веднъж и размерът остава същият. Иначе няма нужда да имате сървър на база данни (като mySQLd), работещ във фонов режим. RRDtool ви дава инструментите за създаване на база данни и генериране на графики.
Моят сървър създава графиките периодично и показва всичко на много проста http страница. Мога да проверя показанията си с прост браузър, като се свържа с уеб сървъра Apache2 на Raspberry Pi!
И накрая, нямах FTDI (USB към сериен), така че използвах моя Arduino UNO. Трябва да свържете TX и RX и GND на ESP и UNO. (Знам, инстинктът ви може да ви подскаже да пресичате RX и TX … пробвах и това, не работи.)
Не направих преобразуване на ниво (UNO: Високо = 5V, но ESP е основно 3.3V устройство … Има някои хубави FTDI на пазара, където дори можете да изберете високото си ниво да бъде 5 или 3.3V.
Моята верига се захранва от 3 акумулаторни батерии AA - така че всъщност 3 X 1,2V. В по -късна фаза възнамерявам да поставя HT7333 между батерията и веригата за безопасност; новозаредените батерии могат да имат повече от 1,2 V и ESP трябва да се захранва с мин. 3V и макс. 3.6V. Също така, ако реша - в момент на слабост - да сложа алкални батерии (3 X 1.5V = 4.5V), моят ESP няма да се пържи!
Обмислих и използването на слънчев панел с размери 10см x 10см, но просто не си струваше да се занимавам. Правейки 3 измервания на час (основно 3x 5 секунди при 100 mA макс. И през останалото време @ 100uA), се надявам да захранвам веригата си за 1 година на същите акумулаторни батерии.
Стъпка 3: Частта Arduino - ESP12


Направих този проект на различни стъпки.
Има няколко връзки, които ви помагат да импортирате ESP12 (известен още като ESP8266) в Arduino IDE. (Трябваше да използвам версия 2.3.0 вместо последната поради грешка, която междувременно можеше да бъде отстранена …)
Започнах с свързването на ESP, през моя Arduino UNO (използван само като мост между моя компютър през USB към серийния) към серийния интерфейс на ESP. Има отделни инструкции, обясняващи това.
В моя завършен проект оставих кабелите, за да се свържа със серийния, в случай че някога се наложи да отстраня неизправности. RX
След това трябва да свържете вашия ESP12, както следва:
ESP щифтове…
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Първоначално се опитах да захранвам ESP от 3.3V на UNO, но бързо преминах към захранването на ESP с настолно захранване, но можете да използвате и батерията си.
GPIO0 Свързах този с джъмпер към GND, за да активирам мигането (= програмирането) на ESP.
Първи тест: оставете джъмпера отворен и стартирайте сериен монитор в Arduino IDE (на 115200 бода!).
Включете ESP в цикъла, трябва да видите някои боклуци и след това съобщение като:
Ai-Thinker Technology Co. Ltd. готов
В този режим ESP действа малко като старомоден модем. Трябва да използвате AT команди.
Опитайте следните команди:
AT+RST
и следните две команди
AT+CWMODE = 3
Добре
AT+CWLAP
Това трябва да ви даде списък с всички WiFi мрежи в района.
Ако това работи, вие сте готови за следващата стъпка.
Стъпка 4: Тестване на ESP като клиент с протокол за мрежово време (NTP)


В IDE на Arduino, под Файл, Примери, ESP8266WiFi, заредете NTPClient.
Необходими са малки ощипвания, за да работи; трябва да въведете своя SSID и парола за вашата WiFi мрежа.
Сега поставете джъмпера, накъсвайки GPIO0 към GND.
Включете ESP в цикъла и качете скицата в ESP.
След компилацията качването в ESP трябва да започне. Синият светодиод на ESP ще мига бързо при изтегляне на кода.
Забелязах, че трябва да си поиграя малко с рестартиране на IDE, рестартиране на ESP, преди качването да работи.
Преди да започнете да компилирате/качвате скицата, не забравяйте да затворите серийната конзола (= сериен монитор), защото това ще ви попречи да качите.
След като качването успее, можете да отворите отново серийния монитор, за да видите ESP ефективно да получава времето от Интернет.
Страхотно, програмирали сте ESP, свързали сте се с WiFi и сте получили време от интернет.
Следващата стъпка ще тестваме DHT22.
Стъпка 5: Тестване на сензора DHT22

Сега се изисква допълнително окабеляване.
DHT пинове… Свържете щифт 1 (отляво) на сензора към VCC (3.3V)
Свържете щифт 2 ESP GPIO5 (DHTPIN в скицата)
Свържете щифт 4 (отдясно) на сензора към GROUND
Свържете 10K резистор от пин 2 (данни) към щифт 1 (захранване) на сензора.
Подобно на теста NTP, отидете да намерите скицата на DHTtester и да я промените по следния начин:
#дефинирайте DHTPIN 5 // избрахме GPIO5 за свързване със сензора#определете DHTTYPE DHT22 // тъй като използваме DHT22, но този код/библиотека е подходящ и за DHT11
Отново затворете серийния монитор, включете ESP цикъла и компилирайте и мигайте ESP.
Ако всичко върви добре, трябва да видите измерванията да се появяват в серийния монитор.
Можете да поиграете малко със сензора. Ако дишате върху него, ще видите как влажността се покачва.
Ако имате настолна лампа (без LED), можете да осветите сензора, за да го загреете малко.
Страхотен! Две големи части от сензора вече работят.
В следващата стъпка ще коментирам окончателния код.
Стъпка 6: Сглобяваме заедно …

Отново допълнително окабеляване … това е, за да стане възможен DeepSleep.
Не забравяйте, че DeepSleep е невероятна функция за IoT устройства.
Въпреки това, ако вашият сензор е свързан за DeepSleep, може да е трудно да препрограмирате ESP, така че ще направим нова връзка между джъмпера между
GPIO16-RST.
Да, това ТРЯБВА да бъде GPIO16, защото това е GPIO, който е свързан да събуди устройството, когато часовникът в реално време изгасне след DeepSleep!
Докато тествате, можете да решите да направите 15 секунди DeepSleep.
Когато отстранявах грешки, щях да преместя джъмпера в GPIO0, за да мога да мигам програмата си.
След като изтеглянето приключи, щях да преместя джъмпера в GPIO16, така че DeepSleep да работи.
Кодът за ESP се нарича TnHclient.c
Трябва да промените своя SSID, парола и IP адреса на вашия сървър.
Има допълнителни редове код, които можете да използвате за отстраняване на неизправности или тестване на вашата настройка.
Стъпка 7: Сървърната страна на нещата


Често срещано недоразумение е, че UDP е ненадежден, а TCP е …
Това е също толкова глупаво, колкото да се каже, че чукът е по -полезен от отвертка. Те са просто различни много полезни инструменти и и двете имат своите приложения.
Между другото, без UDP Интернет нямаше да работи … DNS се основава на UDP.
Затова избрах UDP, защото е много лек, лесен и бърз.
Склонен съм да мисля, че моят WiFi е много надежден, така че клиентът ще изпрати най -много 3 UDP пакета, ако потвърждението "OK!" не се получава.
C-кодът за TnHserver е във файла TnHServer.c.
В кода има няколко коментара, които го обясняват.
Ще ни трябват някои допълнителни инструменти на сървъра: rrdtool, apache и може би tcpdump.
За да инсталирате rrdtool на Raspbian, можете просто да инсталирате пакета по следния начин: apt-get install rrdtool
Ако трябва да отстраните грешките в мрежовия трафик, tcpdump е полезен apt-get install tcpdump
Имах нужда от уеб сървър, за да мога да използвам браузър, за да се консултирам с графиките: apt-get install apache2
Използвах този инструмент: https://rrdwizard.appspot.com/index.php, за да получа командата за създаване на Round Robin база данни. Трябва да стартирате това само веднъж (ако го направите правилно първия път).
rrdtool създайте TnHdatabase.rrd --стартирайте сега-10s
-стъпка '1200'
'DS: Температура: МЕРА: 1200: -20,5: 45,5'
'DS: Влажност: МЕРА: 1200: 0: 100.0'
'RRA: СРЕДНИ: 0,5: 1: 720'
'RRA: СРЕДНИ: 0.5: 3: 960'
„RRA: СРЕДНИ: 0.5: 18: 1600“
И накрая, използвам запис в crontab, за да рестартирам моя TnHserver всеки ден в полунощ. Пускам TnHserver като нормален потребител (т.е. НЕ root) като предпазна мярка.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
Можете да проверите дали TnHserver работи, като направите това
$ ps -elf | grep TnHserver
и можете да проверите, че слуша пакети на порт 7777, като направите това
$ netstat -anu
Активни интернет връзки (сървъри и установени)
Proto Recv-Q Send-Q Местен адрес Състояние на чужд адрес
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Накрая CreateTnH_Graphs.sh.txt е примерен скрипт за генериране на графики. (Аз генерирам скриптовете като root, може да не искате да направите това.)
Използвайки много проста уеб страница, можете да гледате графиките от всеки браузър в домашната си мрежа.
Препоръчано:
Свързване на Arduino с ултразвуков сензор и безконтактен температурен сензор: 8 стъпки

Arduino взаимодействие с ултразвуков сензор и безконтактен температурен сензор: В днешно време производителите, разработчиците предпочитат Arduino за бързо развитие на прототипирането на проекти. Arduino е електронна платформа с отворен код, базирана на лесен за използване хардуер и софтуер. Arduino има много добра потребителска общност. В този проект
Arduino за кабелна домашна асистентска мрежа: 5 стъпки

Arduino за кабелна домашна асистентска мрежа: Wifi компонентите като различните Sonoff, Tasmota и ESP8266 са много лесни за конфигуриране и използване, но нещата често не са лесни, както изглеждат. В индустриалната/бизнес среда безжичната автоматизация не е толкова често срещана. Безжичните компоненти са по -малко надеждни
Домашна мрежа на OpenWrt: 9 стъпки (със снимки)

Домашна мрежа на OpenWrt: OpenWrt е дистрибуция на Linux с отворен код, която потребителите обикновено инсталират на своите готови домашни Wi-Fi рутери. актуализиран
Как да настроите домашна мрежа: 6 стъпки

Как да настроите домашна мрежа: Настройката на мрежа може да звучи обезсърчително в началото, но след като имате всичко необходимо, това е много лесно да се направи. Традиционната настройка изисква модем и рутер, но някои може да се нуждаят от повече оборудване, а някои може да се нуждаят от по -малко. Има много различни
СЕНЗОР SUHU DENGAN LCD DAN LED (Осъществяване на температурен сензор с LCD и LED): 6 стъпки (със снимки)

СЕНЗОР SUHU DENGAN LCD DAN LED (Осъществяване на температурен сензор с LCD и LED): хай, да речем Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA дари Индонезия, да кажем, че има и сензори за мембрана, за да изведете Arduino за изход на LCD и LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini anda