Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

ทราบกันดีว่าปัจจุบัน App Line มีการเปิด API ให้อุปกรณ์ Arduino Nodemcu Esp8266 สามารถเชื่อมต่อ Line แล้วส่งข้อความแจ้งเตือนผ่าน Line ก็ได้ มาสักระยะแล้ว วันนี้เราได้นำบทความที่เป็นปัจจุบัน ล่าสุด นำมาสอนให้น้องๆได้ใช้กันแบบไม่มีปัญหาน่ะครับ

หลักการทำงานของ Line notify

อุปกรณ์ Nodemcu Esp8266 Esp32 Arduino+W5100 จะทำการส่งข้อความ ผ่าน Methol Post ไปยัง Server ของ Line NotiFy อุปกรณ์จะต้องรองรับ SSL ด้วยน่ะครับ

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

บทความนี้เราจะมาพูดถึงการสมัคร Line Notify กันครับ ก่อนอื่นน้องๆจะต้องมี ID Line ก่อนน่ะครับ Email และ Password ที่เข้า Line ได้ อันนี้ทางร้านจะไม่ขอพูดน่ะครับเพราะเชื่อว่าทุกคนทำได้อยู่แล้ว เรามาเริ่มกันเลย ครับ

1. ก่อนอื่นเปิดเว็บ นี้ก่อนเลย ครับ https://notify-bot.line.me/th/

https://notify-bot.line.me/th/

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

2. จากนั้นจะขึ้น ตามภาพ ให้กดที่ปุ่ม เข้าสู่ระบบ ที่มุมขวาบน

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

3. Login ด้วย Email และ Password Line ของเราเข้าไป

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต
4. ให้ทำการกดที่ ออก Token ตามภาพ

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

5. ในส่วนนี้ จะเป็นการตั้งชื่อ และให้ส่งข้อความ หาเราเองหรือ ส่งข้อความเข้ากลุ่ม ที่เราต้อการ

  • บริเวณสีแดง เป็นส่วนที่ให้เราใส่ชื่อของ Bot ของเราคงไป อาจจะตั้งชื่อว่า Robot แจ้งเตือนไฟไหม้ น้ำร้องล่วงอันนี้ก็แล้วแต่น้องๆน่ะครับ
  • บริเวณสีชมพู หากเราเลือกในช่องนี้ คือให้ Nodemcu เลือกส่งข้อความหาเราเองเท่านั้น
  • บริเวณสีเขียว เป็นกลุ่มที่เราต้องการให้ Nodemcu ส่งข้อความไปหากลุ่มของเรา

จากนั้นให้ทำการกดปุ่ม ออก Token (อันนี้ Admin ก็ไม่เข้าใจทำไมต้องแปลออกมาคำว่าออก Token ทำไมไม่ใช้คำว่าสร้าง จะได้เข้าใจง่ายขึ้น)

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

6. จากนั้นให้เรา คัดลอก Token เก็บไว้ เราจะเอาส่วนนี้ไปใช้ในโปรแกรมของเรา

จบแล้วครับ ง่ายไหมเอย เดี่ยวมาลุยกันต่อในส่วนของ Code

จากครั้งที่แล้วเราได้พูดถึงการสมัคร Line Notify เรียบร้อย อย่าลืม Copy ในส่วนของ Token ด้วยน่ะครับเราต้องใช้ด้วยน่ะครับ เรามาเริ่มกันเลย

ทางร้านแนะนำให้ใช้ Library ของ พี่ TridentTD ชื่อว่า https://github.com/TridentTD/TridentTD_LineNotify

เรามาเริ่มกันเลย ครับ

1. ก่อนอื่นให้เรา Download Library มาติดตั้งในเครื่องก่อนน่ะครับ

Download :

ติดตั้งไม่เป็นสามารถอ่านบทความ เพิ่มเติมได้น่ะครับ https://www.ab.in.th/b/32 (ใช้วิธีที่ 2 ติดตั้งแบบ Winzip)

ESP-NOW คือการสื่อสารแลกเปลี่ยนข้อมูลระหว่างบอร์ด ESP32 ESP8266 สามารถเขียนโปรแกรมควบคุมได้ด้วย Arduino IDE การสื่อสารแบบ ESP-NOW เป็นโปรโตคอลที่พัฒนาโดย Espressif สำหรับส่งข้อมูลขนาดเล็กแบบประหยัดพลังงานด้วยความถี่ 2.4G ทำให้อุปกรณ์คุยกันได้โดยตรงแบบไม่ต้องผ่านตัวกลาง สามารถสื่อสารได้ทั้งแบบ อุปกรณ์และอุปกรณ์ หรือแบบหลายอุปกรณ์แบบเครือข่ายได้พร้อมกัน

ความสามารถของ ESP-NOW

  • สื่อสารแบบไร้สายความถี่ 2.4G แบบประหยัดพลังงาน
  • สร้างเครือข่ายการรับส่งสัญญาณแบบไร้สาย
  • จ่ายไฟแล้วเชื่อมต่ออัตโนมัติ ไม่ต้องตั้งค่าใหม่
  • เข้า/ถอดรหัสข้อมูล สื่อสารระหว่างบอร์ด
  • ส่งแพ็คเกจข้อมูลสูงสุดครั้งละ 250 ไบต์
  • เชื่อมต่อได้สูงสุด 20 โหนด
  • มีฟังก์ชั่นตรวจสอบสถานะการรับและส่งข้อมูล
  • ระยะส่ง ESP32/ESP8266 ประมาณ 100-200 เมตร ขึ้นกับอุปกรณ์และสภาพแวดล้อม

ESP-NOW การใช้งานส่งข้อมูลระหว่างบอร์ด ESP32

คำสั่งในการสั่งงาน ESP-NOW

  • แต่ละบอร์ดจะมี mac address สำหรับอ้างอิง รับและส่งข้อมูล
  • esp_now_init() ; สั่งเริ่มต้นให้ ESP-NOW ทำงาน
  • esp_now_add_peer(); เชื่อมต่ออุปกรณ์ที่ต้องการสื่อสาร ด้วยเลข mac address
  • esp_now_send(); ส่งข้อมูลให้กับบอร์ดที่เชื่อมต่อด้วย mac address
  • esp_now_register_send_cb(); เมื่อส่งสำเร็จ ให้ทำคำสั่งในฟังก์ชั่นนี้
  • esp_now_register_rec_cb(); เมื่อรับข้อมูลสำเร็จ ให้ทำคำสั่งในฟังก์ชั่นนี้

โค้ด Arduino ESP-NOW ESP32 ตัวอย่างที่นี่

1. แบบ One-way ตัวส่ง 1 ตัว ตัวรับ 1 ตัว - กำหนด address ตัวรับ

  • โค้ด ESP32 ESP-NOW : ตัวส่ง TX // esp_now_ex1.ino
  • โค้ด ESP32 ESP-NOW : ตัวรับ RX (ตัวที่ 1) // esp_now_ex2.ino

อัพโหลดโค้ดตัวรับก่อนจากนั้นเปิดดู Serial Monitor จะเห็นเลข mac address นำเลข address มาแก้ไขให้กับโค้ดตัวส่ง เพื่อกำหนดให้ตัวส่ง ส่งข้อมูลไปหาตัวที่มี mac address นี้

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต
เปิดดูใน Serial Monitor ของทั้งสองบอร์ด ก็จะเห็นว่าสามารถส่งข้อมูลหากันได้แล้ว ง่าย ๆ แบบนี้ กรณีต้องการส่งไปหาทุกบอร์ด สามารถกำหนด mac address ที่ส่งเป็น 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

2. แบบ One-way ตัวรับ 1 ตัว ตัวส่งหลายตัว - แค่กำหนด mac address ตัวรับ

  • โค้ด ESP32 ESP-NOW : ตัวส่ง TX (ตัวที่ 1) //esp_now_ex1.ino // กำหนดข้อความ ID 1
  • โค้ด ESP32 ESP-NOW : ตัวส่ง TX (ตัวที่ 2) //esp_now_ex1.ino // กำหนดข้อความ ID 2
  • โค้ด ESP32 ESP-NOW : ตัวรับ RX // esp_now_ex2.ino ตัวเดิมไม่ต้องแก้

เปิดดูใน Serial Monitor ของตัวรับ จะเห็นว่า มีข้อมูลส่งมา 2 ชุด ID 1 และ ID2 แสดงว่าทั้งสองบอร์ดส่งข้อมูลมาที่ตัวรับได้สำเร็จ

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

3. แบบ One-way ตัวส่ง 1 ตัว ตัวรับหลายตัว - เพิ่ม address ตัวรับทั้ง 2 ตัว ส่งแบบ channal

  • โค้ด ESP32 ESP-NOW : ตัวส่ง TX // esp_now_ex3.ino
  • โค้ด ESP32 ESP-NOW : ตัวรับ RX (ตัวที่ 1) // esp_now_ex2.ino
  • โค้ด ESP32 ESP-NOW : ตัวรับ RX (ตัวที่ 2) // esp_now_ex2.ino

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

4. แบบ Two-way รับและส่งในตัวเดียวกัน- กำหนด mac address ของตัวรับ

  • โค้ด ESP32 ESP-NOW : ตัวที่ 1 // esp_now_ex4.ino
  • โค้ด ESP32 ESP-NOW : ตัวที่ 2 // esp_now_ex4.ino

เปิดดูใน Serial Monitor จะเห็นว่าอุปกรณ์ 1 ตัว สามารถทำงานได้ทั้งเป็นตัวรับ และตัวส่งแล้ว

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

การใช้งาน ESP-NOW ESP32 เพิ่มเติมดังนี้

ตัวอย่างการใช้งานกับ ESP-NOW ESP8266

  • โค้ด ESP8266 ESP-NOW : ตัวรับ RX // esp_now_ex5.ino
  • โค้ด ESP8266 ESP-NOW : ตัวส่ง TX // esp_now_ex6.ino
  • การใช้งาน ESP-NOW ESP8266 เพิ่มเติมที่นี่

Arduino esp8266 ทำงาน โดยไม ม อ นเตอร เน ต

การใช้งานระหว่าง ESP8266 กับบอร์ด ESP32 สามารถใช้โค้ดของแต่ละบอร์ดในตัวอย่างนี้เพื่อรับส่งข้อมูลได้

เพิ่มเติม ESP8266 ใช้โค้ดคล้ายกับ ESP32 โดยมีจุดที่แตกต่างกับ ESP32 6 จุดดังนี้

1. เปลียน include libarary

include <esp_now.h>

include <WiFi.h>

เป็น 2 ตัวนี้

include <espnow.h>

include <ESP8266WiFi.h>

2. เปลียนตัวแปร ESP_OK

esp_now_init() != ESP_OK

เป็น

esp_now_init() != 0

3. เปลี่ยนตัวแปรในฟังก์ชั่น OnDataRecv จาก

void OnDataRecv(uint8_t * mac, uint8_t *incomingData, int len)

เป็น

void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len)

4 เปลี่ยนฟังก์ชั่น OnDataSend จาก

void OnDataSent(uint8_t *mac_addr, esp_now_send_status_t status)

เป็น

void OnDataSent(uint8_t *mac_addr, uint8_t status

5 เปลี่ยน status == ESP_NOW_SEND_SUCCESS

เป็น sendStatus == 0

6 เปลียนวิธี Register peer เป็น

เป็น

// Register peer

esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);

ข้อมูลวิธีใช้งาน ESP-NOW ESP32 ESP8266 เพิ่มเติม

  • https://randomnerdtutorials.com/esp-now-esp8266-nodemcu-arduino-ide/
  • https://randomnerdtutorials.com/esp-now-one-to-many-esp32-esp8266/
  • https://www.youtube.com/watch?v=lkHdk_mKGUw
  • https://www.survivingwithandroid.com/esp-now-esp32-esp8266/