Mundarija:

IoTni osonlashtirish: ESP-MicroPython-MQTT-ThingSpeak: 12 qadam
IoTni osonlashtirish: ESP-MicroPython-MQTT-ThingSpeak: 12 qadam
Anonim
IoT osonlashtirildi: ESP-MicroPython-MQTT-ThingSpeak
IoT osonlashtirildi: ESP-MicroPython-MQTT-ThingSpeak

Jupyter yordamida ESP bo'yicha MicroPython oldingi darsimda biz ESP qurilmasiga MicroPython -ni o'rnatish va ishga tushirishni o'rgandik. Jupyter noutbukini rivojlanish muhiti sifatida biz sensorlardan o'qishni ham o'rgandik (harorat, namlik va yorug'lik), biz bir nechta aloqa protokollari va usullaridan foydalanamiz, Analog, Raqamli, 1-simli va I2C, bu oxirgi tasvirni ko'rsatish uchun. OLED displeyidagi ma'lumotlar.

Endi, MQTT protokolidan foydalangan holda, biz qo'lga kiritilgan barcha ma'lumotlarni olamiz, ularni IoT xizmatiga, ThingSpeak.com va mobil ilovaga (Thingsview) yuboramiz, u erda biz kirishimiz va ma'lumotlar bilan o'ynashimiz mumkin.

Mana, bizning loyihamizning blok diagrammasi:

Rasm
Rasm

1 -qadam: BoM - Materiallar hisobi

  1. NodeMCU - 8,39 AQSh dollar
  2. DHT22 harorat va nisbiy namlik sensori - 9,95 AQSh dollari
  3. DS18B20 suv o'tkazmaydigan harorat sensori - 5,95 AQSh dollari
  4. OLED displey SSD1366- 8,99 AQSh dollari (ixtiyoriy)
  5. LDR (1x)
  6. LEDlar (1x) (ixtiyoriy)
  7. Bosish tugmasi (1x)
  8. Rezistor 4K7 ohm (2x)
  9. Rezistor 10K ohm (1x)
  10. Rezistor 220 ohm (1x)

2 -qadam: Hs

Hs
Hs

Biz bu erda ishlatadigan Hw, asosan, qo'llanmada qo'llaniladi: Jupyter yordamida ESP -da Micropython. Barcha HW ulanishlari uchun unga qarang.

Istisno Servo, biz bu loyihada ishlatilmaymiz.

Yuqorida siz to'liq HWni ko'rishingiz mumkin. Qurilmalarni u erda ko'rsatilgan tarzda ulang.

3 -qadam: Micropython, REPL, Jupyter

Micropython, REPL, Jupyter
Micropython, REPL, Jupyter
Micropython, REPL, Jupyter
Micropython, REPL, Jupyter

Sizning ESP qurilmangizga Micropython tarjimoni o'rnatilgan bo'lishi kerak. Yuklanganidan so'ng, siz ESP -ni mavjud bo'lgan har qanday usul/IDE yordamida dasturlashingiz kerak, masalan:

  • REPL
  • Jupyter daftarchasi
  • Mu
  • ESPCut (faqat Windows)
  • … va boshqalar

Mening yo'riqnomamda, Jupyter yordamida ESP bo'yicha Micropython, men ESP qurilmalarini boshqarish uchun MicroPython tarjimoni, ESPTool -ni qanday yuklab olish va o'rnatish va Jupyter noutbukini rivojlanish muhiti sifatida qanday ishlatishni batafsil bayon qildim. O'zingizga qulayroq narsani ishlatishdan xursand bo'ling.

Men odatda Jupyter Notebook -da hamma narsani ishlab chiqaman va oxirgi kodni olgach, ularni Geany -ga ko'chirib, Ampy yordamida ESP -ga yuklayman.

4 -qadam: Sensorlar

Sensorlar
Sensorlar

Keling, kutubxonalarni o'rnatamiz, GPIO -ni aniqlaymiz, barcha sensorlar uchun alohida -alohida ob'ektlar, funktsiyalar yaratamiz:

A. DHT (harorat va namlik)

DHT kutubxonasini o'rnatamiz va ob'ekt yaratamiz:

DHT22 importidan

mashina importidan Pin dht22 = DHT22 (Pin (12))

Endi DHT sensorini o'qish funktsiyasini yarating:

def readDht ():

dht22. o'lchov () qaytish dht22. harorat (), dht22. namlik () DHT funktsiyasini sinab ko'ring

chop etish (readDht ())

Natijada, masalan, shunday bo'lishi kerak:

(17.7, 43.4)

B. DS18B20 (tashqi harorat)

Keling, kutubxonalarni o'rnating va ob'ekt yarataylik:

onewire, ds18x20 import qiling

import vaqti # 1 simli qurilmaning qaysi pin ulanishini aniqlang ==> pin 2 (D4) dat = Pin (2) # bitta simli ob'ektni yaratish ds = ds18x20. DS18X20 (onewire. OneWire (dat)) Bu erda qurilmalarni qidiring

datchiklar = ds.scan ()

chop etish ("topilgan qurilmalar:", datchiklar)

Chop etilgan natija unchalik muhim emas, bizga kerak bo'lgan birinchi aniqlangan sensor: sensorlar [0]. Va endi biz sensor ma'lumotlarini o'qish funktsiyasini yaratishimiz mumkin:

def readDs ():

ds.convert_temp () time.sleep_ms (750) ds.read_temp (sensorlar [0])

Yaratilgan funktsiyadan foydalanib, sensorni sinab ko'rish har doim muhimdir

chop etish (readDs ()) Agar siz harorat qiymatini olsangiz, sizning kodingiz to'g'ri

17.5

C. LDR (yorqinlik)

LDR bizning ESP analog pinidan foydalanadi (bu faqat ESP8266 va ESP32 uchun bir nechta).

Tafsilotlar uchun mening ESP32 darsligimga qarang.

Oldin qilinganidek, xuddi shunday:

# import kutubxonasi

mashina importidan ADC # Ob'ektni aniqlang adc = ADC (0) ADC qiymatini o'qish uchun oddiy funksiya: adc.read () dan foydalanish mumkin. Shuni yodda tutingki, ichki ADC 0 dan 3.23 V gacha bo'lgan kuchlanishlarni 0 dan 1023 gacha o'zgaruvchan raqamli qiymatlarga aylantiradi. Biz "Yorug'lik" ga qiziqqanimizdan so'ng, biz Maks nurini sensordan olingan maksimal qiymat sifatida ko'rib chiqamiz. ishi 900) va minimal yorug'lik, bu mening holatimda 40. Bu qiymatlarga ega bo'lgan holda, biz 40 dan 900 gacha bo'lgan qiymatni 0 dan 100% gacha "xaritaga" olishimiz mumkin. Buning uchun biz yangi funktsiyani yaratamiz

def readLdr ():

lumPerct = (adc.read ()-40)*(10/86) # foizga aylantirish ("xarita") qaytish davri (lumPerct)

Siz funktsiyani print (readLDR ()) yordamida sinab ko'rishingiz kerak. Natijada o va 100 gacha bo'lgan butun son bo'lishi kerak.

D. Push-Button (raqamli kirish)

Bu erda biz raqamli sensor sifatida Push-Button-dan foydalanmoqdamiz, lekin bu aktuatorning "aks-sadosi" bo'lishi mumkin (masalan, yoqilgan/o'chirilgan nasos).

# 13-pinni kirish sifatida belgilang va ichki tortish qarshiligini yoqing:

button = Pin (13, Pin. IN, Pin. PULL_UP) # tugma holatini o'qish funktsiyasi: def readBut (): return button.value ()

Print (readBut ()) funktsiyasini o'qish tugmachasini sinab ko'rishingiz mumkin. Natijani bosish "1" bo'lishi kerak. Tugmani bosib, natija "0" bo'lishi kerak.

5 -qadam: Sensorning barcha ma'lumotlarini yozib olish va ko'rsatish

Sensor haqidagi barcha ma'lumotlarni mahalliy sifatida olish va ko'rsatish
Sensor haqidagi barcha ma'lumotlarni mahalliy sifatida olish va ko'rsatish

Endi biz har bir sensor uchun bitta funktsiyani yaratganimizdan so'ng, barchasini bir vaqtning o'zida o'qiy oladigan oxirgi funktsiyani yarataylik:

def colectData ():

temp, hum, = readDht () extTemp = readDs () lum = readLdr () butSts = readBut () return temp, hum, extTemp, lum, butSts Endi ishlatsangiz

chop etish (colectData ())

Sensorlardan olingan barcha ma'lumotlarni o'z ichiga olgan guruh paydo bo'ladi:

(17.4, 45.2, 17.3125, 103, 1)

Biz ixtiyoriy ravishda bu ma'lumotlarni mahalliy displeyda ko'rsatishimiz mumkin:

# kutubxonani import qiling va i2c obyektini yarating

mashina importidan I2C i2c = I2C (scl = Pin (5), sda = Pin (4)) # import kutubxonasi va import qilingan ob'ektni yaratish ssd1306 i2c = I2C (scl = Pin (5), sda = Pin (4)) oled = ssd1306. SSD1306_I2C (128, 64, i2c, 0x3c) # funktsiyani yaratish: def displayData (temp, hum, extTemp, lum, butSts): oled.fill (0) oled.text ("Temp:" + str (temp)) + "oC", 0, 4) oled.text ("Hum:" + str (hum) + "%", 0, 16) oled.text ("ExtTemp:" + str (extTemp) + "oC", 0, 29) oled.text ("Lumin:" + str (lum) + "%", 0, 43) oled.text ("Button:" + str (butSts), 0, 57) oled.show () # DisplayData (temp, hum, extTemp, lum, butSts) funktsiyasidan foydalanib ma'lumotlarni ko'rsatish

Variant sifatida men datchiklarni o'qishni boshlaganimizda, LEDlar yonib turishi kerak. Bu ESPni kompyuterdan uzib, avtomatik ravishda ishga tushirilganda dastur ishlayotganini tasdiqlashga yordam beradi.

Shunday qilib, asosiy funktsiya:

# Barcha sensorlarni o'qish uchun asosiy funktsiya

def main (): # led.on () funktsiyali ma'lumotlarni ko'rsatish temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off ()

Shunday qilib, main () ni bajarib, biz rasmda ko'rsatilgandek OLED -da ko'rsatilgan sensor ma'lumotlarini olamiz.

6-qadam: ESPni ishga tushirishda mahalliy bekat kodini ishga tushirish

ESPni ishga tushirishda mahalliy bekat kodini ishga tushirish
ESPni ishga tushirishda mahalliy bekat kodini ishga tushirish

Bizda hozirgacha ishlab chiqilganlarning barchasi ESP tomonidan bajariladigan bitta faylga ega bo'lishi mumkin.

Keling, har qanday matn tahrirlovchisini ochamiz va unga barcha kodlarni qo'yamiz:

# umumiy kutubxonalarni import qilish

