สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ฉันเผยแพร่แล้วในปี 2559 คำแนะนำนี้ "วิธีสร้างเกตเวย์ Wifi ของคุณเองเพื่อเชื่อมต่อ Arduino กับเครือข่าย IP" เนื่องจากฉันได้ปรับปรุงโค้ดบางส่วนแล้วและยังคงใช้โซลูชันนี้อยู่
อย่างไรก็ตาม ขณะนี้มีตัวป้องกัน ESP8266 บางตัวที่อนุญาตให้ทำสิ่งเดียวกันได้โดยไม่ต้องบัดกรี ตราบใดที่คุณไม่ได้ใช้บอร์ดไมโครหรือนาโน
คำแนะนำนี้จะอธิบายวิธีใช้ตัวป้องกัน ESP82 เหล่านี้เป็นเกตเวย์ UDP / IP แบบอนุกรม
ซึ่งเป็นส่วนหนึ่งของโครงสร้างพื้นฐานระบบอัตโนมัติภายในบ้านทั่วโลก คุณสามารถดูได้ที่นี่
ข้อมูลเพิ่มเติมเกี่ยวกับโล่พร้อมคำแนะนำนี้
เสบียง
1 Arduino Mega (ดีที่สุดคือมีอย่างน้อย 1 Mega สำหรับการพัฒนาและ 1 Uno สำหรับเฟสรัน)
1 Rokoo ESP8266 ESP-12E UART WIFI Convertisseur
1 FTDI 3.3v
สายเขียงหั่นขนม 2 เส้น
ขั้นตอนที่ 1: มันทำงานอย่างไร ?
เกตเวย์ใช้โมดูล ESP8266
โมดูลนี้เชื่อมต่อจากด้านหนึ่งด้วยลิงก์ซีเรียลจากอีกด้านหนึ่งไปยังเครือข่าย IP ด้วย Wifi
มันทำหน้าที่เป็นกล่องดำ แพ็กเก็ตข้อมูลที่มาจากลิงก์ซีเรียลจะถูกส่งไปยังพอร์ต IP/Udp และในทางกลับกัน
คุณเพียงแค่ต้องตั้งค่าการกำหนดค่าของคุณเอง (IP, WIFI …) หนึ่งครั้งในครั้งแรกที่คุณจะเปิดเครื่องบนเกตเวย์
มันสามารถถ่ายโอนข้อมูลดิบ ASCII และข้อมูลไบนารี (ไม่มี HTTP, JSON…)
ได้รับการออกแบบมาเพื่อเชื่อมต่ออ็อบเจ็กต์กับซอฟต์แวร์ทำเองของเซิร์ฟเวอร์ที่ต้องการการถ่ายโอนข้อมูลแบบสั้นอย่างรวดเร็วและบ่อยครั้ง
ขั้นตอนที่ 2: อะไรคือหน้าที่หลัก ?
ส่วนใหญ่เป็นกล่องดำที่แปลงข้อมูลอนุกรมเป็นแพ็กเก็ต UDP ทั้งสองวิธี
แต่เกตเวย์ยังสามารถดำเนินการได้ด้วยตัวเองโดยการส่งข้อมูลภายในไปยังเซิร์ฟเวอร์และรับคำสั่งบางอย่างจากเซิร์ฟเวอร์
Arduino สามารถส่งและรับข้อความไปยัง / จากเซิร์ฟเวอร์ที่เชื่อมต่อผ่านอินเทอร์เน็ตเพียงแค่พิมพ์ / อ่านลิงค์ซีเรียล นักพัฒนา Arduino ไม่จำเป็นต้องรบกวนโปรโตคอล IP
ยิ่งไปกว่านั้น ยังมี GPIO ที่ Arduino สามารถใช้เพื่อตรวจสอบว่าเกตเวย์เชื่อมต่อกับ WIFI อย่างถูกต้องหรือไม่ และเกตเวย์สามารถสลับ SSID ที่แตกต่างกัน 2 อันได้โดยอัตโนมัติในกรณีที่เกิดความล้มเหลว
เกตเวย์มี 2 โหมดการทำงานที่แตกต่างกันซึ่งถูกเลือกโดยการตั้งค่า GPIO
การตั้งค่า GPIO เป็นกราวด์และเกตเวย์จะเข้าสู่โหมดการกำหนดค่า
การตั้งค่า GPIO ฟรีและเกตเวย์จะเข้าสู่โหมดการทำงานของเกตเวย์
ยิ่งไปกว่านั้น การกำหนดค่าเกตเวย์ UDP/IP สามารถแก้ไขได้จากระยะไกล
ขั้นตอนที่ 3: การสร้างวัสดุ
ของจำเป็นน้อยมาก
1 ESP8266 Shield - ฉันพบ UNO R3 ESP8266 Serial WiFi Shield Extend Board Module ที่น้อยกว่า 9 €
1 UNO ที่เป็นเป้าหมายของ Arduino
1 เมกะที่เป็นเครื่องมือพัฒนา Arduino (คุณสามารถทำได้โดยไม่ต้องใช้ แต่เป็นการดีบั๊กค่อนข้างยาก)
1 FTDI 3.3/5v สำหรับการพัฒนา
สายบางๆ
ขั้นตอนที่ 4: ดาวน์โหลดรหัสเกตเวย์
ในระหว่างขั้นตอนนี้ Arduino จะใช้เพื่อจ่ายไฟ (ด้วย USB หรือแหล่งพลังงานอื่น) บนแผงป้องกัน ESP8266 เท่านั้น
เชื่อมต่อ ESP8266 GPIO4 กับกราวด์ (เพื่อเข้าสู่โหมดการกำหนดค่า)
ดูแลตั้งค่า FTDI เป็น 3.3v ตามที่ชีลด์ต้องการ
เชื่อมต่อ FTDI กับเกราะ (RX ถึง TX)
ตั้งค่าสวิตช์ชิลด์เป็น 1:ปิด 2:ปิด 3:เปิด 4:เปิด
เชื่อมต่อด้าน USB ของ FTDI เข้ากับคอมพิวเตอร์ของคุณ
รีเซ็ตเกราะป้องกันด้วยปุ่มกด ESP-RST
ดาวน์โหลดรหัสเกตเวย์ที่นั่นบน GitHub
เปิด Arduino IDE
- เลือกพอร์ตจอภาพ FTDI
- เปิด IDE Serial Monitor - ตั้งค่าความเร็วเป็น38400
- เลือกบอร์ดโมดูล ES8266 ทั่วไป
- อัพเกรดเฟิร์มแวร์โล่ด้วยรหัสเกตเวย์
ตั้งสวิตช์ 3: ปิด 4: ปิด
เปิด IDE Serial Monitor
รีเซ็ตเกราะด้วยปุ่มกด ESP-RST
คุณต้องเห็นข้อความบนจอภาพที่เริ่มต้นด้วย "การเริ่มต้น EEPROM" "การกำหนดค่าเริ่มต้นเสร็จสมบูรณ์"….
ถึงเวลาทำการกำหนดค่า
ขั้นตอนที่ 5: มาทำการกำหนดค่าเกตเวย์กันเถอะ
เมื่อดาวน์โหลดรหัสเกตเวย์เป็นครั้งแรก ESP8266 Eeprom จะถูกเตรียมใช้งานด้วยค่าเริ่มต้น คุณจะเห็นข้อความประเภทนี้ "set Parameter: x size: yy"
คุณสามารถค้นหาค่าเหล่านี้ได้ในการกำหนดโค้ดของ paramValue แน่นอน คุณสามารถเปลี่ยนค่าเริ่มต้นเหล่านี้ได้ก่อนที่จะดาวน์โหลดโค้ด แต่คุณยังสามารถตั้งค่าคอนฟิกตามคำสั่งได้ในภายหลัง นี่จะดีกว่าถ้าคุณวางแผนที่จะมีเกตเวย์หลายตัวและเก็บรหัสเวอร์ชันเดียวเท่านั้น
ใช้พอร์ตอนุกรมของจอภาพเพื่อส่งคำสั่ง (ตั้งค่าเป็น NL และ CR)
เนื่องจากไม่ได้กำหนด SSID ให้รอ "ไม่สามารถเชื่อมต่อกับ yoursecondssid retry:5"
จากนั้นการสแกน WIFI จะเริ่มต้นโดยอัตโนมัติ
ถึงเวลาตั้งค่า SSID ของคุณด้วยคำสั่งต่อไปนี้:
- SSID1=ทางเลือกของคุณ1
- PSW1=yourpsw1
- SSID2=ทางเลือกของคุณ2
- PSW2=ของคุณpsw2
- SSID=1 (เพื่อเลือก SSID ที่จะเริ่มต้นด้วย)
- รีสตาร์ทWifi
หลังจากนั้นไม่กี่วินาที คุณสามารถตรวจสอบการเชื่อมต่อด้วยคำสั่ง "ShowWifi" คุณต้องเห็นที่อยู่ IP ที่เกตเวย์ได้รับจากเซิร์ฟเวอร์ DNS ของคุณ หากถึงเวลาต้องก้าวต่อไป
ได้เวลากำหนดที่อยู่เซิร์ฟเวอร์ IP ของคุณโดยป้อนที่อยู่ย่อย 4 รายการ (เซิร์ฟเวอร์ที่จะเรียกใช้รหัสทดสอบ Java) ตัวอย่างเช่น:
- "IP1=192"
- "ไอพี2=168"
- "IP3=1"
- "IP4=10"
เมื่อส่งคำสั่งเปล่า คุณจะเห็นคำสั่งที่รองรับทั้งหมดที่คุณสามารถใช้ในภายหลังเพื่อให้เหมาะกับความต้องการของคุณ ค่าพารามิเตอร์ทั้งหมดจะถูกเก็บไว้ใน Eeprom และจำเป็นต้องรีบูตเพื่อนำมาพิจารณา
ถอดสายการกำหนดค่า
โล่กำลังทำงานเป็นเกตเวย์
ขั้นตอนที่ 6: ดาวน์โหลดตัวอย่างโค้ด Arduino
ขั้นแรกให้ดาวน์โหลดโค้ด Arduino หลักที่นั่นบน GitHub
จากนั้นดาวน์โหลดโค้ด Arduino คำนิยามคำสั่งนี้และโค้ดลิงก์อนุกรมนี้ลงในไลบรารีของคุณ
จากนั้นเปิดรหัสหลักด้วย Arduino IDE. ใหม่
ตั้งค่าชิลด์สวิตช์ 1 และ 2 ออกเพื่อเพิ่ม Arduino serial link 0 สำหรับการเชื่อมต่อ USB
รีเซ็ตเกราะ
เชื่อมต่อสาย FTDI กับ Mega Serial 2 (TX FTDI เป็น RX Mega และอื่นๆ)
เริ่ม Arduino IDE ใหม่ (หรือเครื่องมือ TTY) เชื่อมต่อ FTDI Usb และเริ่มตรวจสอบลิงก์อนุกรม
อัปโหลดโค้ด Arduino ภายใน Mega
ตั้งสวิตช์ชิลด์ 1 และ 2 เพื่อเชื่อมต่อ Arduino serial link 0
รีเซ็ตเกราะ
คุณต้องเห็นข้อความนี้ "เริ่มพิมพ์ usb" บนจอภาพ
ขั้นตอนที่ 7: มาทำฝั่งเซิร์ฟเวอร์กันเถอะ
ตัวอย่างเซิร์ฟเวอร์คือโปรแกรม Java ที่คุณสามารถดาวน์โหลดได้ที่ GitHub
เพียงแค่เรียกใช้และดูคอนโซล Java และดูที่ FTDI monitor
คุณจะเห็นการแลกเปลี่ยนข้อมูลระหว่างเซิร์ฟเวอร์และ Arduino
ขั้นตอนที่ 8: ก้าวต่อไป
ตัวอย่างโค้ด Arduino นี้อิงตามส่วนเฟรมเวิร์กของโครงสร้างพื้นฐานระบบอัตโนมัติในบ้านของฉัน
หากคุณสนใจโครงสร้างพื้นฐานนี้ โปรดแจ้งให้เราทราบ ฉันจะเผยแพร่แหล่งที่มา
หากคุณต้องการใช้เกตเวย์ คุณสามารถทำให้โค้ด Arduino ง่ายขึ้นได้
หลังจากพัฒนาและทดสอบโค้ดของคุณบน Arduino Mega แล้ว คุณสามารถแทนที่ด้วย Uno !
ยิ่งไปกว่านั้น คุณสามารถเชื่อมต่อสายไฟระหว่าง Arduino GPIO 7 และ ESP8266 GPIO 5 หากคุณต้องการให้ Arduino ของคุณตรวจสอบการเชื่อมต่อ Wifi