Mündəricat:
- Addım 1: Alış -verişə gedin
- Addım 2: Quraşdırma və Arxa Plan
- Addım 3: Arduino - ESP12 hissəsi
- Addım 4: ESP -ni Şəbəkə Zaman Protokolu (NTP) Müştəri Olaraq Test Edin
- Addım 5: DHT22 Sensorunun Test Edilməsi
- Addım 6: Bir yerdə qoyun …
- Addım 7: İşlərin Server tərəfi
Video: Ev Şəbəkəsi İstilik Sensoru: 7 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Bu layihəni həyata keçirmək üçün nə bilmək lazımdır:
Bilməlisiniz:- Bəzi elektronika bacarıqları (lehimləmə)
- Linux
- Arduino IDE
(IDE -də əlavə lövhələri yeniləməlisiniz:
- Arduino IDE vasitəsilə bir ESP lövhəsinin yenilənməsi/proqramlaşdırılması.
(İnternetdə bəzi gözəl dərslər var)
Bu, Arduino Uno və ya FTDI (usb to serial adapter) istifadə etməklə edilə bilər.
Uno -dan istifadə etdim, çünki nə kompüterimdə seriyalı port, nə də FTDI yox idi
Addım 1: Alış -verişə gedin
Bunun baş verməsi üçün nə lazımdır?
Rəqəmsal Temperatur və Rütubət Sensoru üçün:
- Ya çörək taxtası, ya da pcb prototipi, lehim, lehimləmə dəmiri kimi bir alternativ …
- Bir az tel
- iki tullanan
- 10k Ohm müqavimət
- ESP12F (digər modellər də işləyə bilər …)
- DHT22 (DHT11 -dən bir qədər bahalı, lakin daha dəqiqdir)
- 3 AA şarj edilə bilən batareya və batareya tutacağı
- Layihənizi yerləşdirmək üçün kiçik bir plastik qutu
- Sonrakı mərhələdə, batareya paketi ilə ESP arasında iki 10uF kondansatörlü HT7333 əlavə etməyi planlaşdırıram.
Giriş gərginliyini (VCC) tövsiyə olunan 3.3V -ə sabitləşdirməklə yanaşı ESP -ni həddindən artıq gərginlikdən qorumaq üçün.
Şəbəkə hissəsi üçün:
- Ev WiFi Şəbəkəniz
Server hissəsi üçün:
- İstənilən Linux əsaslı sistem (həmişə aktivdir!)
Bir Raspberry Pi istifadə etdim (açıq IP kameralarım üçün server olaraq da istifadə edirəm.)
- server kodunuzu tərtib etmək üçün gcc tərtibçisi
- məlumatları saxlamaq və qrafiklər yaratmaq üçün rrdtool paketi
- apache (və ya başqa bir veb server)
Üzərində Arduino IDE olan ən sevdiyiniz kompüter və ya dizüstü kompüter.
Addım 2: Quraşdırma və Arxa Plan
WiFi -nin bu versiyasında - IOT deməsək də - temperatur və rütubət sensoru, doldurula bilən batareyaları olan bir ESP12F, DHT22 və 3 AA batareya tutucusundan istifadə etdim.
Hər 20 dəqiqədə bir ESP DHT22 -dən bir ölçmə aparır və ev WiFi şəbəkəmdəki UDP üzərindən bir serverə (Moruq Pi) göndərir. Ölçmələr göndərildikdən sonra ESP dərin yuxuya gedir. Bu o deməkdir ki, modulun yalnız Real Time Saatı enerjili olaraq qalır və nəticədə inanılmaz dərəcədə enerji qənaət olunur. Təxminən 5 saniyə ərzində modul təxminən 100mA, sonra 20 dəqiqə dərin yuxu zamanı yalnız 150uA tələb edir.
Hər zaman İnternetdə olan Raspberry Pi -yə sahib olduğum üçün İnternetə əsaslanan bir xidmətdən istifadə etmək istəmədim və bu şəkildə server hissəsini də yazmaqdan zövq aldım.
Serverdə (Raspbian işləyən bir Raspberry Pi) dəyərləri sadə bir RRD -də saxlayan sadə bir UDP dinləyicisi (server) yazdım. (Tobias Oetiker tərəfindən RRDtool istifadə edərək Robin Database.)
RRDtool -un üstünlüyü, verilənlər bazanızı bir dəfə yaratmağınız və ölçüsünün eyni qalmasıdır. Arxa planda işləyən bir verilənlər bazası serverinə (məsələn, MySQLd) ehtiyacınız yoxdur. RRDtool, verilənlər bazası yaratmaq və qrafiklər yaratmaq üçün vasitələr verir.
Serverim qrafikləri vaxtaşırı yaradır və hər şeyi çox sadə bir http səhifəsində göstərir. Raspberry Pi üzərindəki Apache2 veb serverinə qoşularaq sadə bir brauzerlə oxuduqlarımı öyrənə bilərəm!
Nəhayət, FTDI (USB -dən Seriala) yox idi, buna görə də Arduino UNO -dan istifadə etdim. TX -ləri, RX -ləri və ESP və UNO -nun GND -ni birləşdirməlisiniz. (Bilirəm, instinktiniz sizə RX və TX -ləri keçməyinizi söyləyə bilər … bunu da sınadı, işləmir.)
Səviyyə çevrilmə etmədim (UNO: High = 5V amma ESP əsasən 3.3V cihazdır … Bazarda yüksək səviyyənizi 5 və ya 3.3V olaraq seçə biləcəyiniz bəzi gözəl FTDI -lər var.
Mənim dövrəm 3 AA şarj edilə bilən batareya ilə işləyir - buna görə 3 X 1.2V. Sonrakı mərhələdə təhlükəsizlik üçün batareya paketi ilə dövrə arasına HT7333 qoymaq niyyətindəyəm; yeni doldurulmuş batareyalar 1,2V -dən çox ola bilər və ESP min. 3V və maksimum. 3.6V. Həm də - bir anlıq zəiflikdə - qələvi batareyalar (3 X 1.5V = 4.5V) qoymaq qərarına gəlsəm, ESP qızardılmayacaq!
10 sm x 10 sm ölçüdə Günəş paneli istifadə etməyi də düşündüm, amma bu çətinliyə dəyməzdi. Saatda 3 ölçmə apararaq (əsasən 3x5 saniyədə @ 100mA və qalan vaxt @ 100uA), eyni şarj edilə bilən batareyalarda 1 il dövrəmi gücləndirəcəyimi ümid edirəm.
Addım 3: Arduino - ESP12 hissəsi
Bu layihəni fərqli addımlarla etdim.
ESP12 -ni (aka. ESP8266) Arduino IDE -yə idxal etməyə kömək edən bir neçə keçid var. (Bu arada həll oluna biləcək bir səhv səbəbiylə sonuncunun yerinə 2.3.0 versiyasını istifadə etməli oldum …)
ESP -ni Arduino UNO üzərindən (yalnız USB vasitəsilə Serialdan kompüterim arasında körpü kimi istifadə olunur) ESP serial interfeysinə bağlamaqla başladım. Bunu izah edən ayrıca təlimatlar var.
Bitmiş layihəmdə problemi həll etməyim lazım olduğu təqdirdə telləri Seriyaya qoşulmaq üçün buraxdım
Sonra ESP12 -ni aşağıdakı kimi bağlamalısınız:
ESP pinləri…
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Əvvəlcə UNO -dakı 3.3V -dən ESP -ni işə salmağa çalışdım, amma tezliklə ESP -ni bir dəzgah Güc Təchizatı ilə işə saldım, ancaq siz də batareya paketinizdən istifadə edə bilərsiniz.
GPIO0 ESP -nin yanıb -sönməsini (= proqramlaşdırmasını) təmin etmək üçün bunu GND -yə bir tullanan ilə bağladım.
İlk sınaq: tullananları açıq buraxın və Arduino IDE -də seriyalı monitoru işə salın (115200 baud!).
ESP -ni işə salın, bəzi zibil simvollarını və sonra belə bir mesaj görməlisiniz:
Ai-Thinker Technology Co. Ltd. hazırdır
Bu rejimdə ESP bir az köhnə modem kimi çıxış edir. AT əmrlərindən istifadə etməlisiniz.
Aşağıdakı əmrləri sınayın:
AT+RST
və aşağıdakı iki əmr
AT+CWMODE = 3
tamam
AT+CWLAP
Bu, ərazidəki bütün WiFi şəbəkələrinin siyahısını verməlidir.
Bu işləyirsə, növbəti addıma hazırsınız.
Addım 4: ESP -ni Şəbəkə Zaman Protokolu (NTP) Müştəri Olaraq Test Edin
Arduino IDE -də, Fayl, Nümunələr, ESP8266WiFi altında NTPClient yükləyin.
İşləmək üçün kiçik düzəlişlərə ehtiyac var; SSID və WiFi şəbəkənizin şifrəsini daxil etməlisiniz.
İndi GPIO0 -nu GND -ə qısaldan tullanan atın.
ESP -ni işə salın və eskizi ESP -ə yükləyin.
Tərtib edildikdən sonra ESP -ə yükləmə başlamalıdır. Kod yüklənərkən ESP -də mavi LED sürətlə yanıb -sönəcək.
Yükləmə işləməyəcəkdən əvvəl IDE -ni yenidən başlatmaq, ESP -ni yenidən başlatmaqla bir az oynamalı olduğumu gördüm.
Eskizi tərtib etməyə/yükləməyə başlamazdan əvvəl, serial konsolunu (= serial monitor) bağladığınızdan əmin olun, çünki bu, yükləməyə mane olacaq.
Yükləmə müvəffəqiyyətli olduqdan sonra, ESP-nin İnternetdən səmərəli vaxt aldığını görmək üçün serial monitoru yenidən aça bilərsiniz.
Əla, ESP -ni proqramlaşdırdınız, WiFi -yə qoşuldunuz və İnternetdən vaxt qazandınız.
Növbəti addım DHT22 -ni sınayacağıq.
Addım 5: DHT22 Sensorunun Test Edilməsi
İndi bəzi əlavə naqillərə ehtiyac var.
DHT sancaqları… Sensorun 1 pinini (solda) VCC -yə (3.3V) qoşun
2 pinli ESP GPIO5 (eskizdə DHTPIN) qoşun
Sensorun 4 pinini (sağda) GROUND -a qoşun
Sensorun 2 -ci pinindən (məlumatlardan) 1 -ci pininə (gücünə) 10K rezistoru qoşun.
NTP testinə bənzər şəkildə, DHTtester eskizini tapın və aşağıdakı şəkildə düzəldin:
#define DHTPIN 5 // sensora qoşulmaq üçün GPIO5 seçdik#DHTTYPE DHT22 təyin edin // bir DHT22 istifadə etdiyimiz üçün bu kod/kitabxana DHT11 üçün də uyğundur
Yenə seriyalı monitoru bağlayın, ESP -nin gücünü dəyişdirin və ESP -ni tərtib edin və yanıb -sönün.
Hər şey qaydasındadırsa, ölçülərin serial monitorda göründüyünü görməlisiniz.
Sensorla bir az oynaya bilərsiniz. Nəfəs alsanız, rütubətin artdığını görəcəksiniz.
(LED olmayan) bir masa lampanız varsa, onu bir az qızdırmaq üçün sensorun üstünə yandıra bilərsiniz.
Əla! Sensorun iki böyük hissəsi işləyir.
Növbəti addımda son kodu şərh edəcəyəm.
Addım 6: Bir yerdə qoyun …
Yenə bəzi əlavə naqillər … bu, DeepSleep -i mümkün etməkdir.
Unutmayın, DeepSleep IoT cihazları üçün inanılmaz bir funksiyadır.
Ancaq sensorunuz DeepSleep üçün sabitdirsə, ESP -ni yenidən proqramlaşdırmaq çətin ola bilər, buna görə də aralarında başqa bir keçid bağlantısı quracağıq.
GPIO16-RST.
Bəli, GPIO16 olmalıdır, çünki bu, DeepSleep -dən sonra Real Time Clock sönəndə cihazı oyatmaq üçün bağlanan GPIO -dur!
Test edərkən 15 saniyəlik DeepSleep etməyə qərar verə bilərsiniz.
Hata ayıklayarkən, proqramımı söndürmək üçün tullananları GPIO0 -a köçürərdim.
Yükləmə tamamlandıqdan sonra, DeepSleepin işləməsi üçün tullananları GPIO16 -ya köçürərdim.
ESP kodu TnHclient.c adlanır
SSID, Şifrənizi və serverinizin IP ünvanını dəyişdirməlisiniz.
Quraşdırmanı yoxlamaq və ya sınamaq üçün istifadə edə biləcəyiniz əlavə kod xətləri var.
Addım 7: İşlərin Server tərəfi
UDP -nin etibarsız olması və TCP -nin …
Bir çəkicin bir tornavidadan daha faydalı olduğunu söyləmək qədər axmaqdır. Sadəcə fərqli faydalı alətlərdir və hər ikisinin də istifadəsi var.
Yeri gəlmişkən, UDP olmadan İnternet işləməyəcəkdi … DNS UDP -yə əsaslanır.
Beləliklə, UDP -ni seçdim, çünki çox yüngül, asan və sürətli.
WiFi -nin çox etibarlı olduğunu düşünürəm, buna görə müştəri "OK!" alınmır.
TnHserver üçün C kodu TnHServer.c faylındadır.
Kodda bunu izah edən bir neçə şərh var.
Serverdə əlavə vasitələrə ehtiyacımız olacaq: rrdtool, apache və bəlkə də tcpdump.
Raspbian-da rrdtool qurmaq üçün paketi bu şəkildə quraşdıra bilərsiniz: apt-get install rrdtool
Şəbəkə trafikini düzəltmək lazımdırsa, tcpdump, apt-get install tcpdump-a lazımlı gəlir.
Qrafiklərə baxmaq üçün bir brauzerdən istifadə edə biləcəyim bir veb serverə ehtiyacım var: apt-get install apache2
Bu vasitədən istifadə etdim: https://rrdwizard.appspot.com/index.php Dairəvi Robin Verilənlər Bazasını yaratmaq əmrini almaq üçün. Bunu yalnız bir dəfə etməlisiniz (ilk dəfə düzgün başa düşsəniz).
rrdtool TnHdatabase.rrd yaradın-indi-10s başlayın
-addım '1200'
'DS: Temperatur: GÖZ: 1200: -20.5: 45.5'
'DS: Rütubət: GAUGE: 1200: 0: 100.0'
'RRA: ORTALAMA: 0.5: 1: 720'
'RRA: ORTALAMA: 0.5: 3: 960'
'RRA: ORTALAMA: 0.5: 18: 1600'
Nəhayət, hər gün gecə yarısında TnHserverimi yenidən başlatmaq üçün crontab girişindən istifadə edirəm. TnHserveri təhlükəsizlik tədbiri olaraq normal bir istifadəçi olaraq (yəni kök DEYİL) işlədərəm.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
Bunu etməklə TnHserver -in işlədiyini yoxlaya bilərsiniz
$ ps -elf | grep TnHserver
və bunu etməklə 7777 portunda paketləri dinlədiyini yoxlaya bilərsiniz
$ netstat -anu
Aktiv İnternet əlaqələri (serverlər və qurulmuşlar)
Proto Recv-Q Göndər-Q Yerli Ünvan Xarici Ünvan
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Nəhayət CreateTnH_Graphs.sh.txt, qrafikləri yaratmaq üçün bir nümunə skriptdir. (Skriptləri kök olaraq yaradıram, bunu etmək istəməyəcəksiniz.)
Çox sadə bir veb səhifədən istifadə edərək qrafikləri ev şəbəkənizdəki istənilən brauzerdən izləyə bilərsiniz.
Tövsiyə:
İstilik və İşıq Sensoru: 8 addım
Temperatur və İşıq Sensoru: Bu təlimat əsas temperatur və işıq sensoru üçündür. Bu barədə
Arduino ilə LM35 İstilik Sensoru Arasında: 4 addım
Arduino ilə LM35 İstilik Sensorunun Arasında: Termometrlər uzun müddətdir temperaturun ölçülməsi üçün istifadə olunan aparatlardır. Bu layihədə ətraf mühitin temperaturu və temperatur dəyişikliklərini LCD -də göstərmək üçün Arduino əsaslı rəqəmsal termometr hazırladıq. Depl ola bilər
Arduino Günəş Enerjili İstilik və Nəmlik Sensoru 433mhz Oregon Sensoru Olaraq: 6 Addım
Arduino Günəş Enerjili İstilik və Rütubət Sensoru 433mhz Oregon Sensoru olaraq: Bu günəş enerjisi ilə işləyən bir temperatur və rütubət sensoru qurğusudur. Sensor 433mhz Oregon sensorunu təqlid edir və Telldus Net şlüzündə görünür. Nə lazımdır: 1x "10-LED Günəş enerjisi hərəkət sensoru " ebaydan. 3.7v xəmir olduğunu yazdığınızdan əmin olun
İstilik Sensorları Şəbəkəsi: 6 addım
Temperatur Sensorları Şəbəkəsi: Temperatur və rütubət laboratoriyanızda, mətbəxinizdə, istehsal xəttinizdə, ofisinizdə, qatil robotlarınızda və hətta evinizdə həyati əhəmiyyət kəsb edən məlumatlardır. Birdən çox yeri və ya otağı və ya məkanı izləmək lazımdırsa, etibarlı, yığcam, dəqiq və açıq bir şeyə ehtiyacınız var
Arduino WiFi Şəbəkəsi (Sensorlar və Aktuatorlar) - Rəng Sensoru: 4 addım
Arduino WiFi Şəbəkəsi (Sensorlar və Aktuatorlar) - Rəng Sensoru: Tətbiqlərinizdə neçə dəfə sizdən uzaq bir sensor və ya aktuator var? Wi-Fi şəbəkəsinə qoşulmuş fərqli qul cihazlarını idarə etmək üçün kompüterinizin yaxınlığındakı yalnız bir əsas cihazı istifadə etmək nə qədər rahat ola bilər? Bu layihədə