Mashinadan import qilish PIN -kodni import qilish vaqti # PIN -ni 0 chiqishi sifatida belgilang = Pin (0, Pin. OUT) # DHT dht import dan DHT22 dht22 = DHT22 (Pin (12)) # DHT def readDht () ni o'qish funktsiyasi: dht22. o'lchov () dht22.temperature (), dht22.humidity () # DS18B20 onewire import, ds18x20 # 1-simli qurilmaning qaysi pin ulanishini aniqlang ==> pin 2 (D4) dat = Pin (2) # Bir simni yarating ds = ds18x20. round (ds.read_temp (sensorlar [0]), 1) ADC mashina importidan # LDR # Ob'ektni aniqlash adc = ADC (0) #funktsiya yorqinligini o'qish defLLr (): lumPerct = (adc.read ()-40) *(10/86) # foizga aylantirish ("xarita") qaytish davri (lumPerct) # 13-pinni kirish sifatida belgilang va ichki tortish qarshiligini yoqing: tugma = Pin (13, Pin. IN, Pin. PULL_UP) # O'qish tugmachasining holati: def readBut (): return button.value () # Barcha ma'lumotlarni o'qish funktsiyasi: def cole ctData (): temp, hum, = readDht () extTemp = readDs () lum = readLdr () butSts = readBut () temp, hum, extTemp, lum, butSts # import kutubxonasini qaytaring va mashina importidan i2c obyektini yarating I2C i2c = I2C (scl = Pin (5), sda = Pin (4)) # import kutubxonasi va import qilingan ob'ektni yaratish ssd1306 i2c = I2C (scl = Pin (5), sda = Pin (4)) oled = ssd1306. SSD1306_I2C (128, 64, i2c, 0x3c) # funktsiyani yaratish: def displayData (temp, hum, extTemp, lum, butSts): oled.fill (0) oled.text ("Temp:" + str (temp) + "oC", 0, 4) oled.text ("Hum:" + str (hum) + "%", 0, 16) oled.text ("ExtTemp:" + str (extTemp) + "oC", 0, 29) yozilgan. matn ("Lumin:" + str (lum) + "%", 0, 43) oled.text ("Button:" + str (butSts), 0, 57) oled.show () # Barcha sensorlarni o'qish uchun asosiy funksiya def main (): # led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off () '' funktsiyali ma'lumotlarni ko'rsatish ----- asosiy funktsiyani ishga tushirish -------- '' 'main ()

Uni saqlang, masalan localData.py.

Ushbu kodni to'g'ridan -to'g'ri terminalda ishlatish uchun sizga Ampy kerak bo'ladi.

Birinchidan, terminalda Ampy -ga seriyali portimizni xabar qilaylik:

eksport qilish AMPY_PORT =/dev/tty. SLAB_USBtoUART

Endi biz ESP ildiz katalogimizdagi fayllarni ko'rishimiz mumkin:

amfi ls

Javob sifatida biz boot.py -ni olamiz, bu tizimda ishlaydigan birinchi fayl.

Keling, Ampy -dan foydalanib, LocalData.py -ni python skriptini /main.py sifatida yuklaymiz, shuning uchun skript yuklashdan so'ng ishlaydi:

ampy localData.py /main /py ni qo'ydi

Agar biz hozir amp ls buyrug'idan foydalansak, ESP ichida 2 ta faylni ko'rasiz: boot.py va main.py

ESP -ni qayta tiklash, localData.py dasturini avtomatik ravishda ishga tushiradi va sensor ma'lumotlarini ko'rsatadi.

Yuqoridagi Terminal bosib chiqarish ekrani biz nima qilganimizni ko'rsatadi.

Yuqoridagi kod yordamida displey faqat bir marta ko'rsatiladi, lekin biz har bir belgilangan vaqt oralig'idagi ma'lumotlarni (PUB_TIME_SEC) ko'rsatadigan main () funktsiyasida tsiklni aniqlay olamiz va masalan, tugmani bosmagunimizcha:

# tsikl tugma bosilmaguncha ma'lumotlarni oladi

while button.value (): led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off () time.sleep (PUB_TIME_SEC)

PUB_TIME_SEC o'zgaruvchisi sizning namunalaringiz kerak bo'ladigan vaqtda e'lon qilinishi kerak.

Bizning kodimizni yanada kuchaytirish uchun, biz loopdan chiqamiz, deb xabar berish yaxshi bo'lar edi, buning uchun biz ikkita yangi umumiy funktsiyani belgilaymiz, biri displeyni tozalash uchun, ikkinchisi esa LEDni bir necha marta miltillatish uchun.

# Toza displey:

def displayClear (): oled.fill (0) oled.show () # miltillovchi funktsiyani yaratish def blinkLed (num): i uchun diapazonda (0, son): led.on () uyqu (0,5) led.off () uxlash (0,5)

Shunday qilib, biz endi main () funktsiyamizni qayta yozishimiz mumkin:

while button.value ():

led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off () time.sleep (PUB_TIME_SEC) blinkLed (3) displayClear ()

