สารบัญ:

MicroPython IoT Rover จาก WEMOS D1 (ESP-8266EX): 7 ขั้นตอน (พร้อมรูปภาพ)
MicroPython IoT Rover จาก WEMOS D1 (ESP-8266EX): 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: MicroPython IoT Rover จาก WEMOS D1 (ESP-8266EX): 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: MicroPython IoT Rover จาก WEMOS D1 (ESP-8266EX): 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: How to make a WIFI control car | WIFI control car with Nodemcu and Blynk [Step by step] 2024, กรกฎาคม
Anonim
Image
Image
MicroPython IoT Rover จาก WEMOS D1 (ESP-8266EX)
MicroPython IoT Rover จาก WEMOS D1 (ESP-8266EX)

** อัปเดต: ฉันโพสต์วิดีโอใหม่สำหรับ v2 พร้อมแลนซ์ **

ฉันเป็นเจ้าภาพการประชุมเชิงปฏิบัติการเกี่ยวกับวิทยาการหุ่นยนต์สำหรับเด็กเล็ก และฉันก็มองหาแพลตฟอร์มที่ประหยัดเพื่อสร้างโครงการที่น่าสนใจอยู่เสมอ แม้ว่า Arduino clones จะมีราคาถูก แต่ก็ใช้ภาษา C/C++ ที่เด็กๆ ไม่คุ้นเคย นอกจากนี้ยังไม่มี WiFi ในตัวซึ่งจำเป็นสำหรับโครงการ IoT ในทางกลับกัน ในขณะที่ Raspberry Pi มี WIFI และเด็ก ๆ สามารถตั้งโปรแกรมได้โดยใช้ Python แต่ก็ยังเป็นแพลตฟอร์มที่มีราคาแพงในการควบคุมพอร์ต GPIO เพียงไม่กี่พอร์ตเพื่อเปิดและปิดอุปกรณ์ ฉันต้องการบางอย่างที่มีความสามารถทั้ง WIFI และ Python ดูเหมือนว่าฉันพบคำตอบของฉันใน MicroPython ที่กระพริบบนบอร์ดที่ใช้ ESP8266 ราคาถูก

Micropython คืออะไร?

ตามเว็บไซต์ MicroPython เป็นการนำภาษาการเขียนโปรแกรม Python 3 ไปใช้แบบลีนและมีประสิทธิภาพซึ่งรวมถึงชุดย่อยเล็ก ๆ ของไลบรารีมาตรฐาน Python และได้รับการปรับให้ทำงานบนไมโครคอนโทรลเลอร์และในสภาพแวดล้อมที่มีข้อจำกัด (เช่น ESP8266) โดยพื้นฐานแล้วมันคือ Python IDE บนชิป ประโยชน์ที่สำคัญอย่างหนึ่งคือ คุณสามารถสร้างโค้ดและเปลี่ยนแปลงได้ทันทีโดยใช้ไคลเอ็นต์เว็บเบราว์เซอร์ที่เรียกว่า Webrepl (ลองทำใน Arduino) คุณยังสามารถดูข้อมูลเซ็นเซอร์แบบเรียลไทม์บน Webrepl แทนที่จะพึ่งพาการบันทึกข้อมูลหรือหน้าจอ LED ใน Arduino

ESP8266 คืออะไร?

กล่าวโดยสรุป คิดว่าเป็น Arduino ที่มีความสามารถเครือข่ายในตัว คุณสามารถใช้ Arduino IDE เพื่อตั้งโปรแกรมบอร์ด ESP8266 ใน C/C++ หรือแฟลชด้วย NodeMCU หรือ MicroPython ในโครงการนี้ ฉันจะแฟลช MicroPython ลงบนบอร์ด ESP8266

ฉันตัดสินใจซื้อ WEMOS D1 ซึ่งใช้ ESP8266-12EX สำหรับโครงการง่ายๆ นี้ ซึ่งฉันจะนำทางรถยนต์ 2WD โดยใช้เว็บเบราว์เซอร์ มีบอร์ดอื่นๆ ที่ออกแบบมาสำหรับ MicroPython แต่ฉันต้องการบางอย่างราคาถูกที่ฉันสามารถทิ้งได้หากไม่เป็นไปตามเกณฑ์ของฉัน ตามที่คาดไว้ มันตรงตามข้อกำหนดทั้งหมดของฉัน และเป็นไปได้มากว่าฉันจะรวม WeMos และ Micropython เข้ากับโครงการในอนาคต

ขั้นตอนที่ 1: อะไหล่

อะไหล่
อะไหล่
อะไหล่
อะไหล่
อะไหล่
อะไหล่
อะไหล่
อะไหล่
  • Wemos D1 หรือบอร์ดที่ใช้ ESP8266
  • ชิลด์มอเตอร์ (ฉันใช้ L293D ราคาถูกจาก AliExpress)
  • ที่ใส่แบตเตอรี่สำหรับ 4 x AA และ 9V (แบตเตอรี่ AA x 4 ก้อนสำหรับมอเตอร์และ 9V สำหรับบอร์ด Wemos)
  • แชสซีรถ 2WD
  • สายดูปองท์

อาจต้องใช้หัวแร้ง ไขควงปากแบน และปืนกาวเพื่อประกอบทุกอย่างเข้าด้วยกัน

ขั้นตอนที่ 2: การประกอบฮาร์ดแวร์

การประกอบฮาร์ดแวร์
การประกอบฮาร์ดแวร์
การประกอบฮาร์ดแวร์
การประกอบฮาร์ดแวร์
การประกอบฮาร์ดแวร์
การประกอบฮาร์ดแวร์

ขั้นแรก ประกอบโครงเครื่องตามคำแนะนำ

จากนั้นติดกาวร้อนส่วนประกอบอื่น ๆ ตามที่แสดง

ควรบัดกรีสายมอเตอร์เข้ากับขั้วของมอเตอร์และใช้กาวร้อนเพื่อเสริมกำลังข้อต่อของขั้วต่อ

ติดสวิตซ์เล็ก ๆ เข้ากับที่ใส่แบตเตอรี่ 4AA การดำเนินการนี้จะเปิด/ปิดไฟที่แผงป้องกันมอเตอร์

ขั้นตอนที่ 3: การเดินสายไฟ

การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ

ทำตามไดอะแกรมการเดินสายของฉันตามที่แสดง

Wemos ถึง Motor Shield:

D1 IN2

D2 IN1 D3 IN4 **ข้าม D4 D5 IN3 GND -> GND

มอเตอร์ชิลด์ต่อมอเตอร์/กำลัง:

ขั้ว -> มอเตอร์ด้านซ้าย

ขั้ว B -> มอเตอร์ด้านขวา VCC -> แบตเตอรี่ (+) GND -> แบตเตอรี่ (-)

ขั้นตอนที่ 4: การติดตั้ง MicroPython

อย่างแรก Wemos มีชิปซีเรียล/USB ที่ใช้ CH304G นี่เป็นชิปตัวเดียวกับที่พบใน Arduino-clones ราคาถูก และคุณต้องติดตั้งไดรเวอร์ที่เหมาะสมสำหรับ Mac หรือ PC ทำตามคำแนะนำบนเว็บไซต์นี้เพื่อติดตั้งไดรเวอร์

เชื่อมต่อ Wemos กับคอมพิวเตอร์ของคุณและยืนยันว่าคอมพิวเตอร์ของคุณสามารถตรวจจับ Wemos ได้ บน Mac ให้รันคำสั่งต่อไปนี้ แล้วคุณจะเห็นอุปกรณ์ชื่อ /dev/tty.wchusbserial640

$ ls -lt /dev/tty* | ศีรษะ

crw-rw-rw- 1 root wheel 17, 4 มี.ค. 2 23:31 /dev/tty.wchusbsserial640

หากคุณใช้พีซี คุณสามารถใช้คำแนะนำนี้เป็นข้อมูลอ้างอิงได้

ต่อไป คุณจะต้องตั้งค่า Python 2 หรือ 3 บนคอมพิวเตอร์ของคุณ เนื่องจากเครื่องมือแฟลช esptool.py นั้นใช้ Python แม้ว่าคู่มือ MicroPython อาจระบุว่าเครื่องมือใช้งานได้กับ Python 2.7 เท่านั้น แต่ฉันสามารถเรียกใช้ใน Python 3 ได้โดยไม่มีปัญหาใดๆ ดาวน์โหลด Python ล่าสุดจาก https://www.python.org และทำตามคำแนะนำในการติดตั้งสำหรับพีซีหรือ Mac ของคุณ

สุดท้าย คุณจะต้องติดตั้ง MicroPython บน Wemos ไซต์ MicroPython มีบทช่วยสอนที่ยอดเยี่ยมเกี่ยวกับวิธีตั้งค่า MicroPython บน ESP8266 เพียงทำตามคำแนะนำในการติดตั้งใน เริ่มต้นใช้งาน MicroPython บน ESP8266

ด้านล่างนี้เป็นคำสั่งที่ฉันใช้:

$ esptool.py --port /dev/tty.wchusbserial640 Erase_flash

esptool.py v1.3 กำลังเชื่อมต่อ…. กำลังเรียกใช้ Cesanta flasher stub… กำลังลบแฟลช (อาจใช้เวลาสักครู่)… การลบใช้เวลา 10.5 วินาที

$ esptool.py --port /dev/tty.wchusbserial640 write_flash -fm dio -fs 32m -ff 40m 0x00000 esp8266-20170108-v1.8.7.bin

esptool.py v1.3 กำลังเชื่อมต่อ…. กำลังเรียกใช้ Cesanta flasher stub… Flash params ตั้งค่าเป็น 0x0240 เขียน 589824 ไบต์ที่ 0x0 ใน 50.8 วินาที (92.8 kbit/s)… กำลังออกจาก…

MicroPython ได้รับการติดตั้งบนบอร์ดของคุณแล้ว!

ขั้นตอนที่ 5: ตั้งค่าเครือข่าย

ตั้งค่าเครือข่าย
ตั้งค่าเครือข่าย

ขณะที่ติดตั้ง MicroPython บน Wemos ของคุณแล้ว แต่ยังไม่ได้เชื่อมต่อกับเครือข่ายของคุณ คุณจะต้องเปิดใช้งานเครือข่ายก่อน บน Mac ให้รันคำสั่ง SCREEN เพื่อเริ่มเซสชันเทอร์มินัลอนุกรมไปยัง Wemos

$ screen /dev/tty.wchusbsserial640 115200

เมื่อคุณเห็นหน้าจอว่างเปล่า ให้กด RETURN เพื่อดูข้อความแจ้ง:

>>

(หมายเหตุ: หากต้องการออก ให้พิมพ์ CTRL-A CTRL-)

ตอนนี้ มาเปิดใช้งานการเข้าถึงเว็บไคลเอ็นต์ พิมพ์ "import webrepl_setup" เพื่อเรียกใช้โปรแกรมติดตั้ง ป้อน E เพื่อเปิดใช้งาน WebREPL จากนั้นตั้งรหัสผ่าน รีบูตเพื่อเปิดใช้งานการเปลี่ยนแปลง

>>นำเข้า webrepl_setup

สถานะเริ่มต้นอัตโนมัติของ WebREPL daemon: ปิดใช้งาน คุณต้องการ (E) เปิดใช้งานหรือ (D) ให้ทำงานขณะบู๊ตหรือไม่ (บรรทัดว่างที่จะออก) > E ในการเปิดใช้งาน WebREPL คุณต้องตั้งรหัสผ่านสำหรับมัน รหัสผ่านใหม่: xxxxx ยืนยันรหัสผ่าน: xxxxx การเปลี่ยนแปลงจะเปิดใช้งานหลังจากรีบูต คุณต้องการรีบูตตอนนี้หรือไม่? (y/n) y

สุดท้าย ดาวน์โหลดไคลเอ็นต์ Webrepl ลงในเครื่องของคุณ นี่เป็นทางเลือก แต่ไคลเอ็นต์มาพร้อมกับเครื่องมือที่มีประโยชน์อื่นๆ ที่คุณอาจต้องการใช้ในภายหลัง ตัวอย่างเช่น webrepl_cli.py เป็นคำสั่งในการคัดลอกไฟล์ไปยัง Wemos ในรูปแบบ scp-like ใช้ git เพื่อดาวน์โหลดไคลเอนต์ (ติดตั้งเครื่องมือ git หากคุณยังไม่มี)

โคลน git

เปิดเว็บเบราว์เซอร์ของคุณและในช่อง URL ให้ป้อนตำแหน่งของตำแหน่งไฟล์ไคลเอ็นต์ webrepl ที่คุณดาวน์โหลด เช่น:

file:///Users/xxxxx/wemos/webrepl/webrepl.html

สิ่งนี้ควรแสดงไคลเอ็นต์ webrepl บนเบราว์เซอร์ของคุณ ก่อนที่คุณจะเชื่อมต่อได้ คุณต้องเชื่อมต่อกับจุดเชื่อมต่อ WiFi ก่อน หากคุณดู WIFI ที่พร้อมใช้งานสำหรับคอมพิวเตอร์ของคุณ คุณจะเห็นเครือข่ายเริ่มต้นด้วย MicroPython-xxxx เชื่อมต่อกับเครือข่ายนั้น (คำเตือน: เมื่อคุณเชื่อมต่อกับเครือข่ายนั้น คุณจะสูญเสียการเข้าถึงอินเทอร์เน็ต)

กลับไปที่ไคลเอนต์ webrepl ของคุณแล้วคลิกเชื่อมต่อ ควรถามรหัสผ่าน ป้อนรหัสผ่าน Wemos ของคุณและคุณควรเชื่อมต่อ

ยินดีต้อนรับสู่ MicroPython!

รหัสผ่าน: เชื่อมต่อ WebREPL >>>

Wemos ของคุณยังคงทำงานในโหมด AccessPoint แม้ว่าจะไม่เป็นไร แต่ฉันชอบที่จะทำงานในโหมดสถานีที่เชื่อมต่อกับ WIFI ที่บ้านของฉัน เพื่อให้คอมพิวเตอร์ของฉันสามารถเข้าถึงได้ผ่าน WiFi ที่บ้านและยังคงสามารถเข้าถึงอินเทอร์เน็ตได้ ในการทำเช่นนั้น คุณจะต้องสร้างไฟล์ชื่อ boot.py ด้วยการกำหนดค่าเครือข่าย และอัปโหลดไปยัง Wemos

นี่คือตัวอย่าง boot.py เปลี่ยน ssid และรหัสผ่านเป็นเครือข่าย WIFI ที่บ้านของคุณ นอกจากนี้ ฉันต้องการให้ IP แบบคงที่เป็น 192.168.0.32 เปลี่ยนเป็นที่อยู่ IP ของ WIFI ที่บ้านของคุณ

boot.py (คุณสามารถดาวน์โหลดได้จากด้านล่าง)

นำเข้า gc

นำเข้า webrepl def do_connect(): นำเข้าเครือข่าย sta_if = network. WLAN(network. STA_IF) if not sta_if.isconnected(): print('connecting to network…') sta_if.active(True) sta_if.ifconfig(('192.168. 0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1')) sta_if.connect('', '') ในขณะที่ไม่ใช่ sta_if.isconnected(): pass print('network config:', sta_if.ifconfig()) do_connect() webrepl.start() gc.collect()

ใช้แบบฟอร์ม "ส่งไฟล์" ของไคลเอ็นต์ Webrepl เพื่อส่งไฟล์ boot.py ไปยัง Wemos กดปุ่มรีเซ็ตเพื่อรีบูต หากคุณยังคงเชื่อมต่อผ่าน USB โดยใช้คำสั่ง SCREEN คุณจะเห็น:

กำลังเชื่อมต่อกับเครือข่าย… การกำหนดค่าเครือข่าย: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1') WebREPL daemon เริ่มทำงานเมื่อ ws://192.168.4.1:8266 WebREPL daemon เริ่มทำงานบน ws://192.168.0.32:8266 เริ่ม webrepl ในโหมดปกติไม่สามารถเปิดไฟล์ 'main.py' เพื่ออ่าน MicroPython v1.8.7-7-gb5a1a20a3 ใน 2017-01-09; โมดูล ESP พร้อม ESP8266 พิมพ์ "help()" สำหรับข้อมูลเพิ่มเติม >>>

นี่เป็นการตรวจสอบว่า Wemos ของคุณเชื่อมต่อกับ WIFI ที่บ้านโดยใช้ ipaddress ของ 192.168.0.32

คุณสามารถ ping ที่อยู่ IP นั้นเพื่อตรวจสอบ

$ ปิง 192.168.0.32

PING 192.168.0.32 (192.168.0.32): 56 ไบต์ข้อมูล

64 ไบต์จาก 192.168.0.32: icmp_seq=0 ttl=255 เวลา=9.334 ms 64 ไบต์จาก 192.168.0.32: icmp_seq=1 ttl=255 เวลา=11.071 ms..

ขั้นตอนที่ 6: ติดตั้งโปรแกรมหลัก

ติดตั้งโปรแกรมหลัก
ติดตั้งโปรแกรมหลัก
ติดตั้งโปรแกรมหลัก
ติดตั้งโปรแกรมหลัก

สุดท้ายนี้ คุณจะต้องติดตั้งโปรแกรมหลักที่จะทำงานบน Wemos ของคุณต่อไปได้

กลับไปที่เว็บเบราว์เซอร์ของคุณและเรียกใช้โปรแกรมไคลเอ็นต์ webrepl เปลี่ยนที่อยู่ IP เป็นที่อยู่ IP ของ Wemos ในกรณีของฉันคือตอนนี้ 192.168.0.32 ป้อนรหัสผ่าน Wemos ของคุณและตอนนี้คุณควรเชื่อมต่อกับ Wemos แล้ว

มาอัปโหลดโปรแกรม main.py ที่แนบมา ดาวน์โหลดไฟล์ที่แนบมากับคอมพิวเตอร์ของคุณ คลิกที่ เลือกไฟล์ เพื่อเลือกไฟล์ main.py ที่ดาวน์โหลดมา และคลิกที่ ส่งไปยังอุปกรณ์

คุณจะต้องกดปุ่ม Rest เพื่อโหลดโปรแกรม main.py หลังจากกดปุ่มรีเซ็ต คุณจะเห็น:

การเชื่อมต่อกับเครือข่าย…

การกำหนดค่าเครือข่าย: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1')

WebREPL daemon เริ่มทำงานเมื่อ ws://192.168.4.1:8266 WebREPL daemon เริ่มทำงานเมื่อ ws://192.168.0.32:8266 เริ่ม webrepl ในโหมดปกติ กำลังฟัง เชื่อมต่อเบราว์เซอร์ของคุณกับ …

ซึ่งหมายความว่าโปรแกรม main.py ของคุณเปิดใช้งานและแสดงรายการไปที่พอร์ต 80

หากต้องการทดสอบ ให้เปิดเว็บเบราว์เซอร์และป้อน

นี่ควรแสดงหน้าจอควบคุมรถตามที่แสดงในวิดีโอ หากสายไฟของคุณเชื่อมต่ออย่างถูกต้อง ปุ่มควบคุมจะส่งสัญญาณที่เหมาะสมไปยังพอร์ต GPIO ของคุณเพื่อเคลื่อนย้ายรถ

ขั้นตอนที่ 7: การปรับปรุงในอนาคต

รายการที่ต้องทำต่อไปนี้อยู่ในรายการ v2 ของฉัน:

  • ใช้ PWM เพื่อควบคุมความเร็วของมอเตอร์
  • ปรับปรุงเว็บอินเตอร์เฟส อาจใช้เฟรมเวิร์ก aREST ฉันไม่เชื่อว่า aREST lib พร้อมใช้งานบน MicroPython ในขณะนี้ ดังนั้นฉันอาจต้องแฮ็คมัน

ขอบคุณที่อ่านคำแนะนำนี้ ติดตามฉันบน Facebook, Youtube และ Instructables สำหรับโครงการเพิ่มเติมในอนาคต

แนะนำ: