Mündəricat:
- Addım 1: BoM - Material Bill
- Addım 2: Temperatur və Nəmlik Sensorunun Qurulması
- Addım 3: DS18B20 - İstilik Sensorunun Qurulması
- Addım 4: BMP180 -in quraşdırılması
- Addım 5: BMP180 ilə Hava və Yüksəkliyin Ölçülməsi
- Addım 6: Tam HW
- Addım 7: Məlumatların ThingSpeak -a göndərilməsi
- Addım 8: ESP8266 istifadə edərək ThingSpeak -a Uzaqdan Məlumat Göndərmək
- Addım 9: Son Qeydlər
- Addım 10: Nəticə
Video: RPi və ESP8266 ilə IoT Hava İstasyonu: 10 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Əvvəlki dərslərdə NodeMCU, sensorlar ilə oynayırdıq və ThingSpeak (buludda sensor məlumatlarını toplamağa və saxlamağa və IoT tətbiqlərini inkişaf etdirməyə imkan verən Əşyaların İnterneti (IoT) platformasında) məlumatların necə tutulacağını və qeyd edilməsini öyrənmişik:
IOT MASE ASAN: Uzaqdan hava məlumatlarının çəkilməsi: UV və hava istiliyi və rütubət
Bu yeni dərs ilə eyni şeyi necə edəcəyimizi öyrənəcəyik, ancaq bu anda bir neçə fərqli sensordan məlumat toplamaq üçün Raspberry Pi istifadə edərək, eyni zamanda cihazlar və internet arasında fərqli ünsiyyət yollarını araşdıracağıq:
Sensorlar və əlaqə növləri:
- DHT22 (Temperatur və Rütubət) ==> Rəqəmsal ünsiyyət
- BMP180 (Temperatur və Təzyiq) ==> I2C Protokolu
- DS18B20 (Temperatur) ==> 1 Telli Protokol
Blok diaqramı bu layihənin sonunda nələr əldə edəcəyimizi göstərir:
Addım 1: BoM - Material Bill
- Raspberry Pi V3 - 32.00 ABŞ dolları
- DHT22 Temperatur və Nisbi Nəmlik Sensoru - USD 9.95
- Rezistor 4K7 ohm
- DS18B20 Su keçirməyən Temperatur Sensoru - 5.95 USD
- Rezistor 4K7 ohm
- BMP180 Barometrik Təzyiq, Temperatur və Yüksəklik Sensoru - 6.99 USD
Addım 2: Temperatur və Nəmlik Sensorunun Qurulması
Quraşdırılacaq ilk sensor hava istiliyi və nisbi rütubət məlumatlarını tutmaq üçün DHT22 olacaq. ADAFRUIT saytı həmin sensorlar haqqında əla məlumat verir. Bellow, bəzi məlumatlar oradan alındı:
Baxış
Ucuz DHT temperatur və rütubət sensörleri çox sadə və yavaşdır, lakin bəzi əsas məlumatların qeydini etmək istəyən həvəskarlar üçün əladır. DHT sensorlar iki hissədən ibarətdir: kapasitiv rütubət sensoru və termistor. İçərisində rəqəmsal çevrilməyə bənzəyən və temperatur və rütubətlə rəqəmsal bir siqnal ayıran çox sadə bir çip də var. Rəqəmsal siqnal hər hansı bir mikrokontrolördən istifadə etməklə oxumaq olduqca asandır.
DHT22 Əsas xüsusiyyətləri:
- Aşağı qiymət
- 3 -dən 5V -a qədər güc və I/O
- Dönüşüm zamanı 2.5mA maksimum cari istifadə (məlumat istəyərkən)
- 2-5% dəqiqlikdə 0-100% nəmlik göstəriciləri üçün yaxşıdır
- -40 ilə 125 ° C temperatur oxunuşları ± 0,5 ° C dəqiqlik üçün yaxşıdır
- 0,5 Hz -dən çox olmayan nümunə götürmə sürəti (hər 2 saniyədə bir)
- Bədən ölçüsü 15.1mm x 25mm x 7.7mm
- 0,1 "aralığında 4 pin
Sensoru 20 m -dən az məsafədə istifadə etdikdən sonra, Data və VCC pinləri arasında 4K7 ohm müqavimətçi bağlanmalıdır. DHT22 çıxış məlumat pimi Raspberry GPIO 16 -ya qoşulacaq. Sensoru RPi pinlərinə aşağıdakı kimi bağlayaraq yuxarıdakı elektrik sxemini yoxlayın:
- Pin 1 - Vcc ==> 3.3V
- Pin 2 - Məlumat ==> GPIO 16
- Pin 3 - Bağlanmayın
- Pin 4 - Gnd ==> Gnd
Vcc və Data pinləri arasında 4K7 ohm müqavimətini quraşdırmağı unutmayın
Sensor bağlandıqdan sonra kitabxanasını da RPi -yə quraşdırmalıyıq.
DHT Kitabxanasının quraşdırılması:
Moruqda /evdən başlayaraq /Sənədlər bölməsinə keçin
cd sənədləri
Kitabxananı qurmaq və ora keçmək üçün bir kataloq yaradın:
mkdir DHT22_Sensor
cd DHT22_Sensor
Brauzerinizdə Adafruit GitHub -a daxil olun:
github.com/adafruit/Adafruit_Python_DHT
Sağdakı yükləmə zip linkini tıklayaraq kitabxananı yükləyin və bu yaxınlarda yaradılmış Raspberry Pi qovluğunuzdakı arxivi açın. Sonra kitabxananın qovluğuna gedin (faylı açdığınız zaman avtomatik olaraq yaradılan alt qovluq) və əmri yerinə yetirin:
sudo python3 setup.py quraşdırın
GITHUB -dan bir test proqramı (DHT22_test.py) açın
Adafruit_DHT idxal edin
DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 rütubət, temperatur = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin), əgər rütubət yoxdursa və temperatur yoxdursa: çap edin ('Temp = {0: 0.1f}*C Rütubət = {1: 0.1 f}%'. format (temperatur, rütubət)) başqa: çap (' Oxunmaq alınmadı. Yenidən cəhd edin! ')
Proqramı aşağıdakı əmrlə icra edin:
python3 DHT22_test.py
Aşağıdakı Terminal çap ekranı nəticəni göstərir.
Addım 3: DS18B20 - İstilik Sensorunun Qurulması
Sensora Baxış:
Bu dərsdə DS18B20 sensorunun suya davamlı versiyasını istifadə edəcəyik. Nəm şəraitdə, məsələn, nəmli bir torpaqda uzaq temperatur üçün çox faydalıdır. Sensor təcrid olunmuşdur və 125oC -ə qədər ölçü götürə bilər (Adafrut, kabel PVC ceketinə görə 100oC -dən yuxarı istifadə etməyi məsləhət görmür).
DS18B20 rəqəmsal sensordur ki, hətta uzaq məsafələrdə belə istifadə etməyi yaxşı edir! Bu 1 telli rəqəmsal temperatur sensörləri olduqca dəqiqdir (± 0,5 ° C aralığın çox hissəsində) və göyərtədəki rəqəmsaldan analoqa çeviricidən 12 bitə qədər dəqiqlik verə bilir. Tək bir rəqəmsal pin istifadə edərək NodeMCU ilə əla işləyirlər və hətta birdən çoxunu eyni pinə bağlaya bilərsiniz, hər birinin fərqləndirmək üçün fabrikdə yandırılmış 64 bitlik unikal identifikatoru var.
Sensor 3.0 -dan 5.0V -a qədər işləyir, bu o deməkdir ki, birbaşa Moruq sancaqlarından biri (1 və ya 17) tərəfindən təmin edilən 3.3V -dən qidalana bilər.
Sensor 3 teldən ibarətdir:
- Qara: GND
- Qırmızı: VCC
- Sarı: 1 telli məlumatlar
Burada tam məlumatı tapa bilərsiniz: DS18B20 məlumat cədvəli
Sensorun quraşdırılması:
Yuxarıdakı diaqrama əməl edin və əlaqələri qurun:
- Vcc ==> 3.3V
- Gnd ==> Gnd
- Məlumat ==> GPIO 4 (kitabxana üçün standart)
Python Kitabxanasının quraşdırılması:
Sonra, sensoru idarə edəcək Python kitabxanasını quraq:
sudo pip3 w1thermsensor qurun
Sensoru sınamaq üçün skriptə başlamazdan əvvəl, RPi-də "1-telli" interfeysin aktiv olub olmadığını yoxlayın (yuxarıdakı çap ekranına baxın)
Konfiqurasiyasını dəyişdirdikdən sonra RPi -ni yenidən başlatmağı unutmayın
Sensorun sınanması:
Sensoru yoxlamaq üçün sadə bir python skriptindən istifadə etmək olar:
idxal vaxtı
w1thermsensor idxalından W1ThermSensor ds18b20Sensor = W1ThermSensor () True olarkən: temperatur = ds18b20Sensor.get_temperature () çap edin ("Temperatura % s santimetrdir" % temperatur) vaxt.yuxu (1)
Addım 4: BMP180 -in quraşdırılması
Sensora Baxış:
BMP180, istehlakçı tətbiqləri üçün yeni nəsil yüksək dəqiqlikli rəqəmsal təzyiq sensoru olan BMP085 -in varisidir. BMP180-in ultra aşağı gücü, aşağı gərginlikli elektronikası cib telefonlarında, PDA-larda, GPS naviqasiya cihazlarında və xarici avadanlıqlarda istifadə üçün optimize edilmişdir. Sürətlə dəyişmə zamanı yalnız 0,25m aşağı hündürlükdəki səs -küylə, BMP180 üstün performans təqdim edir. I2C interfeysi bir mikro nəzarətçi ilə sistemin asan inteqrasiyasına imkan verir. BMP180, EMC-nin dayanıqlığı, yüksək dəqiqliyi, xətti olması və uzunmüddətli sabitliyi üçün piezo-rezistiv texnologiyaya əsaslanır.
Tam BMP məlumat cədvəlini burada tapa bilərsiniz: BMP180 - Rəqəmsal Təzyiq Sensoru
Sensorun quraşdırılması: Yuxarıdakı diaqrama əməl edin və əlaqələri qurun:
- Vin ==> 3.3V
- GND ==> GND
- SCL ==> GPIO 3
- SDA ==> GPIO 2
I2C İnterfeysinin aktivləşdirilməsi
RPi Konfiqurasiyasına gedin və I2C interfeysinin aktiv olduğunu təsdiq edin. Əks təqdirdə onu aktiv edin və RPi -ni yenidən başladın.
BMP180 istifadə edin
Hər şey düzgün qurulubsa və hər şey qaydasındadırsa, indi Pi -ni açmağa və BMP180 -in ətrafınızdakı dünya haqqında sizə nə söylədiyini görməyə hazırsınız.
Ediləcək ilk şey, Pi'nin BMP180 -i görüb görmədiyini yoxlamaqdır. Terminal pəncərəsində aşağıdakıları sınayın:
sudo i2cdetect -y 1
Komanda işləyərsə, BMP180 -in '77' kanalında olduğunu göstərən yuxarıdakı Terminal Printscreen -ə bənzər bir şey görməlisiniz.
BMP180 Kitabxanasının quraşdırılması:
Kitabxananı qurmaq üçün bir kataloq yaradın:
mkdir BMP180_Sensorcd BMP180_Sensor
Brauzerinizdə Adafruit GITHub -a daxil olun:
github.com/adafruit/Adafruit_Python_BMP
Sağdakı yükləmə zip linkini tıklayaraq kitabxananı yükləyin və Raspberry Pi tərəfindən yaradılmış qovluqdakı arxivi açın. Sonra yaradılan alt qovluğa gedin və kitabxananın qovluğunda aşağıdakı əmri yerinə yetirin:
sudo python3 setup.py quraşdırın
Python IDE -ni açın və bir test proqramı yaradın və adını verin, məsələn BMP180Test.py
Adafruit_BMP. BMP085 -i BMP085sensor = BMP085. BMP085 () çap ('Temp = {0: 0.2f} *C'.format (sensor.read_temperature ())) çap (' Pressure = {0: 0.2f} Pa 'olaraq idxal edin. format (sensor.read_pressure ())) çap ('Yükseklik = {0: 0.2f} m'.format (sensor.read_altitude ()))) çap (' Sevelvel Pressure = {0: 0.2f} Pa'.format (sensor). oxu_səviyyəli_təzyiq ()))
Test proqramını yerinə yetirin:
python3 BMP180Test.py
Yuxarıdakı Terminal çap ekranı nəticəni göstərir.
Qeyd edək ki, təzyiq Pa (Paskal) dilində təqdim olunur. Bu bölmə haqqında daha yaxşı məlumat əldə etmək üçün növbəti addıma baxın.
Addım 5: BMP180 ilə Hava və Yüksəkliyin Ölçülməsi
BMP oxunuşları ilə nə əldə edəcəyimizi bir az daha dərk etmək üçün vaxt ayıraq. Dərsliyin bu hissəsini atlaya və ya sonra geri qayıda bilərsiniz.
Sensor oxunuşları haqqında daha çox bilmək istəyirsinizsə, bu möhtəşəm təlimata keçin:
BMP180 atmosfer təzyiqini dəqiq ölçmək üçün hazırlanmışdır. Atmosfer təzyiqi həm hava şəraitinə, həm də yüksəkliyə görə dəyişir.
Atmosfer təzyiqi nədir?
Atmosfer təzyiqinin tərifi ətrafınızdakı havanın hər şeyə təsir etdiyi bir qüvvədir. Atmosferdəki qazların ağırlığı atmosfer təzyiqi yaradır. Ümumi bir təzyiq vahidi, "kvadrat düym başına funt" və ya psi'dir. Burada paskal (Pa) adlanan hər kvadrat metrə düşən nyutonlardan istifadə edəcəyik.
1 sm genişlikdə bir hava sütunu götürsəniz, təxminən 1 kq ağırlığında olardı
Bu sütunun izini aşağı basaraq, BMP180 kimi sensorlar ilə ölçə biləcəyimiz atmosfer təzyiqi yaradır. Bu sm genişliyindəki hava sütununun çəkisi təxminən 1 Kq olduğu üçün, dəniz səviyyəsinin orta təzyiqinin təxminən 101325 paskal və ya daha yaxşı 1013.25 hPa (1 hPa milibar - mbar olaraq da bilinir) olduğu ortaya çıxır. Bu, qalxdığınız hər 300 metr üçün təxminən 4% azalacaq. Nə qədər yüksək olsanız, o qədər az təzyiq görərsiniz, çünki atmosferin yuxarı hissəsindəki sütun daha qısadır və buna görə də daha az çəkiyə malikdir. Bunu bilmək faydalıdır, çünki təzyiqi ölçmək və bəzi riyazi hesablamalar aparmaqla yüksəkliyinizi təyin edə bilərsiniz.
3,810 metrlik hava təzyiqi dəniz səviyyəsindəki təzyiqin yalnız yarısıdır.
BMP180 paskallarda mütləq təzyiq (Pa) verir. Bir paskal, çox kiçik bir təzyiqdir, təxminən bir kağız vərəqinin masaya söykənəcəyi qədərdir. Ölçmələri daha tez -tez hektopaskallarda görürsünüz (1 hPa = 100 Pa). Burada istifadə olunan kitabxana hPa-da üzən nöqtə dəyərləri verir və bu da bir millibara (mbar) bərabərdir.
Digər təzyiq vahidlərinə bəzi dönüşümlər:
- 1 hPa = 100 Pa = 1 mbar = 0.001 bar
- 1 hPa = 0.75006168 Torr
- 1 hPa = 0.01450377 psi (kvadrat düym üçün funt)
- 1 hPa = 0.02953337 inHg (civə düym)
- 1 hpa = 0.00098692 atm (standart atmosfer)
Temperatur effektləri
Temperatur bir qazın sıxlığına, sıxlıq isə bir qazın kütləsinə və kütlə təzyiqə təsir etdiyi üçün atmosfer təzyiqi temperaturla birlikdə əhəmiyyətli dərəcədə dəyişəcək. Pilotlar bunu "sıxlıq hündürlüyü" olaraq bilirlər ki, bu da havanın daha sıx olması və daha böyük aerodinamik təsirə malik olması səbəbindən soyuq günlərdə havanı istidən daha asan çıxarmağa imkan verir. Temperaturu kompensasiya etmək üçün BMP180 -də kifayət qədər yaxşı bir temperatur sensoru və bir təzyiq sensoru var.
Təzyiq oxunuşunu yerinə yetirmək üçün əvvəlcə bir temperatur oxunuşu alırsınız, sonra onu xam təzyiq oxunuşu ilə birləşdirərək son bir temperatur kompensasiya edilmiş təzyiq ölçümü əldə edirsiniz. (Kitabxana bütün bunları çox asanlaşdırır.)
Mütləq təzyiqin ölçülməsi
Tətbiqiniz mütləq təzyiqi ölçməyi tələb edirsə, etməli olduğunuz hər şey bir temperatur oxunmasıdır, sonra bir təzyiq oxunuşu edin (ətraflı məlumat üçün nümunə eskizinə baxın). Son təzyiq göstəricisi hPa = mbar olacaq. İstəyirsinizsə, yuxarıdakı dönüşüm amillərindən istifadə edərək bunu fərqli bir vahidə çevirə bilərsiniz.
Qeyd edək ki, atmosferin mütləq təzyiqi həm yüksəkliyinizə, həm də mövcud hava şəraitinə görə dəyişəcək, hər ikisi də ölçmək üçün faydalı olan şeylərdir.
Hava Müşahidələri
Dünyanın hər hansı bir yerindəki (və ya atmosferi olan hər hansı bir yerdə) atmosfer təzyiqi sabit deyil. Yerin fırlanması, oxun əyilməsi və bir çox digər amillər arasındakı kompleks qarşılıqlı təsir, hər gün gördüyümüz hava dəyişikliyinə səbəb olan daha yüksək və aşağı təzyiq sahələrinin hərəkət etməsinə səbəb olur. Təzyiqdəki dəyişiklikləri izləyərək hava şəraitində qısamüddətli dəyişiklikləri proqnozlaşdıra bilərsiniz. Məsələn, təzyiqin düşməsi ümumiyyətlə nəmli hava və ya fırtınanın yaxınlaşması deməkdir (aşağı təzyiqli sistem hərəkət edir). Artan təzyiq ümumiyyətlə açıq havanın yaxınlaşması deməkdir (yüksək təzyiqli bir sistem hərəkət edir). Ancaq unutmayın ki, atmosfer təzyiqi yüksəkliyə görə də dəyişir. Çilidəki Lo Barnechea evindəki (950m yüksəklikdəki) mütləq təzyiq, məsələn, San -Fransiskodakı mütləq təzyiqdən (2 metrdən az, demək olar ki, dəniz səviyyəsindən) aşağı olacaq. Hava stansiyaları yalnız mütləq təzyiqlərini bildirsəydilər, bir yerdən digərinə təzyiq ölçmələrini birbaşa müqayisə etmək çətin olardı (və genişmiqyaslı hava proqnozları mümkün qədər çox stansiyanın ölçmələrindən asılıdır).
Bu problemi həll etmək üçün hava stansiyaları, rütbənin, dəniz səviyyəsində çəkilmiş kimi görünməsini təmin etmək üçün bərabər sabit təzyiqi riyazi olaraq əlavə edərək, bildirilən təzyiq oxunuşlarından yüksəkliyin təsirini hər zaman aradan qaldırır. Bunu etdiyiniz zaman, San Fransiskoda Lo Barnechea'dan daha yüksək bir oxuma həmişə yüksəkliyə görə deyil, hava nümunələrinə görə olacaq.
Bunun üçün kitabxanada dəniz səviyyəsi (P, A) adlı bir funksiya var. Bu, hPa -da mütləq təzyiqi (P) və stansiyanın cari hündürlüyünü (A) metrlə alır və yüksəkliyin təsirini təzyiqdən uzaqlaşdırır. Hava oxunuşlarınızı dünyanın digər stansiyaları ilə birbaşa müqayisə etmək üçün bu funksiyanın çıxışından istifadə edə bilərsiniz.
Yüksəkliyin müəyyən edilməsi
Təzyiq yüksəkliyə görə dəyişdiyindən hündürlüyü ölçmək üçün bir təzyiq sensoru istifadə edə bilərsiniz (bir neçə xəbərdarlıqla). Dəniz səviyyəsindəki atmosferin orta təzyiqi 1013,25 hPa (və ya mbar) təşkil edir. Kosmosun boşluğuna qalxdıqca bu sıfıra enir. Bu düşmə əyrisi yaxşı başa düşüldüyündən, müəyyən bir tənlikdən istifadə edərək iki təzyiq ölçümü (p və p0) arasındakı yüksəklik fərqini hesablaya bilərsiniz.
Dəniz səviyyəsi təzyiqini (1013.25 hPa) əsas təzyiq (p0) olaraq istifadə edirsinizsə, tənliyin çıxışı dəniz səviyyəsindən hazırkı yüksəkliyiniz olacaq. Kitabxanada "hesablanmış yüksəkliyi" əldə etməyə imkan verən yüksəklik (P, P0) adlı bir funksiya var.
Yuxarıdakı izahat BMP 180 Sparkfun dərsliyindən alınmışdır.
Addım 6: Tam HW
Addım 7: Məlumatların ThingSpeak -a göndərilməsi
Bu nöqtədə, hər 3 sensordan alınan məlumatları terminalda çap edərək RPi hazırlamağı öyrəndik. İndi bu məlumatların IoT platforması ThingSpeak -a necə göndəriləcəyini görmək vaxtıdır.
Başlayaq!
Əvvəlcə ThinkSpeak.com -da bir hesabınız olmalıdır
Kanal yaratmaq üçün təlimatları izləyin və Kanal ID -ni və API Açarını Yazın
Python Scriptini GitHub -dan yükləyin: localData ToTS_v1_EXT.py
Kodun ən vacib hissələrini şərh edək:
Əvvəlcə ThingSpeak kitabxanasını idxal edək, WiFi müştərisini təyin edək və yerli Router və Thinkspeak etimadnamənizi təyin edək:
şeyi danış
ThingSpeak ilə ünsiyyət qurmağın bir neçə yolu var, ən sadə yol Mikolaj Chwaliz və Keith Ellis tərəfindən hazırlanan thingspeak.com API üçün müştəri kitabxanasından istifadə etmək olar.
Kitabxana https://github.com/mchwalisz/thingspeak saytından yüklənə və ya terminalda PIP istifadə oluna bilər:
sudo pip3 şeyi quraşdırın
Sonra, skriptin içərisində ThingSpeak kanalının etimadnaməsini yeniləyin
chId = 9999999 # Kanal İdentifikatorunuzla daxil olun
tsKey = 'KANALINIZLA YAZIN ANA YAZIN' yazın tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)
İndi 3 sensoru işə salaq:
# DS18B20 1 Telli kitabxana
w1thermsensor idxalından W1ThermSensor ds18b20Sensor = W1ThermSensor () # Varsayılan olaraq GPIO 4 kitabxana tərəfindən istifadə olunur # DHT22 Kitabxana idxalı Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # BMP180 kitabxanası Adafruit0B5P5Bmp0B8 Qlobal dəyişən "altReal" ı yeniləyərək Hava İstasyonunuzun yerləşdiyi əsl yüksəkliyi təyin etməlisiniz. Mənim vəziyyətimdə, İstasyonum dəniz səviyyəsindən 950m yüksəklikdə yerləşir
qlobal altReal
altReal = 950
Giriş olaraq stansiyanın hündürlüyünü daxil etdikdən sonra bmp180GetData (yüksəklik) funksiyasından istifadə edərək mütləq təzyiqi, dəniz səviyyəsinin təzyiqini, temperaturunu və yüksəkliyini əldə edə bilərik:
def bmp180GetData (yüksəklik):
temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres/pow (1.0 - irtifa/44330.0, 5.255) temp = yuvarlaq (temp, 1) pres = yuvarlaq (pres/100), 2) hPa (və ya mbar) # mütləq təzyiq alt=yuvarlaq (alt) presSeaLevel = yuvarlaq (presSeaLevel/100, 2)
GetLocalData () funksiyası stansiyamız tərəfindən tutulan bütün yerli məlumatları qaytaracaq:
def getLocalData ():
qlobal vaxtString global humLab global tempExt global tempLab global presSL global altLab global presAbs # İndi oxumaq üçün vaxt əldə edin = datetime.datetime.now () timeString = now.strftime ("%Y-%m-%d%H:%M") # Xarici Temperaturu oxuyun (1 metr məsafə) tempExt = yuvarlaq (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHTPSensor ifrat) və tempDHT Yoxdur: humLab = yuvarlaq (humDHT
Yuxarıdakı funksiyalar tərəfindən tutulan bütün məlumatları əldə etdikdən sonra onları ThingSpeak -a göndərməlisiniz. SendDataTs () funksiyasından istifadə edərək bunu edəcəksiniz:
def sendDataTs ():
data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) print ("[INFO] 5 sahə üçün göndərilən məlumatlar: ", tempLab, tempExt, humLab, presSL, altLab)
Kanal məlumatlarınız yeniləndikdə, skripti qeyd edin və terminalınızda icra edin:
sudo Python3 localData_ToTs_v1_EXT.py
Ünsiyyət protokolları haqqında
"Thingspeak kitabxanası" ndan istifadə edərək "istəklər kitabxanası", yəni Pythonda yazılmış Apache2 Lisenziyalı HTTP kitabxanası idxal olunur. Rəsmi İstək Quraşdırma sənədlərini burada tapa bilərsiniz:
docs.python-requests.org/az/latest/user/install/
Gerekirse, skriptinizi işə salmadan əvvəl, sorğu kitabxanasının quraşdırıldığını yoxlaya bilərsiniz:
sudo pip3 quraşdırma istəkləri
İsteğe bağlı olaraq ThingSpeak -ə məlumat göndərmək üçün MTTQ -dan istifadə edə bilərsiniz. MQTT, xüsusi olaraq yüngül olmaq üçün hazırlanmış və aşağı RAM və CPU performansı olan quraşdırılmış qurğular üçün nəzərdə tutulmuşdursa, HTTP -dən fərqlənir. Ayrıca, əksər hallarda MQTT daha az bant genişliyi istifadə edir.
Bu təlimata baxın: Daha çox məlumat üçün Raspberry Pi -də MQTT istifadə edərək ThingSpeak Kanalını yeniləyin.
Addım 8: ESP8266 istifadə edərək ThingSpeak -a Uzaqdan Məlumat Göndərmək
Bu addım üçün muy dərsliyində izah edilən eyni HW -dən istifadə edəcəyik:
IOT MASE ASAN: Uzaqdan hava məlumatlarının çəkilməsi: UV və hava istiliyi və rütubət
Burada istifadə edəcəyimiz kod, əsasən bu dərslikdə istifadə olunan koddur. Kodun ən vacib hissələrini şərh edək:
Əvvəlcə ESP8266 kitabxanasına zəng edək, WiFi müştərisini təyin edək və yerli Router və Thinkspeak etimadnamənizi təyin edək:
/ * NodeMCU ESP12-E */
#WiFiClient müştəri daxil edin; const char* MY_SSID = "SSDID İLƏ GİRİN"; const char* MY_PWD = "ŞİFRİNİZ İLƏ GİRİN"; /* Thinkspeak*/ const char* TS_SERVER = "api.thingspeak.com"; String TS_API_KEY = "YAZMA AÇIŞINIZLA GİRİN";
İkincisi, IoT layihələri üçün çox əhəmiyyətli bir kitabxana daxil edək: SimpleTimer.h:
/ * ZAMANLAYICI */
#SimpleTimer timer daxil edin;
Üçüncüsü, quraşdırma () zamanı serial ünsiyyətə başlayacağıq, connectWiFi () funksiyasını çağıracağıq və taymerləri təyin edəcəyik. Qeyd edək ki, kod xətti: timer.setInterval (60000L, sendDataTS); ThinkSpeak kanalına məlumat yükləmək üçün hər 60 saniyədə sendDataTS () funksiyasını çağıracaq.
boş quraşdırma ()
{… Serial.begin (115200); gecikmə (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}
Nəhayət, ən azı, loop () zamanı lazım olan yeganə əmr sayğacı işə salmaqdır və budur!
boşluq döngəsi ()
{… Timer.run (); // SimpleTimer başlatır}
Aşağıda, Thinkspeak ünsiyyətini idarə etmək üçün istifadə olunan iki vacib funksiyanı görə bilərsiniz:
WiFi şəbəkənizlə ESP12-E bağlantısı:
/***************************************************
*WiFi qoşulması ********************************************* ***/ void connectWifi () {Serial.print ("Bağlanır"+*MY_SSID); WiFi.begin (MY_SSID, MY_PWD); while (WiFi.status ()! = WL_CONNECTED) {gecikmə (1000); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi Bağlandı"); Serial.println (""); }
ThinkSpeak-ə məlumat göndərən ESP12-E:
***************************************************
*Thinkspeak Kanalına Məlumat Göndərmək **************************************** ******/ void sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr += "& field6 ="; postStr += String (temp); postStr += "& field7 ="; postStr += String (zümzümə); postStr += "& field8 ="; postStr += String (dataSensorUV); postStr += "\ r / n / r / n"; client.print ("POST /yeniləmə HTTP /1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Bağlantı: yaxın / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("Content-Type: application/x-www-form-urlencoded / n"); client.print ("Məzmun-Uzunluq:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); gecikmə (1000); } göndərildi ++; client.stop (); }
Tam kodu GitHub -da tapa bilərsiniz: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
Kodu NodeMCU -ya yüklədikdən sonra. Xarici bir batareyanı bağlayaq və günəş altında bir ölçü edək. Uzaq stansiyanı damın üstünə qoydum və yuxarıdakı fotoşəkillərdə göstərildiyi kimi ThingSpeak.com saytında məlumat toplamağa başladım.
Addım 9: Son Qeydlər
Bu təlimatın əsas məqsədi Raspberry Pi -ni ThingSpeak -a necə bağlayacağınızı göstərmək idi. Məlumat toplamaq və onları IoT platformasına daxil etmək çox yaxşıdır.
Fürsətdən istifadə edərək məlumatları ESP8266 istifadə edərək uzaq bir stansiyadan tutaraq həmin xüsusi kanala da göndərdik. Bu yanaşma yaxşıdır, amma ən yaxşısı deyil. "Asenkron" bir əməliyyata malik olduğumuz üçün bəzən RPi və ESP8266 həm ThingSpeak tərəfindən təkzib edilənləri eyni vaxtda (ya da kiçik bir fasilə ilə) daxil etməyə çalışırlar. İdeal, ESP8266 -nın yerli olaraq Raspberry Pi -yə məlumat göndərməsi və sonuncunun bütün məlumatları idarə etməkdən məsul olmasıdır. Bunu etməklə "Ana Stansiya" (Raspberry Pi) 3 şeyi edə bilər:
- Bütün məlumatları yerli verilənlər bazasına daxil edin
- Yerli bir Web səhifəsində bütün məlumatları təqdim edin (yuxarıdakı fotoşəkildə göstərildiyi kimi Şüşə istifadə edərək)
- Bütün məlumatları ThingSpeak -ə eyni vaxtda göndərmək.
Gələcək bir dərsdə bu variantları araşdıracağıq.
Addım 10: Nəticə
Həmişə olduğu kimi, ümid edirəm ki, bu layihə başqalarına maraqlı elektronika dünyasına yol tapmağa kömək edə bilər!
Detallar və son kod üçün GitHub depozitimi ziyarət edin: RPi-NodeMCU-Hava İstasyonu
Daha çox layihə üçün blogumu ziyarət edin: MJRoBot.org
İzləmədə qalın! Növbəti dərsdə məlumatları Raspberry Pi veb serverinə əsaslanaraq uzaq bir hava stansiyasından mərkəzi bir stansiyaya göndərəcəyik:
Dünyanın cənubundan salamlar!
Növbəti təlimatımda görüşənədək!
Çox sağ ol, Marcelo
Tövsiyə:
NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Düzgün Edildi: 8 Addım (Şəkillərlə)
NaTaLia Hava İstasyonu: Arduino Günəş Enerjili Hava İstasyonu Düzgün Edildi: 2 fərqli yerdə 1 illik uğurlu əməliyyatdan sonra günəş enerjisi ilə işləyən hava stansiyası layihə planlarımı paylaşıram və uzun müddət ərzində həqiqətən də sağ qala biləcək bir sistemə necə çevrildiyini izah edirəm. günəş enerjisindən dövrlər. Təqib etsəniz
Hava İstasyonu: ESP8266 ilə Dərin Yuxu, SQL, Şüşə Qrafiki və Plotly: 3 addım
Hava İstasyonu: ESP8266 Dərin Yuxu, SQL, Şüşə və Plotly ilə Qrafik: Balkonunuzdakı temperaturu, rütubəti və ya işığın intensivliyini bilmək əyləncəli olarmı? Biləcəyimi bilirəm. Belə məlumatları toplamaq üçün sadə bir hava stansiyası hazırladım. Aşağıdakı bölmələr, birini qurmaq üçün atdığım addımlardır. Başlayaq
Cib ESP8266 Hava İstasyonu [Heç bir şey danışmır] [Batareya ilə işləyir]: 11 addım
Cib ESP8266 Hava İstasyonu [Heç bir şey danışmır] [Batareya ilə işləyir]: Orada oturan və Təlimatlarımı izləyən Texnologiya Geeksləri üçün Xüsusi Hazırlanan Cib Hava İstasyonu. Bu Cib Hava İstasyonu haqqında sizə məlumat verim. Əsasən bu Mobil Hava ESP8266 Beyinə malikdir və H kimi Batareyada işləyir
Həssas Veb Saytı olan RPi Hava İstasyonu: 5 addım
Duyarlı Veb Saytlı RPi Hava İstasyonu: Bir məktəb layihəsi üçün, toplanan məlumatları gözəl bir şəkildə görselleştirmek üçün bir veb saytı olan bir IoT cihazı hazırlamalı idik. Həssas veb saytı olan MySQL üçün Raspberry Pi 3 işləyən Şüşə ilə işləyən bir hava istasyonu qurmağı seçdim. (MariaDB) məlumatlarım üçün
Raspberry Pi və Weewx istifadə edərək Acurite 5 -də 1 Hava İstasyonu (digər Hava İstasyonları Uyğundur): 5 Addım (Şəkillərlə)
Raspberry Pi və Weewx istifadə edərək Acurite 5 -də 1 Hava İstasyonu (digər Hava İstasyonları Uyğundur): Acurite 5 -i 1 hava stansiyasından alanda evdən kənarda olduğum zaman havanı yoxlamaq istəyirdim. Evə gəlib qurduqda ya ekranı kompüterə bağlamalı olduğumu, ya da ağıllı mərkəzini almalı olduğumu başa düşdüm