Yakuniy kodni mening GitHub: localData.py -dan, shuningdek Jupyter mahalliy ma'lumotlarni ishlab chiqish kodini ishlab chiqish uchun ishlatiladigan Jupyter daftarchasidan yuklab olish mumkin.

7 -qadam: ESP -ni mahalliy WiFi -ga ulash

ESP -ni mahalliy WiFi -ga ulash
ESP -ni mahalliy WiFi -ga ulash

Tarmoq moduli Wi -Fi ulanishini sozlash uchun ishlatiladi. Ikkita WiFi interfeysi mavjud, bittasi stansiya uchun (ESP8266 routerga ulanganda) va kirish nuqtasi uchun (boshqa qurilmalar ESP8266 ga ulanishi uchun). Bu erda bizning ESP mahalliy tarmoqqa ulanadi. Keling, kutubxonaga qo'ng'iroq qilib, tarmoq ma'lumotlarini aniqlaymiz:

import tarmog'i

WiFi_SSID = "SIZNING SSID" WiFi_PASS = "Sizning parolingiz"

ESPni mahalliy tarmoqqa ulash uchun quyidagi funktsiyadan foydalanish mumkin:

def do_connect ():

wlan = tarmoq. chop etish ('tarmoq konfiguratsiyasi:', wlan.ifconfig ())

Funktsiyani ishga tushirgandan so'ng, siz IP -manzilni olishingiz mumkin:

do_connect ()

Natijada shunday bo'ladi:

tarmoq konfiguratsiyasi: ('10.0.1.2 ',' 255.255.255.0 ', '10.0.1.1', '10.0.1.1 ')

Agar mening holatimda 10.0.1.2 bo'lsa, bu ESP IP -manzili.

8 -qadam: ThingSpeak

ThingSpeak
ThingSpeak

Shu nuqtada, biz barcha sensorlardan ma'lumotlarni OLED -da aks ettirishni o'rgandik. Endi, bu ma'lumotlarni ThingSpeak IoT platformasiga qanday yuborish kerakligini ko'rish vaqti keldi.

Boshlaylik!

Birinchidan, ThinkSpeak.com saytida hisob qaydnomangiz bo'lishi kerak. Keyin, kanal yaratish bo'yicha ko'rsatmalarga amal qiling va kanal identifikatoringiz va API yozish kalitiga e'tibor bering.

Yuqorida siz bizning kanalimizda ishlatiladigan 5 ta maydonni ko'rishingiz mumkin.

9 -qadam: MQTT protokoli va ThingSpeak ulanishi

MQTT protokoli va ThingSpeak aloqasi
MQTT protokoli va ThingSpeak aloqasi

MQTT-bu nashr etish/obuna bo'lish arxitekturasi bo'lib, u asosan tarmoqli kengligi va quvvat cheklangan qurilmalarni simsiz tarmoqlar orqali ulash uchun ishlab chiqilgan. Bu oddiy va engil protokol bo'lib, u TCP/IP soketlari yoki WebSockets orqali ishlaydi. WebSockets orqali MQTT SSL bilan himoyalangan bo'lishi mumkin. Nashr qilish/obuna bo'lish arxitekturasi xabarlarni mijoz qurilmalariga uzatishni, qurilmani serverni doimiy ravishda so'roq qilishni talab qilmasdan amalga oshirish imkonini beradi.

MQTT brokeri aloqa markaziy nuqtasi bo'lib, u jo'natuvchilar va qonuniy qabul qiluvchilar o'rtasida barcha xabarlarni jo'natish bilan shug'ullanadi. Mijoz - bu brokerga ulanadigan va ma'lumotga kirish uchun mavzularni nashr qilishi yoki unga obuna bo'lishi mumkin bo'lgan har qanday qurilma. Mavzu broker uchun marshrut ma'lumotlarini o'z ichiga oladi. Xabar yubormoqchi bo'lgan har bir mijoz ularni ma'lum bir mavzuda e'lon qiladi va xabar olishni istagan har bir mijoz ma'lum mavzuga obuna bo'ladi. Broker mos keladigan mavzuga ega bo'lgan barcha xabarlarni tegishli mijozlarga etkazib beradi.

ThingSpeak ™ mqtt.thingspeak.com manzilida va 1883 portida MQTT brokeriga ega. ThingSpeak brokeri MQTT nashrini ham, MQTT obunasini ham qo'llab -quvvatlaydi.

Bizning holatda, biz quyidagilarni ishlatamiz: MQTT Publish

Rasm
Rasm

Rasmda mavzu tuzilishi tasvirlangan. Nashr qilish uchun Write API kaliti talab qilinadi. Broker CONNACK bilan to'g'ri CONNECT so'rovini tan oladi.

MQTT protokoli Micropython ikkiliklaridagi o'rnatilgan kutubxonada qo'llab-quvvatlanadi-bu protokoldan ESP8266 ma'lumotlarini WIFI orqali bepul bulutli ma'lumotlar bazasiga yuborish mumkin.

Umqtt.simple kutubxonasidan foydalanaylik:

umqtt.simple import MQTTClient -dan

Va bizning SERVER identifikatorimizni bilgan holda, MQTT mijoz ob'ektini yaratish mumkin:

SERVER = "mqtt.thingspeak.com"

mijoz = MQTTClient ("umqtt_client", SERVER)

Endi ThingSpeak hisob ma'lumotlariga ega bo'ling:

CHANNEL_ID = "SIZNING KANAL ID"

WRITE_API_KEY = "Bu erda kalitingiz"

Keling, MQTT "Mavzu" ni yarataylik:

mavzu = "kanallar/" + CHANNEL_ID + "/nashr etish" " + WRITE_API_KEY

Keling, yaratilgan funktsiyadan foydalangan holda ThingSpeak IoT Service -ga ma'lumotlarni yuboramiz va uning javobini ma'lum ma'lumotlar o'zgaruvchilariga bog'laymiz.

temp, hum, extTemp, lum, butSts = colectData ()

Ushbu o'zgaruvchilar yangilangan holda biz "MQTT yukini" yaratishimiz mumkin:

payload = "field1 ="+str (temp)+"& field2 ="+str (hum)+"& field3 ="+str (extTemp)+"& field4 ="+str (lum)+"& field5 ="+str (butSts))

Va bu hammasi! Biz ThinsSpeak -ga ma'lumotlarni yuborishga tayyormiz, shunchaki quyidagi 3 qatorli kodni ishlatamiz:

client.connect ()

client.publish (mavzu, yuk) client.disconnect ()

Endi, agar siz o'z kanalingiz sahifasiga kirsangiz (yuqoridagi meniki kabi), siz 5 ta maydonning har birida sensorlaringizga tegishli ma'lumotlarni ko'rasiz.

10 -qadam: Sensorli ma'lumotlarni ro'yxatga olish dasturi

Sensorli ma'lumotlar yozuvchisi
Sensorli ma'lumotlar yozuvchisi

Endi, biz bilamizki, faqat bir necha satrli kodlar yordamida ma'lumotlarni IoT xizmatiga yuklash mumkin, shuning uchun uni avtomatik ravishda ma'lum vaqt oralig'ida bajarish uchun loop funksiyasini yarataylik ("Mahalliy ma'lumotlar" bilan qilgan ishimizga o'xshash) ").

Oldin e'lon qilingan bir xil o'zgaruvchidan (PUB_TIME_SEC) foydalanib, ma'lumotlarni uzluksiz ushlab turish va ularni kanalimizda qayd etishning asosiy vazifasi quyidagicha bo'ladi:

rost bo'lsa:

temp, hum, extTemp, lum, butSts = colectData () yuk = "field1 ="+str (temp)+"& field2 ="+str (hum)+"& field3 ="+str (extTemp)+"& field4 ="+ str (lum)+"& field5 ="+str (butSts) client.connect () client.publish (mavzu, yuk) client.disconnect () time.sleep (PUB_TIME_SEC)

E'tibor bering, faqat "yuk" yangilanishi kerak, bir marta "mavzu" kanalimiz ma'lumotlari bilan bog'liq va u o'zgarmaydi.

ThingSpeak kanali sahifasini qidirsangiz, ma'lumotlar har bir maydonga uzluksiz yuklanishini ko'rasiz. Siz LDR -ni yopishingiz, qo'lingizni temp/datchiklarga qo'yishingiz, tugmani bosishingiz va hokazo va kelajakda tahlil qilish uchun kanal avtomatik ravishda bu ma'lumotlarni "qayd" qilishini ko'rishingiz mumkin.

Odatda, ma'lumotlarni ro'yxatga olish uchun biz iloji boricha kam quvvat ishlatishga harakat qilishimiz kerak, shuning uchun biz LEDni yoki displeyni mahalliy ishlatmaymiz. Bundan tashqari, ESP qurilmalarida tez -tez uchraydi, ularni "chuqur uyqu" rejimiga o'tkazing, bu erda mikroprotsessor minimal energiya holatida bo'ladi, ma'lumotlarni yig'ish va ularni IoT platformasiga yuborish vaqti kelguncha.

Ammo, bu erda g'oya o'rganilgach, keling, avvalgi kabi displey va LEDni ham qo'shamiz. Shunday qilib, bizning "logger" funktsiyasi bo'ladi:

while button.value ():

led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off () temp, hum, extTemp, lum, butSts = colectData () foydali yuk = "field1 ="+str (temp)+"& field2 ="+str (hum)+"& field3 ="+str (extTemp)+"& field4 ="+str (lum)+"& field5 ="+str (butSts) mijoz.connect () client.publish (mavzu, yuk) client.disconnect () time.sleep (PUB_TIME_SEC) blinkLed (3) displayClear ()

To'liq microPython skriptini bu erda topish mumkin: dataLoggerTS_EXT.py va ishlab chiqish uchun ishlatilgan Jupyter daftarchasini bu erda ham topish mumkin: IoT ThingSpeak Data Logger EXT.ipynb.

Skriptni ESP -ga yuklash uchun terminalda buyruqni ishlating:

ampy dataLoggerTS.py /main.py qo'ydi

Va ESP -ni tiklash tugmachasini bosing. Siz ESP ma'lumotlarini ushlab turasiz va ularni ThingSpeak.com saytiga bosib turmaguningizcha ushlab turasiz (LED 3 marta yonib turishini va OLED o'chishini kuting).

11 -qadam: ThingView ilovasi

ThingView ilovasi
ThingView ilovasi

Jurnalga kiritilgan ma'lumotlarni to'g'ridan -to'g'ri ThingSpeak.com saytida yoki APP orqali ko'rish mumkin, masalan, ThingsView!

ThingView - bu CINETICA tomonidan ishlab chiqilgan, ThingSpeak kanallarini vizualizatsiya qilish imkonini beradigan, faqat kanal identifikatorini kiriting va siz tayyormiz.

Umumiy kanallar uchun dastur sizning oyna sozlamalarini hurmat qiladi: rang, vaqt oralig'i, jadval turi va natijalar soni. Joriy versiya chiziqli va ustunli grafiklarni qo'llab -quvvatlaydi, chiziqli jadvallar chiziqli diagramma sifatida ko'rsatiladi.

Xususiy kanallar uchun ma'lumotlar standart sozlamalar yordamida ko'rsatiladi, chunki shaxsiy oyna sozlamalarini faqat API kaliti bilan o'qish mumkin emas.

ThingView ilovasini ANDROID va IPHONE uchun yuklab olish mumkin.

12 -qadam: Xulosa

Xulosa
Xulosa

Har doimgidek, men umid qilamanki, bu loyiha boshqalarga ajoyib elektronika olamiga yo'l topishga yordam beradi!

Tafsilotlar va yakuniy kod uchun GitHub depozitariyamga tashrif buyuring: IoT_TS_MQTT

Boshqa loyihalar uchun mening blogimga tashrif buyuring: MJRoBot.org

Dunyoning janubidan salomlar!

Keyingi ko'rsatuvlarimda ko'rishguncha!

Rahmat, Marselo

Tavsiya: