เชื่อมต่อ Hardware และ การเขียนโปรแกรม

การต่อ Hardware

  • นำ Nodemcu ต่อเข้ากับ Prototype board
  • ต่อ LED1 (สีเขียว) ขั้วบวก เข้ากับ D1 และ LED1 ขั้วลบต่อกับตัวต้านทาน และ ต่อตัวต้านทานลง GND
  • ต่อ LED2 (สีเหลือง) ขั้วบวก เข้ากับ D2 และ LED2 ขั้วลบต่อกับตัวต้านทาน และ ต่อตัวต้านทานลง GND
  • ต่อ LED3 (สีแดง) ขั้วบวก เข้ากับ D3 และ LED3 ขั้วลบต่อกับตัวต้านทาน และ ต่อตัวต้านทานลง GND
  • นำสาย USB ต่อ NodeMCU เข้าคอม จะได้ดังรูป

ตั้งค่าก่อนเขียนโปรแกรม

  1. ตั้งค่า Board เลือก Port และเลือก Programmer

ตัวอย่างโปรแกรม

  • สามารถกดดูได้ที่ File -> Example -> antoESP8266 -> Quick start anto
  • ตั้งค่า username , things , key และ Channel
  • ตั้งค่า SSID , password ในการเชื่อมต่อ Internet
  • กด Upload โปรแกรมเข้าสู่บอร์ด

อธิบายโปรแกรม

#include <AntoIO.h>

const char *ssid = "your access point SSID";
const char *pass = "access point password";
const char *user = "your username";
const char *token = "your token";
const char *thing = "your thing";

#include คือส่วนที่เรียก library Anto มาใช้
ใส่ ssid (ชื่อ wifi) เช่น const char *ssid = "Home";
ใส่ password เช่น const char *pass = "1234567";
ใส่ Username เช่น const char *user = "User";
ใส่ Keys เช่น const char *token = "xxx";
ใส่ Thing เช่น const char *thing = "thing";
*ในส่วนของ Username สามารถดูได้จาก https://www.anto.io/account/info ในช่องตามภาพด้านล่าง


// initialize AntoIO instance
AntoIO anto(user, token, thing);

int value = 0;

สร้าง instance Anto
สร้างตัวแปล value เพื่อเก็บค่าคำสั่ง( 0 คือ ปิด, 1 คือ เปิด ) ที่ได้จาก Anto


ใน void setup()

Serial.begin(115200);
delay(10);

Serial.println();
Serial.println();
Serial.print("Anto library version: ");
Serial.println(anto.getVersion());

Serial.print("\nTrying to connect ");
Serial.print(ssid);
Serial.println("...");

ในส่วนนี้จะ print ค่าต่างๆออกมา เช่น
Serial.println(anto.getVersion()); คือการแสดงเลขเวอร์ชัน library ของ Anto
Serial.print(ssid); คือการแสดงชื่อไวไฟที่ตั้งค่า


anto.begin(ssid, pass, messageReceived);

ในส่วนนี้คือการ setup wifi และ connect กับ Anto และประกาศฟังก์ชันการใช้งานเมื่อมีการรับค่าจาก Anto เข้ามาจะเข้าฟังก์ชัน messageReceived ในการดำเนินงานต่อไป


anto.sub("LED1");
anto.sub("LED2");
anto.sub("LED3");

anto.sub("LED1"); คือการติดตามข้อมูล Channel -> LED ( สามารถเพิ่ม/ลด channel ตรงนี้ )


pinMode(D1,OUTPUT);
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);

กำหนด ขา ของ NodeMCU ที่ต่อกับหลอดไฟให้เป็น OUTPUT


ใน void loop()

void loop() {
  anto.mqtt.loop();
}

ตั้งค่าให้ Anto ทำงานใน loop


ใน void messageReceived(String thing, String channel, String payload) หลังจากเรา setup ไว้แล้วว่า ถ้ามีข้อความเข้ามาจาก Anto ก็ให้เข้ามาทำที่ฟังก์ชันนี้ โดยการรับเป็น
thing : ชื่อ thing ที่ส่งข้อความมา
channel : ชื่อ channel ที่ส่งข้อความมา
payload : ค่าที่ส่งมา

Serial.print("Recieved: ");
Serial.print(thing);
Serial.print("/");
Serial.print(channel);
Serial.print("-> ");
Serial.println(payload);

print ค่าต่างๆที่ Anto ส่งเข้ามา


if(channel.equals("LED1")){
    value = payload.toInt();
    if(value == 1){
        digitalWrite(D1,HIGH);
    }
    else{
        digitalWrite(D1,LOW);
    }    
}
else if(channel.equals("LED2")){
    value = payload.toInt();
    if(value == 1){
        digitalWrite(D2,HIGH);
    }
    else{
        digitalWrite(D2,LOW);
    }
}
else if(channel.equals("LED3")){
     value = payload.toInt();
     if(value == 1){
        digitalWrite(D3,HIGH);
     }
     else{
        digitalWrite(D3,LOW);
    }
}

ในบรรทัด if(channel.equals("LED1")) เป็นการเช็คว่าค่าที่เข้ามานั้นเป็นของ Channel ชื่อ LED1 หรือไม่
ในบรรทัด value = payload.toInt(); เป็นการกำหนด value = ค่า payload (รับค่าจาก anto ที่เป็น string) แปลงค่าเป็น int (ตัวเลข)
แล้วในบรรทัด

if(value == 1){
   digitalWrite(D1,HIGH);
}
else{
  digitalWrite(D2,LOW);
}

เป็นการเช็คว่า value เท่ากับ 1 ใหม ถ้าใช่ ก็ให้เปิดไฟ(D1 สีเขียว) ถ้าไม่ให้ปิดไฟ(D1 สีเขียว)
หลังจากนั้นก็จะคอนเซ็ปเหมือนเดิมเพียงแค่ว่า ถ้าเป็นจาก Channel LED2 , LED3 ก็ให้เปิด/ปิดไฟ (D2,D3 : สีเหลือง สีแดง)

results matching ""

    No results matching ""