การสื่อสารแบบไร้สายระหว่างอุปกรณ์อิเล็กทรอนิกส์และโมดูลมีความสำคัญมากเพื่อให้ 'พอดี' ในโลกแห่งอินเทอร์เน็ตของสรรพสิ่ง โปรโตคอล HTTP และภาษา HTML ทำให้สามารถถ่ายโอนข้อมูลได้ทุกที่ในโลกผ่านเว็บ เราได้กล่าวถึงโครงการบางส่วนที่ใช้Wi-Fi กับ Arduino แล้วไปดูที่การเริ่มต้นใช้งาน:
- การส่งอีเมลโดยใช้โมดูล WiFi Arduino และ ESP8266
- หุ่นยนต์ควบคุม WiFi โดยใช้ Arduino
- การควบคุม RGB LED โดยใช้ Arduino และ Wi-Fi
ตอนนี้ในการกวดวิชานี้เรากำลังสร้างโปรแกรมที่จะส่งข้อมูลไปยังเว็บโดยใช้ Arduino และโมดูล สำหรับสิ่งนี้อันดับแรกเราต้องมีที่อยู่ IP ของเซิร์ฟเวอร์ทั่วโลกหรือเซิร์ฟเวอร์ท้องถิ่นที่นี่เพื่อความสะดวกและจุดประสงค์ในการสาธิตเรากำลังใช้เซิร์ฟเวอร์ท้องถิ่น
ส่วนประกอบที่ต้องการ:
- Arduino UNO
- โมดูล Wi-Fi ESP8266
- สาย USB
- การเชื่อมต่อสายไฟ
- แล็ปท็อป
- แหล่งจ่ายไฟ
โมดูล Wi-Fi ESP8266:
การเชื่อมต่อวงจร:
แผนภาพวงจรสำหรับ“ โพสต์ข้อมูลจาก Arduino ไปยังเว็บ”มีดังต่อไปนี้ เราต้องการ โมดูล Wi-Fi Arduino และ ESP8266 เป็นหลัก หมุด Vcc และ GND ของ ESP8266 เชื่อมต่อโดยตรงกับ 3.3V และ GND ของ Arduino และ CH_PD ยังเชื่อมต่อกับ 3.3V หมุด Tx และ Rx ของ ESP8266 เชื่อมต่อโดยตรงกับพิน 2 และ 3 ของ Arduino ซอฟต์แวร์ Serial Library ใช้เพื่ออนุญาตการสื่อสารแบบอนุกรมบนพิน 2 และ 3 ของ Arduino เราได้กล่าวถึงการเชื่อมต่อของโมดูล Wi-Fi ESP8266 กับ Arduino โดยละเอียดแล้ว
ด้วยการใช้ Software Serial Library ที่นี่เราอนุญาตให้มีการสื่อสารแบบอนุกรมบนพิน 2 และ 3 และทำให้เป็น Rx และ Tx ตามลำดับ โดยค่าเริ่มต้น Pin 0 และ 1 ของ Arduino จะใช้สำหรับการสื่อสารแบบอนุกรม แต่ด้วยการใช้ไลบรารี SoftwareSerial เราสามารถอนุญาตการสื่อสารแบบอนุกรมบนพินดิจิทัลอื่น ๆ ของ Arduino ได้
หมายเหตุ: หากต้องการดูการตอบสนองของ ESP8266 บนจอภาพอนุกรมโปรดเปิด Serial Monitor ของ Arduino IDE
คำอธิบายการทำงาน:
ก่อนอื่นเราต้องเชื่อมต่อโมดูล Wi-Fi กับเราเตอร์ Wi-Fi สำหรับการเชื่อมต่อเครือข่าย จากนั้นเราจะกำหนดค่าเซิร์ฟเวอร์ภายในส่งข้อมูลไปยังเว็บและปิดการเชื่อมต่อในที่สุด ขั้นตอนและคำสั่งนี้ได้อธิบายไว้ในขั้นตอนด้านล่าง:
1. ครั้งแรกที่เราต้องทดสอบโมดูล Wi-Fi โดยการส่ง AT คำสั่งก็จะกลับมีการตอบสนองที่ตกลง
2. หลังจากนี้เราต้องเลือกโหมดโดยใช้คำสั่ง AT + CWMODE = mode_id เราใช้ Mode id = 3 รหัสโหมด:
1 = โหมดสถานี (ไคลเอนต์)
2 = โหมด AP (โฮสต์)
3 = โหมด AP + สถานี (ใช่ ESP8266 มีโหมดคู่!)
3. ตอนนี้เราจำเป็นต้องยกเลิกการเชื่อมต่อโมดูล Wi-Fi ของเราจากเครือข่าย Wi-Fi ที่เชื่อมต่อก่อนหน้านี้โดยใช้คำสั่ง AT + CWQAP เนื่องจาก ESP8266 เป็นการเชื่อมต่ออัตโนมัติโดยอัตโนมัติกับเครือข่าย Wi-Fi ที่มีอยู่ก่อนหน้านี้
4. หลังจากนั้นผู้ใช้สามารถรีเซ็ตโมดูลด้วยคำสั่ง AT + RST ขั้นตอนนี้เป็นทางเลือก
5. ตอนนี้เราต้องเชื่อมต่อ ESP8266 กับเราเตอร์ Wi-Fi โดยใช้คำสั่งที่กำหนด
6. ตอนนี้รับที่อยู่ IP โดยใช้คำสั่งที่กำหนด:
มันจะส่งคืนที่อยู่ IP
7. ตอนนี้เปิดใช้งานโหมดมัลติเพล็กซ์โดยใช้ AT + CIPMUX = 1 (1 สำหรับการเชื่อมต่อหลายครั้งและ 0 สำหรับการเชื่อมต่อเดียว)
8. ตอนนี้กำหนดค่า ESP8266 เป็นเซิร์ฟเวอร์โดยใช้ AT + CIPSERVER = 1, port_no (พอร์ตอาจเป็น 80) ตอนนี้ Wi-Fi ของคุณพร้อมแล้ว ที่นี่ '1' ใช้เพื่อสร้างเซิร์ฟเวอร์และ '0' เพื่อลบเซิร์ฟเวอร์
9. ตอนนี้โดยใช้คำสั่งผู้ใช้สามารถส่งข้อมูลไปยังเซิร์ฟเวอร์ที่สร้างขึ้นภายในเครื่อง:
Id = เลขที่ ID ของการส่งการเชื่อมต่อ
Length = ความยาวสูงสุดของข้อมูลคือ 2 กิโลไบต์
10. หลังจากส่ง ID และ Length ไปยังเซิร์ฟเวอร์เราจำเป็นต้องส่งข้อมูลเช่น Serial.println (“ [email protected]”);
11. หลังจากส่งข้อมูลแล้วเราต้องปิดการเชื่อมต่อตามคำสั่งที่กำหนด:
ขณะนี้ข้อมูลถูกส่งไปยังเซิร์ฟเวอร์ภายในแล้ว
12. ตอนนี้พิมพ์ที่อยู่ IP ในแถบที่อยู่ในเว็บเบราว์เซอร์และกด Enter ตอนนี้ผู้ใช้สามารถดูข้อมูลที่ส่งบนหน้าเว็บ
ตรวจสอบวิดีโอด้านล่างเพื่อดูกระบวนการทั้งหมด
ขั้นตอนในการเขียนโปรแกรม:
1. รวม SoftwareSerial Library เพื่ออนุญาตการสื่อสารแบบอนุกรมบน PIN 2 & 3 และประกาศตัวแปรและสตริงบางส่วน
# รวม
2. หลังจากนี้เราต้องกำหนดฟังก์ชันบางอย่างสำหรับปฏิบัติงานที่เราต้องการ
ในฟังก์ชัน Setup () เราเริ่มต้นการสื่อสาร UART แบบอนุกรมในตัวสำหรับ ESP8266 เป็น client.begin (9600); ที่อัตราบอด 9600
การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println ("ระบบพร้อม.. "); }
3. ใน ฟังก์ชัน wifi_init () เราเริ่มต้นโมดูล wifi โดยส่งคำสั่งบางอย่างเช่นรีเซ็ตตั้งค่าโหมดเชื่อมต่อกับเราเตอร์กำหนดค่าการเชื่อมต่อเป็นต้นคำสั่งเหล่านี้ได้อธิบายไว้ข้างต้นในส่วนของคำอธิบาย
เป็นโมฆะ wifi_init () {connect_wifi ("AT", 100); connect_wifi ("ที่ + CWMODE = 3", 100); connect_wifi ("ที่ + CWQAP", 100); connect_wifi ("ที่ + RST", 5000);…… ป……….
4. ใน ฟังก์ชัน connect_wifi () เราส่งข้อมูลคำสั่งไปยัง ESP8266 จากนั้นอ่านการตอบสนองจากโมดูล Wi-Fi ESP8266
เป็นโมฆะ connect_wifi (สตริง cmd, int t) {int temp = 0, i = 0; ในขณะที่ (1) {Serial.println (cmd);…… ป……….
5. ฟังก์ชัน sendwebdata () ใช้สำหรับส่งข้อมูลไปยัง Local Server หรือ Webpage
โมฆะ sendwebdata (String webPage) {int ii = 0; ในขณะที่ (1) {int l = webPage.length (); Serial.print ("AT + CIPSEND = 0,"); client.print ("ที่ + CIPSEND = 0,");…… ป……….
6. เป็นโมฆะส่ง () ฟังก์ชั่นที่ใช้สำหรับการส่งข้อมูลไปยังสตริง sendwebdata () ฟังก์ชั่น ซึ่งจะส่งไปยังหน้าเว็บต่อไป
เป็นโมฆะ Send () {webpage = "
ยินดีต้อนรับสู่ Circuit Digest
"; sendwebdata (หน้าเว็บ); webpage = name; webpage + = dat;…………………7. ฟังก์ชัน get_ip () ใช้สำหรับรับที่อยู่ IP ของเซิร์ฟเวอร์ที่สร้างขึ้นภายในเครื่อง
8. ในฟังก์ชัน void loop () เราจะส่งคำสั่งไปยังผู้ใช้เพื่อรีเฟรชหน้าและตรวจสอบว่าเซิร์ฟเวอร์เชื่อมต่ออยู่หรือไม่ เมื่อผู้ใช้รีเฟรชหรือร้องขอเว็บเพจข้อมูลจะถูกส่งไปยังที่อยู่ IP เดียวกันโดยอัตโนมัติ
ห่วงเป็นโมฆะ () {k = 0; Serial.println ("โปรดรีเฟรชเพจของคุณ"); ในขณะที่ (k <1000)………………
เราสามารถแสดงข้อมูลใด ๆ จาก Arduino ไปยังเว็บเพจโดยใช้กระบวนการนี้เช่นอุณหภูมิห้องและความชื้นเวลานาฬิกาพิกัด GPS อัตราการเต้นของหัวใจเป็นต้น