فهرست مطالب:

IoT Made Ease: ESP-MicroPython-MQTT-Thing صحبت کنید: 12 مرحله
IoT Made Ease: ESP-MicroPython-MQTT-Thing صحبت کنید: 12 مرحله

تصویری: IoT Made Ease: ESP-MicroPython-MQTT-Thing صحبت کنید: 12 مرحله

تصویری: IoT Made Ease: ESP-MicroPython-MQTT-Thing صحبت کنید: 12 مرحله
تصویری: MicroPython - MQTT tutorial on ESP32 2024, جولای
Anonim
IoT Made Ease: ESP-MicroPython-MQTT-ThingSpeak
IoT Made Ease: ESP-MicroPython-MQTT-ThingSpeak

در آموزش قبلی من ، MicroPython در ESP با استفاده از Jupyter ، نحوه نصب و اجرای MicroPython بر روی دستگاه ESP را آموختیم. با استفاده از Jupyter Notebook به عنوان محیط توسعه ، نحوه خواندن از طریق سنسورها (دما ، رطوبت و درخشندگی) را آموختیم ، از چندین پروتکل و روش ارتباطی ، آنالوگ ، دیجیتال ، 1-وایر و I2C استفاده می کنیم ، این آخرین مورد برای نمایش عکس های گرفته شده است. اطلاعات روی صفحه نمایش OLED

اکنون ، در این آموزش با استفاده از یک پروتکل MQTT ، همه داده های گرفته شده را دریافت می کنیم ، آنها را به سرویس IoT ، ThingSpeak.com و به یک برنامه تلفن همراه (Thingsview) ارسال می کنیم ، جایی که می توانیم با داده ها وارد شده و بازی کنیم.

در اینجا ، نمودار بلوک پروژه ما:

تصویر
تصویر

مرحله 1: BoM - Bill of Material

  1. NodeMCU - 8.39 دلار آمریکا
  2. سنسور دما و رطوبت نسبی DHT22 - 9.95 دلار آمریکا
  3. سنسور دما ضد آب DS18B20 - 5.95 دلار آمریکا
  4. صفحه نمایش OLED SSD1366- 8.99 دلار آمریکا (اختیاری)
  5. LDR (1x)
  6. LED ها (1 برابر) (اختیاری)
  7. دکمه فشاری (1 برابر)
  8. مقاومت 4K7 اهم (2 برابر)
  9. مقاومت 10 کیلو اهم (1 برابر)
  10. مقاومت 220 اهم (1 برابر)

مرحله 2: The Hw

Hw
Hw

Hw که ما در اینجا از آن استفاده می کنیم اساساً همان چیزی است که در آموزش استفاده می شود: Micropython در ESP با استفاده از Jupyter. برای همه اتصالات HW به آن مراجعه کنید.

استثنا Servo است که ما در این پروژه از آن استفاده نخواهیم کرد.

در بالا می توانید HW کامل را مشاهده کنید. دستگاهها را همانطور که در آنجا نشان داده شده وصل کنید.

مرحله 3: Micropython ، REPL ، Jupyter

Micropython ، REPL ، Jupyter
Micropython ، REPL ، Jupyter
Micropython ، REPL ، Jupyter
Micropython ، REPL ، Jupyter

شما باید یک مترجم Micropython در دستگاه ESP خود بارگذاری کرده باشید. پس از بارگیری ، باید ESP خود را با استفاده از هر یک از روشهای موجود/IDE موجود ، مانند:

  • REPL
  • دفترچه یادداشت Jupyter
  • مو
  • ESPCut (فقط ویندوز)
  • … و غیره

در آموزش من ، Micropython در ESP با استفاده از Jupyter ، من نحوه بارگیری و نصب مترجم MicroPython ، ESPTool برای مدیریت دستگاه های ESP و نحوه استفاده از Jupyter Notebook به عنوان محیط توسعه را توضیح دادم. با خیال راحت از آنچه برای شما راحت تر است استفاده کنید.

من معمولاً تمام پیشرفت ها را در Jupyter Notebook انجام می دهم و هنگامی که کد نهایی را دریافت کردم ، آنها را در Geany کپی کرده و با استفاده از Ampy در ESP خود بارگذاری می کنم.

مرحله 4: حسگرها

سنسورها
سنسورها

بیایید کتابخانه ها را نصب کنیم ، GPIO را تعریف کنیم ، اشیاء ، عملکردها را برای همه سنسورها به صورت جداگانه ایجاد کنیم:

A. DHT (دما و رطوبت)

بیایید کتابخانه DHT را نصب کرده و یک شی ایجاد کنیم:

از dht import DHT22

از دستگاه وارد کردن پین dht22 = DHT22 (پین (12))

اکنون ، یک تابع برای خواندن حسگر DHT ایجاد کنید:

def readDht ():

dht22.measure () return dht22.temperature ()، dht22.humidity () عملکرد DHT را آزمایش کنید

چاپ (readDht ())

نتیجه باید به عنوان مثال باشد:

(17.7, 43.4)

B. DS18B20 (دمای خارجی)

بیایید کتابخانه ها را نصب کرده و یک شی ایجاد کنیم:

واردات onewire ، ds18x20

زمان واردات # تعیین کنید که دستگاه 1 سیم به کدام پین متصل شود ==> پین 2 (D4) dat = پین (2) # ایجاد شی onewire ds = ds18x20. DS18X20 (onewire. OneWire (dat)) دستگاه های موجود در bu را اسکن کنید

سنسورها = 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.3 ولت را در مقادیر دیجیتال متناظر ، از 0 تا 1023 متغیر می کند. هنگامی که به "روشنایی" علاقه مند شدیم ، حداکثر نور را حداکثر مقدار ضبط شده از سنسور در نظر خواهیم گرفت (در تصویر من مورد 900) و حداقل نوری که در مورد من 40 است. با داشتن این مقادیر ، می توانیم مقدار 40 تا 900 را در 0 تا 100 درصد درخشندگی "نقشه" کنیم. برای آن ، ما یک تابع جدید ایجاد می کنیم

def readLdr ():

lumPerct = (adc.read ()-40)*(10/86) # تبدیل در درصد ("نقشه") دور برگشت (lumPerct)

شما باید عملکرد را با استفاده از print (readLDR ()) آزمایش کنید. نتیجه باید یک عدد صحیح بین o و 100 باشد.

D. دکمه فشار (ورودی دیجیتال)

در اینجا ما از یک دکمه فشار به عنوان یک سنسور دیجیتال استفاده می کنیم ، اما می تواند یک "پژواک" یک محرک باشد (به عنوان مثال یک پمپ که روشن/خاموش بود).

# پین 13 را به عنوان ورودی تعریف کنید و یک مقاومت کششی داخلی را فعال کنید:

button = پین (13 ، Pin. IN ، Pin. PULL_UP) # عملکرد خواندن دکمه حالت: def readBut (): بازگشت دکمه. ارزش ()

می توانید دکمه را برای خواندن عملکرد print (readBut ()) آزمایش کنید. بدون فشار دادن نتیجه باید "1" باشد. با فشار دادن دکمه ، نتیجه باید "0" باشد

مرحله 5: ضبط و نمایش محلی همه داده های سنسور

ضبط و نمایش محلی همه داده های سنسور
ضبط و نمایش محلی همه داده های سنسور

اکنون که برای هر سنسور یک تابع ایجاد کرده ایم ، بیایید تابع آخر را ایجاد کنیم که همه آنها را به طور همزمان بخواند:

def colectData ():

temp، hum، = readDht () extTemp = readDs () lum = readLdr () butSts = readBut () temp ، hum، extTemp، lum، butSts حالا اگر استفاده می کنید

چاپ (colectData ())

منجر به یک توپل می شود که شامل تمام داده های گرفته شده از حسگرها می شود:

(17.4, 45.2, 17.3125, 103, 1)

ما همچنین می توانیم به صورت اختیاری آن داده ها را روی یک صفحه محلی نشان دهیم:

# وارد کردن کتابخانه و ایجاد شی i2c

از دستگاه واردات I2C i2c = I2C (scl = پین (5) ، sda = پین (4)) # وارد کردن کتابخانه و ایجاد آبجکت وارد شده ssd1306 i2c = I2C (scl = پین (5) ، sda = پین (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 import DHT22 dht22 = DHT22 (پین (12)) # عملکرد خواندن DHT def readDht (): dht22.measure () return dht22.temperature ()، dht22.humidity () # DS18B20 onewire import، ds18x20 # مشخص کنید که دستگاه 1 سیم به کدام پین متصل خواهد شد ==> پین 2 (D4) dat = پین (2) # ایجاد onewire آبجکت ds = ds18x20. DS18X20 (onewire. OneWire (dat)) # اسکن دستگاه های روی گذرگاه سنسورها = ds.scan () # تابع برای خواندن DS18B20 def readDs (): ds.convert_temp () time.sleep_ms (750) بازگشت دور (ds.read_temp (حسگرها [0]) ، 1) # LDR از دستگاه واردات ADC # تعریف شی adc = ADC (0) # تابع برای خواندن درخشندگی def readLdr (): 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 () return temp، hum، extTemp، lum، butSts # وارد کردن کتابخانه و ایجاد شی i2c از واردات ماشین I2C i2c = I2C (scl = پین (5) ، sda = پین (4)) # وارد کردن کتابخانه و ایجاد آبجکت وارد شده ssd1306 i2c = I2C (scl = پین (5) ، sda = پین (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 () # عملکرد اصلی برای خواندن همه سنسورها 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 ما قرار دارند مشاهده کنیم:

آمپی لس

در پاسخ ، ما boot.py را دریافت می کنیم ، این اولین پرونده ای است که در سیستم اجرا می شود.

حالا ، اجازه دهید از Ampy برای بارگذاری اسکریپت پایتون LocalData.py خود به عنوان /main.py استفاده کنیم ، بنابراین اسکریپت درست بعد از بوت اجرا می شود:

ampy localData.py /main /py را قرار دهید

اگر از دستور amp ls استفاده کنیم ، 2 فایل را در داخل ESP مشاهده خواهید کرد: 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 () # ایجاد یک تابع چشمک زدن def blinkLed (num): برای i در محدوده (0 ، num): led.on () sleep (0.5) led.off () خواب (0.5)

بنابراین ، اکنون می توانیم تابع main () خود را بازنویسی کنیم:

while button.value ():

led.on () temp، hum، extTemp، lum، butSts = colectData () displayData (temp، hum، extTemp، lum، butSts) led.off () time.sleep (PUB_TIME_SEC) چشمک بزنید (3) displayClear ()

کد نهایی را می توانید از GitHub من: localData.py بارگیری کنید و همچنین از Jupyter Notebook که برای توسعه کد کامل استفاده شده است: 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 (): print ('Connect to network…') wlan.connect (WiFi_SSID، WiFi_SSID) در حالی که wlan.isconnected (): pass نیست print ('network config:'، 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 ، آدرس IP ESP است.

مرحله 8: ThingSpeak

ThingSpeak
ThingSpeak

در این مرحله ، ما نحوه گرفتن اطلاعات از همه سنسورها و نمایش آنها در OLED خود را یاد گرفتیم. اکنون وقت آن است که ببینیم چگونه می توان این داده ها را به پلت فرم IoT ، ThingSpeak ارسال کرد.

شروع کنیم!

ابتدا ، باید یک حساب کاربری در ThinkSpeak.com داشته باشید. در مرحله بعد ، دستورالعمل های ایجاد کانال را دنبال کنید و به شناسه کانال خود و نوشتن کلید API توجه کنید.

در بالا می توانید 5 فیلدی را که در کانال ما استفاده می شود مشاهده کنید.

مرحله 9: پروتکل MQTT و ThingSpeak Connection

پروتکل MQTT و ThingSpeak Connection
پروتکل MQTT و ThingSpeak Connection

MQTT یک معماری انتشار/اشتراک است که عمدتا برای اتصال پهنای باند و دستگاه های محدود کننده قدرت بر روی شبکه های بی سیم توسعه یافته است. این یک پروتکل ساده و سبک است که روی سوکت های TCP/IP یا WebSockets اجرا می شود. MQTT روی WebSockets را می توان با SSL ایمن کرد. معماری انتشار/اشتراک ، پیامها را بدون نیاز به نظرسنجی مداوم سرور به دستگاههای سرویس گیرنده منتقل می کند.

کارگزار MQTT نقطه مرکزی ارتباطات است و وظیفه ارسال همه پیامها بین فرستندگان و گیرندگان قانونی را بر عهده دارد. مشتری هر دستگاهی است که به کارگزار متصل می شود و می تواند موضوعاتی را برای دسترسی به اطلاعات منتشر یا مشترک کند. یک موضوع شامل اطلاعات مسیریابی برای کارگزار است. هر مشتری که می خواهد پیام ارسال کند آنها را در یک موضوع خاص منتشر می کند و هر مشتری که می خواهد پیام دریافت کند در یک موضوع خاص مشترک می شود. کارگزار همه پیامها را با موضوع منطبق به مشتریان مناسب می رساند.

ThingSpeak bro دارای یک کارگزار MQTT در آدرس URL mqtt.thingspeak.com و پورت 1883 است. کارگزار ThingSpeak از انتشار MQTT و اشتراک MQTT پشتیبانی می کند.

در مورد ما ، از: MQTT Publish استفاده خواهیم کرد

تصویر
تصویر

شکل ساختار موضوع را توضیح می دهد. برای انتشار کلید نوشتن API مورد نیاز است. کارگزار درخواست صحیح CONNECT را با CONNACK تصدیق می کند.

پروتکل MQTT در یک کتابخانه داخلی در فایلهای دوتایی Micropython پشتیبانی می شود-این پروتکل می تواند برای ارسال داده از ESP8266 شما ، از طریق WIFI ، به یک پایگاه داده ابر رایگان استفاده شود.

بیایید از کتابخانه umqtt.simple استفاده کنیم:

از umqtt.simple import MQTTClient

و با دانستن شناسه سرور ما ، امکان ایجاد شی مشتری MQTT وجود دارد:

سرور = "mqtt.thingspeak.com"

مشتری = MQTTClient ("umqtt_client" ، SERVER)

اکنون ، اعتبارنامه ThingSpeak خود را در دست داشته باشید:

CHANNEL_ID = "شناسه کانال شما"

WRITE_API_KEY = "کلید شما در اینجا"

بیایید "موضوع" MQTT خود را ایجاد کنیم:

topic = "channel/" + CHANNEL_ID + "/انتشار/" + WRITE_API_KEY

اجازه دهید داده های خود را با استفاده از تابع ایجاد شده به ThingSpeak IoT Service ارسال کنیم و پاسخ آن را به متغیرهای داده خاص مرتبط کنیم:

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

با به روزرسانی متغیرها ، می توانیم "MQTT Payload" خود را ایجاد کنیم:

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: سنسور دیتا لاگر

سنسور دیتا لاگر
سنسور دیتا لاگر

اکنون که می دانیم تنها با چند خط کد امکان بارگذاری داده ها در سرویس IoT وجود دارد ، بیایید یک تابع حلقه ایجاد کنیم تا این کار را به طور خودکار در فاصله زمانی معینی انجام دهد (مشابه آنچه با "داده های محلی" انجام داده ایم) ")

با استفاده از همان متغیر (PUB_TIME_SEC) ، که قبلاً اعلام شده بود ، یک تابع اصلی ساده برای ثبت مداوم داده ها ، ثبت آنها در کانال ما به شرح زیر است:

در حالی که True:

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 را نیز مانند قبل قرار دهیم. با انجام این کار ، تابع "logger" ما این خواهد بود:

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) چشمک بزنید (3) displayClear ()

اسکریپت کامل microPython را می توانید در اینجا پیدا کنید: dataLoggerTS_EXT.py و نوت بوک Jupyter که برای توسعه استفاده شده است را نیز می توانید در اینجا پیدا کنید: IoT ThingSpeak Data Logger EXT.ipynb.

برای بارگذاری اسکریپت در ESP ، در ترمینال خود از دستور زیر استفاده کنید:

ampy dataLoggerTS.py /main.py را قرار دهید

و دکمه ESP - reset را فشار دهید. شما ESP خواهید داشت که داده ها را ضبط کرده و آنها را در ThingSpeak.com وارد کنید تا پایین فشار داده نشود (منتظر بمانید تا LED 3 بار چشمک بزند و OLED خاموش شود).

مرحله 11: برنامه ThingView

برنامه ThingView
برنامه ThingView

داده های ثبت شده را می توان مستقیماً در سایت ThingSpeak.com یا از طریق APP ، به عنوان مثال ، ThingsView مشاهده کرد!

ThingView یک برنامه کاربردی است که توسط CINETICA توسعه یافته است و به شما امکان می دهد کانال های ThingSpeak خود را به روشی ساده تجسم کنید ، فقط شناسه کانال را وارد کرده و آماده حرکت هستید.

برای کانال های عمومی ، برنامه به تنظیمات پنجره شما احترام می گذارد: رنگ ، زمان ، نوع نمودار و تعداد نتایج. نسخه فعلی از نمودارهای خطی و ستونی پشتیبانی می کند ، نمودارهای خطی به صورت نمودارهای خطی نمایش داده می شوند.

برای کانال های خصوصی ، داده ها با استفاده از تنظیمات پیش فرض نمایش داده می شوند ، زیرا هیچ راهی برای خواندن تنظیمات پنجره های خصوصی تنها با کلید API وجود ندارد.

برنامه ThingView را می توان برای ANDROID و IPHONE بارگیری کرد.

مرحله 12: نتیجه گیری

نتیجه
نتیجه

مثل همیشه ، امیدوارم این پروژه بتواند به دیگران کمک کند تا به دنیای هیجان انگیز الکترونیک راه پیدا کنند!

برای اطلاع از جزئیات و کد نهایی ، لطفاً از سپرده گذاری GitHub من دیدن کنید: IoT_TS_MQTT

برای پروژه های بیشتر ، لطفاً از وبلاگ من دیدن کنید: MJRoBot.org

سلودوس از جنوب جهان!

شما را در دستورالعمل بعدی من می بینم!

متشکرم،

مارسلو

توصیه شده: