Агуулгын хүснэгт:

IoT-ийг хялбарчлах: ESP-MicroPython-MQTT-ThingSpeak: 12 алхам
IoT-ийг хялбарчлах: ESP-MicroPython-MQTT-ThingSpeak: 12 алхам

Видео: IoT-ийг хялбарчлах: ESP-MicroPython-MQTT-ThingSpeak: 12 алхам

Видео: IoT-ийг хялбарчлах: ESP-MicroPython-MQTT-ThingSpeak: 12 алхам
Видео: Заряжай! с 0 до Мастера Спорта. Методика БКМ. #tabletennis #настольныйтеннис #multiball 2024, Арваннэгдүгээр
Anonim
IoT-ийг хялбарчлах: ESP-MicroPython-MQTT-ThingSpeak
IoT-ийг хялбарчлах: ESP-MicroPython-MQTT-ThingSpeak

Миний өмнөх заавар болох Jupyter ашиглан ESP дээрх MicroPython дээр бид ESP төхөөрөмж дээр MicroPython -ийг хэрхэн суулгах, ажиллуулах талаар сурсан. Jupyter Notebook-ийг хөгжүүлэлтийн орчин болгон ашиглахын зэрэгцээ мэдрэгчээс хэрхэн уншиж сурах (температур, чийгшил, гэрэлтэлт), бид аналог, дижитал, 1 утастай ба I2C холбооны хэд хэдэн протокол, аргыг ашигладаг бөгөөд энэ нь бидний авсан зургийг харуулах болно. OLED дэлгэц дээрх өгөгдөл.

MQTT протоколыг ашиглах энэхүү гарын авлагад бид авсан бүх өгөгдлийг IoT үйлчилгээ, ThingSpeak.com болон мобайл апп (Thingsview) руу илгээх болно, тэнд бид бүртгүүлж, өгөгдөлтэй тоглох боломжтой болно.

Энд манай төслийн блок диаграм:

Зураг
Зураг

Алхам 1: Монголбанк - Билл материал

  1. NodeMCU - 8.39 доллар
  2. DHT22 Температур ба харьцангуй чийгшил мэдрэгч - 9.95 ам
  3. DS18B20 ус нэвтэрдэггүй температур мэдрэгч - 5.95 ам
  4. OLED дэлгэц SSD1366- USD 8.99 (заавал биш)
  5. LDR (1x)
  6. LED (1x) (заавал биш)
  7. Товчлуур (1x)
  8. 4K7 ом эсэргүүцэл (2x)
  9. Эсэргүүцэл 10K ом (1x)
  10. Резистор 220 ом (1х)

Алхам 2: Hw

Hw
Hw

Бидний энд ашиглах Hw нь үндсэн заавар дээр ашиглагддаг: Jupyter ашиглан ESP дээрх Micropython. HW -ийн бүх холболтыг эндээс үзнэ үү.

Үл хамаарах зүйл бол Серво бөгөөд бид энэ төсөлд ашиглагдахгүй болно.

Дээрээс та ХБ -ийг бүрэн эхээр нь харж болно. Төхөөрөмжүүдийг тэнд үзүүлсэн шиг холбоно уу.

Алхам 3: Micropython, REPL, Jupyter

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

Та ESP төхөөрөмж дээрээ Micropython орчуулагчийг ачаалах ёстой. Ачаалсны дараа та ESP -ээ боломжтой бүх арга/IDE -ийг ашиглан програмчлах хэрэгтэй.

  • ХАРИУЛАХ
  • Jupyter дэвтэр
  • Му
  • ESPCut (зөвхөн Windows)
  • … Гэх мэт

Jupyter ашиглан ESP -ийг ашиглах Micropython заавар дээр би ESP төхөөрөмжийг удирдахын тулд MicroPython орчуулагч, ESPTool -ийг хэрхэн татаж суулгах талаар, мөн Jupyter Notebook -ийг Хөгжлийн орчин болгон ашиглах талаар дэлгэрэнгүй тайлбарласан болно. Өөрт илүү тохь тухтай зүйлийг чөлөөтэй ашиглаарай.

