Isi kandungan:
- Langkah 1: BoM - Bil Bahan
- Langkah 2: Memasang Sensor Suhu & Kelembapan
- Langkah 3: Memasang DS18B20 - Sensor Suhu
- Langkah 4: Memasang BMP180
- Langkah 5: Mengukur Cuaca dan Ketinggian Dengan BMP180
- Langkah 6: HW Lengkap
- Langkah 7: Menghantar Data ke ThingSpeak
- Langkah 8: Menghantar Data Jauh ke ThingSpeak Menggunakan ESP8266
- Langkah 9: Nota Akhir
- Langkah 10: Kesimpulannya
Video: Stesen Cuaca IoT Dengan RPi dan ESP8266: 10 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Pada tutorial sebelumnya, kami telah bermain dengan NodeMCU, sensor dan belajar bagaimana menangkap dan log data di platform ThingSpeak (Internet of Things (IoT) yang membolehkan anda mengumpulkan dan menyimpan data sensor di awan dan mengembangkan aplikasi IoT):
IOT DIBUAT MUDAH: DATA MINGGU CAPTURING REMOTE: SUHU & HUMIDITI UV DAN UDARA
Dengan tutorial baru ini, kita akan belajar bagaimana melakukan hal yang sama tetapi pada masa ini, menggunakan Raspberry Pi untuk menangkap data dari beberapa sensor yang berbeza dan juga meneroka pelbagai cara berkomunikasi antara peranti dan web:
Sensor dan jenis Kominikasi:
- DHT22 (Suhu dan Kelembapan) ==> Komunikasi digital
- BMP180 (Suhu dan Tekanan) ==> Protokol I2C
- DS18B20 (Suhu) ==> 1-Wire Protocol
Gambarajah Blok menunjukkan apa yang akan kita perolehi pada akhir projek ini:
Langkah 1: BoM - Bil Bahan
- Raspberry Pi V3 - US $ 32.00
- Sensor Suhu dan Kelembapan Relatif DHT22 - USD 9,95
- Perintang 4K7 ohm
- Sensor Suhu Kalis Air DS18B20 - USD 5,95
- Perintang 4K7 ohm
- Sensor Tekanan, Suhu dan Ketinggian BMP180 Barometrik - USD 6,99
Langkah 2: Memasang Sensor Suhu & Kelembapan
Sensor pertama yang akan dipasang adalah DHT22 untuk menangkap data suhu udara dan kelembapan relatif. Laman ADAFRUIT memberikan maklumat hebat mengenai sensor tersebut. Di bawah ini, beberapa maklumat diambil dari sana:
Gambaran keseluruhan
Sensor suhu & kelembapan DHT yang rendah sangat asas dan perlahan tetapi sangat sesuai untuk peminat yang ingin melakukan beberapa pencatatan data asas. Sensor DHT terbuat dari dua bahagian, sensor kelembapan kapasitif, dan termistor. Terdapat juga cip yang sangat asas di dalamnya yang melakukan penukaran analog ke digital dan mengeluarkan isyarat digital dengan suhu dan kelembapan. Isyarat digital agak senang dibaca menggunakan mikrokontroler mana pun.
Ciri-ciri utama DHT22:
- Kos rendah
- Kuasa 3 hingga 5V dan I / O
- 2.5mA penggunaan semasa maksimum semasa penukaran (semasa meminta data)
- Baik untuk bacaan kelembapan 0-100% dengan ketepatan 2-5%
- Baik untuk bacaan suhu -40 hingga 125 ° C ketepatan ± 0.5 ° C
- Tidak lebih dari 0,5 Hz kadar persampelan (sekali setiap 2 saat)
- Ukuran badan 15.1mm x 25mm x 7.7mm
- 4 pin dengan jarak 0.1"
Setelah biasanya anda akan menggunakan sensor pada jarak kurang dari 20m, perintang 4K7 ohm harus dihubungkan antara pin Data dan VCC. Pin data output DHT22 akan disambungkan ke Raspberry GPIO 16. Periksa rajah elektrik di atas, sambungkan sensor ke pin RPi seperti di bawah:
- Pin 1 - Vcc ==> 3.3V
- Pin 2 - Data ==> GPIO 16
- Pin 3 - Tidak Bersambung
- Pin 4 - Gnd ==> Gnd
Jangan lupa Pasang perintang ohm 4K7 antara pin Vcc dan Data
Setelah sensor disambungkan, kita juga mesti memasang perpustakaannya pada RPi kita.
Memasang Perpustakaan DHT:
Pada Raspberry anda, bermula dari / rumah, pergi ke / Dokumen
cd Dokumen
Buat direktori untuk memasang perpustakaan dan pindah ke sana:
mkdir DHT22_Sensor
cd DHT22_Sensor
Pada penyemak imbas anda, pergi ke Adafruit GitHub:
github.com/adafruit/Adafruit_Python_DHT
Muat turun perpustakaan dengan mengklik pautan muat turun zip di sebelah kanan dan nyah zip zip arkib pada folder Raspberry Pi anda yang baru dibuat. Kemudian pergi ke direktori perpustakaan (subfolder yang dibuat secara automatik ketika anda membuka zip fail), dan jalankan perintah:
sudo python3 setup.py pasang
Buka program ujian (DHT22_test.py) dari GITHUB saya
import Adafruit_DHT
DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 kelembapan, suhu = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin) jika kelembapan tidak Tiada dan suhu tidak ada: cetak ('Temp = {0: 0.1f} * C Kelembapan = {1: 0.1 f}% '. format (suhu, kelembapan)) lain: cetak (' Gagal membaca. Cuba lagi! ')
Jalankan program dengan arahan:
python3 DHT22_test.py
Skrin cetak Terminal di bawah menunjukkan hasilnya.
Langkah 3: Memasang DS18B20 - Sensor Suhu
Gambaran Keseluruhan Sensor:
Kami akan menggunakan dalam tutorial ini versi kalis air dari sensor DS18B20. Ia sangat berguna untuk suhu jauh dalam keadaan basah, misalnya di tanah lembap. Sensor diasingkan dan dapat melakukan pengukuran hingga 125oC (Adafrut tidak mengesyorkan menggunakannya lebih dari 100oC kerana jaket PVC kabelnya).
DS18B20 adalah sensor digital yang menjadikannya baik untuk digunakan walaupun jarak jauh! Sensor suhu digital 1-wayar ini cukup tepat (± 0,5 ° C melebihi julat) dan boleh memberikan ketepatan hingga 12 bit dari penukar digital-ke-analog onboard. Mereka berfungsi dengan baik dengan NodeMCU menggunakan pin digital tunggal, dan anda juga boleh menghubungkan beberapa pin ke pin yang sama, masing-masing mempunyai ID 64-bit unik yang dibakar di kilang untuk membezakannya.
Sensor berfungsi dari 3.0 hingga 5.0V, yang bermaksud bahawa ia dapat dihidupkan terus dari 3.3V yang disediakan oleh salah satu pin Raspberry (1 atau 17).
Sensor mempunyai 3 wayar:
- Hitam: GND
- Merah: VCC
- Kuning: Data 1-Wire
Di sini, anda dapat mencari data lengkap: Lembaran Data DS18B20
Pemasangan Sensor:
Ikuti rajah di atas dan buat sambungan:
- Vcc ==> 3.3V
- Gnd ==> Gnd
- Data ==> GPIO 4 (lalai untuk perpustakaan)
Memasang Python Library:
Seterusnya, mari pasang pustaka Python yang akan mengendalikan sensor:
sudo pip3 pasang w1thermsensor
Sebelum menjalankan skrip untuk menguji sensor, periksa apakah antara muka "1-Wire" diaktifkan di RPi anda (lihat layar cetak di atas)
Jangan lupa memulakan semula RPi anda, setelah mengubah konfigurasinya
Menguji sensor:
Untuk menguji sensor, skrip python sederhana boleh digunakan:
masa import
dari w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () manakala True: suhu = ds18b20Sensor.get_temperature () cetak ("Suhu adalah% s celsius"% suhu) masa.s tidur (1)
Langkah 4: Memasang BMP180
Gambaran Keseluruhan Sensor:
BMP180 adalah penerus BMP085, generasi baru sensor tekanan digital berketepatan tinggi untuk aplikasi pengguna. Elektronik kuasa rendah dan voltan rendah BMP180 dioptimumkan untuk digunakan dalam telefon bimbit, PDA, peranti navigasi GPS dan peralatan luaran. Dengan bunyi ketinggian rendah hanya 0.25m pada masa penukaran pantas, BMP180 menawarkan prestasi yang unggul. Antara muka I2C memungkinkan penyatuan sistem yang mudah dengan mikrokontroler. BMP180 didasarkan pada teknologi piezo-resistive untuk ketahanan EMC, ketepatan tinggi, dan linearitas serta kestabilan jangka panjang.
Lembaran data BMP yang lengkap boleh didapati di sini: BMP180 - Sensor Tekanan Digital
Pemasangan Sensor: Ikuti rajah di atas dan buat sambungan:
- Vin ==> 3.3V
- GND ==> GND
- SCL ==> GPIO 3
- SDA ==> GPIO 2
Mengaktifkan Antara Muka I2C
Pergi ke Konfigurasi RPi dan sahkan bahawa antara muka I2C diaktifkan. Sekiranya tidak, aktifkan dan mulakan semula RPi.
Menggunakan BMP180
Sekiranya semuanya telah dipasang dengan baik, dan semuanya telah dihubungkan dengan baik, anda kini bersedia untuk menghidupkan Pi anda dan mula melihat apa yang diberitahu oleh BMP180 tentang dunia di sekeliling anda.
Perkara pertama yang perlu dilakukan ialah memeriksa sama ada Pi melihat BMP180 anda. Cuba yang berikut di tetingkap terminal:
sudo i2cdetect -y 1
Sekiranya arahan itu berfungsi, anda akan melihat sesuatu yang serupa dengan Skrin Cetak Terminal di atas, yang menunjukkan bahawa BMP180 ada di saluran '77'.
Memasang Perpustakaan BMP180:
Buat direktori untuk memasang perpustakaan:
mkdir BMP180_Sensorcd BMP180_Sensor
Pada penyemak imbas anda, pergi ke Adafruit GITHub:
github.com/adafruit/Adafruit_Python_BMP
Muat turun perpustakaan dengan mengklik pautan muat turun zip di sebelah kanan dan buka zip fail arkib pada folder Raspberry Pi yang anda buat. Kemudian pergi ke subfolder yang dibuat dan jalankan perintah berikut di direktori perpustakaan:
sudo python3 setup.py pasang
Buka Python IDE anda dan buat program ujian dan beri nama, contohnya BMP180Test.py
import Adafruit_BMP. BMP085 sebagai BMP085sensor = BMP085. BMP085 () cetak ('Temp = {0: 0.2f} * C'.format (sensor.read_temperature ())) cetak (' Tekanan = {0: 0.2f} Pa '). format (sensor.read_pressure ())) print ('Altitude = {0: 0.2f} m'.format (sensor.read_altitude ())) print (' Sealevel Pressure = {0: 0.2f} Pa'.format (sensor.read_sealevel_pressure ()))
Jalankan program ujian:
python3 BMP180Test.py
Skrin cetak Terminal di atas menunjukkan hasilnya.
Perhatikan bahawa tekanan ditunjukkan dalam Pa (Pascals). Lihat langkah seterusnya untuk lebih memahami mengenai unit ini.
Langkah 5: Mengukur Cuaca dan Ketinggian Dengan BMP180
Mari luangkan sedikit masa untuk memahami sedikit sebanyak mengenai apa yang akan kita perolehi, dengan bacaan BMP. Anda boleh melangkau bahagian tutorial ini, atau kembali kemudian.
Sekiranya anda ingin mengetahui lebih lanjut mengenai bacaan Sensor, sila pergi ke tutorial hebat ini:
BMP180 dirancang untuk mengukur tekanan atmosfera dengan tepat. Tekanan atmosfera berbeza dengan cuaca dan ketinggian.
Apakah Tekanan Atmosfera?
Definisi tekanan atmosfera adalah kekuatan yang dilakukan oleh udara di sekeliling anda. Berat gas di atmosfera menimbulkan tekanan atmosfera. Satuan tekanan yang biasa ialah "pound per inci persegi" atau psi. Kami akan menggunakan notasi antarabangsa di sini, yaitu Newton per meter persegi, yang disebut pascal (Pa).
Sekiranya anda mengambil ruang selebar 1 cm, beratnya kira-kira 1 kg
Berat ini, menekan jejak lajur itu, menimbulkan tekanan atmosfera yang dapat kita ukur dengan sensor seperti BMP180. Oleh kerana tiang udara selebar cm itu mempunyai berat sekitar 1Kg, maka tekanan permukaan laut rata-rata adalah sekitar 101325 pascal, atau lebih baik, 1013.25 hPa (1 hPa juga dikenal sebagai milibar - mbar). Ini akan turun sekitar 4% untuk setiap 300 meter yang anda naiki. Semakin tinggi anda mendapat, semakin sedikit tekanan yang akan anda lihat, kerana tiang ke puncak atmosfera lebih pendek dan oleh itu beratnya lebih sedikit. Ini berguna untuk diketahui, kerana dengan mengukur tekanan dan melakukan beberapa matematik, anda dapat menentukan ketinggian anda.
Tekanan udara pada jarak 3, 810 meter hanya separuh dari permukaan laut.
BMP180 menghasilkan tekanan mutlak dalam pascal (Pa). Satu pascal adalah tekanan yang sangat kecil, kira-kira jumlah selembar kertas yang akan diletakkan di atas meja. Anda akan lebih kerap melihat pengukuran pada hectopascals (1 hPa = 100 Pa). Perpustakaan yang digunakan di sini memberikan output nilai titik terapung dalam hPa, yang juga sama dengan satu milibar (mbar).
Berikut adalah beberapa penukaran ke unit tekanan lain:
- 1 hPa = 100 Pa = 1 mbar = 0.001 bar
- 1 hPa = 0.75006168 Torr
- 1 hPa = 0.01450377 psi (paun per inci persegi)
- 1 hPa = 0.02953337 inHg (inci merkuri)
- 1 hpa = 0.00098692 atm (atmosfera standard)
Kesan Suhu
Kerana suhu mempengaruhi ketumpatan gas, dan ketumpatan mempengaruhi jisim gas, dan massa mempengaruhi tekanan (whew), tekanan atmosfera akan berubah secara mendadak dengan suhu. Juruterbang mengetahui ini sebagai "ketinggian kepadatan", yang menjadikannya lebih mudah untuk dilepaskan pada hari yang sejuk daripada yang panas kerana udara lebih padat dan mempunyai kesan aerodinamik yang lebih besar. Untuk mengimbangi suhu, BMP180 menyertakan sensor suhu yang agak baik dan juga sensor tekanan.
Untuk melakukan pembacaan tekanan, pertama-tama anda mengambil bacaan suhu, kemudian menggabungkannya dengan bacaan tekanan mentah untuk menghasilkan pengukuran tekanan yang dikompensasi suhu akhir. (Perpustakaan menjadikan semua ini sangat mudah.)
Mengukur Tekanan Mutlak
Sekiranya aplikasi anda memerlukan pengukuran tekanan mutlak, yang harus anda lakukan ialah mendapatkan bacaan suhu, kemudian lakukan bacaan tekanan (lihat lakaran contoh untuk perinciannya). Bacaan tekanan akhir adalah dalam hPa = mbar. Sekiranya anda mahu, anda boleh menukarnya ke unit lain menggunakan faktor penukaran di atas.
Perhatikan bahawa tekanan atmosfera mutlak akan berbeza dengan ketinggian anda dan corak cuaca semasa, kedua-duanya adalah perkara yang berguna untuk diukur.
Pemerhatian Cuaca
Tekanan atmosfera di lokasi tertentu di bumi (atau di mana sahaja dengan atmosfera) tidak berterusan. Interaksi yang kompleks antara putaran bumi, kemiringan paksi, dan banyak faktor lain mengakibatkan kawasan bergerak dengan tekanan yang lebih tinggi dan lebih rendah, yang seterusnya menyebabkan perubahan cuaca yang kita lihat setiap hari. Dengan melihat perubahan tekanan, anda dapat meramalkan perubahan cuaca jangka pendek. Sebagai contoh, penurunan tekanan biasanya bermaksud cuaca basah atau ribut semakin hampir (sistem tekanan rendah bergerak). Kenaikan tekanan biasanya bermaksud cuaca cerah semakin hampir (sistem tekanan tinggi bergerak). Tetapi ingat bahawa tekanan atmosfera juga berbeza dengan ketinggian. Tekanan mutlak di rumah saya, Lo Barnechea di Chile (ketinggian 950m) akan selalu lebih rendah daripada tekanan mutlak di San Francisco misalnya (kurang dari 2 meter, hampir permukaan laut). Sekiranya stesen cuaca melaporkan tekanan mutlaknya, sukar untuk membandingkan pengukuran tekanan secara langsung dari satu lokasi ke lokasi lain (dan ramalan cuaca berskala besar bergantung pada pengukuran dari seberapa banyak stesen yang mungkin).
Untuk menyelesaikan masalah ini, stesen cuaca selalu menghilangkan kesan ketinggian dari bacaan tekanan yang dilaporkan dengan menambahkan secara matematik tekanan tetap yang setara untuk menjadikannya seolah-olah bacaan diambil di permukaan laut. Apabila anda melakukan ini, bacaan yang lebih tinggi di San Francisco berbanding Lo Barnechea selalu disebabkan oleh corak cuaca, dan bukan kerana ketinggian.
Untuk melakukan ini, terdapat fungsi di perpustakaan yang disebut permukaan laut (P, A). Ini mengambil tekanan mutlak (P) dalam hPa, dan ketinggian arus stesen (A) dalam meter, dan menghilangkan kesan ketinggian dari tekanan. Anda boleh menggunakan output fungsi ini untuk membandingkan bacaan cuaca anda secara langsung dengan stesen lain di seluruh dunia.
Menentukan Ketinggian
Oleh kerana tekanan berbeza dengan ketinggian, anda boleh menggunakan sensor tekanan untuk mengukur ketinggian (dengan beberapa peringatan). Tekanan purata atmosfer di permukaan laut ialah 1013.25 hPa (atau mbar). Ini turun menjadi sifar semasa anda menuju ke arah kekosongan ruang. Kerana lekukan penurunan ini dapat dipahami dengan baik, anda dapat menghitung perbezaan ketinggian antara dua pengukuran tekanan (p dan p0) dengan menggunakan persamaan tertentu.
Sekiranya anda menggunakan tekanan permukaan laut (1013.25 hPa) sebagai tekanan garis dasar (p0), output persamaan akan menjadi ketinggian semasa anda di atas permukaan laut. Terdapat fungsi di perpustakaan yang disebut ketinggian (P, P0) yang membolehkan anda mendapatkan "ketinggian yang dikira".
Penjelasan di atas diambil dari tutorial BMP 180 Sparkfun.
Langkah 6: HW Lengkap
Langkah 7: Menghantar Data ke ThingSpeak
Pada ketika ini, kami belajar bagaimana mempersiapkan RPi untuk menangkap data dari ketiga-tiga sensor, mencetaknya di terminal. Sekarang, inilah masanya untuk melihat bagaimana menghantar data tersebut ke platform IoT, ThingSpeak.
Mari kita mulakan!
Pertama, anda mesti mempunyai akaun di ThinkSpeak.com
Ikuti arahan untuk membuat Saluran dan perhatikan ID Saluran anda dan Tulis Kunci API
Muat turun Skrip Python dari GitHub saya: localData ToTS_v1_EXT.py
Mari komen bahagian paling penting kod:
Pertama, mari kita import perpustakaan ThingSpeak, tentukan klien WiFi dan tentukan kelayakan Router dan Thinkspeak tempatan anda:
import barang-barang
Terdapat beberapa cara untuk berkomunikasi dengan ThingSpeak, cara termudah adalah menggunakan pustaka pelanggan untuk thingspeak.com API yang dikembangkan oleh Mikolaj Chwaliz dan Keith Ellis.
Perpustakaan boleh dimuat turun dari https://github.com/mchwalisz/thingspeak atau menggunakan PIP di terminal:
sudo pip3 pasang thingspeak
Seterusnya, di dalam skrip, kemas kini kelayakan saluran ThingSpeak
chId = 9999999 # Masukkan dengan Id Saluran anda
tsKey = 'MASUKKAN DENGAN KUNCI MENULIS SALURAN ANDA' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)
Sekarang, mari kita mulakan 3 sensor:
# Perpustakaan 1-Wire DS18B20
dari w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () # Secara lalai GPIO 4 digunakan oleh perpustakaan # DHT22 Perpustakaan import Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # BMP180 pustaka import Adafruit_B80B00BB085 Anda harus menentukan ketinggian sebenar di mana Stesen Cuaca anda berada, mengemas kini pemboleh ubah global "altReal". Dalam kes saya, Stesen saya terletak pada ketinggian 950m dari aras laut
altReal global
altReal = 950
Setelah masuk dengan ketinggian sebenar stesen sebagai input, kita dapat memperoleh tekanan mutlak, tekanan permukaan laut, suhu, dan ketinggian menggunakan fungsi bmp180GetData (ketinggian):
def bmp180GetData (ketinggian):
temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres / pow (1.0 - ketinggian / 44330.0, 5.255) temp = bulat (temp, 1) pres = bulat (pres / 100, 2) # tekanan mutlak dalam hPa (atau mbar) alt=bulat (alt) presSeaLevel = bulat (presSeaLevel / 100, 2) # tekanan mutlak dalam hPa (atau mbar) temp kembali, pres, alt, presSeaLevel
Fungsi getLocalData (), akan mengembalikan semua data tempatan yang ditangkap oleh stesen kami:
def getLocalData ():
global timeString global humLab global tempExt global tempLab global presSL global altLab global presAbs # Dapatkan waktu membaca sekarang = datetime.datetime.now () timeString = now.strftime ("% Y-% m-% d% H:% M") # Baca Suhu Luar (jarak 1 meter) tempExt = bulat (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHT22Sensor) dan tempDHT bukan Tiada: humLab = bulat (humDHT
Setelah anda memperoleh semua data dengan fungsi di atas, anda mesti menghantarnya ke ThingSpeak. Anda akan melakukannya menggunakan fungsi sendDataTs ():
def sendDataTs ():
data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) print ("[INFO] Data dihantar untuk 5 bidang: ", tempLab, tempExt, humLab, presSL, altLab)
Dengan data saluran anda dikemas kini, simpan skrip dan laksanakan di terminal anda:
sudo Python3 localData_ToTs_v1_EXT.py
Mengenai protokol Komunikasi
Perhatikan bahawa dengan menggunakan "thingspeak library", "permintaan library" diimport, iaitu perpustakaan HTTP Berlesen Apache2, yang ditulis dalam Python. Dokumentasi Permintaan Pemasangan rasmi boleh didapati di sini:
docs.python-requests.org/en/latest/user/install/
Sekiranya perlu, sebelum menjalankan skrip anda, anda dapat mengesahkan apakah perpustakaan permintaan dipasang:
permintaan pemasangan sudo pip3
Secara pilihan anda boleh menggunakan MTTQ sebagai kaedah untuk menghantar data ke ThingSpeak. MQTT berbeza dengan HTTP, setelah dirancang khusus untuk ringan dan ditujukan untuk peranti tertanam dengan RAM dan kinerja CPU yang rendah. Juga, dalam kebanyakan kes, MQTT menggunakan lebar jalur yang lebih sedikit.
Rujuk tutorial ini: Kemas kini Saluran ThingSpeak menggunakan MQTT pada Raspberry Pi untuk maklumat lebih lanjut.
Langkah 8: Menghantar Data Jauh ke ThingSpeak Menggunakan ESP8266
Untuk langkah ini, kami akan menggunakan HW yang sama yang dijelaskan dalam tutorial muy:
IOT DIBUAT MUDAH: DATA MINGGU CAPTURING REMOTE: SUHU & HUMIDITI UV DAN UDARA
Kod yang akan kita gunakan di sini, pada dasarnya sama seperti yang digunakan pada tutorial itu. Mari komen bahagian paling penting kod:
Pertama, mari panggil perpustakaan ESP8266, tentukan klien WiFi dan tentukan kelayakan Router dan Thinkspeak tempatan anda:
/ * NodeMCU ESP12-E * /
#masuk pelanggan WiFiClient; const char * MY_SSID = "MASUKKAN DENGAN SSDID ANDA"; const char * MY_PWD = "MASUKKAN DENGAN KATA LALUAN ANDA"; / * Thinkspeak * / const char * TS_SERVER = "api.thingspeak.com"; Rentetan TS_API_KEY = "MASUKKAN DENGAN KUNCI MENULIS ANDA";
Kedua, mari sertakan perpustakaan yang sangat penting untuk projek IoT: SimpleTimer.h:
/ * PEMASA * /
#masuk pemasa SimpleTimer;
Ketiga, selama penyiapan (), kita akan memulai komunikasi bersiri, memanggil fungsi connectWiFi () dan menentukan pemasa. Perhatikan bahawa garis kod: timer.setInterval (60000L, sendDataTS); akan memanggil fungsi sendDataTS () setiap 60 saat, untuk memuat naik data ke saluran ThinkSpeak.
persediaan tidak sah ()
{… Serial.begin (115200); kelewatan (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}
Akhirnya tetapi paling tidak, semasa gelung (), satu-satunya arahan yang diperlukan adalah memulakan pemasa dan hanya itu!
gelung kosong ()
{… Timer.run (); // Memulakan SimpleTimer}
Di bawah ini, anda dapat melihat dua fungsi penting yang digunakan untuk mengendalikan komunikasi Thinkspeak:
Sambungan ESP12-E dengan rangkaian WiFi anda:
/***************************************************
* Menyambungkan WiFi *********************************************** *** / batal connectWifi () {Serial.print ("Menyambung ke" + * MY_SSID); WiFi.begin (MY_SSID, MY_PWD); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (1000); Cetakan bersiri ("."); } Serial.println (""); Serial.println ("WiFi Disambungkan"); Serial.println (""); }
ESP12-E menghantar data ke ThinkSpeak:
***************************************************
* Menghantar Data ke Saluran Thinkspeak ******************************************** ****** / batal sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr + = "& bidang6 ="; postStr + = Rentetan (temp); postStr + = "& bidang7 ="; postStr + = Rentetan (hum); postStr + = "& bidang8 ="; postStr + = Rentetan (dataSensorUV); postStr + = "\ r / n / r / n"; client.print ("POST / kemas kini HTTP / 1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Sambungan: tutup / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded / n"); client.print ("Panjang Kandungan:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); kelewatan (1000); } dihantar ++; pelanggan.stop (); }
Kod lengkap boleh didapati di GitHub saya: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
Setelah kod dimuat naik ke NodeMCU anda. Mari sambungkan bateri luaran dan lakukan pengukuran di bawah cahaya matahari. Saya meletakkan Stesen Jauh di atas bumbung dan mula menangkap data di ThingSpeak.com seperti yang ditunjukkan dalam gambar di atas.
Langkah 9: Nota Akhir
Tujuan utama tutorial ini adalah untuk menunjukkan cara menghubungkan Raspberry Pi ke ThingSpeak. Ini bagus untuk menangkap data dan mencatatnya di platform IoT.
Dengan menggunakan kesempatan tersebut, kami juga mengirim data ke saluran tertentu, menangkapnya dari stesen jauh menggunakan ESP8266. Pendekatan ini adalah OK, tetapi bukan yang terbaik. Kerana kami mempunyai operasi "tidak segerak", kadang-kadang, kedua-duanya, RPi dan ESP8266 cuba log pada masa yang sama (atau dengan selang kecil) apa yang dibantah oleh ThingSpeak. Yang ideal adalah ESP8266 menghantar data secara tempatan ke Raspberry Pi dan yang terakhir bertanggungjawab untuk mengendalikan semua data. Melakukannya, "Stesen Utama" (Raspberry Pi), dapat melakukan 3 perkara:
- Log semua data pada pangkalan data tempatan
- Kemukakan semua data di Halaman Web tempatan (menggunakan Flask seperti yang ditunjukkan pada foto di atas)
- Menghantar semua data ke ThingSpeak pada masa yang sama.
Pada tutorial yang akan datang, kami akan meneroka pilihan tersebut.
Langkah 10: Kesimpulannya
Seperti biasa, saya harap projek ini dapat membantu orang lain memasuki dunia elektronik yang menarik!
Untuk keterangan dan kod akhir, sila kunjungi simpanan GitHub saya: RPi-NodeMCU-Weather-Station
Untuk lebih banyak projek, sila lawati blog saya: MJRoBot.org
Nantikan! Tutorial seterusnya kami akan menghantar data dari stesen cuaca jauh ke pusat, berdasarkan pelayan Raspberry Pi Web:
Saludos dari selatan dunia!
Jumpa anda dalam arahan saya seterusnya!
Terima kasih, Marcelo
Disyorkan:
Stesen Cuaca Profesional Menggunakan ESP8266 dan ESP32 DIY: 9 Langkah (dengan Gambar)
Stesen Cuaca Profesional Menggunakan ESP8266 dan ESP32 DIY: LineaMeteoStazione adalah stesen cuaca lengkap yang dapat dihubungkan dengan sensor profesional dari Sensirion serta beberapa komponen Alat Davis (Rain Gauge, Anemometer) Projek ini bertujuan sebagai stesen cuaca DIY tetapi hanya memerlukan
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: 8 Langkah (dengan Gambar)
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: Setelah 1 tahun beroperasi di 2 lokasi yang berbeza, saya berkongsi rancangan projek stesen cuaca berkuasa solar saya dan menerangkan bagaimana ia berkembang menjadi sistem yang benar-benar dapat bertahan dalam jangka masa yang lama tempoh dari tenaga suria. Sekiranya anda mengikuti
Stesen Cuaca DIY & Stesen Sensor WiFi: 7 Langkah (dengan Gambar)
DIY Weather Station & WiFi Sensor Station: Dalam projek ini saya akan menunjukkan kepada anda cara membuat stesen cuaca bersama dengan stesen sensor WiFi. Stesen sensor mengukur data suhu dan kelembapan tempatan dan menghantarnya, melalui WiFi, ke stesen cuaca. Stesyen cuaca kemudian memaparkan
Stesen Cuaca RPi dan Jam Digital: 4 Langkah (dengan Gambar)
Stesen Cuaca RPi dan Jam Digital: Ini adalah projek yang cepat dan mudah dibuat, dan paparan yang bagus untuk dipamerkan. Ia memaparkan waktu, keadaan cuaca dan suhu. Dan jika anda menyukai apa yang anda lihat, ikuti saya di Instagram dan Twitter (@ Anders644PI) untuk mengikuti apa yang saya buat. C
Stesen Cuaca Acurite 5 dalam 1 Menggunakan Pi Raspberry dan Weewx (Stesen Cuaca lain Sesuai): 5 Langkah (dengan Gambar)
Stesen Cuaca Acurite 5 in 1 Menggunakan Raspberry Pi dan Weewx (Stesen Cuaca yang Lain Sesuai): Semasa saya membeli stesen cuaca Acurite 5 in 1, saya ingin dapat memeriksa cuaca di rumah saya semasa saya tiada. Semasa saya pulang dan menyiapkannya, saya menyedari bahawa saya mesti mempunyai paparan yang disambungkan ke komputer atau membeli hab pintar mereka