- MicroPython คืออะไร?
- ทำไมต้องใช้ MicroPython สำหรับ NodeMCU
- ESP8266 (NodeMCU) คืออะไร?
- ฮาร์ดแวร์ที่ใช้
- การติดตั้งเฟิร์มแวร์ MicroPython สำหรับ ESP8266
- การสื่อสารกับ NodeMCU ด้วย PuTTY
- การอัปโหลดโค้ดกะพริบ LED ตาม Python โดยใช้ Ampy
- MicroPython บน ESP8266: การรับอุณหภูมิและความชื้นด้วย DHT22
สำหรับผู้เริ่มต้นที่มีความสนใจในการเขียนโปรแกรมไมโครคอนโทรลเลอร์ที่เปิดใช้งาน Wi-Fi เช่น ESP8266 การทำความเข้าใจสภาพแวดล้อมการเขียนโปรแกรม ESP-IDF หรือ Arduino IDE อาจเป็นงานที่น่ากลัวไวยากรณ์ที่เป็นความลับของภาษา C และ C ++ จำเป็นต้องมีความรู้ด้านวิทยาการคอมพิวเตอร์มากขึ้นซึ่งก็คือ เหตุใดภาษาเหล่านั้นจึงไม่เป็นมิตรกับผู้เริ่มต้นเสมอไปดังนั้นในบทความนี้เราจะเรียนรู้การตั้งค่าและตั้ง โปรแกรม ESP8266 ด้วย MicroPythonและสุดท้ายเราจะได้รับข้อมูลอุณหภูมิและความชื้นจากเซ็นเซอร์อุณหภูมิและความชื้น DHT22 ที่เราชื่นชอบ ก่อนหน้านี้เราได้ทำบทช่วยสอนเกี่ยวกับการเขียนโปรแกรม ESP32 ด้วย Micro Python คุณสามารถตรวจสอบได้หากสนใจ
MicroPython คืออะไร?
เราสามารถพูดได้ว่า MicroPython เป็น python เวอร์ชันที่มีขนาดเล็กออกแบบมาเพื่อทำงานร่วมกับไมโครคอนโทรลเลอร์และระบบฝังตัว ไวยากรณ์และกระบวนการเข้ารหัสของ MicroPython คล้ายกับ python ดังนั้นหากคุณรู้จัก python อยู่แล้วคุณก็รู้วิธีเขียนโค้ดโดยใช้ MicroPython แล้ว หากคุณเป็นแฟน Python คุณสามารถตรวจสอบบทความนี้ได้
MicroPython ได้รับการพัฒนาในสหราชอาณาจักรโดยนำทีมโดย Damion jones และพวกเขาได้เปิดตัว Kickstarter ในขณะที่กลับมาซึ่งพวกเขาได้เปิดตัวบอร์ดพัฒนาโดยเฉพาะที่จะใช้เฟิร์มแวร์ซึ่งช่วยให้คุณสามารถเรียกใช้ MicroPython ได้ ตอนนี้เฟิร์มแวร์ได้ถูกย้ายออกไปทำงานบน ESP8266 แล้วซึ่งในบทความนี้คุณจะได้เรียนรู้
ทำไมต้องใช้ MicroPython สำหรับ NodeMCU
Python เป็นหนึ่งในภาษาโปรแกรมที่ใช้กันอย่างแพร่หลายและเรียนรู้ได้ง่ายจนถึงปัจจุบัน ดังนั้นด้วยการแนะนำ MicroPython การเขียนโปรแกรมไมโครคอนโทรลเลอร์ที่ใช้ฮาร์ดแวร์จึงทำได้ง่ายมาก หากคุณไม่เคยเขียนโปรแกรมไมโครคอนโทรลเลอร์มาก่อนและต้องการเริ่มเรียนรู้การเขียนโปรแกรม MicroPython ถือเป็นการเริ่มต้นที่ดี
MicroPython ใช้ไลบรารีมาตรฐาน Python เวอร์ชันที่ถอดลงมาดังนั้นจึงไม่มีไลบรารีมาตรฐานทั้งหมด แต่ MicroPython มีโมดูลที่เรียบง่ายและใช้งานง่ายเพื่อเชื่อมต่อกับฮาร์ดแวร์ซึ่งหมายความว่าด้วยความช่วยเหลือของ MicroPython การอ่านและเขียนลงทะเบียน GPIO ก็มีวิธีที่ง่ายขึ้น
วัตถุประสงค์สูงสุดของ MicroPython คือการทำให้ไมโครคอนโทรลเลอร์การเขียนโปรแกรมง่ายที่สุดดังนั้นทุกคนจึงสามารถใช้ได้ ด้วยการนำเข้าไลบรารี MicroPython และการเขียนโค้ดกลายเป็นเรื่องง่ายโค้ดที่แสดงด้านล่างนี้เป็นตัวอย่างง่ายๆที่กะพริบ LED ออนบอร์ดของบอร์ด NodeMCU เราจะพูดถึงโค้ดโดยละเอียดหลังจากบทความ
จากการนำเข้าเครื่อง Pin จากการนำเข้าเวลาพัก LED = Pin (2, Pin.OUT) ในขณะที่ True: LED.value (ไม่ใช่ LED.value ()) sleep (0.5)
ESP8266 (NodeMCU) คืออะไร?
ESP8266 เป็นโมดูล Wi-Fi ราคาประหยัดที่ออกแบบมาสำหรับแอปพลิเคชันที่เกี่ยวข้องกับ Internet of Things (IoT)
มาพร้อมกับพินอินพุตและเอาต์พุตที่ใช้งานทั่วไป (GPIO) และยังรองรับโปรโตคอลที่ใช้กันทั่วไปเช่น SPI, I2C, UART และอื่น ๆ อีกมากมาย แต่คุณสมบัติที่ยอดเยี่ยมที่สุดของไมโครคอนโทรลเลอร์นี้คือมี Wi-Fi ในตัว ด้วยเหตุนี้เราจึงสามารถเชื่อมต่อกับ Wi-Fi 2.4GHz ได้อย่างง่ายดาย
ตอนนี้พื้นฐานไม่อยู่ในขั้นตอนที่เราสามารถย้ายไปยังส่วนที่ใช้งานได้จริงซึ่งเราจะแสดงฮาร์ดแวร์ที่จำเป็นและขั้นตอนการติดตั้ง MicroPython บน ESP8266 IC
ฮาร์ดแวร์ที่ใช้
รายการวัสดุที่ใช้
- 1 x เขียงหั่นขนม
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (เซ็นเซอร์อุณหภูมิและความชื้น)
- 1 x 3 มม. LED (ไดโอดเปล่งแสง)
- ตัวต้านทาน 1 x 1K
- 5 x สายจัมเปอร์
การติดตั้งเฟิร์มแวร์ MicroPython สำหรับ ESP8266
มีสองวิธีในการติดตั้งเฟิร์มแวร์ MicroPython บน ESP8266 ในบทความนี้ เราจะพูดถึงทั้งสองอย่าง แต่ก่อนอื่นเราต้องดาวน์โหลด
การดาวน์โหลดเฟิร์มแวร์ MicroPython สำหรับ ESP8266:
ก่อนที่เราจะเชื่อมต่อบอร์ด NodeMCU (ESP8266) กับพีซีของเราเราจำเป็นต้องดาวน์โหลด MicroPython เวอร์ชันล่าสุดหลังจากนั้นเราจึงสามารถติดตั้งเฟิร์มแวร์บน NodeMCU ได้คุณสามารถดาวน์โหลดได้จาก หน้าดาวน์โหลด Micropython อย่างเป็นทางการ
การติดตั้งเฟิร์มแวร์ MicroPython บน ESP8266:
ก่อนที่เราจะสามารถติดตั้งเฟิร์มแวร์ลงใน ESP8266 ได้เราต้องตรวจสอบให้แน่ใจว่าเรามีไดรฟ์ที่เหมาะสมสำหรับตัวแปลง USB เป็นอนุกรมบอร์ด NodeMCU ส่วนใหญ่ใช้ IC ตัวแปลง CP2102 USB เป็น UART ซึ่งเป็นสาเหตุที่เราต้องดาวน์โหลดและติดตั้ง ไดรเวอร์สำหรับตัวแปลง CP2102 USB เป็น UARTเมื่อดาวน์โหลดและติดตั้งไดรฟ์แล้วเราจำเป็นต้องดาวน์โหลด esptool ซึ่งเป็นเครื่องมือที่ใช้ python ที่ทำขึ้นเพื่ออ่านและเขียนเฟิร์มแวร์บน ESP8266
วิธีที่ง่ายที่สุดในการรับ Python คือผ่านทาง Microsoft Store จากนั้นคุณต้องดาวน์โหลดและติดตั้งสำเนาของ Python เมื่อติดตั้ง Python แล้วเราสามารถใช้ คำสั่ง pip3 install esptool เพื่อติดตั้ง esptool กระบวนการจะมีลักษณะคล้ายกับภาพด้านล่าง
เมื่อติดตั้งแล้วให้ตรวจสอบว่าคุณเข้าถึง esptool จากเทอร์มินัลคำสั่งหรือไม่
ในการทำเช่นนั้นเพียงเรียกใช้คำสั่ง เวอร์ชัน esptool.py หากคุณได้รับหน้าต่างดังภาพด้านล่างแสดงว่าคุณติดตั้ง esptool บนพีซี Windows ของคุณสำเร็จแล้ว
และหากคุณประสบปัญหาในการเข้าถึง esptool จากหน้าต่างคำสั่งให้ลองเพิ่มพา ธ การติดตั้งแบบเต็มไปยังตัวแปรสภาพแวดล้อม windows
การค้นหา PORT ที่จัดสรรสำหรับบอร์ด NodeMCU:
ตอนนี้เราต้องหาพอร์ตที่จัดสรรสำหรับบอร์ด NodeMCU โดยเข้าไปที่หน้าต่างตัวจัดการอุปกรณ์ของคุณและมองหาตัวเลือกที่เรียกว่า Ports หากคุณขยายที่คุณสามารถค้นหาพอร์ตที่เกี่ยวข้องกับบอร์ด NodeMCU ได้ สำหรับเราดูเหมือนภาพที่แสดงด้านล่าง
การลบหน่วยความจำแฟลชของ ESP8266:
ตอนนี้เราได้หาพอร์ต COM เชื่อมโยงแล้วเราสามารถเตรียมโมดูล NodeMCU โดยการลบหน่วยความจำแฟลชของมัน โดยให้ทำคำสั่งต่อไปจะใช้ esptool.py --port COM6 erase_flash ขั้นตอนจะมีลักษณะดังภาพด้านล่าง
การติดตั้งเฟิร์มแวร์:
การรันคำสั่งต่อไปนี้จะติดตั้งไบนารี MicroPython ลงบนบอร์ด NodeMCU เมื่อติดตั้งไบนารีนี้แล้วจะทำให้เราสามารถอัปโหลดโปรแกรม python ของเราและสื่อสารกับลูปการ อ่านประเมินและพิมพ์ ได้
esptool.py --port COM6 --baud 460800 write_flash --flash_size = ตรวจจับ 0 esp8266-20200911-v1.13.bin
กระบวนการจะมีลักษณะเหมือนภาพด้านล่าง
โปรดทราบว่าในช่วงเวลาของการติดตั้งไบนารีอยู่บนเดสก์ท็อปของฉันดังนั้นฉันจึงมีซีดีไปยังเดสก์ท็อปและเรียกใช้คำสั่ง
เสร็จแล้วก็ได้เวลาสื่อสารกับบอร์ดและกะพริบ LED บางส่วน
การสื่อสารกับ NodeMCU ด้วย PuTTY
ตอนนี้เรามาเริ่มโปรแกรม Hello World แรกของเราโดยใช้ PuTTY, PuTTY ในการทำดังนั้นเราต้องตั้งค่าประเภทการเชื่อมต่อเป็น Serial จากนั้นเราจะตั้งค่า Serial line (ในกรณีของเราคือ COM6) และสุดท้ายเราตั้งค่าความเร็วเป็น 115200 baud.
หากทำทุกอย่างถูกต้องแล้วหน้าต่างที่คล้ายกับภาพด้านล่างจะปรากฏขึ้นและเราสามารถเขียนโค้ดของเราลงไปได้อย่างง่ายดายโดยปกติจะทำงานเหมือนเทอร์มินัล iPython นอกจากนี้เราได้ดำเนินการโปรแกรม hello world ครั้งแรกซึ่งเป็นเพียงสองบรรทัดง่ายๆและเมื่อเราใส่คำสั่งพิมพ์แล้วเราก็ได้รับคำตอบ
การอัปโหลดโค้ดกะพริบ LED ตาม Python โดยใช้ Ampy
การเข้าถึง MicroPython ด้วยความช่วยเหลือของเทอร์มินัล PuTTY เป็นวิธีที่ดีในการสื่อสารกับโมดูล ESP แต่อีกวิธีง่ายๆคือการอัปโหลดรหัสผ่านเครื่องมือ Adafruit Ampy เพื่อติดตั้ง ampy เราสามารถเรียกใช้ pip3 ติดตั้ง adafruit- ampy command แล้วมันจะติดตั้ง ampy บนเครื่อง PC ของเรา ขั้นตอนจะมีลักษณะดังภาพด้านล่าง
เมื่อคุณมีสิ่งนี้แล้วเรายังต้องการข้อมูลเกี่ยวกับพอร์ตอนุกรมที่เราเชื่อมต่ออยู่ ในกรณีของเรามันคือ COM6 ตอนนี้เราต้องเขียนโค้ด LED Blink ด้วย MicroPython สำหรับสิ่งนั้นเราได้ใช้ คำแนะนำที่ให้ไว้ในเว็บไซต์ micro python อย่างเป็นทางการ
ด้วยความช่วยเหลือของคำแนะนำรหัสต่อไปนี้จะถูกสร้างขึ้น
จากการนำเข้าเครื่อง Pin จากการนำเข้าเวลาพัก LED = Pin (2, Pin.OUT) ในขณะที่ True: LED.value (ไม่ใช่ LED.value ()) sleep (0.5)
รหัสง่ายมาก ขั้นแรกเรานำเข้า Pin library จากเครื่อง ตรึงคลาส ต่อไปเราต้องนำเข้าไลบรารีเวลาซึ่งใช้ในการสร้างฟังก์ชันหน่วงเวลา ต่อไปเราตั้งค่า Pin2 (ซึ่งเป็น LED ออนบอร์ดที่ติดกับโมดูล ESP12E) เป็นเอาต์พุต ต่อไปเราจะตั้งค่า while loop ที่เราเปิดและปิด LED ด้วยการหน่วงเวลา 500ms
นั่นคือวิธีที่คุณอัปโหลดโค้ดไปยัง NodeMCU ในการทำเช่นนั้นคุณต้องเรียกใช้ คำสั่ง ampy ต่อไปนี้
ampy --port COM6 ใส่ main.py
หากโปรแกรมได้รับการแก้ไขคุณจะเห็นไฟ LED กะพริบดังที่แสดงด้านล่าง
หมายเหตุ: ในขณะที่อัปโหลดรหัสฉันตั้งค่าตำแหน่งพร้อมต์ปัจจุบันของฉันไปที่เดสก์ท็อปดังนั้นฉันไม่จำเป็นต้องระบุเส้นทางแบบเต็มสำหรับ ไฟล์ main.py หากไม่เป็นเช่นนั้นคุณต้องระบุเส้นทางแบบเต็มสำหรับไฟล์หลักของคุณ.py ไฟล์
ต่อไปเราจะไปรับข้อมูลอุณหภูมิและความชื้นจาก DHT22 Sensor
MicroPython บน ESP8266: การรับอุณหภูมิและความชื้นด้วย DHT22
แผนผังสำหรับเชื่อมต่อ DHT22 กับ NodeMCU:
แผนภาพวงจรทั้งหมดสำหรับโครงการนี้มีอยู่ด้านล่าง ฉันใช้ฟริทซิงเพื่อสร้างวงจรนี้
อย่างที่คุณเห็นวงจรนั้นง่ายมากและสามารถสร้างบนเขียงหั่นขนมโดยใช้สายจัมเปอร์ วงจรทั้งหมดสามารถขับเคลื่อนโดยใช้พอร์ต micro-USB บน NodeMCU การตั้งค่าฮาร์ดแวร์ของฉันแสดงอยู่ด้านล่าง
รหัส:
เป็นเรื่องง่ายมากที่จะรับข้อมูลอุณหภูมิและความชื้นจากเซ็นเซอร์ DHT22 หรือ DHT11 โดยใช้ MicroPython เนื่องจากเฟิร์มแวร์ MicroPython ที่เราติดตั้งก่อนหน้านี้มาพร้อมกับไลบรารี DHT ในตัว
1. เราเริ่มต้นรหัสของเราโดยการนำเข้าไลบรารี DHT และไลบรารีพินจากคลาสเครื่อง
นำเข้า dht จากพินนำเข้าเครื่อง
2. ต่อไปเราสร้างวัตถุ DHT ซึ่งหมายถึงพินที่เราติดเซ็นเซอร์ของเรา
เซ็นเซอร์ = dht.DHT22 (พิน (14))
3. สุดท้ายในการวัดค่าเซ็นเซอร์เราต้องใช้คำสั่งสามคำสั่งต่อไปนี้
sensor.measure () เซ็นเซอร์อุณหภูมิ () เซ็นเซอร์ความชื้น ()
สำหรับรหัสสุดท้ายเราใส่ไว้ใน while loop และพิมพ์ค่าที่ทำเครื่องหมายจุดสิ้นสุดของรหัสของเรา นอกจากนี้เซ็นเซอร์ DHT22 ต้องใช้เวลา 2 วินาทีก่อนที่จะอ่านข้อมูลใด ๆ ได้ดังนั้นเราจึงต้องเพิ่มการหน่วงเวลา 2 วินาที
จากการนำเข้าเครื่อง Pin from time import sleep import dht dht22 = dht.DHT22 (Pin (14)) while True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('อุณหภูมิ:% 3.2f C'% temp) พิมพ์ ('ความชื้น:% 3.2f %%'% hum) ยกเว้น OSError เป็น e: print ('ไม่สามารถอ่านข้อมูลจากเซ็นเซอร์ DHT22')
เมื่อเราเขียนโค้ดเสร็จแล้วเราสามารถอัปโหลดโค้ดด้วยความช่วยเหลือของคำสั่ง ampy
ampy --port COM6 ใส่ main.py
หลังจากดำเนินการรหัสสำเร็จคุณสามารถตรวจสอบค่าอุณหภูมิและความชื้นบนจอภาพอนุกรมใดก็ได้ ฉันใช้ผงสำหรับอุดรูและอย่างที่คุณเห็นด้านล่างฉันสามารถรับค่าอุณหภูมิและความชื้นใน COM5 ได้
หวังว่าคุณจะสนุกกับบทความและเรียนรู้สิ่งที่เป็นประโยชน์ หากคุณมีคำถามใด ๆ คุณสามารถฝากไว้ในส่วนความคิดเห็นด้านล่างหรือใช้ฟอรัมของเรา เพื่อโพสต์คำถามทางเทคนิคอื่น ๆ