Би ихэвчлэн бүх хөгжүүлэлтийг Jupyter Notebook дээр хийдэг бөгөөд эцсийн кодыг авмагцаа би тэдгээрийг Geany руу хуулж, Ampy ашиглан ESP дээрээ ачаалж өгдөг.

Алхам 4: Мэдрэгч

Мэдрэгч
Мэдрэгч

Номын санг суулгаж, GPIO -ийг тодорхойлж, бүх мэдрэгчийн объект, функцийг тус тусад нь үүсгэцгээе.

A. DHT (Температур ба чийгшил)

DHT номын санг суулгаад объект үүсгэе.

DHT22 импортоос

машин импортлохоос Pin dht22 = DHT22 (Pin (12))

Одоо DHT мэдрэгчийг унших функцийг бий болго.

Def readDht ():

dht22. хэмжих () өгөөж dht22.temperature (), dht22. чийгшил () DHT функцийг туршиж үзээрэй

хэвлэх (readDht ())

Үр дүн нь жишээ нь:

(17.7, 43.4)

B. DS18B20 (Гадаад температур)

Номын санг суулгаад объект үүсгэнэ үү:

onewire, ds18x20 импортлох

импорт хийх цаг # 1 утастай төхөөрөмжийг аль зүү холбохыг тодорхойлно уу ==> зүү 2 (D4) dat = Зүү (2) # нэг утсан объект үүсгэх ds = ds18x20. DS18X20 (onewire. OneWire (dat)) Энэ төхөөрөмж дээрх төхөөрөмжүүдийг хайж олох

мэдрэгч = ds.scan ()

хэвлэх ('олдсон төхөөрөмжүүд:', мэдрэгч)

Хэвлэсэн үр дүн нь тийм ч чухал биш бөгөөд бидэнд хамгийн түрүүнд илрүүлсэн мэдрэгч: мэдрэгч [0] хэрэгтэй болно. Одоо бид мэдрэгчийн өгөгдлийг унших функцийг бий болгож чадна.

def readDs ():

ds.convert_temp () time.sleep_ms (750) буцах ds.read_temp (мэдрэгч [0])

Үүсгэсэн функцийг ашиглан мэдрэгчийг турших нь үргэлж чухал байдаг

хэвлэх (readDs ()) Хэрэв та температурын утгыг олж авбал таны код зөв байна

17.5

C. LDR (Гэрэлтүүлэг)

LDR нь манай ESP -ийн аналог зүүг ашиглах болно (энэ нь ESP8266 -ийн хувьд ганцхан, ESP32 -тэй хэд хэдэн тохиолдолд л байдаг).

Дэлгэрэнгүй мэдээллийг миний ESP32 гарын авлагаас үзнэ үү.

Өмнөхтэй ижил зүйл:

# импортын номын сан

машин импортлохоос ADC # Объект тодорхойлох adc = ADC (0) Энгийн функц: adc.read () ашиглан ADC утгыг уншиж болно. Гэхдээ дотоод ADC нь 0 -ээс 1023 хүртэлх дижитал утгаар 0 -ээс 3.3V хүртэлх хүчдэлийг хөрвүүлэх болно гэдгийг санаарай. "Гэрэлтүүлэг" -ийг сонирхож эхэлмэгц бид Max гэрлийг мэдрэгчийн авсан хамгийн их утга гэж үзэх болно. тохиолдолд 900) ба хамгийн бага гэрэл нь миний хувьд 40 байна. Эдгээр утгыг авснаар бид 40 -ээс 900 хүртэлх утгыг 0-100% гэрэлтүүлгээр "зураглах" боломжтой болно. Үүний тулд бид шинэ функцийг бий болгоно

def readLdr ():

lumPerct = (adc.read ()-40)*(10/86) # хувиар хөрвүүлэх ("газрын зураг") буцах тойрог (lumPerct)

Та функцийг print (readLDR ()) ашиглан шалгах ёстой. Үр дүн нь o ба 100 хооронд байх бүхэл тоо байх ёстой.

D. Push-Button (Дижитал оролт)

Энд бид Push-Button-ийг дижитал мэдрэгч болгон ашиглаж байгаа боловч энэ нь идэвхжүүлэгчийн "цуурай" байж магадгүй юм (Жишээ нь АСААХ/ХААСАХ насос).

# 13 зүүг оролт гэж тодорхойлж, дотоод татах эсэргүүцлийг идэвхжүүлнэ үү.

button = Pin (13, Pin. IN, Pin. PULL_UP) # Товчны төлөвийг унших функц: def readBut (): return button.value ()

Та хэвлэх (readBut ()) функцийг уншиж буй товчлуурыг туршиж үзэх боломжтой. Үр дүнг дарахад "1" байх ёстой. Товчлуурыг дарахад үр дүн нь "0" байх ёстой.

Алхам 5: Мэдрэгчийн бүх өгөгдлийг орон нутгийн хэмжээнд авах, харуулах

Бүх мэдрэгчийн өгөгдлийг орон нутгийн хэмжээнд авах, харуулах
Бүх мэдрэгчийн өгөгдлийг орон нутгийн хэмжээнд авах, харуулах

Мэдрэгч бүрийн хувьд нэг функцийг бий болгосны дараа бүгдийг нь нэгэн зэрэг унших хамгийн сүүлийн функцийг бүтээцгээе.

def colectData ():

temp, hum, = readDht () extTemp = readDs () lum = readLdr () butSts = readBut () return temp, hum, extTemp, lum, butSts Хэрэв та одоо ашиглаж байгаа бол

хэвлэх (colectData ())

Мэдрэгчээс авсан бүх өгөгдлийг багтаасан багц гарч ирнэ.

(17.4, 45.2, 17.3125, 103, 1)

Түүнчлэн бид эдгээр өгөгдлийг орон нутгийн дэлгэц дээр харуулах боломжтой.

# номын сан импортлох, i2c объект үүсгэх

машин импортоос I2C i2c = I2C (scl = Pin (5), sda = Pin (4)) # импортын номын сан болон импортолсон объект үүсгэх ssd1306 i2c = I2C (scl = Pin (5), sda = Pin (4)) oled = ssd1306. SSD1306_I2C (128, 64, i2c, 0x3c) # функц үүсгэх: 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)

Сонголтын хувьд би мэдрэгчийг уншиж эхлэх үед LED -ийг асааж, өгөгдлийг харуулсны дараа унтраана. Үүнийг хийснээр бид ESP -ийг компьютерээс салгаж, автоматаар ажиллаж байх үед програм ажиллаж байгааг батлах болно.

Тиймээс үндсэн функц нь:

# Бүх мэдрэгчийг унших үндсэн функц

def main (): # led.on () функцтэй өгөгдлийг харуулах temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off ()

Тиймээс main () -ийг ажиллуулснаар бид зураг дээр үзүүлсэн шиг мэдрэгчийн мэдээллийг OLED дээр харуулах болно.

Алхам 6: ESP эхлүүлэх үед орон нутгийн буудлын кодыг ажиллуулах

ESP эхлүүлэх үед орон нутгийн станцын кодыг ажиллуулах
ESP эхлүүлэх үед орон нутгийн станцын кодыг ажиллуулах

Бид өнөөг хүртэл боловсруулсан бүх зүйлийг ESP -ээр гүйцэтгэх ганц файл дээр авах боломжтой.

Аливаа текст засварлагчийг нээгээд бүх кодыг оруулъя.

# ерөнхий номын санг импортлох

машин импортлохоос Пин импортлох цаг # зүү 0 -ийг гаралтын LED гэж тодорхойлно = Pin (0, Pin. OUT) # DHT dht from DHT22 dht22 = DHT22 (Pin (12)) # DHT def readDht (): dht22. хэмжих () буцах dht22.temperature (), dht22.humidity () # DS18B20 onewire импортлох, ds18x20 # 1 утастай төхөөрөмжийг аль зүүгээр холбохыг тодорхойлох ==> зүү 2 (D4) dat = Pin (2) # Нэг утсыг үүсгэх ds = ds18x20. DS18X20 (onewire. OneWire (dat)) # автобусны мэдрэгч дээрх төхөөрөмжүүдийг хайх = ds.scan () # функц DS18B20 def readDs (): ds.convert_temp () time.sleep_ms (750) буцах дугуй (ds.read_temp (мэдрэгч [0]), 1) ADC машин импортлох # LDR # Объект тодорхойлох adc = ADC (0) # функц нь гэрэлтүүлгийг унших defLead (): lumPerct = (adc.read ()-40) *(10/86) # хувиар хөрвүүлэх ("газрын зураг") буцах тойрог (lumPerct) # 13-р зүүг оролт болгон тодорхойлж, дотоод татах эсэргүүцлийг идэвхжүүлнэ: товчлуур = Пин (13, Pin. IN, Pin. PULL_UP) # Унших товчлуурын төлөв: def readBut (): return button.value () # Бүх өгөгдлийг унших функц: def cole ctData (): temp, hum, = readDht () extTemp = readDs () lum = readLdr () butSts = readBut () temp, hum, extTemp, lum, butSts # импортын номын санг буцааж оруулж, I2C i2c машин импортлохоос i2c объект үүсгэнэ. I2C (scl = Pin (5), sda = Pin (4)) # номын сан оруулж, импортлох объект үүсгэх, 64, i2c, 0x3c) # функц үүсгэх: 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) олед. текст ("Lumin:" + str (lum) + "%", 0, 43) oled.text ("Button:" + str (butSts), 0, 57) oled.show () # Бүх мэдрэгчийг унших үндсэн функц def main (): # дэлгэцийн өгөгдлийг led.on () temp, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off () '' '- ----- үндсэн функцийг ажиллуулах -------- '' 'main ()

Үүнийг хадгалах, жишээлбэл localData.py.

Энэ кодыг терминал дээрээ шууд ажиллуулахын тулд танд Ampy хэрэгтэй болно.

Нэгдүгээрт, Терминал дээр Ampy -ийн цуваа порт руу мэдэгдье.

AMPY_PORT =/dev/tty. SLAB_USBtoUART экспортлох

Одоо бид ESP root лавлах дотор байгаа файлуудыг харж болно.

ампи лс

Үүний хариуд бид boot.py -ийг авах болно, энэ нь системд ажиллах анхны файл юм.

Одоо Ampy ашиглан LocalData.py питон скриптийг /main.py хэлбэрээр ачаална уу, ингэснээр скрипт ачаалагдсаны дараа л ажиллах болно.

ampy localData.py /main /py -ийг тавина

Хэрэв бид одоо ls тушаалыг ашиглавал ESP дотор 2 файлыг харах болно: boot.py ба main.py

ESP -ийг дахин тохируулснаар localData.py програм автоматаар ажиллах бөгөөд мэдрэгчийн өгөгдлийг дэлгэц дээр харуулна.

Дээрх Терминал хэвлэх дэлгэц нь бидний юу хийснийг харуулдаг.

Дээрх кодын тусламжтайгаар дэлгэцийг зөвхөн нэг удаа харуулах болно, гэхдээ бид main () функцын давталтыг тодорхойлж болох бөгөөд энэ нь өгөгдсөн цаг бүрийн интервал (PUB_TIME_SEC) дээрх өгөгдлийг харуулах болно, жишээлбэл, бид товчлуурыг дарах хүртэл:

Товчлуур дарагдах хүртэл өгөгдөл авах # давталт

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 хувьсагчийг таны дээж авахыг хүссэн хугацаанд зарлах ёстой.

Илүү их кодоо сайжруулахын тулд бид давталтаас гарах болно гэдгийг мэдэгдэхэд таатай байх болно, үүний тулд бид хоёр шинэ ерөнхий функцийг тодорхойлох болно, нэг нь дэлгэцийг цэвэрлэх, нөгөө нь LED -ийг хэдэн удаа анивчих.

# Цэвэр дэлгэц:

def displayClear (): oled.fill (0) oled.show () # blink функцийг үүсгэх def blinkLed (num): i -ийн мужид (0, num): led.on () sleep (0.5) led.off () унтах (0.5)

Тиймээс, бид одоо үндсэн () функцаа дахин бичиж болно:

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 ()

Эцсийн кодыг миний GitHub: localData.py дээрээс мөн Jupyter Local Data Development -ийн бүрэн кодыг боловсруулахад ашигладаг Jupyter Notebook -ээс татаж авах боломжтой.

Алхам 7: ESP -ийг орон нутгийн WiFi сүлжээнд холбох

ESP -ийг орон нутгийн WiFi сүлжээнд холбож байна
ESP -ийг орон нутгийн WiFi сүлжээнд холбож байна

Сүлжээний модулийг WiFi холболтыг тохируулахад ашигладаг. Хоёр WiFi интерфэйс байдаг бөгөөд нэг нь станцад зориулагдсан (ESP8266 нь чиглүүлэгч рүү холбогдсон үед), нөгөө нь хандалтын цэгийн хувьд (ESP8266 -тай холбогдох бусад төхөөрөмжүүдийн хувьд). Энд манай ESP нь дотоод сүлжээнд холбогдох болно. Номын сан руу залгаж, сүлжээнийхээ итгэмжлэлийг тодорхойлъё.

импортын сүлжээ

WiFi_SSID = "ТАНЫ SSID" WiFi_PASS = "ТАНЫ НУУЦ ҮГ"

Доорх функцийг ESP -ийг дотоод сүлжээндээ холбоход ашиглаж болно.

def do_connect ():

wlan = сүлжээ. хэвлэх ('сүлжээний тохиргоо:', wlan.ifconfig ())

Функцийг ажиллуулснаар та IP хаягийг авах боломжтой.

do_connect ()

Үр дүн нь:

сүлжээний тохиргоо: ('10.0.1.2 ',' 255.255.255.0 ', '10.0.1.1', '10.0.1.1 ')

Миний хувьд 10.0.1.2 бол ESP IP хаяг байсан.

Алхам 8: ThingSpeak

The ThingSpeak
The ThingSpeak

Энэ үед бид бүх мэдрэгчээс өгөгдлийг хэрхэн OLED дээр харуулах талаар олж мэдсэн. Одоо эдгээр өгөгдлийг IoT платформ болох ThingSpeak рүү хэрхэн илгээхийг харах цаг болжээ.

Эхлээд үзье!

Нэгдүгээрт, та ThinkSpeak.com дээр данстай байх ёстой. Дараа нь суваг үүсгэх зааврыг дагаж сувгийнхаа ID болон API түлхүүрийг бичнэ үү.

Дээрхээс та манай суваг дээр ашиглагдах 5 талбарыг харж болно.

Алхам 9: MQTT протокол ба ThingSpeak холболт

MQTT протокол ба ThingSpeak холболт
MQTT протокол ба ThingSpeak холболт

MQTT бол үндсэндээ утасгүй сүлжээгээр зурвасын өргөн, хүч хязгаарлагдмал төхөөрөмжүүдийг холбох зорилгоор боловсруулсан нийтлэх/захиалах архитектур юм. Энэ бол TCP/IP залгуур эсвэл WebSockets дээр ажилладаг энгийн бөгөөд хөнгөн протокол юм. WebSockets дээрх MQTT -ийг SSL -ээр хамгаалж болно. Хэвлэн нийтлэх/захиалах архитектур нь серверийг тасралтгүй санал асуулгад оруулах шаардлагагүй төхөөрөмжөөр дамжуулан мессежийг үйлчлүүлэгчийн төхөөрөмж рүү шилжүүлэх боломжийг олгодог.

MQTT брокер нь харилцааны төв цэг бөгөөд илгээгч болон хүлээн авагчдын хооронд бүх мессежийг илгээх үүрэгтэй. Үйлчлүүлэгч гэдэг нь зуучлагчтай холбогддог бөгөөд мэдээлэлд хандах сэдвүүдийг нийтлэх эсвэл захиалах боломжтой аливаа төхөөрөмж юм. Сэдэв нь зуучлагчийн чиглүүлэлтийн мэдээллийг агуулдаг. Зурвас илгээхийг хүссэн үйлчлүүлэгч бүр тэдгээрийг тодорхой сэдвээр нийтэлдэг бөгөөд мессеж хүлээн авахыг хүссэн үйлчлүүлэгч бүр тодорхой сэдвээр захиалдаг. Брокер нь тохирох сэдэвтэй бүх мессежийг зохих үйлчлүүлэгчдэд хүргэдэг.

ThingSpeak ™ нь mqtt.thingspeak.com болон 1883 порт дээр MQTT зуучлагчтай байдаг. ThingSpeak брокер нь MQTT нийтлэх болон MQTT захиалах үйлчилгээг дэмждэг.

Манай тохиолдолд бид: MQTT Publish -ийг ашиглах болно

Зураг
Зураг

Зураг дээр сэдвийн бүтцийг тайлбарласан болно. Нийтлэхийн тулд Write API түлхүүр шаардлагатай. Брокер нь CONNACK -тэй зөв CONNECT хүсэлтийг хүлээн зөвшөөрч байна.

MQTT протоколыг Micropython хоёртын файлд суулгагдсан номын санд дэмждэг бөгөөд энэхүү протоколыг ESP8266-аас WIFI-ээр үнэгүй үүл мэдээллийн санд илгээх боломжтой.

Umqtt.simple номын санг ашиглацгаая.

umqtt.simple импортоор MQTTClient

Манай SERVER ID -г мэддэг тул MQTT үйлчлүүлэгчийн объектыг үүсгэх боломжтой.

ҮЙЛЧИЛГЭЭ = "mqtt.thingspeak.com"

үйлчлүүлэгч = MQTTClient ("umqtt_client", SERVER)

Одоо ThingSpeak итгэмжлэх жуух бичгээ гартаа авч байна.

CHANNEL_ID = "ТАНЫ СУВГИЙН ID"

WRITE_API_KEY = "ТАНЫ ТҮЛХҮҮРИЙГ эндээс"

MQTT "Сэдэв" -ээ үүсгэцгээе.

topic = "сувгууд/" + CHANNEL_ID + "/нийтлэх/" + WRITE_API_KEY

Үүсгэсэн функцийг ашиглан ThingSpeak IoT үйлчилгээнд өгөгдлөө илгээж, түүний өгөгдлийг тодорхой өгөгдлийн хувьсагчтай холбож үзье.

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

Эдгээр хувьсагчдыг шинэчилснээр бид "MQTT ачаалал" -аа үүсгэж болно.

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

Тэгээд л боллоо! Бид ThinsSpeak руу өгөгдөл илгээхэд бэлэн байна.

client.connect ()

client.publish (сэдэв, ачаалал) client.disconnect ()

Одоо, хэрэв та өөрийн сувгийн хуудас руу орвол (дээрх минийх шиг) 5 талбар тус бүрт таны мэдрэгчтэй холбоотой өгөгдөл байх болно.

Алхам 10: Мэдрэгч өгөгдөл бүртгэгч

Мэдрэгчийн мэдээлэл бүртгэгч
Мэдрэгчийн мэдээлэл бүртгэгч

Цөөхөн хэдэн мөрийн кодыг ашиглан IoT үйлчилгээнд өгөгдөл байршуулах боломжтой гэдгийг бид мэдэж байгаа тул үүнийг тогтмол хугацаанд автоматаар хийх давталтын функцийг бий болгоё. ).

Өмнө нь зарласан ижил хувьсагчийг (PUB_TIME_SEC) ашиглан өгөгдлийг тасралтгүй авах энгийн функц нь манай сувагт бүртгэх болно.

үнэн байхад:

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

Зөвхөн "ачаалал" нь шинэчлэгдэх ёстой гэдгийг анхаарна уу. Нэгэнт "сэдэв" нь манай сувгийн итгэмжлэлтэй холбоотой бөгөөд өөрчлөгдөхгүй.

ThingSpeak сувгийнхаа хуудсыг хайж байхдаа өгөгдөл нь талбар бүрт тасралтгүй ачаалагдах болно. Та LDR -ийг хамарч, гар/температур мэдрэгч дээр гараа тавьж, товчлуурыг дарах гэх мэт сувгийг эдгээр өгөгдлийг автоматаар "бүртгэх" болно.

Ихэвчлэн өгөгдөл бүртгэхийн тулд бид аль болох бага эрчим хүч ашиглахыг хичээх ёстой бөгөөд ингэснээр бид LED эсвэл дэлгэцийг дотооддоо ашиглахгүй байх болно. Түүнчлэн, ESP төхөөрөмжүүдийн хувьд ихэвчлэн "гүн нойронд" оруулдаг бөгөөд өгөгдөл авах, IoT платформ руу илгээх цаг болтол микропроцессор хамгийн бага энергитэй байх болно.

Гэсэн хэдий ч санаа энд гарч ирсний дараа дэлгэц, LED -ийг өмнөх шигээ оруулъя. Үүнийг хийснээр манай "бүртгэгч" функц нь дараах байдалтай байна.

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 () payload = "field1 ="+str (temp)+"& field2 ="+str (hum)+"& field3 ="+str (extTemp)+"& field4 ="+str (lum)+"& field5 ="+str (butSts) клиент.connect () client.publish (сэдэв, ачаалал) client.disconnect () time.sleep (PUB_TIME_SEC) blinkLed (3) displayClear ()

Бүрэн microPython скриптийг эндээс олж болно: dataLoggerTS_EXT.py болон хөгжүүлэлтэд ашиглаж байсан Jupyter дэвтэрийг эндээс олж болно: IoT ThingSpeak Data Logger EXT.ipynb.

Скриптийг ESP дээр байршуулахын тулд терминал дээрээ дараах тушаалыг ашиглана уу.

ampy put dataLoggerTS.py /main.py

ESP - дахин тохируулах товчийг дарна уу. Та ESP -ийн өгөгдлийг барьж ThingSpeak.com дээр доод талыг нь дарах хүртэл бүртгэх болно (LED 3 удаа анивчиж, OLED унтрах хүртэл хүлээнэ үү).

Алхам 11: ThingView програм

ThingView програм
ThingView програм

Бүртгүүлсэн өгөгдлийг ThingSpeak.com сайтаас шууд үзэх эсвэл APP ашиглан үзэх боломжтой, жишээлбэл ThingsView!

ThingView бол CINETICA -ийн боловсруулсан апп бөгөөд танд ThingSpeak сувгуудаа хялбархан дүрслэх боломжийг олгодог бөгөөд сувгийн ID -г оруулаад явахад бэлэн болно.

Олон нийтийн сувгуудын хувьд програм нь таны цонхны тохиргоог хүндэтгэх болно: өнгө, цагийн хуваарь, диаграмын төрөл, үр дүнгийн тоо. Одоогийн хувилбар нь мөр баганын диаграмыг дэмждэг бөгөөд сплайн диаграмыг шугамын диаграм хэлбэрээр харуулдаг.

Хувийн сувгуудын хувьд өгөгдлийг үндсэн тохиргоог ашиглан харуулах болно, учир нь хувийн цонхны тохиргоог зөвхөн API түлхүүрээр унших боломжгүй юм.

ThingView APP -ийг ANDROID болон IPHONE дээр татаж авах боломжтой.

Алхам 12: Дүгнэлт

Дүгнэлт
Дүгнэлт

Урьдын адил энэ төсөл нь бусад хүмүүст электроникийн ертөнцөд аялахад нь тусална гэж найдаж байна!

Дэлгэрэнгүй мэдээлэл, эцсийн кодыг авахыг хүсвэл миний GitHub хадгаламжинд зочилно уу: IoT_TS_MQTT

Бусад төслүүдийн талаар MJRoBot.org миний блогоос үзнэ үү

Дэлхийн өмнөд хэсгээс мэндчилгээ дэвшүүлье!

Дараагийн зааварчилгаагаараа уулзацгаая!

Баярлалаа, Марсело

Зөвлөмж болгож буй: