Kelembapan, Suhu dan Tekanan adalah tiga parameter asas untuk membina Stesen Cuaca dan mengukur keadaan persekitaran. Kami sebelumnya telah membina Stesen Cuaca mini menggunakan Arduino dan kali ini kami memperluas stesen cuaca dengan Raspberry Pi. Projek berasaskan IoT ini bertujuan untuk menunjukkan parameter Kelembapan, Suhu dan Tekanan semasa di LCD dan juga pada pelayan Internet menggunakan Raspberry Pi, yang menjadikannya Stesen Cuaca Raspberry Pi. Anda boleh memasang penyediaan ini di mana sahaja dan dapat memantau keadaan cuaca di tempat itu dari mana saja di dunia melalui internet, ia tidak hanya akan menunjukkan data semasa tetapi juga dapat menunjukkan nilai-nilai masa lalu dalam bentuk Grafik.
Kami telah menggunakan sensor kelembapan & suhu DHT11 untuk merasakan suhu dan modul sensor tekanan BM180 untuk mengukur tekanan barometrik. Thermometer skala Celcius dan skala peratusan Meter kelembapan ini memperlihatkan suhu dan kelembapan persekitaran melalui paparan LCD dan tekanan barometrik ditunjukkan dalam millibar atau hPa (hectopascal). Semua data ini dihantar ke pelayan ThingSpeak untuk pemantauan langsung dari mana saja di dunia melalui internet. Periksa Program Demonstrasi dan Program Python, yang diberikan pada akhir tutorial ini.
Penyediaan Bekerja dan ThingSpeak:
Projek berasaskan IoT ini mempunyai empat bahagian. Sensor DHT11 pertama mengesan Data Kelembapan & Suhu dan sensor BM180 mengukur tekanan atmosfera. Kedua Raspberry Pi membaca output modul sensor DHT11 dengan menggunakan protokol wayar tunggal dan output sensor tekanan BM180 dengan menggunakan protokol I2C dan mengekstrak kedua-dua nilai sensor menjadi nombor yang sesuai dalam peratusan (kelembapan), skala Celsius (suhu), hectoPascal atau millibar (tekanan). Ketiga, nilai-nilai ini dihantar ke pelayan ThingSpeak dengan menggunakan Wi-Fi terbina dalam Raspberry Pi 3. Dan akhirnya ThingSpeak menganalisis data dan menunjukkannya dalam bentuk Grafik. LCD juga digunakan untuk menampilkan nilai-nilai ini secara tempatan.
ThingSpeak menyediakan alat yang sangat baik untuk projek berasaskan IoT. Dengan menggunakan laman web ThingSpeak, kami dapat memantau data kami dan mengendalikan sistem kami melalui Internet, menggunakan Saluran dan laman web yang disediakan oleh ThingSpeak. ThingSpeak 'Mengumpulkan' data dari sensor, 'Menganalisis dan Memvisualisasikan ' data dan 'Bertindak' dengan mencetuskan reaksi. Kami sebelum ini telah menjelaskan mengenai penghantaran data ke ThingSpeak secara terperinci, anda boleh menyemaknya di sana. Di sini kami menerangkan secara ringkas untuk menggunakan ThingSpeak untuk stesen Raspberry Pi Weather ini.
Mula-mula anda perlu membuat akaun di laman web ThingSpeak dan membuat 'Saluran baru' di dalamnya. Di saluran baru anda harus menentukan beberapa bidang untuk data yang ingin anda pantau, seperti dalam projek ini kami akan membuat tiga bidang untuk data Kelembapan, Suhu dan Tekanan.
Sekarang klik pada tab 'Kekunci API' dan simpan kekunci API Tulis dan Baca, di sini kita hanya menggunakan kekunci Tulis. Anda perlu menyalin kunci ini dalam pemboleh ubah 'kunci' dalam Kod.
Selepas itu, klik 'Data Import / Export' dan salin Update Channel Feed GET Request URL, iaitu:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Sekarang kita memerlukan 'Feed Get Request URL' ini dalam kod Python kami untuk membuka "api.thingspeak.com" dan kemudian mengirim data menggunakan Permintaan Umpan ini sebagai rentetan pertanyaan. Dan Sebelum mengirim data pengguna harus memasukkan data suhu, kelembapan dan tekanan dalam pertanyaan ini String menggunakan pemboleh ubah dalam program, periksa Kode di akhir artikel ini.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (tekanan)
Pengoperasian DHT11 berdasarkan komunikasi bersiri wayar tunggal untuk mengambil data dari DHT11. Di sini kami telah menggunakan perpustakaan AdaFruit DHT11 untuk menghubungkan DHT11 dengan Raspberry Pi. Raspberry Pi di sini mengumpulkan data Kelembapan dan suhu dari DHT11 dan tekanan atmosfera dari sensor BMP180 dan kemudian menghantarnya ke pelayan LCD 16x2 dan ThingSpeak. ThingSpeak memaparkan Data dalam bentuk Grafik seperti di bawah:
Anda boleh mengetahui lebih lanjut mengenai Sensor DHT11 dan Interfacingnya dengan Arduino di sini.
Rajah Litar:
Program Konfigurasi dan Python Raspberry Pi:
Kami menggunakan bahasa Python di sini untuk Program. Sebelum membuat pengekodan, pengguna perlu mengkonfigurasi Raspberry Pi. Anda boleh menyemak tutorial kami sebelumnya untuk Bermula dengan Raspberry Pi dan Memasang & Mengkonfigurasi OS Raspbian Jessie di Pi.
Pertama sekali, kita perlu memasang fail Perpustakaan Adafruit Python DHT Sensor untuk menjalankan projek ini di Raspberry Pi. Untuk melakukan ini, kita perlu mengikuti arahan yang diberikan:
sudo apt-get install git-core sudo apt-get update git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py pasang
Selepas ini, pengguna perlu mengaktifkan Raspberry Pi I2C dengan masuk ke RPi Software Configuration Terlalu:
sudo raspi-config
Kemudian pergi ke 'Advance Options', pilih 'I2C' dan 'Enable' it.
Pengaturcaraan bahagian projek ini memainkan peranan yang sangat penting untuk melaksanakan semua operasi. Pertama sekali, kami memasukkan semua perpustakaan yang diperlukan, memulakan pembolehubah dan menentukan pin untuk LCD dan DHT11.
import sys import RPi.GPIO sebagai GPIO import os import Adafruit_DHT import urllib2 import smbus time import dari ctypes import c_short #Register Alamat regCall = 0xAA……………..
Dalam fungsi utama (): kod di bawah digunakan untuk mengirim data ke pelayan dan memaparkannya melalui LCD, secara berterusan dalam gelung sementara .
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Tunggu…." sementara Benar: (humi, temp) = readDHT () (tekanan) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, tekanan)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (tekanan) cetak finalURL s = urllib2.urlopen (finalURL); cetak humi + "" + temp + "" + pressure s.close () time.sleep (10)
Untuk LCD, fungsi def lcd_init () digunakan untuk menginisialisasi LCD dalam mod empat bit, fungsi def lcdcmd (ch) digunakan untuk mengirim perintah ke LCD, fungsi def lcddata (ch) digunakan untuk mengirim data ke LCD dan def lcdstring fungsi digunakan untuk menghantar rentetan data ke LCD. Anda boleh memeriksa semua fungsi ini dalam Kod yang diberikan selepas itu.
Diberikan def readDHT () fungsi digunakan untuk membaca Sensor DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) kembali (str (int (humi)), str (int (temp)))
fungsi def readBmp180 digunakan untuk membaca tekanan dari sensor BM180. Sensor BM180 juga dapat memberikan suhu tetapi di sini kita hanya menggunakannya untuk mengira tekanan.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Baca data penentukuran # Tukar data bait ke nilai perkataan AC1 = convert1 (nilai, 0) AC2 = convert1 (nilai, 2) AC3 = convert1 (nilai, 4) AC4 = tukar2 (nilai, 6)……………………..
Jadi ini adalah Stesen Cuaca Raspberry Pi asas, anda dapat memperluasnya untuk mengukur pelbagai parameter berkaitan cuaca seperti kelajuan angin, suhu tanah, pencahayaan (lux), hujan, kualiti udara dll.