/*
AT Firmware simulation example
Use the serial monitor to interface with the AT firmware. For instance, to scan for WiFi:
AT+CWMODE=1
AT+CWLAP
Connect to WiFi:
AT+CWJAP="Wokwi-GUEST",
Show the current IP address:
AT+CIFSR
Show firmware version
AT+GMR
To show list list of available commands:
AT+CMD?
*/
#include <WiFi.h>
#include <HX711.h>
#include <LiquidCrystal.h>
#include <ThingSpeak.h>
#include <SoftwareSerial.h>
#define RX 12
#define TX 13
SoftwareSerial esp8266(RX,TX);
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber =2447206 ;
const char* myApiKey = "S0ARKZEQQRKA25VC";
const char* server = "api.thingspeak.com";
String field = "field1";
String PORT = "80";
const int HX711_DOUT_PIN = 2; // دبوس البيانات من HX711
const int HX711_CLK_PIN = 3;
int rs = 6, en = 5, d4 = 8, d5 = 9, d6 = 10, d7 = 11;
HX711 scale;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
WiFiClient client;
int mins = 0;
int seconds = 0;
bool timer_running = false;
unsigned long timer_start_time = 0;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
scale.begin(HX711_DOUT_PIN, HX711_CLK_PIN);
esp8266.begin(115200);
ThingSpeak.begin(client);
}
void loop() {
lcd.setCursor(4, 0);
lcd.print("Bedsentry");
// قراءة قيمة الوزن بالجرامات
float value_weight = scale.get_units() * 1000;
ThingSpeak.writeField(myChannelNumber, 1, value_weight, myApiKey);
// إرسال البيانات إلى ThingSpeak
if (value_weight >= 1) {
// إذا كان هناك وزن، بدء التايمر
if (!timer_running) {
timer_start_time = millis();
timer_running = true;
} else {
timer_start_time = millis();
}
// عرض الوقت على الشاشة LCD
lcd.setCursor(6, 1);
if (mins < 10) {
lcd.print("0");
}
lcd.print(mins);
lcd.print(":");
if (seconds < 10) {
lcd.print("0");
}
lcd.print(seconds);
// زيادة عداد الثواني والدقائق
if (seconds > 59) {
mins++;
seconds = 0;
}
if (mins > 59) {
mins = 0;
}
delay(1000);
lcd.clear();
seconds++;
} else {
// إيقاف التايمر إذا لم يكن هناك وزن
if (timer_running && (millis() - timer_start_time >= 5000)) {
mins = 0;
seconds = 0;
lcd.setCursor(6, 1);
lcd.print("00:00");
timer_running = false;
}
}
// إرسال البيانات إلى ThingSpeak
}