เริ่มใช้ Blynk Library ให้ถูกต้อง ลดBug ลดError ได้99% มือใหม่ต้องดู!! Arduino,ESP8266,IOT
ฝัง
- เผยแพร่เมื่อ 30 ก.ย. 2024
- DIY of Things สวัสดีครับ
วันนี้เป็นตอนแรกประจำปี 2020 ก็ต้องขอสวัสดีปีใหม่เพื่อนๆทุกคนนะครับ
สำหรับวันนี้จะมาแนะนำวิธีการเขียนโปรแกรม Arduino กับ Blynk Library ให้ถูกต้องเพื่อลด BUG ลด Error และ ลดปัญหาเมื่อเวลาเขียนโปรแกรมมที่มีการทำงานซับซ้อนมากขึ้น เพราะจากปีที่ผ่านมา ได้ช่วยเหลือเพื่อนๆพี่ๆน้องๆ หลายๆท่านในการแก้ไข code project ที่เขียนตามๆกันมา พบว่ามักจะเขียนไม่ถูกวิธีกัน (ไม่ผิดนะ แต่มันไม่ถูก) ทำให้เวลาเขียนโปรแกรมไปเยอะๆแล้วมักจะพบปัญหาตอนสุดท้าย เช่นกดปุ่มนี้แล้ว ESP8266 หรือ NodeMCU ดับไปเอง หรือ หยุดทำงานไปเฉยๆ โดยหาสาเหตุไม่ได้ วันนี้เราจะมาแก้ปัญหานี้กัน โดยตัวอย่างเป็นโปรเจ็คยอดฮิตของปีก่อน นั้นคือเครื่องรดน้ำต้นไม้สองระบบ Auto และ Manual ไปรับชมกันได้เลยครับ
---- CODE ตัวอย่าง ----
github.com/DIY...
หากมีคำถามสามารถสอบถามได้ใน comment หรือ ที่ facebook / diyofthings
สุดท้าย Subscribe & Like & Share เป็น กำลังใจให้กันด้วยครับ ขอบคุณเพื่อนๆทุกคนครับ
ตอนอื่นๆ
- Widget Button & Styled Button
• Arduino ESP8266 Blynk ...
- Widget Slider & Vertical Slider
• Arduino ESP8266 Blynk ...
- Widget JoyStick & Timer
• Arduino ESP8266 Blynk ...
- Widget Eventor
• Arduino ESP8266 Blynk ...
#DIYofThings
#Arduino
#ESP8266
#NODEMCU
#BLYNK
#IOT
#PROJECT
#โปรเจค - วิทยาศาสตร์และเทคโนโลยี
พี่ครับในคลิปวีดีโอตัวเกจวัดความชื้น ภาษาอังกฤษชื่อว่าอะไรครับ
@@Tawan_tt guage
pzem.setAddress(ip); ขึ้น error แก้ไขยังไงครับ
ถ้าต้องการใช้เซ็นเซอร์เเบบไม่จุ่มดินละครับ
คลิปละเอียด ชัดเจน และเข้าใจได้ง่ายมากครับ ขอบคุณมากครับสำหรับคลิปดีๆมีประโยชน์และได้ความรู้เต็มๆ
ยินดีครับ ฝากแชร์ ฝากติดตามผลงานด้วยครับผม
พี่ครับผมยังไม่เข้าใจครับ เกรดวัดความชื้นอะครับพี่เลือก V1 หรือ AO ครับ
ผมผิดพลาดตรงไหนครับ นำค่าขึ้น Blynk ไม่ได้ค่าเป็น 0
ใน Gauge นั่งพยามยามทำมา 3 วันแล้วครับ
ทดสอบการทำงานของ Sensor PMS5003ST ทำงานได้ตามปกติครับ แต่พอนำค่ามาใส่ใน Gauge แล้วไม่ขึ้น ขอบคุณครับ
#define BLYNK_PRINT Serial
#include
#include
#define ON LOW // ตั้งค่า สวิต
#define OFF HIGH // ตั้งค่า สวิต
char auth[] = "EdU_oRT9EQtyBgsoyVhTkFCdxsL_QNAy";
char ssid[] = "wichutit2019";
char pass[] = "wct33450";
BLYNK_CONNECTED() {
Blynk.syncAll();
}
#include "BLINKER_PMSX003ST.h"
#if defined(ESP32)
HardwareSerial pmsSerial(2);// เชื่อมขา D2
#else
#include
SoftwareSerial pmsSerial(4,5);
#endif
BLINKER_PMSX003ST pms;
BlynkTimer timer;
void setup()
{
Serial.begin(115200);
Serial.println("
Start");
pmsSerial.begin(9600);
pms.begin(pmsSerial);
pms.setMode(PASSIVE);
Blynk.begin(auth,ssid,pass);
timer.setInterval(1000L,checkpms);
timer.setInterval(10000L,sendpms);
}
void checkpms() //ฟังก์ชั่นอ่านค่า PM อุณหภูมิ และความชื้น
{
pms.request();
if(!pms.read()){
return;
}
Serial.print("PM1.0(CF1)\t");
Serial.print(pms.getPmCf1(1.0));
Serial.println("ug/m3");
Serial.print("PM2.5(CF1)\t");
Serial.print(pms.getPmCf1(2.5));
Serial.println("ug/m3");
Serial.print("PM10(CF1)\t");
Serial.print(pms.getPmCf1(10));
Serial.println("ug/m3");
Serial.print("PM1.0(ATO)\t");
Serial.print(pms.getPmAto(1.0));
Serial.println("ug/m3");
Serial.print("PM2.5(ATO)\t");
Serial.print(pms.getPmAto(2.5));
Serial.println("ug/m3");
Serial.print("PM10(ATO)\t");
Serial.print(pms.getPmAto(10));
Serial.println("ug/m3");
Serial.print(" PCS0.3\t");
Serial.print(pms.getPcs(0.3));
Serial.println("pcs/0.1L");
Serial.print(" PCS0.5\t");
Serial.print(pms.getPcs(0.5));
Serial.println("pcs/0.1L");
Serial.print(" PCS1.0\t");
Serial.print(pms.getPcs(1));
Serial.println("pcs/0.1L");
Serial.print(" PCS2.5\t");
Serial.print(pms.getPcs(2.5));
Serial.println("pcs/0.1L");
Serial.print(" PCS5.0\t");
Serial.print(pms.getPcs(5));
Serial.println("pcs/0.1L");
Serial.print(" PCS10\t");
Serial.print(pms.getPcs(10));
Serial.println("pcs/0.1L");
Serial.print("Formalde\t");
Serial.print(pms.getForm());
Serial.println("ug/m3");
Serial.print("Temperat\t");
Serial.print(pms.getTemp());
Serial.println("'C");
Serial.print("Humidity\t");
Serial.print(pms.getHumi());
Serial.println("%");
Serial.println();
delay(1000);
}
void sendpms() // ฟังห์ชั่นส่ง ไปยัง virtual pin
{
/*Serial.println(pms.getPcs(2.5));
float pms.getPmCf1(2.5) = 0;
float pms.getPmAto(2.5) = 0;
float pms.getTemp() = 0;
float pms.getHumi() = 0;*/
Blynk.virtualWrite(1,pms.getPmCf1(2.5)); // virtual pin
Blynk.virtualWrite(2,pms.getPmAto(2.5)); // virtual pin
//Blynk.virtualWrite(3,getTemp()); // virtual pin
//Blynk.virtualWrite(4,pms.getHumi()); // virtual pin
}
void loop()
{
Blynk.run();
timer.run();
}
ผมนำไปใช้ดีมากเลยครับ เป็นประโยชน์มาก
แต่อยากจะต่อยอดโดยให้ค่าความชื้นอยู่ระหว่าง ค่าต่ำกับค่ามากที่เรา set ครับ เมื่อถึงค่าสูงให้ปั๊มทำงาน เมื่อทำงานแล้วจนถึงค่าต่ำจึงหยุดทำงาน ผมใช้ or (//) ไม่ได้ครับ ช่วยแนะนำครับ
คำสั่ง blynk timer จะทำงานก็ต่อเมื่อ mcu เชื่อมต่ออินเทอร์เน็ตใช่ไหมครับ
ใช่ครับ
@@DIYofThings ขอบคุณครับ
ตอนนี้หนูกำลังทำ โปรเจคหลี่ ไฟผ่านแอปBlynk อยู่อะค่ะโดยใช้บอร์ด ESP8266 อยู่หนูอยาก ทราบว่าเราจะทำให้มันหลี่ไฟผ่านแอปยังไง หรือว่าต่องใส่โค้ดมันเข้าไป ช่วยแนะนำหน่อยได้ไหมคะ เคลียดมากเลย
ESP32 สามารถใช้วิธีเดียวกันได้ไหมครับ
ต่างจากmillis() ไหม๊ครับพี่ ฟังพี่อธิบาย เราสามารถใช้millis() เป็นtimer แล้วเขียน if check condition อีกทีครับ
เขียนได้ แต่ควรจบสั่นๆครับ ถ้าให้คำนวนมากๆมันจะหน่วง มีผลทำให้ blynk ร่วนครับ
@@DIYofThings อ้อครับ งั้นใช่Library blynk timer.เข้ามาช่วยชัวร์กว่าใช่ไหมครับพี่
@@Kittisak_Pomarsa ใช่ครับ แต่อย่าลืมเขียนให้มันทำงานสั่นๆด้วยนะครับ ^^
@@DIYofThings ขอบคุณครับผม
สุดยอดมากครับ เเต่ถ้าผมต้องการเอา sensor ความชื้นไปไว้ที่ปลายสวน ประมาน 20 กว่าเมตรผมควรทำไงครับพี่ ควรลากสายsensorไป หรือว่า มีวิธีส่งค่ากลับมา esp8266 อย่างไรได้บ้างครับพี่ ขอไลน์หน่อยได้ไหมครับ
ส่งกลับมาทาง rf หรือ wifi ก็ได้ครับ
ติดต่อพี่ได้ที่ เฟสบุค diyofthings ครับ
สอบถามหน่อยครับพอดีว่าผมจะเชื่อมต่อNodeMCU esp8266 กับแอปBlynk ลงไลบรารี่หมดแล้ว แต่พอกดเบิร์นแล้วมันErrorแบบนี้หมายความว่าไงครับแล้วผมต้องแก้ยังไง (มือใหม่) exec: "C:\\Users\\Soravit\\Documents\\ArduinoData\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3": file does not exist
Error compiling for board NodeMCU 1.0 (ESP-12E Module).
ติดตั้ง esp8266 library ยังครับ
สอบถามหน่อยครับผม Verify program ใน Arduino IDE แล้วขึ้น Error
แบบนี้ครับ แก้ไขยังไงครับขอบคุณครับ
ESP8266_Shield:36:10: fatal error: ESP8266_Lib.h: No such file or directory
หา lib ไม่เจอ
ผมทำตามพี่แล้วก็ยังเป็นอยู่ครับ. ผมดึงค่าจากเซ็นเซอร์ มาได้แค่ 2 ตัวเอง. แต่ผมต้องการดึงมาทั้งหมด 4 ตัว พอดึงทั้ง 4 ตัว Loop ค้างไม่ทำงานเลยครับ
^^ ได้เรียบร้อยนะครับ
มันคล้ายกับการทำmulti task ที่ต้องตั้ง currenttime กับ previous time ใช่ไหมครับ
ใช่เลยครับ แบบเดียวกันเลย
สุดยอดครับพี่ รวยๆถูกหวย รวยเบอร์ ถ้ายังไม่จบด็อกเตอร์ก็ขอให้จบไวๆ สอนที่ไหนครับอยากเรียน
5555
ดีมากเลยครับ,ผมสอบถามเพิ่มเติมหน่อยครับ ถ้าเราใช้ Node mcu ตัวเดียวแต่ สั่งงานผ่าน blynk โดยใช้สอง user จะได้ไหมครับผม
ทำได้ครับ แอพ blynk ให้เราแชร์ interface ให้ผู้อื่นได้ครับ
ผมทำตัวตั้งเว่ลา ปิด/เปิด แอร์ 8 โมงเช้าปิด 6 โมงเย็นเปิด เราสามารถใช้ Timer ใน Blynk นี้ได้เลยไหมครับ แต่ประเด็นคือ ตัว esp32 ต้อง รีเซ็ตบอร์ดทุก ๆ ครึ่ง ชม. อย่างนี้ ค่าเวลาที่ได้ หลังจากทำไปแล้ว มันจะกลับมาเป็น Default เหมือนเดิมไหมครับ
ดึงค่าเวลามาจาก blynk server ตอนเริ่มโปรแกรมครับ
@@DIYofThings สมมติ 10 โมง สั่งให้จ่าย "1" พอมีการรีเซ็ตบอร์ด มันจะกลับไปจ่าย "0" ไหมครับ อีกอย่าง เวลามันก็เลย 10 โมงไปแล้ว
เป็นคลิปที่ดีครับ อธิบายละเอียดมากครับ
ผมว่าคุณจะต้องมีคนติดตามเยอะแน่ๆครับ
ขอบคุณมากๆครับ ส่วนใหญ่มีแต่คนดูไม่ติดตามครับ 555 ฝากช่องน้อยๆของผมไว้ด้วยนะครับ ขอบคุณครับ
ขอบคูณมากเลยครับ อธิบาย ละเอียด ดีมากครับ
ขอบคุณมากๆครับ
ถามหน่อยครับ
ถามมาครับ