หนูทำโปรเจคสมาร์ทฟาร์มค่ะ ถูๆไถๆมาหลายอย่างจนตอนนี้โปรแกรมใช้ได้แล้ว แต่พอลองใช้งานจริงแบบ 24 ชม. อยู่ๆ Blynk มันก็ขึ้นสถานะ offline ค่ะ พอไปดูที่เครื่องก็พบว่าเครื่องยังทำงานอยู่เลย ไม่ทราบว่าต้องแก้ไขยังไงคะ เพราะต้องเก็บค่าอุณหภูมิกับความชื้นด้วยค่ะ ไม่ได้เขียนโปรแกรมเก็บค่าแบบออฟไลน์ไว้
อันนี้โค้ดทั้งหมดที่ใช้ค่ะ
#define BLYNK_PRINT Serial
//#include <SPI.h>
//#include <SD.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <time.h>
#include <Wire.h>
#include "Wire.h"
#include "SHT2x.h"
uint32_t start;
uint32_t stop;
SHT2x sht;
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long time_1 = 0;
void print_time(unsigned long time_millis);
const TickType_t xDelay2000ms = pdMS_TO_TICKS(2000);
long previousMillis = 0; // will store last time LED was updated
TaskHandle_t Task1 = NULL;
// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 500;
// สร้างตัวแปรเก็บค่าเป็น integer เพื่อเอาไปใช้ใน Task
int passValue = 0;
//File myFile;
const int chipSelect = 5;
char auth[] = "XuxExCyNwsxxNo-wcl1KfsZtWEzwcwiC";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "SmartTSEFarm";
char pass[] = "db71c901";
int sec;
int Sw1;
int Sw2;
int Sw3;
int Sw4;
int timezone = 7 * 3600; //ตั้งค่า TimeZone ตามเวลาประเทศไทย
int dst = 0; //กำหนดค่า Date Swing Time
int Mode = 0;
int h ;
int t;
void setup() {
Serial.begin(9600);
pinMode(25, OUTPUT);
pinMode(33, OUTPUT);
pinMode(16, OUTPUT);
digitalWrite(25 , HIGH);//ดูดอากาศเข้า
digitalWrite(33 , HIGH);//ดูดอากาศออก
digitalWrite(16 , HIGH);//ปั้มน้ำ
Serial.print("Initializing SD card...");
Serial.println(__FILE__);
Serial.print("SHT2x_LIB_VERSION: \t");
Serial.println(SHT2x_LIB_VERSION);
sht.begin();
uint8_t stat = sht.getStatus();
Serial.print(stat, HEX);
Serial.println();
Blynk.begin(auth, ssid, pass, "prakitblog.com", 8181);
WiFi.begin(ssid, pass);
Blynk.connect(); //เชื่อมต่อไปยัง Blynk
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.printf("\nWiFi connected\nIP : ");
Serial.println(WiFi.localIP());
configTime(timezone, dst, "pool.ntp.org", "time.nist.gov"); //ดึงเวลาจาก Server
Serial.println("\nWaiting for time");
while (!time(nullptr)) {
Serial.print(".");
delay(1000);
}
Mode = 0;
Sw1 = 1;
Serial.println("");
}
int hh;
int tt;
int M = 0;
void loop() {
Blynk.run();
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
start = micros();
sht.read();
stop = micros();
hh = sht.getHumidity(); // Read Humidity
tt = sht.getTemperature();
if (tt < 40 && tt > 20)
{
Blynk.virtualWrite(V0, sht.getTemperature());
Blynk.virtualWrite(V7, sht.getTemperature());
t = tt;
}
if (hh < 90 && hh > 20 )
{
Blynk.virtualWrite(V1, sht.getHumidity());
Blynk.virtualWrite(V8, sht.getHumidity());
h = hh;
}
}
if (Sw1 == 1)
{
if (h < 70 )
{
digitalWrite(16 , LOW);//ปั้มน้ำ
}
else
{
if (h > 80)
{
digitalWrite(16 , HIGH);//ปั้มน้ำ
}
}
if (t > 28)
{
digitalWrite(25 , LOW);
}
else
{
if (t < 27 )////////////////////////////////////
{
digitalWrite(25 , HIGH);//ดูดอากาศเข้า
}
else
{
digitalWrite(25 , LOW);//ดูดอากาศเข้า
}///////////////////////////////////////
//digitalWrite(25 , HIGH);
}
}
else
{
if (Sw2 == 0)
{
digitalWrite(33 , HIGH);//ดูดอากาศออก
}
else
{
digitalWrite(33 , LOW);//ดูดอากาศออก
}
if (Sw3 == 0)
{
digitalWrite(25 , HIGH);//ดูดอากาศเข้า
}
else
{
digitalWrite(25 , LOW);//ดูดอากาศเข้า
}
if (Sw4 == 0)
{
digitalWrite(16 , HIGH);//ปั้มน้ำ
}
else
{
digitalWrite(16 , LOW);//ปั้มน้ำ
}
}
}
BLYNK_WRITE(V2)
{
Sw1 = param.asInt();
Serial.print("Sw1:");
Serial.println(Sw1);
}
BLYNK_WRITE(V3)
{
Sw2 = param.asInt();
Serial.print("Sw2:");
Serial.println(Sw2);
}
BLYNK_WRITE(V4)
{
Sw3 = param.asInt();
Serial.print("Sw3:");
Serial.println(Sw3);
}
BLYNK_WRITE(V5)
{
Sw4 = param.asInt();
Serial.print("Sw4:");
Serial.println(Sw4);
}
รูปภาพที่อยู่ๆมันก็ออฟไลน์