سلام روزتون بخیر .
دوستان بنده قصد دارم سیستمی بنویسم ، که در اون آردوینو در هر 2 ثانیه به سروری که خودم طراحی کردم درخواست GET میفرسته و با توجه به پیام های احتمالی که روی سرور هست در مورد یک رله یا ال ای دی تصمیم گیری میکنه ( روشن یا خاموش میشه ) . سیستم به صورت عادی خیلی خوب کار میکنه و در 4-5 ساعت ، خیلی خوب پیش میره . اما بعد از تقریبا یک روز که سیستم روشن هست ، دیگه درخواست GET به سرور ارسال نمیشه . در واقع با بررسی LOG سرورم دیدم که اصلا هیچ درخواست GET ــی بهش نمیرسه که بخواد پاسخ بده .
سیستم سخت افزاریم از یه برد آردوینو اونو و یه ESP-1 + رله تشکیل شده . که البته بگم از هیچ مقاومت و خازنی استفاده نکردم بین این اتصالات ... نمیدونم چقدر تاثیر داره چون اطلاعات خودم در مورد سخت افزار تکمیل نیست و فارغ التحصیل نرم افزار هستم .
کد های سیستم رو اینجا ببینید :
متخصصین عزیز ، چندتا سوال ؛
1- به نظرتون چرا سیستم بعد از یک روز هنگ میکنه ؟ آردوینو اونو داره کم میاره یا ESP8266 ؟
2- به نظرتون راه حل جایگزین چیه ؟ مشکل نرم افزاری هست ؟ کجای نرم افزار به نظرتون ایراد داره ؟
3- اگر سخت افزاری هست ، چه ماژولی رو پیشنهاد میکنید که جایگزین ESP یا حتی خود آردوینو بشه ؟
4- من این پروژه رو برای کار صنعتی میخوام .درواقع برای هوشمند سازی منازل هست و قرار هست سیستم هر روز روشن باشه و انتظار دارم حداقل 1-2 سال بتونه با این شرایط روشن بمونه و کار کنه ! آیا به نظرتون امکان پذیر هست ؟ یا اگر امکان پذیر نیست ، چه سخت افزاری رو پیشنهاد میکنید که کشش این زمان رو داشته باشه ؟
دوستان بنده قصد دارم سیستمی بنویسم ، که در اون آردوینو در هر 2 ثانیه به سروری که خودم طراحی کردم درخواست GET میفرسته و با توجه به پیام های احتمالی که روی سرور هست در مورد یک رله یا ال ای دی تصمیم گیری میکنه ( روشن یا خاموش میشه ) . سیستم به صورت عادی خیلی خوب کار میکنه و در 4-5 ساعت ، خیلی خوب پیش میره . اما بعد از تقریبا یک روز که سیستم روشن هست ، دیگه درخواست GET به سرور ارسال نمیشه . در واقع با بررسی LOG سرورم دیدم که اصلا هیچ درخواست GET ــی بهش نمیرسه که بخواد پاسخ بده .
سیستم سخت افزاریم از یه برد آردوینو اونو و یه ESP-1 + رله تشکیل شده . که البته بگم از هیچ مقاومت و خازنی استفاده نکردم بین این اتصالات ... نمیدونم چقدر تاثیر داره چون اطلاعات خودم در مورد سخت افزار تکمیل نیست و فارغ التحصیل نرم افزار هستم .
کد های سیستم رو اینجا ببینید :
کد:
#include <ArduinoJson.h> #include <WiFiEsp.h> #include <WiFiEspClient.h> #include <SoftwareSerial.h> SoftwareSerial Serial1(10,11); char ssid[] = "AZaz"; // your network SSID (name) char pass[] = "Az8833394"; // your network password int status = WL_IDLE_STATUS; // the Wifi radio's status int Relay = 13; char server[] = "azimi.ir"; unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds const unsigned long postingInterval = 1000L; // delay between updates, in milliseconds WiFiEspClient client; void setup() { // put your setup code here, to run once: pinMode(Relay, OUTPUT); Serial.begin(115200); Serial1.begin(9600); WiFi.init(&Serial1); if (WiFi.status() == WL_NO_SHIELD) { Serial.println(F("WiFi shield not present")); // don't continue while (true); } while ( status != WL_CONNECTED) { Serial.print(F("Attempting to connect to WPA SSID: ")); Serial.println(ssid); // Connect to WPA/WPA2 network status = WiFi.begin(ssid, pass); } Serial.println(F("You're connected to the network")); // printWifiStatus(); } void loop() { while (client.available()) { char c = client.read(); char endOfHeaders[] = "\r\n\r\n"; if (!client.find(endOfHeaders)) { Serial.println(F("Invalid response")); return; } const size_t capacity = JSON_OBJECT_SIZE(3) + JSON_ARRAY_SIZE(2) + 80; DynamicJsonDocument doc(capacity); DeserializationError error = deserializeJson(doc, client); if (error) { Serial.print(F("deserializeJson() failed: ")); Serial.println(error.c_str()); return; } int count = doc["counts"]; if(count == 1){ int relay = doc["message"]; int cmd = doc["val"]; digitalWrite(relay , cmd); } } if (millis() - lastConnectionTime > postingInterval) { httpRequest(); } } void httpRequest() { Serial.println(); // close any connection before send a new request // this will free the socket on the WiFi shield client.stop(); // if there's a successful connection if (client.connect(server, 80)) { client.println(F("GET /check/ HTTP/1.1")); client.println(F("Host: azimi.ir")); client.println("Connection: close"); client.println(); // note the time that the connection was made lastConnectionTime = millis(); } else { // if you couldn't make a connection Serial.println(F("Connection failed")); } }
1- به نظرتون چرا سیستم بعد از یک روز هنگ میکنه ؟ آردوینو اونو داره کم میاره یا ESP8266 ؟
2- به نظرتون راه حل جایگزین چیه ؟ مشکل نرم افزاری هست ؟ کجای نرم افزار به نظرتون ایراد داره ؟
3- اگر سخت افزاری هست ، چه ماژولی رو پیشنهاد میکنید که جایگزین ESP یا حتی خود آردوینو بشه ؟
4- من این پروژه رو برای کار صنعتی میخوام .درواقع برای هوشمند سازی منازل هست و قرار هست سیستم هر روز روشن باشه و انتظار دارم حداقل 1-2 سال بتونه با این شرایط روشن بمونه و کار کنه ! آیا به نظرتون امکان پذیر هست ؟ یا اگر امکان پذیر نیست ، چه سخت افزاری رو پیشنهاد میکنید که کشش این زمان رو داشته باشه ؟