WiFi ESP8266
Last updated
Last updated
โมดูลนี้ใช้ ESP-WROOM-02D ซึ่งเป็นโมดูลทางการของ ESP8266EX มี QSPI Flash 4MB โมดูลได้รับการรับรองด้วย FCC ในสหรัฐอเมริกา CE-RED ในยุโรป TELEC ในญี่ปุ่นและ KC ในเกาหลีใต้
โมดูลนี้เปิดโอกาสให้ผู้ใช้เขียนโปรแกรมเองได้ ไม่ใช่โมดูลส่งข้อมูลโปร่งแสง (transparent transmission module) ง่ายๆ อย่างเดียว
โมดูลรวมวงจรดาวน์โหลดอัตโนมัติและโมดูลสื่อสารอยู่ในโมดูลนี้ วงจรดาวน์โหลดอัตโนมัติหมายถึงการแนะนำอย่างเป็นทางการในการใช้ 2 ตัวขับแบบ S8050 เพื่อรับสัญญาณ RTS และ DTR จาก downloader แบบ CH340C และเรียกใช้ลำดับการดาวน์โหลด
เชื่อมต่อกับ NyBoard:
อัปโหลดสคริปต์ผ่าน USB downloader:
เราใช้ Arduino เป็นสถานที่พัฒนาโปรแกรม (Development Environment)
URL:http://arduino.esp8266.com/stable/package_esp8266com_index.json. ให้วาง URL ลงในการตั้งค่าเพิ่มเติมของบอร์ดพัฒนาใน Arduino preferences.
จากนั้นเปิด "Board Manager" และกรอก ESP8266 หรือ 8266 เพื่อค้นหาแพ็กเกจสนับสนุนบอร์ด:
ดาวน์โหลด package ESP8266 โดย ESP8266 Community ครับ
หลังจากดาวน์โหลด package แล้ว เราเลือก ESP8266 Board (เวอร์ชันปัจจุบัน: 2.74) -> Generic ESP8266 Module.
ขั้นตอนต่อไปคือการตั้งค่าพารามิเตอร์ดังนี้:
Parameters
Settings
Builtin Led
2
Upload Speed
921600(Auto-negotiation during downloading, 115200 is too slow)
CPU Frequency
160MHz
Flash Size
4MB
Reset Method
DTR reset
lwIP variant
V2 Lower memory
Erase Flash
Only sketch
หลังจากที่เราตั้งค่าเสร็จแล้ว เราใช้โปรแกรม "Blink" ของ Arduino เพื่อทดสอบโมดูล ESP8266
เปิดโปรเจกต์ Blink และทำการกำหนดค่าบอร์ดพัฒนา จากนั้นเสียบโมดูลลงในอินเตอร์เฟสการแก้ไขข้อผิดพลาดของโมดูลสื่อสารแบบ USB และดาวน์โหลดตัวอย่าง Blink
เมื่อเทียบกับ Arduino UNO จะมีเวลาในการคอมไพล์ที่นานขึ้นเล็กน้อย หลังจาก Linking เสร็จแล้ว ความคืบหน้าในการดาวน์โหลดจะแสดงเป็นเปอร์เซ็นต์:
"โค้ด Blink" ใช้พื้นที่แฟลชขนาด 257KB และ SRAM ขนาด 26.8KB
Project URL:https://github.com/PetoiCamp/OpenCat/tree/main/ModuleTests/ESP8266WiFiController
ไฟล์โปรเจ็กต์ประกอบด้วย 3 ไฟล์:
ESP8266WiFiController.ino: โค้ดสคริปต์อาดูโน่ที่มีโค้ดเซิร์ฟเวอร์สำหรับคอนโทรล
mainpage.h: หน้าต้อนรับ (html) อยู่ในรูปแบบ char array
actionpage.h: หน้าควบคุมการทำงาน (html) อยู่ในรูปแบบ char array
โปรดใส่ไฟล์เหล่านี้ลงในโฟลเดอร์ชื่อ "ESP8266WiFiController" แล้วเปิดไฟล์ ino และดาวน์โหลดไปยังโมดูล WiFi ESP8266
หลังจากโปรแกรมถูกดาวน์โหลดลงในโมดูล WiFi แล้ว เราขอแนะนำให้ทดลองรันโปรแกรมด้วย USB downloader เพื่อให้สามารถเช็คผลลัพธ์ที่ออกมาจากโปรแกรมได้ผ่าน Arduino serial monitor อย่างแม่นยำ
เปิดแอปสแกน WiFi ของสมาร์ทโฟนของคุณแล้วค้นหาจุดเข้าถึงที่มีชื่อว่า "Bittle-AP" ที่ไม่ได้เข้ารหัสข้อมูล แล้วเชื่อมต่อกับมัน
ถ้าสมาร์ทโฟนของคุณตั้งค่าการเชื่อมต่อเครือข่ายโดยอัตโนมัติ จะตัดการเชื่อมต่อของ "Bittle-AP" เนื่องจากไม่มีการเชื่อมต่ออินเทอร์เน็ต สมาร์ทโฟนของคุณอาจเชื่อมต่อกับ Wi-Fi ที่มีการเชื่อมต่ออินเทอร์เน็ต หรือแม้แต่ใช้ข้อมูลเคลื่อนที่ของคุณด้วย
แอพของคุณอาจกระโดดไปยังหน้า "WiFiManager" โดยอัตโนมัติเมื่อเชื่อมต่อกับ "Bittle-AP"
หากไม่ได้รับการเชื่อมต่อกับ "Bittle-AP" โดยอัตโนมัติ โปรดเปิดเบราว์เซอร์ของคุณแล้วป้อน 192.168.4.1 เพื่อเข้าสู่หน้าการกำหนดค่าการเชื่อมต่อ WiFi ด้วยตัวเอง
ที่หน้าเว็บไซต์ WiFiManager, โมดูลไร้สายของ Bittle จะค้นหา SSID ของ WiFi ที่อยู่ใกล้เคียงทั้งหมดและแสดงผลให้เห็น หลังจากคลิกที่ SSID ของ WiFi ของคุณและใส่รหัสผ่าน Bittle จะเชื่อมต่อกับเครือข่ายนี้ก่อน
เมื่อ Bittle เชื่อมต่อกับ WiFi ได้สำเร็จ มันจะพิมพ์ที่อยู่ IP ที่ได้รับจาก DHCP ผ่านพอร์ตช่องต่อออกแสดงผล คุณยังสามารถกำหนดที่อยู่ IP คงที่ใน Arduino ได้เช่นกัน
กรอกที่อยู่ไอพีของโมดูล WiFi เพื่อควบคุม Bittle ผ่าน WiFi ได้แล้ว!
โค้ดตัวอย่างเป็นตัวอย่างเว็บเซิร์ฟเวอร์ที่เรียบง่าย ประกอบด้วย 2 หน้า HTML โดยจะเก็บไว้ใน 2 ไฟล์ส่วนหัวในรูปแบบของค่าคงที่ข้อความ (string constants) เพื่อลดการเรียกใช้ฟังก์ชั่น client.print อย่างต่อเนื่อง
ก่อนที่เราจะเริ่มต้นเว็บเซิร์ฟเวอร์ของเรา เราควรตั้งค่า WiFi เพื่อเชื่อมต่อกับเครือข่าย LAN (Local Area Network) ของคุณ ในอดีตเราใช้การป้อนชื่อและรหัสผ่าน WiFi ในโปรแกรม แต่มันไม่สะดวกเมื่อเราต้องเปลี่ยนแวดวงเครือข่าย
เราใช้ไลบรารี WiFi manager เพื่อกำหนดค่าข้อมูล WiFi ผ่านเว็บไซต์
สร้างเว็บเซิร์ฟเวอร์ใหม่และกำหนดพอร์ต 80 (พอร์ตเซิร์ฟเวอร์ HTTP ที่ใช้งานมาก)
ฟังก์ชันการตอบกลับ HTTP ใช้สำหรับการจัดการคำขอ HTTP ที่เข้ามา
ฟังก์ชัน handleMainPage และ handleActionPage จะตอบกลับสถานะ 200 (OK) และรหัส HTML เพื่อให้กับเบราว์เซอร์ของคุณ (client) ที่ส่ง HTTP requests เข้ามา.
ฟังก์ชั่น HandleAction ต่างจาก HandleMainPage และ HandleActionPage นิดหน่อย โดยเป็นการประมวลผลคำขอ HTTP ที่มีการส่งพารามิเตอร์ โดยเมื่อพารามิเตอร์เป็น "gyro" ฟังก์ชั่นจะส่งคำสั่งไปยังพอร์ตซีเรียลของโมดูล WiFi ("g" เปิดการใช้งาน IMU) เพื่อให้ Bittle ของเราดำเนินการตามคำสั่งนั้นๆ
พารามิเตอร์ "gyro" นี้สร้างและส่งผ่านอย่างไร เนื่องจากเราส่งคำขอ HTTP พร้อมค่าไปยังเซิร์ฟเวอร์:
เซิร์ฟเวอร์แยกวิเคราะห์พารามิเตอร์การดำเนินการตามฟังก์ชันและแก้ไขว่าชื่อคือ "gyro"
เราสามารถพิมพ์ URL นี้โดยตรงในเบราว์เซอร์และดำเนินการด้วยคีย์บอร์ดได้เลย วิธีที่พบบ่อยกว่าคือการเพิ่มลิงก์ไปยังปุ่ม "Walk" ในหน้าเว็บเพจ ActionPage โดยเมื่อกดปุ่ม gyro URL ด้านบนจะถูกส่งไปยังโฮสต์
การกำหนดปุ่ม Walk ที่สมบูรณ์ครบวงจรดังนี้:
หลังจากแยกวิเคราะห์พารามิเตอร์ "name" แล้ว เราจะส่ง actionpage อีกครั้ง
เราผูกเมธอดผู้จัดการกับ URL ที่สอดคล้องกัน
เมื่อเทียบกับ ATMega328P บน NyBoard ESP8266 มีทรัพยากรด้านฮาร์ดแวร์และซอฟต์แวร์มากกว่า คุณสามารถทำการทดลองได้มากขึ้นด้วยมัน
Connect your Bittle to IoT platforms with HTTP restful APIs.
MQTT and node-red.
OTA with WiFi.
Make ESP8266 a strong co-processor for NyBoard for motion data fusion.