Мазмуну:

IoT оңой: ESP-MicroPython-MQTT-ThingSpeak: 12 кадам
IoT оңой: ESP-MicroPython-MQTT-ThingSpeak: 12 кадам

Video: IoT оңой: ESP-MicroPython-MQTT-ThingSpeak: 12 кадам

Video: IoT оңой: ESP-MicroPython-MQTT-ThingSpeak: 12 кадам
Video: 1221 Рисуем собаку из цифр 2024, Июль
Anonim
IoT оңой: ESP-MicroPython-MQTT-ThingSpeak
IoT оңой: ESP-MicroPython-MQTT-ThingSpeak

Мурунку үйрөткүчүмдө, Jupyterди колдонуп ESP боюнча MicroPython, биз ESP түзмөгүнө MicroPython орнотууну жана иштетүүнү үйрөндүк. Jupyter блокнотун өнүгүү чөйрө катары колдонуп, сенсорлордон кантип окууну үйрөндүк (Температура, Нымдуулук жана Жарыктык), Биз бир нече байланыш протоколдорун жана ыкмаларын колдонобуз, Аналогдук, Санариптик, 1-Зымдуу жана I2C. OLED дисплейдеги маалыматтар.

Эми, бул үйрөткүчтө MQTT протоколун колдонуп, биз алынган бардык маалыматтарды алабыз, аларды IoT кызматына, ThingSpeak.comго жана мобилдик тиркеме (Thingsview) жөнөтөбүз, анда биз кирип, маалыматтар менен ойной алабыз.

Бул жерде биздин долбоордун блок -схемасы:

Сүрөт
Сүрөт

1 -кадам: БМ - Материалдык эсеп

  1. NodeMCU - 8.39 АКШ доллары
  2. DHT22 Температура жана Салыштырмалуу Нымдуулук Сенсору - USD 9.95
  3. DS18B20 суу өткөрбөйт температура сенсор - USD 5.95
  4. OLED дисплей SSD1366- USD 8.99 (милдеттүү эмес)
  5. LDR (1x)
  6. LED (1x) (Милдеттүү эмес)
  7. Баскыч (1x)
  8. Резистор 4K7 ohm (2x)
  9. Резистор 10K ом (1х)
  10. Резистор 220 Ом (1х)

2 -кадам: Чш

Чш
Чш

Бул жерде колдонула турган Hw негизинен үйрөткүчтө колдонулат: Jupyterди колдонуу менен ESP боюнча Micropython. Бардык HW байланыштары үчүн ага кайрылыңыз.

Биз бул долбоордо колдонулбай турган Servo болуп саналат.

Жогоруда сиз толук HW көрө аласыз. Түзмөктөрдү ошол жерде көрсөтүлгөндөй туташтырыңыз.

3 -кадам: Micropython, REPL, Jupyter

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

Сиздин ESP түзмөгүңүздө Micropython котормочусу болушу керек. Жүктөлгөндөн кийин, ESPти жеткиликтүү жолдордун/IDEлердин бардыгын программалашыңыз керек, мисалы:

  • REPL
  • Jupyter дептери
  • Му
  • ESPCut (Windows үчүн гана)
  • … жана башкалар

Менин үйрөткүчүмдө, Jupyterди колдонуу боюнча ESP боюнча Micropython, мен ESP түзмөктөрүн башкаруу үчүн MicroPython котормочусун, ESPToolду кантип жүктөө жана орнотуу керектигин жана Jupyter Notebookту Өнүгүү чөйрөсү катары кантип колдонуу керектигин айтып бердим. Өзүңүзгө ыңгайлуураак нерсени колдонуңуз.

Мен көбүнчө Jupyter блокнотунда иштеп чыгам жана акыркы кодду алгандан кийин мен аларды Geanyге көчүрүп, Ampy аркылуу ESPке жүктөйм.

4 -кадам: сенсорлор

Сенсорлор
Сенсорлор

Китепканаларды орнотолу, GPIOду аныктайлы, бардык сенсорлор үчүн объекттерди, функцияларды түзөлү:

A. DHT (Температура жана нымдуулук)

Келгиле, DHT китепканасын орнотуп, объект түзөлү:

DHT22 импортунан

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

Эми, DHT сенсорун окуу функциясын түзүңүз:

def readDht ():

dht22.asure () return dht22.temperature (), dht22. humidity () DHT функциясын текшерүү

басып чыгаруу (readDht ())

Натыйжа мисалы болушу керек:

(17.7, 43.4)

B. DS18B20 (Тышкы температура)

Китепканаларды орнотуп, объект түзөлү:

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

