3. ทำการกรอก E-mail และรหัสผ่าน หลังจากนั้นกดที่ปุ่มLog in
จุดประสงค์การเรียนรู้
สามารถรับส่งข้อมูลระหว่างESP32ผ่านApplication Lineได้
สาระการเรียนรู้
-
วิธีทำการทดลอง
ตอนที่ 1 การสมัครLine Notify
1. เข้าไปที่เว็บไซต์ : https://notify-bot.line.me/th/
2. เลือกเข้าสู่ระบบ
4. หลังจากนั้นจะได้รับรหัสยืนยันมา ให้นำรหัสยืนยันนี้ไปกรอกในApplication LineในSmartphone เพื่อทำการอนุญาตให้Line Notifyใช้งานผ่านDeviceของเราได้
5. ให้เลือกที่หัวลูกศรชี้ลง หลังจากนั้นให้เลือกที่ My page
6. เลือกGenerate token
7. ทำการตั้งชื่อLine Notify และเลือกกลุ่มที่ต้องการให้แจ้งเตือน หลังจากนั้นให้กดGenerate token
8. ก็จะได้Tokenมาดังภาพ นำเอาToken นี้ไปกรอกในCode Arduino IDE ที่จะกล่าวถึงในตอนที่2
ตอนที่ 2 Config ESP32 ในArduino IDE
วัสดุอุปกรณ์
1. ไมโครสวิตซ์ ชนิดกดติดปล่อยดับ จำนวน 1 ตัว
2. ตัวต้านทาน 10 กิโลโอห์ม จำนวน 1 ตัว
3. บอร์ด ESP32 Devkit V.1 จำนวน 1 บอร์ด
4. สายMicro USB จำนวน 1 เส้น
5. Breadboard
6. สายแพร Male-Male
7. หลอด LED จำนวน 3 หลอด
8. ตัวต้านทาน 220 โอห์ม จำนวน 3 ตัว
9. ตัวต้านทานปรับค่าได้ Potentiometer จำนวน 1 ตัว
10. ลำโพงBuzzer จำนวน 1 อัน
11. จอแสดงผล OLED I2C จำนวน 1 อัน
12. Servo Motor จำนวน 1 ตัว
13. โมดูลMb 102 Breadboard จำนวน 1 ตัว
14. Adaptor 9Vdc จำนวน 1 ตัว
15. ไดซ์มอเตอร์ TB6612 FNG จำนวน 1 ตัว
16. มอเตอร์กระแสตรง จำนวน 2 ตัว
1. หากทำการทดลอง Lab1-Lab10 แล้ว ไม่จำเป็นต้องต่ออะไรเพิ่มเติมอีก
2. ทำการCopy Codeด้านล่างก่อนUpload code Arduino IDE ลงไปใบนบอร์ด ESP32 Devkit v1 ควรแก้ไขดังนี้
ภาพตำแหน่งCodeที่ต้องเปลี่ยน
หลังจากนั้นให้เข้ามาเลือกที่Tool -> Board -> ESP32 Arduino ->ESP32 Dev Module (ดังภาพประกอบด้านล่าง)
Arduino IDE Code
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <Wire.h>
#include <SPI.h>
#include <ESP32Servo.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 OLED(-1);
#define LINE_TOKEN "iPz1pCC1FmExh6fQXSKBtCQDNfIANFwuKiMm5RqByjQ" //Fill in the information Token Line Notify
#define WIFI_STA_NAME "BJHome2G" // Fill in the information SSID wifi
#define WIFI_STA_PASS "123456789" // Fill in the information Password Wifi
#define k_nob 35
#define LEDA 5
#define LEDB 19
#define LEDC 23
#define snd 18
bool LINE_Notify(String message) {
WiFiClientSecure client;
if (!client.connect("notify-api.line.me", 443)) {
Serial.println("connection failed");
return false;
}
String payload = "message=" + message;
String req = "";
req += "POST /api/notify HTTP/1.1\r\n";
req += "Host: notify-api.line.me\r\n";
req += "Authorization: Bearer " + String(LINE_TOKEN) + "\r\n";
req += "User-Agent: ESP32\r\n";
req += "Content-Type: application/x-www-form-urlencoded\r\n";
req += "Content-Length: " + String(payload.length()) + "\r\n";
req += "\r\n";
req += payload;
// Serial.println(req);
client.print(req);
delay(20);
// Serial.println("-------------");
long timeOut = millis() + 30000;
while (client.connected() && timeOut > millis()) {
if (client.available()) {
String str = client.readString();
// Serial.print(str);
}
delay(10);
}
// Serial.println("-------------");
return timeOut > millis();
}
void setup() {
OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Serial.begin(115200);
pinMode(LEDA, OUTPUT);
pinMode(LEDB, OUTPUT);
pinMode(LEDC, OUTPUT);
pinMode(k_nob, INPUT);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(WIFI_STA_NAME);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_STA_NAME, WIFI_STA_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
// digitalWrite(LED, !digitalRead(LED));
}
digitalWrite(LEDA, LOW);
digitalWrite(LEDB, LOW);
digitalWrite(LEDC, LOW);
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
tone(snd, 800, 50); tone(snd, 900, 50); tone(snd, 800, 50);
//////////// OLED Display //////////////////
OLED.clearDisplay();
OLED.setTextColor(WHITE, BLACK);
OLED.setCursor(0, 0);
OLED.setTextSize(1);
OLED.print("SSID:"); OLED.println(WIFI_STA_NAME);
OLED.print(" IP:"); OLED.println(WiFi.localIP());
OLED.print("....................");
OLED.display();
}
void loop() {
String text = "Hello ESP32"; // Message sent from Line Notify
int sensor = analogRead(k_nob); // value sensor
Serial.print("MSG : "); Serial.print("No Data"); Serial.print(" Value : "); Serial.println(sensor);
///////////// status LED////////////////////
digitalWrite(LEDA, LOW);
digitalWrite(LEDB, LOW);
digitalWrite(LEDC, LOW);
//////////// OLED Display //////////////////
OLED.clearDisplay();
OLED.setTextColor(WHITE, BLACK);
OLED.setCursor(0, 0);
OLED.setTextSize(1);
OLED.print(" SSID:"); OLED.println(WIFI_STA_NAME);
OLED.print(" IP:"); OLED.println(WiFi.localIP());
OLED.println("....................");
OLED.print("Value:"); OLED.println(sensor);
OLED.println("....................");
OLED.print("MSG : ");OLED.println("No Data");
OLED.println("....................");
OLED.display();
if (sensor > 2048) {
Serial.print("MSG : "); Serial.print(text); Serial.print(" Value : "); Serial.println(sensor);
///////////// status LED////////////////////
digitalWrite(LEDA, HIGH);
digitalWrite(LEDB, HIGH);
digitalWrite(LEDC, HIGH);
//////////// OLED Display //////////////////
OLED.clearDisplay();
OLED.setTextColor(WHITE, BLACK);
OLED.setCursor(0, 0);
OLED.setTextSize(1);
OLED.print(" SSID:"); OLED.println(WIFI_STA_NAME);
OLED.print(" IP:"); OLED.println(WiFi.localIP());
OLED.println("....................");
OLED.print("Value:"); OLED.println(sensor);
OLED.println("....................");
OLED.print("MSG : ");OLED.println(text);
OLED.println("....................");
OLED.display();
// LINE_Notify("msg");
// LINE_Notify(text);
String Sensor = String(sensor);
LINE_Notify(text +" ** value : " +Sensor);
delay(100);
}
}
ตัวอย่างCodeหลังจากที่เปลี่ยนแล้ว
3.หลังจากนั้นให้เข้ามาที่ Tool ->Port แล้วเลือกพอร์ตCom portที่เชื่อมกับUSB ดังรูปข้างล่าง
** กรณีใช้งานใน Ubuntu พอร์ตที่ใช้อาจจะเป็นพอร์ตttyUSB0 ซึ่งจะต้องเลือกเป็นพอร์ตชื่อนี้แทนCom port และก่อนกดUpload ให้ทำการเปิดTerminal โดยเข้าไปที่desktop คลิกขวาตรงพื้นที่ว่าง แล้วเลือก Open Terminal หลังจากนั้นให้พิมพ์ข้อความในTerminalดังนี้เพื่อทำการเปิดพอร์ตUSB : sudo chmod 666 /dev/ttyUSB0 หลังจากนั้นให้กดEnter และทำการกรอกรหัสผ่านของเครื่องพร้อมกับกดปุ่มEnterอีกครั้ง หลังจากนั้นก็Upload codeในArduino IDE
4.ทำการกดปุ่มUpload ที่เป็นรูปหัวลูกษร หรือจะกด Ctrl+u ที่คีย์บอร์ดเพื่อทำการUploadโปรแกรมไปที่บอร์ดESP32 ดังรูปข้างล่าง
5.หลังจากที่Uploadโปรแกรมแล้วจะมีการแสดงผลชื่อ SSID หมายเลข IP ค่าที่รับมาจากเซนเซอร์ พร้อมทั้งข้อความที่ส่งไปที่ Line Notify ซึ่งทั้งหมดนี้จะแสดงผลในSerial Monitor และจอแสดงผล OLED
อ้างอิงจาก :https://gist.githubusercontent.com/maxpromer/b9a626a4cf95045578206737e8b240df/raw/9a5ffb217c62731df2aefd5c0b418fdba87d6e93/MQTT_Light_Dimmer_ESP32.ino