WLAN บน Arduino เชื่อมต่อ ESP8266-01 กับ Arduino และควบคุม NodeMCU Amica จากระยะไกลด้วยสมาร์ทโฟนของคุณ
Arduino เป็นหนึ่งในบอร์ดนักพัฒนาที่รู้จักกันดี น่าเสียดายที่รุ่นมาตรฐานไม่มีการติดตั้งชิป Wi-Fi เคล็ดลับที่เป็นประโยชน์นี้แสดงวิธีเชื่อมต่อโมดูล ESP8266-01 WLAN กับ Arduino และวิธีที่คุณสามารถควบคุม NodeMCU Amica จากสมาร์ทโฟนของคุณได้จากระยะไกล
ควบคุม NodeMCU Amica ด้วยสมาร์ทโฟนของคุณ
NodeMCU Amica มีพินหลากหลายเช่นเดียวกับชิป ESP8266 Wi-Fi ในตัวและซ็อกเก็ต microUSB ในตัว ดังนั้นจึงเหมาะสมที่จะใช้อุปกรณ์มากกว่าเป็นอุปกรณ์แบบสแตนด์อโลน วิธีการเชื่อมต่อบอร์ด "คลาสสิค" ESP8266 กับ Arduino ได้อธิบายไว้ในบทความ
- เพื่อให้สามารถตั้งโปรแกรมชิป ESP คุณต้องดาวน์โหลดและติดตั้งไดรเวอร์สำหรับชิป CP210er ทั้งหมดจาก Silicon Labs โชคดีที่สิ่งนี้เกิดขึ้นค่อนข้างเร็ว
- จากนั้นเปิด Arduino IDE และไปที่การตั้งค่า เพิ่ม URL "//arduino.esp8266.com/stable/package_esp8266com_index.json" (โดยไม่ใส่เครื่องหมายอัญประกาศ) ลงใน URL ผู้ดูแลบอร์ดเพิ่มเติม จากนั้นเริ่มผู้ดูแลบอร์ดป้อน "ESP8266" และติดตั้งแพคเกจ
- นอกจากนี้ยังไปที่ผู้จัดการห้องสมุดป้อน "Blynk" และติดตั้งรุ่นล่าสุด ส่วนประกอบที่จำเป็นทั้งหมดได้รับการติดตั้งแล้ว
- คุณต้องใช้แอพ Blynk เพื่อควบคุม NodeMCU ด้วยสมาร์ทโฟนของคุณ หากยังไม่ได้สร้างบัญชีใหม่ที่นี่หรือเข้าสู่ระบบด้วยบัญชีที่มีอยู่ จากนั้นสร้างโครงการใหม่และเลือก NodeMCU เป็นบอร์ด
- ด้วยรหัสตัวอย่างใน Arduino IDE คุณควรหารหัสสำหรับ Blynk (→ "Boards_WiFi") บน NodeMCU เพียงป้อนโทเค็น Blynk ของโครงการของคุณที่นี่ซึ่งคุณได้รับทางอีเมลโดยอัตโนมัติ ป้อน SSID และรหัสผ่านของคุณด้วย
- ในการโหลดรหัสลงบนบอร์ดคุณต้องเลือกรหัสจากแท็บ "เครื่องมือ" ในกรณีของเราต้องเลือก NodeMCU 1.0 (โมดูล ESP12E) ความถี่ 80 MHz ขนาดหน่วยความจำ "4M (3M SPIFFS)" และอัตราการรับส่งข้อมูล 115200 อย่างไรก็ตามโปรดทราบว่าข้อมูลอาจแตกต่างกันไปขึ้นอยู่กับรุ่น
- จากนั้นคุณสามารถโหลดรหัสลงบนบอร์ดและควบคุมด้วยแอป Blynk ที่นี่คุณสามารถสร้างวิดเจ็ตต่าง ๆ ได้อย่างง่ายดายและตัวอย่างเช่นควบคุม LED ด้วยปุ่ม
เชื่อมต่อ WiFi บน Arduino - ESP8266-01 กับ Arduino
ต่อไปเราต้องการเชื่อมต่อและใช้โมดูล ESP8266-01 กับ Arduino
- หากคุณพลิกกระดานเพื่อให้ชี้ไปที่เสาอากาศสีทองคุณจะพบพิน VCC ที่มุมบนซ้ายซึ่งแน่นอนว่าต้องตั้งค่าเป็นสูง ด้านขวาเป็นหมุด RST ซึ่งโดยปกติคุณไม่จำเป็นต้องใช้ หมุด CH_PD ถัดจากนั้นจะต้องตั้งค่าเป็น HIGH อีกครั้ง ที่ด้านบนขวาเรามีหมุด TXD ที่ส่งสัญญาณและที่ด้านซ้ายล่างเรามีหมุด RXD ที่รับสัญญาณแน่นอน เรายังมี GPIO0 และ GPIO2 เช่นเดียวกับหมุดภาคพื้นดินแบบคลาสสิคซึ่งตั้งอยู่ที่ด้านล่างขวา
- เพื่อให้สามารถใช้โมดูลบน Arduino มันเหมาะสมที่จะใช้ SoftwareSerial เนื่องจาก HardwareSerial ส่วนใหญ่จะใช้สำหรับการสื่อสารระหว่าง Arduino และพีซี ในกรณีของเราโมดูลใช้ 115200 เป็นอัตรา baud ซึ่งหมายความว่าการสื่อสารระหว่าง ESP และ Arduino ผ่าน SoftwareSerial ไม่สามารถทำได้
- ในการเปลี่ยนอัตราการรับส่งข้อมูลผู้ใช้หลายคนเพียงแค่แฟลชเฟิร์มแวร์ใหม่ที่ให้อัตราการรับส่งข้อมูลที่แตกต่างกัน อย่างไรก็ตามสิ่งนี้ไม่จำเป็นอย่างยิ่งเนื่องจากอัตรา baud ยังสามารถเปลี่ยนแปลงได้โดยใช้คำสั่ง คำสั่งนี้คือ "AT + UART_DEF" คำสั่งอื่น ๆ เช่น "AT + IPR" หรือ "AT + CIOBAUD" สามารถพบได้บนอินเทอร์เน็ต แต่ไม่แนะนำให้เลือกเนื่องจาก "AT + IPR" โดยเฉพาะสามารถทำให้โมดูลขัดข้องได้
- ในการส่งคำสั่งไปยังโมดูลขอแนะนำให้เชื่อมต่อกับพีซีด้วยอะแดปเตอร์ USB ซึ่งโดยทั่วไปจะให้บริการฟรีหรือสามารถพบได้บนอินเทอร์เน็ตในราคาประมาณหนึ่งยูโร หากคุณไม่มีอะแดปเตอร์ USB คุณสามารถสั่งซื้อออนไลน์ได้หนึ่งอันซึ่งแนะนำเป็นอย่างยิ่งหรือใช้อะแดปเตอร์ FTDI สากลซึ่งค่อนข้างซับซ้อนและมักจะไม่ทำงานอย่างถูกต้อง อีกวิธีหนึ่งคือมีตัวแปรอื่นที่จะอธิบายในภายหลัง
- หากคุณเชื่อมต่อโมดูลกับอะแดปเตอร์กับพีซีคุณสามารถส่งคำสั่ง "AT + UART_DEF = 9600, 8, 1, 0, 0" ด้วยอัตรา baud 115200 และ CR + LF จากนั้นคุณสามารถเชื่อมต่อโมดูลอีกครั้งและส่งคำสั่งในอัตรา baud 9600
- ต่อไปคุณต้องตั้งโปรแกรม Arduino รหัสค่อนข้างง่าย อันดับแรกเราจะกำหนดสตริงว่างด้วยคำสั่ง» String s = ""; «, นำเข้า SoftwareSerial (» #include «) และสร้างวัตถุ SoftwareSerial ใหม่ (» SoftwareSerial Serial_ESP (2, 3); «) ในวิธีการตั้งค่าการเชื่อมต่อกับ ESP (» Serial_ESP.begin (9600); «) และการเชื่อมต่อกับพีซี (» Serial.begin (9600); «) เริ่มต้นขึ้น หาก ESP ส่งสัญญาณสิ่งนี้จะถูกเพิ่มไปยังสตริงและสตริงนั้นจะถูกส่งออกในจอภาพอนุกรม (»ในขณะที่ (Serial_ESP.available ()> 0) {s + = (ถ่าน) Serial_ESP.read ();} ถ้า (s ! = "") {Serial.println (s); s = "";} «) ในทางกลับกันสัญญาณที่ส่งโดยจอภาพอนุกรมเช่นพีซีก็จะถูกส่งต่อไปยัง ESP ("ในขณะที่ (Serial.available ()> 0) {Serial_ESP.write (Serial.read ());}") อย่างไรก็ตามมันเป็นสิ่งสำคัญมากที่สิ่งทั้งปวงจะถูกแปลงเป็นรูปถ่านเนื่องจาก ESP ส่งตัวเลขกลับมา คุณสามารถค้นหารหัสอีกครั้งในแกลเลอรี่รูปภาพที่ท้ายบทความ
- เมื่อคุณโหลดรหัสไปยัง Arduino คุณจะต้องเชื่อมต่อ ESP ข้อควรระวัง! ESP ใช้ 3.3 โวลต์แทน 5V 5V ทำลายสิ่งนี้อย่างสมบูรณ์ อย่างไรก็ตามเนื่องจาก Arduino ทำงานร่วมกับลอจิก 5V จึงจำเป็นต้องปรับแรงดันไฟฟ้าให้เหมาะสม
- ในทางทฤษฎีคุณสามารถใช้ตัวแบ่งแรงดันกับตัวต้านทาน แต่ในทางปฏิบัติสิ่งทั้งหมดนั้นค่อนข้างไม่แน่ชัดและสามารถถูกรบกวนได้ง่าย ดังนั้นคุณต้องสลับตัวแปลงระดับตรรกะระหว่าง Arduino และ ESP
- เชื่อมต่อขา 5V ของ Arduino กับ HV, ขาแรงดันสูงบนตัวแปลงและขา LV ของตัวแปลงไปที่ขา VCC ของ ESP เชื่อมต่อขา LV ในแนวขนานกับขา CH_PD ของ ESP เพื่อให้ชิปเปิดอยู่ นอกจากนี้เพื่อให้ได้กระแสมากพอคุณควรเชื่อมต่อ 3.3V ของ Arduino ไปยังขา LV ของตัวแปลงดังนั้นจึงเป็น VCC และ CH_PD ของ ESP ตอนนี้เชื่อมต่อ TX pin จาก SoftwareSerial - ใน case pin 3 ของเราบน Arduino - ด้วย HV 1, 2, 3 หรือ 4 และ LV LV ตรงข้ามกับหมุด RXD บน ESP ทำซ้ำขั้นตอนนี้สำหรับขา RX ของ Arduino ด้วย
- ในที่สุดคุณต้องเชื่อมต่อกับพื้นดิน ในการทำเช่นนี้ให้เชื่อมต่อกราวด์ของ Arduino เข้ากับกราวด์ที่ด้าน HV ของเครื่องแปลง จากนั้นเชื่อมต่อกราวด์ที่ด้าน LV กับกราวด์ของ ESP ในที่สุดคุณต้องเชื่อมต่อกราวด์ HV และกราวด์ LV
- ตอนนี้คุณสามารถส่งคำสั่ง AT ด้วยพีซีของคุณไปยัง ESP ผ่าน Arduino ได้อย่างง่ายดาย คุณสามารถเชื่อมต่อ Arduino กับ WiFi สร้างเว็บเซิร์ฟเวอร์และอีกมากมายได้อย่างง่ายดาย เพียงเพิ่มคำสั่ง AT ที่เกี่ยวข้องลงในรหัส Arduino (ในวิธีการตั้งค่า) ที่จะส่งไปยัง ESP ซึ่งคุณสามารถหาได้ใน "ชุดคำสั่ง AT"
- หากคุณยังไม่ได้เตรียมอะแดปเตอร์ USB คุณสามารถส่งคำสั่งเพื่อเปลี่ยนอัตราการรับส่งข้อมูลผ่าน HardwareSerial โดยใช้วงจรเดียวกันโดยใช้หมุด TX และ RX ของ Arduino เช่น 0 และ 1 อย่างไรก็ตามอย่าลืมที่จะปรับอัตราการรับส่งข้อมูลในรหัสตาม
ในคำแนะนำการใช้งานถัดไปเราจะให้คำแนะนำเกี่ยวกับภาษาการเขียนโปรแกรม Java