- Memasang SDK Peranti AWS IOT untuk Python pada Raspberry Pi:
- Rajah Litar:
- Memprogramkan Raspberry Pi anda:
- Menguji program python melalui Shell Window:
- Bekerja:
Raspberry Pi selalu menjadi pilihan pertama untuk mengembangkan aplikasi berasaskan IoT jika ada tahap pengiraan yang terlibat. Dengan fleksibiliti python dan komuniti pemaju yang kuat, sangat mudah untuk mengumpulkan, log, menganalisis atau melaporkan sekumpulan data menggunakan Pi. Dalam tutorial ini kita akan belajar bagaimana menggabungkan kekuatan Raspberry Pi dengan perkhidmatan Amazon AWS untuk menerbitkan data dalam talian ke Internet.
Dalam tutorial ini, kita akan menggunakan sensor DHT11 untuk membaca nilai Suhu dan Kelembapan, kemudian menyambung ke perkhidmatan AWS IOT dan mengemas kini nilai sensor menggunakan AWS IOT SDK. Data ini kemudian dapat dilihat dalam konsol Amazon IOT untuk memastikan bahawa kami mendapatkan data yang diterbitkan ke internet.
Anda juga dapat menggunakan AWS Elastic Search Service untuk mengambil nilai sensor ini dan menyimpannya dalam pangkalan data dan kemudian menggunakan perkhidmatan Kibana Dashboard untuk memvisualisasikan data sensor sebagai grafik diplot yang kemas. Cukup Menarik? !!! Oleh itu, Mari kita mulakan…
Prasyarat:
Tutorial ini mengandaikan bahawa anda telah membuat akaun AWS percuma anda dan mengetahui asas-asas mengenai perkhidmatan AWS IoT seperti membuat sesuatu, sijil, polisi dan menerbitkan nilai menggunakannya. Sekiranya sebaliknya, baca tutorial di bawah.
- Bermula dengan Amazon AWS IOT dengan MQTT.fx
Ia juga mengandaikan bahawa anda tahu bagaimana untuk menghubungkan antara sensor LCD dan DHT11 ke Raspberry Pi dan perpustakaan kerana melakukan perkara yang sama sudah terpasang pada Pi anda. Sekiranya tidak, teruskan dengan tutorial di bawah.
- Memadankan DHT11 dengan Raspberry Pi
Pada akhir tutorial di atas, anda akan membuat sesuatu di AWS-IOT dan anda juga harus mempunyai alamat broker untuk barang anda bersama dengan sijil yang diperlukan untuk mengakses barang anda. Kami juga menganggap bahawa Raspberry pi anda sudah disiapkan dengan OS dan disambungkan ke internet. Dengan ini, mari kita lanjutkan dengan tutorial. Sekiranya anda baru menggunakan Raspberry Pi, mulailah Memulakan Raspberry pi terlebih dahulu.
Memasang SDK Peranti AWS IOT untuk Python pada Raspberry Pi:
Untuk menggunakan perkhidmatan AWS pada Pi, kita dapat memasang salah satu dari dua SDK tersebut. Salah satunya adalah SDK JavaScript yang menggunakan JavaScript sebagai bahasa pengaturcaraan dan yang lain adalah SDK Python yang jelas menggunakan python sebagai bahasa pengaturcaraan. Di sini kami memilih Python sebagai SDK kami kerana kami lebih selesa dengan Python daripada JavaScript.
Maklumat lengkap mengenai AWS IOT SDK terdapat di halaman GitHubnya.
Langkah 1: Untuk memasang SDK pada Pi anda, buka terminal ketik perintah berikut
git klon
Langkah 2: Ini semestinya telah memasang direktori aws pada Pi anda, sekarang arahkan ke dalamnya menggunakan perintah berikut.
cd AWS - IOT -device- SDK -python
Langkah 3: Di dalam direktori, pasangkan fail persediaan menggunakan baris di bawah
pasang python setup.py
Rajah Litar:
Di bahagian perkakasan kami memiliki Raspberry Pi yang disambungkan ke Sensor DHT11 dan skrin LCD. DHT11 digunakan untuk mendapatkan nilai Suhu dan Kelembapan dan LCD digunakan untuk menampilkan nilai-nilai dan maklumat penyahpepijatan. Gambarajah litar yang sama ditunjukkan di bawah.
Kedua-dua sensor LCD dan DHT11 berfungsi dengan bekalan + 5V jadi kami menggunakan pin 5V pada Raspberry Pi untuk memberi kuasa kepada kedua-duanya. Perintang penarik nilai 1k digunakan pada pin output sensor DHT11, jika anda menggunakan modul, anda boleh mengelakkan perintang ini.
A periuk trimmer daripada 10k ditambah kepada pin Vee daripada LCD untuk mengawal tahap kontras bagi LCD. Selain itu semua sambungannya cukup lurus ke hadapan. Tetapi perhatikan pin GPIO mana yang anda gunakan untuk menyambungkan pin kerana kami memerlukannya dalam program kami. Carta di bawah ini membolehkan anda mengetahui nombor pin GPIO.
Gunakan carta dan buat hubungan anda mengikut gambarajah litar. Saya menggunakan papan roti dan wayar jumper untuk membuat sambungan saya. Oleh kerana saya menggunakan modul, saya memasangnya secara langsung ke Raspberry Pi. Perkakasan saya kelihatan seperti di bawah
Memprogramkan Raspberry Pi anda:
Dalam program python kita harus membaca nilai suhu dan kelembapan, memaparkannya di layar LCD dan juga menerbitkan kedua-dua nilai tersebut kepada perkara Amazon IOT yang telah kita buat pada tutorial sebelumnya. Oleh itu, pastikan anda telah membuat perkara itu dan anda mempunyai ketiga-tiga fail utama dan alamat broker perkara yang telah anda buat.
Dalam program python kita harus menghubungkan tiga fail utama sehingga Raspberry Pi dapat memperoleh akses untuk menerbitkan nilai mengenai perkara kita. Oleh itu, salin ketiga-tiga fail utama dan tampalkannya di desktop Raspberry pi anda kerana kami memerlukan alamat jalan mereka dalam program kami.
The program python lengkap boleh didapati di bahagian bawah halaman ini, anda boleh menggunakan program ini selepas mengedit alamat broker dan laluan direktori mengikut perkara yang anda buat. Di bawah ini saya telah menerangkan kodnya dalam coretan kecil.
Kita mulakan dengan mengimport perpustakaan yang diperlukan untuk projek kita. Tiga perpustakaan utama adalah AWS SDK, perpustakaan LCD dan Perpustakaan DHT, pastikan anda telah memasang ketiga-tiga Pi anda. Yang masa dan datetime perpustakaan akan dipasang secara lalai.
dari AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient #Import dari AWS-IoT Library import time # Untuk membuat kelewatan dari tarikh import datetime , datetime #Untuk mendapatkan tarikh dan masa import Adafruit_CharLCD sebagai LCD #Import perpustakaan LCD import Adafruit_DHT #Import DHT Library untuk sensor
Di baris seterusnya, kita harus memberikan butiran Perkara seperti alamat Broker, nama Pelanggan dan jalan ke sijil dan fail utama. Di sini saya telah menggunakan nama pelanggan sebagai new_Client anda boleh menggunakan nama yang sama atau nama pilihan anda. Alamat broker harus diubah menjadi alamat perkara yang anda buat dan direktori jalan juga harus diubah mengikut perkara anda. Selain daripada 2 perkara ini, anda tidak perlu mengubah apa-apa dalam baris berikut.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / pi / Desktop / ESP32 "/ rumah / pi / Desktop / ESP32_Thing sijil / private.pem.key", "/ rumah / pi / Desktop / ESP32_Thing sijil / sijil.pem.crt ") myMQTTClient.configureOfflinePublishQueueing (-1) # Infinite offline Publish queueing myMQTTClient. configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 saat
Seterusnya kita harus menentukan butiran pin sambungan kita. Nombor pin GPIO setiap pin diperuntukkan untuk nama masing-masing. Di sini kita telah menggunakan sensor DHT pada pin 17 dan LCD dalam mod 4-bit. Kod untuk yang sama ditunjukkan di bawah
sensor_name = Adafruit_DHT.DHT11 #kami menggunakan sensor DHT11 sensor_pin = 17 # Sensor disambungkan ke GPIO17 pada Pi lcd_rs = 7 #RS LCD disambungkan ke GPIO 7 pada PI lcd_en = 8 #EN LCD disambungkan ke GPIO 8 pada PI lcd_d4 = 25 # D4 LCD disambungkan ke GPIO 25 pada PI lcd_d5 = 24 # D5 LCD disambungkan ke GPIO 24 pada PI lcd_d6 = 23 # D6 LCD disambungkan ke GPIO 23 pada PI lcd_d7 = 18 # D7 dari LCD disambungkan ke GPIO 18 pada PI lcd_backlight = 0 #LED tidak disambungkan sehingga kami memberikan 0
Kemudian kami menginisialisasi LCD dan memaparkan mesej intro kecil di skrin LCD. Selepas itu kami akan cuba berhubung dengan perkara AWS menggunakan alamat broker dan fail utama yang dimasukkan di atas. Sekiranya sambungan berjaya, LCD akan memaparkan " Connected to AWS thing " atau ia akan mencuba selama 10 saat dan jika gagal maka ia akan memaparkan pesan Ralat. Sekiranya anda menerima mesej ralat, pastikan anda berjaya membuatnya dan telah menghubungkannya dengan betul dengan kod. Anda selalu boleh kembali ke tutorial sebelumnya untuk melihat apakah anda telah membuat perkara tersebut dengan betul di AWS.
jika time.time () <connect_time: #cuba sambungkan ke AWS selama 10 saat myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connect", 0) cetak "Kejayaan sambungan klien MQTT!" lcd.message ('Disambungkan ke \ n benda AWS') #jika disambungkan yang lain: cetak "Ralat: Periksa butiran AWS anda dalam program" lcd.message ('Ralat: \ nPerincian tidak sah')
Setelah sambungan berjaya dibuat, kita memasuki loop sementara tanpa batas untuk menerbitkan nilai masa, suhu dan Kelembapan sebagai muatan. Muatan di sini semestinya berupa rentetan dalam format JSON. Jadi pertama-tama kita dengan membaca tarikh dan masa semasa dan menyimpannya dalam pemboleh ubah dengan menggunakan baris di bawah
sekarang = datetime.utcnow () #get tarikh dan waktu current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') # dapatkan masa semasa dalam format rentetan
Kemudian kami membaca nilai kelembapan dan suhu membentuk sensor DHT11 dan memaparkannya pada layar LCD. Kelembapan dan suhu yang berubah-ubah akan menahan nilai kelembapan dan suhu masing-masing
kelembapan, suhu = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #bacaan dari sensor
dan simpan nilai masing-masing dalam suhu dan kelembapan yang berbeza-beza
lcd.clear () #Hapus layar LCD lcd.message ('Temp =%.1f C'% suhu) # Paparkan nilai suhu lcd.message ('\ nHum =%.1f %%'% kelembapan) #Display nilai masa Kelembapan.tidur (2) #Tunggu selama 2 saat kemudian kemas kini nilainya
Seperti yang diberitahu sebelumnya, muatan harus dalam bentuk string dengan kurungan keriting di sekitarnya kami menambahkan nilai tanggal, waktu, suhu dan kelembapan setelah mengubah pemboleh ubah menjadi rentetan seperti yang ditunjukkan di bawah.
#prepare payload dalam format string payload = '{"timestamp": "' + current_time + '", "temperature":' + str (suhu) + ', "kelembapan":' + str (kelembapan) + '}'
Akhirnya setelah muatan siap, kita harus menerbitkannya kepada Pelanggan MQTT. Ini boleh dilakukan dengan menggunakan arahan myMQTTclient.publish . Semasa menerbitkan sesuatu, kami juga harus memberikan namanya, di sini saya telah menamakannya sebagai DHT11 / data tetapi anda boleh menamakan apa sahaja yang anda mahukan. Tetapi pastikan anda mengingat namanya kerana kami perlu melanggan barang kami untuk melihat data.
Menguji program python melalui Shell Window:
Setelah program siap, lancarkan dengan menggunakan pilihan anda. Saya telah menggunakan Python IDE untuk melancarkan program di jendela shell. Sekiranya semuanya baik-baik saja, anda seharusnya berjaya mendapatkan sambungan mesej dan semua muatan harus ditunjukkan di tingkap. Anda boleh memeriksa sama ada nilai suhu dan kelembapan dibaca dengan betul. Muatan akan dikemas kini setiap 5 saat. Tetingkap shell akan kelihatan seperti ini di bawah
Sekiranya anda mempunyai masalah, pastikan anda telah memberikan butiran kunci yang betul dan alamat broker, periksa juga jika perkara itu dapat dihubungkan dengan menggunakan perisian MQTT.fx. Sekiranya shell menunjukkan keberhasilan sambungan MQTT Client dan tergantung di sana, ini bermaksud bahawa sensor DHT11 tidak bertindak balas jika anda telah menyambung ke pin yang betul dan sensor berfungsi.
Bekerja:
Sebaik sahaja anda melancarkan program dan mendapatkan butiran di atas pada tetingkap shell, ini bermaksud bahawa program ini bertindak balas dengan betul dan nilainya dimuat ke pelayan Amazon AWS. Anda juga dapat melihat paparan LCD untuk memeriksa sama ada paparannya Diterbitkan kepada AWS-IoT setiap 5 saat seperti gambar di bawah.
Kita boleh masuk ke aplikasi MQTT.fx dan melanggan topik DHT11 / data . Maka kita seharusnya dapat mendapatkan semua data yang diterbitkan oleh Raspberry Pi. Data ini juga akan dikemas kini setiap 5 saat; Skrin MQTT anda akan kelihatan seperti ini di bawah
Seperti yang anda lihat, muatan diterima pada perisian MQTT seperti yang disorot dengan warna biru. Anda juga boleh menonton video di bawah ini untuk mengetahui bagaimana projek ini berfungsi. Oleh kerana sekarang kita mempunyai data di internet, kita dapat menggunakannya dengan alat lain yang disediakan oleh Amazon seperti pencarian Elastik dan Lambda untuk menyimpan data dalam pangkalan data atau memvisualisasikan kemudian pada grafik. Terdapat lebih banyak aplikasi, berdasarkan bagaimana kita harus mendapat manfaat daripada data.
Harap anda memahami tutorial dan menikmati membina sesuatu yang serupa, jika anda mempunyai masalah untuk menyelesaikannya, hantarkan di bahagian komen di bawah atau gunakan forum untuk bantuan teknikal.