импорттун убактысы # 1 зымдуу түзмөктүн кайсы пинге туташтырыларын аныктаңыз ==> пин 2 (D4) dat = Pin (2) # onewire объектисин түзүү 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ден 3.23Вга чейинки чыңалуусун корреспондент санариптик баалуулуктарга 0дөн 1023кө чейин өзгөртөт. Биз "Жарыктыкка" кызыккандан кийин, Max жарыгын сенсордон алынган максималдуу мааниси катары карайбыз (менин учурда 900) жана минималдуу жарык менин учурда 40. Бул маанилерге ээ болгондо, биз 40тан 900гө чейинки маанини 0 100% жарыктыкта "картага" алабыз. Ал үчүн биз жаңы функцияны түзөбүз

def readLdr ():

lumPerct = (adc.read ()-40)*(10/86) # пайызга айландыруу ("карта") кайра тегерек (lumPerct)

Функцияны print (readLDR ()) аркылуу текшеришиңиз керек. Жыйынтык o жана 100 ортосундагы бүтүн сан болушу керек.

D. Push-Button (Digital Input)

Бул жерде биз санарип сенсор катары баскычты колдонобуз, бирок бул кыймылдаткычтын "жаңырыгы" болушу мүмкүн (мисалы, АСУУ/ӨЧҮРҮЛГӨН насос).

# пин 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 () темп, hum, extTemp, lum, butSts = colectData () displayData (temp, hum, extTemp, lum, butSts) led.off ()

Ошентип, main () аткарып, сенсор маалыматтарын сүрөттө көрсөтүлгөндөй OLEDде көрсөтөбүз.

6-кадам: ESPти баштоодо жергиликтүү станция кодун иштетүү

ESPти ишке киргизүүдө Жергиликтүү станция кодун иштетүү
ESPти ишке киргизүүдө Жергиликтүү станция кодун иштетүү

Биз ушул убакка чейин иштелип чыккан нерселердин бардыгын биздин ESP тарабынан аткарылышы мүмкүн.

Келгиле, каалаган текст редакторун ачып, анын үстүнө бардык коддорду киргизели:

# жалпы китепканаларды импорттоо

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

Аны, мисалы, localData.py катары сактаңыз.

Бул кодду терминалга түз иштетүү үчүн сизге Ampy керек болот.

Биринчиден, Терминалда Ampyге Serial портубузга кабар берели:

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

Эми биз ESP тамыр каталогубуздагы файлдарды көрө алабыз:

ampy ls

Жооп катары, биз boot.py алабыз, бул тутумда иштей турган биринчи файл.

Эми, Ampy'ди колдонуп, LocalData.py питонубузду /main.py катары жүктөө үчүн скрипт жүктөлгөндөн кийин эле иштей баштайт:

ampy localData.py /main /py койду

Эгерде биз азыр amp 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 өзгөрмөсү үлгүлөрүңүздү каалаган убакта жарыяланууга тийиш.

Көбүрөөк кодубузду өркүндөтүү үчүн, биз циклден чыга турганыбызды билдирип койсок жакшы болмок, бул үчүн биз 2 жаңы жалпы функцияны аныктайбыз, бири дисплейди тазалоо үчүн, экинчиси 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 блокнотунан көчүрүп алса болот: Jupyter Local Data Development.

7 -кадам: ESPти жергиликтүү WiFiга туташтыруу

ESPти жергиликтүү WiFiга туташтыруу
ESPти жергиликтүү WiFiга туташтыруу

Тармак модулу WiFi байланышын конфигурациялоо үчүн колдонулат. Эки WiFi интерфейси бар, бири станция үчүн (ESP8266 роутерге туташканда) жана бири кирүү чекити үчүн (башка түзмөктөр ESP8266 менен туташуу үчүн). Бул жерде биздин ESP жергиликтүү тармакка туташат. Келгиле, китепканага телефон чалып, тармактык грамоталарыбызды аныктайлы:

импорттук тармак

WiFi_SSID = "СИЗДИН SSID" WiFi_PASS = "СИЗДИН ПАРОЛУҢУЗ"

Төмөндөгү функция ESPти жергиликтүү тармагыңызга туташтыруу үчүн колдонулушу мүмкүн:

def do_connect ():

wlan = network. WLAN (network. STA_IF) wlan.active (True) wlan.isconnected эмес болсо (): басып чыгаруу ('тармакка туташуу…') wlan.connect (WiFi_SSID, WiFi_SSID) wlan.isconnected эмес (): өтүү басып чыгаруу ('тармак конфигурациясы:', 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 Connection

MQTT протоколу жана ThingSpeak Connection
MQTT протоколу жана ThingSpeak Connection

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

MQTT брокери байланыштын борбордук чекити болуп саналат жана ал жөнөтүүчүлөр менен мыйзамдуу алуучулардын ортосундагы бардык билдирүүлөрдү жөнөтүү үчүн жооптуу. Кардар - бул брокерге туташкан жана маалыматка жетүү үчүн темаларды жарыялап же жазыла турган каалаган түзмөк. Тема брокер үчүн багыттоо маалыматын камтыйт. Билдирүүлөрдү жөнөтүүнү каалаган ар бир кардар аларды белгилүү бир темага жарыялайт, ал эми билдирүүлөрдү алгысы келген ар бир кардар белгилүү бир темага жазылат. Брокер дал келген темадагы бардык билдирүүлөрдү тиешелүү кардарларга жеткирет.

ThingSpeak ™ mqtt.thingspeak.com жана 1883 портунда MQTT брокери бар. ThingSpeak брокери MQTT жарыялоону жана MQTT жазылуусун колдойт.

Биздин учурда, биз колдонобуз: MQTT Publish

Сүрөт
Сүрөт

Сүрөт теманын структурасын сүрөттөйт. Write API ачкычы жарыялоо үчүн талап кылынат. Брокер CONNACK менен туура CONNECTrequestти моюнга алат.

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

Келгиле, umqtt.simple китепканасын колдонолу:

umqtt.simple импорттук MQTTClientден

Жана SERVER IDбизди билип, биздин MQTT кардар объектибизди түзсө болот:

SERVER = "mqtt.thingspeak.com"

кардар = MQTTClient ("umqtt_client", SERVER)

Эми, ThingSpeak грамотаңызды колуңузга алып:

CHANNEL_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'ке маалыматтарды жөнөтүүгө даярбыз, жөн гана төмөнкү 3 линия кодун колдонобуз:

client.connect ()

client.publish (тема, пайдалуу жүк) client.disconnect ()

Эми, эгер сиз каналыңыздын баракчасына кирсеңиз (жогоруда меники сыяктуу), сиз 5 талаанын ар биринде сенсорлоруңузга байланыштуу маалыматтарды камтыйт.

10 -кадам: Sensor Data Logger

Sensor Data Logger
Sensor Data Logger

Эми, биз билебиз, коддун бир нече саптары менен 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 (theme, 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) client.connect () client.publish (theme, payload) client.disconnect () time.sleep (PUB_TIME_SEC) blinkLed (3) displayClear ()

Толук microPython скриптин бул жерден тапса болот: dataLoggerTS_EXT.py жана иштеп чыгуу үчүн колдонулган Jupyter дептерин бул жерден да тапса болот: IoT ThingSpeak Data Logger EXT.ipynb.

Скриптти ESPке жүктөө үчүн, терминалыңызга төмөнкү буйрукту колдонуңуз:

ampy койду dataLoggerTS.py /main.py

Жана ESP баскычын басыңыз - баштапкы абалга келтирүү. Сиз ESPтин маалыматын кармап, ThingSpeak.com сайтында түбү басылганга чейин кармап турасыз (LED 3 ирет өчүп, OLED өчкөнчө күтө туруңуз).

11 -кадам: ThingView колдонмосу

ThingView колдонмосу
ThingView колдонмосу

Киргизилген маалыматты ThingSpeak.com сайтынан же APP аркылуу көрүүгө болот, мисалы ThingsView!

ThingView - бул CINETICA тарабынан иштелип чыккан колдонмо, ал ThingSpeak каналдарыңызды оңой элестетүүгө мүмкүндүк берет, жөн эле каналдын идентификаторун киргизиңиз жана сиз барууга даярсыз.

Коомдук каналдар үчүн, колдонмо сиздин терезелердин орнотууларын урматтайт: түс, убакыт шкаласы, диаграмманын түрү жана жыйынтыктардын саны. Учурдагы версия сызыктуу жана мамыча диаграммаларды колдойт, сплайн диаграммалары сызыктуу диаграммалар катары көрсөтүлөт.

Жеке каналдар үчүн, маалыматтар демейки жөндөөлөрдү колдонуу менен көрсөтүлөт, анткени жеке терезенин жөндөөлөрүн API ачкычы менен окуу мүмкүн эмес.

ThingView APP ANDROID жана IPHONE үчүн жүктөп алса болот.

12 -кадам: Жыйынтык

Жыйынтык
Жыйынтык

Дайыма эле, бул долбоор башкаларга электрониканын кызыктуу дүйнөсүнө жол табууга жардам берет деп ишенем!

Чоо -жайын жана акыркы кодду алуу үчүн GitHub депозитарийиме баш багыңыз: IoT_TS_MQTT

Башка долбоорлор үчүн, менин блогума баш багыңыз: MJRoBot.org

Дүйнөнүн түштүгүнөн салам!

Кийинки көрсөтмөмдө көрүшкөнчө!

Рахмат, Marcelo

Сунушталууда: