ผมทำเครื่อง วัดค่าฝุ่น แสดงหน้าจอ lcd และสั่งให้พัดลมทำงานผ่าน relay โดยทั้งหมดนี้ใช้ blynk กำหนดการทำงานครับ ทำโครงงาน มัธยมครับ ผมเชื่อมต่อไม่ได้อะครับ
ขอบคุณครับ…NewDustBlynk.ino (1.5 KB)
#define BLYNK_PRINT Serial
#define relay D2
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <WiFiClient.h>
char auth[] = "mVzV1VLS9dcFqWZjXprAwxHFvHqn-z9Q";
char ssid[] = "Naiya_true_2.4G";
char pass[] = "0953581506";
bool switchStatus = 0; // 0 = manual,auto
int relayPlay = 0;
bool manualSwitch = 0;
BlynkTimer timer;
BLYNK_WRITE(V0)
{
switchStatus = param.asInt();
}
BLYNK_WRITE(V1)
{
relayPlay = param.asInt();
}
BLYNK_WRITE(V2)
{
manualSwitch = param.asInt();
}
BLYNK_WRITE(V3)
{
if(data){
lcd.begin();
lcd.setCursor(0,0);
lcd.print("dust: UG/M3");
lcd.setCursor(1,1);
lcd.println("2.5: ");
lcd.println(data.PM_UG_M3_2_5);
}
}
void manualAutoAction()
{
if(switchStatus)
{
if(digitalRead(D0) < relayPlay)
{
digitalWrite(relay,LOW);
}
else
{
digitalWrite(relay,HIGH);
}
}
else
{
if(manualSwitch)
{
digitalWrite(relay,LOW);
}
else
{
digitalWrite(relay,HIGH);
}
}
}
void setup() {
Serial.begin(115200);
Serial.println("กำลังเชื่อมต่อไปที่ Blynk Server");
pinMode(relay,OUTPUT);
digitalWrite(relay, HIGH);
WiFi.begin(ssid, pass);
Blynk.begin(auth, ssid, pass);
Blynk.connect();
timer.setInterval(1000L, manualAutoAction);
}
BLYNK_CONNECTED() {
Blynk.syncAll();
Serial.println("App Blynk ทำงาน!");
}
void loop() {
Blynk.run();
timer.run();
}
Remy_Martin
(Permpol Thanapunnamas)
2
ใช้ server ของใครครับ เชื่อมต่อแล้วใน Serial มันขึ้นว่าอะไรตัดมาดูหน่อย
Remy_Martin
(Permpol Thanapunnamas)
5
ขอดูใน serial หน่อยครับ ขณะที่มันต่อไม่ได้
มันไม่มีอะไรเกิดขึ้นเลยครับ
Remy_Martin
(Permpol Thanapunnamas)
7
ตรงหัวแอฟมันขึ้นว่าไงครับ token ถูกรึป่าว โค้ตดูแล้วไม่ผิดอะไรนะ
อันนี้เป็นโค้ดอันล่าสุดที่ผมทำไปครับ
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "WiFiClientSecureBearSSL.h"
#include <PMS.h>
#include <LiquidCrystal_I2C.h>
#include <WiFiManager.h>
#define BLYNK_PRINT Serial
#define relay D2
char auth[] = "OwMS16h2SMWcP86z4JD-0056eu_fUXaO";
char ssid[] = "Naiya_true_5G";
char pass[] = "0946458052";
PMS pms(Serial);
PMS::DATA data;
LiquidCrystal_I2C lcd(0x27, 16, 2);
int Reset_wifi = 16;
int RelayPlay = 0;
byte auto_relay = 0;
float dust_auto = 0;
BlynkTimer timer;
WidgetLED led1(V10);
WidgetLED led2(V11);
BLYNK_CONNECTED() {
Blynk.syncAll();
}
BLYNK_WRITE(V0) {
if (param.asInt() == 1 && auto_relay == 0) {
digitalWrite(relay, !digitalRead(relay));
if (digitalRead(relay) == LOW) {
led1.on();
led2.off();
}
else {
led1.off();
led2.on();
}
}
}
BLYNK_WRITE(V9){
auto_relay = param.asInt();
digitalWrite(relay, HIGH);
led1.on();
}
BLYNK_WRITE(V5){
dust_auto = param.asInt();
}
void setup() {
Serial.begin(9600);
lcd.begin();
lcd.display();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.println("Connecting...");
delay(3000);
lcd.clear();
// timer.setInterval(1000L, LCD);
pinMode(relay, OUTPUT);
digitalWrite(relay, HIGH);
Blynk.begin(auth,ssid,pass);
}
void loop() {
Blynk.run();
timer.run();
if (pms.read(data)){
Serial.print("PM 2.5 (ug/m3): ");
Serial.println(data.PM_AE_UG_2_5);
Serial.println();
lcd.setCursor(1,0);
lcd.print("Dust : (ug/m3)");
lcd.setCursor(0,1);
lcd.print("PM 2.5 : ");
lcd.print(data.PM_AE_UG_2_5);
}
Blynk.virtualWrite(V20, String(pms.read(data),1));
if (auto_relay == 1) {
if (pms.read(data) > dust_auto) {
digitalWrite(relay, LOW);
led1.off();
led2.on();
}
else {
digitalWrite(relay, HIGH);
led1.on();
led2.off();
}
}
pinMode(Reset_wifi,INPUT_PULLUP);
WiFiManager wifiManager;
if (digitalRead(Reset_wifi) == LOW){
Serial.println("Reset wifi");
wifiManager.resetSettings();
}
wifiManager.autoConnect("Particle Counter");
Blynk.config(auth);
Blynk.connect();
}
Remy_Martin
(Permpol Thanapunnamas)
10
ขอดูใน serial ด้วย เผื่อมัน error หรือ reset
โอเคครับ เดี๋ยวผมแคปให้ดูครับ
ผมอัพโหลดใส่บอร์ดแล้วครับยังไม่มีอะไรเกิดขึ้นเลยครับ ผมทำมาหลายวันแล้วครับ คือผมยังเป็นมือใหม่อะครับ ผมก็ไม่รู้ว่ามันเกิดอะไร ไม่มี error หรืออะไรเลยครับ
ผมต้องเปลี่ยนบอร์ดมั้ยครับ
Remy_Martin
(Permpol Thanapunnamas)
19
เปิดหน้านี้ค้างไว้แล้วกด ปุ่มรีเซตแล้วแคปมาดูใหม่ครับ