ทราบกันดีว่าปัจจุบัน App Line มีการเปิด API ให้อุปกรณ์ Arduino Nodemcu Esp8266 สามารถเชื่อมต่อ Line แล้วส่งข้อความแจ้งเตือนผ่าน Line ก็ได้ มาสักระยะแล้ว วันนี้เราได้นำบทความที่เป็นปัจจุบัน ล่าสุด นำมาสอนให้น้องๆได้ใช้กันแบบไม่มีปัญหาน่ะครับ
หลักการทำงานของ Line notify
อุปกรณ์ Nodemcu Esp8266 Esp32 Arduino+W5100 จะทำการส่งข้อความ ผ่าน Methol Post ไปยัง Server ของ Line NotiFy อุปกรณ์จะต้องรองรับ SSL ด้วยน่ะครับ
บทความนี้เราจะมาพูดถึงการสมัคร Line Notify กันครับ ก่อนอื่นน้องๆจะต้องมี ID Line ก่อนน่ะครับ Email และ Password ที่เข้า Line ได้ อันนี้ทางร้านจะไม่ขอพูดน่ะครับเพราะเชื่อว่าทุกคนทำได้อยู่แล้ว เรามาเริ่มกันเลย ครับ
1. ก่อนอื่นเปิดเว็บ นี้ก่อนเลย ครับ //notify-bot.line.me/th/
//notify-bot.line.me/th/
2. จากนั้นจะขึ้น ตามภาพ ให้กดที่ปุ่ม เข้าสู่ระบบ ที่มุมขวาบน
3. Login ด้วย Email และ Password Line ของเราเข้าไป
5. ในส่วนนี้ จะเป็นการตั้งชื่อ และให้ส่งข้อความ หาเราเองหรือ ส่งข้อความเข้ากลุ่ม ที่เราต้อการ
- บริเวณสีแดง เป็นส่วนที่ให้เราใส่ชื่อของ Bot ของเราคงไป อาจจะตั้งชื่อว่า Robot แจ้งเตือนไฟไหม้ น้ำร้องล่วงอันนี้ก็แล้วแต่น้องๆน่ะครับ
- บริเวณสีชมพู หากเราเลือกในช่องนี้ คือให้ Nodemcu เลือกส่งข้อความหาเราเองเท่านั้น
- บริเวณสีเขียว เป็นกลุ่มที่เราต้องการให้ Nodemcu ส่งข้อความไปหากลุ่มของเรา
จากนั้นให้ทำการกดปุ่ม ออก Token (อันนี้ Admin ก็ไม่เข้าใจทำไมต้องแปลออกมาคำว่าออก Token ทำไมไม่ใช้คำว่าสร้าง จะได้เข้าใจง่ายขึ้น)
6. จากนั้นให้เรา คัดลอก Token เก็บไว้ เราจะเอาส่วนนี้ไปใช้ในโปรแกรมของเรา
จบแล้วครับ ง่ายไหมเอย เดี่ยวมาลุยกันต่อในส่วนของ Code
จากครั้งที่แล้วเราได้พูดถึงการสมัคร Line Notify เรียบร้อย อย่าลืม Copy ในส่วนของ Token ด้วยน่ะครับเราต้องใช้ด้วยน่ะครับ เรามาเริ่มกันเลย
ทางร้านแนะนำให้ใช้ Library ของ พี่ TridentTD ชื่อว่า //github.com/TridentTD/TridentTD_LineNotify
เรามาเริ่มกันเลย ครับ
1. ก่อนอื่นให้เรา Download Library มาติดตั้งในเครื่องก่อนน่ะครับ
Download :
ติดตั้งไม่เป็นสามารถอ่านบทความ เพิ่มเติมได้น่ะครับ //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 นี้
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 แสดงว่าทั้งสองบอร์ดส่งข้อมูลมาที่ตัวรับได้สำเร็จ
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
4. แบบ Two-way รับและส่งในตัวเดียวกัน- กำหนด mac address ของตัวรับ
- โค้ด ESP32 ESP-NOW : ตัวที่ 1 // esp_now_ex4.ino
- โค้ด ESP32 ESP-NOW : ตัวที่ 2 // esp_now_ex4.ino
เปิดดูใน Serial Monitor จะเห็นว่าอุปกรณ์ 1 ตัว สามารถทำงานได้ทั้งเป็นตัวรับ และตัวส่งแล้ว
การใช้งาน 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 เพิ่มเติมที่นี่
การใช้งานระหว่าง 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 เพิ่มเติม
- //randomnerdtutorials.com/esp-now-esp8266-nodemcu-arduino-ide/
- //randomnerdtutorials.com/esp-now-one-to-many-esp32-esp8266/
- //www.youtube.com/watch?v=lkHdk_mKGUw
- //www.survivingwithandroid.com/esp-now-esp32-esp8266/