سلام. مهندس دمیرچیهمانطور فرمودید یک سوال جدید برای مشکلم باز کردم.
از وسط تقسیم مقاومتی یک سیم به پایه ۵ آردینو وصل کردم(ولتاژ سیم متصل شده حدود ۴ ولت است) که هر وقت برق قطع میشود با پیامک اعلام کند و هر وقتم وصل میشود اعلام کند اما متاسفانه درست عمل نمیکند و بعد از برق قطع مدام ویام قطع و وصل میدهد و وقتی ام برق دوباره وصل و قطع میشود تشخیص نمیدهد در خالی که همین دستورات برای رله درست عمل میکند و چراغ را خاموشمیکنم پیام میدهد خاموششد و روشن میکنم پیام میده روسن شد، لطفا راهنمایی بفرمایید چطور این مشکل را حل کنم، برنامه را هم به پیوست ارسال کردم:
#include <SoftwareSerial.h>
SoftwareSerial gsmSerial(7, 8);
char incomingByte;
String inputString;
int batt = 5;
#define batt 5
bool batts,
lastbatt = 0;
#define rel1 6
bool rels1, lastrel1 = 0;
bool relc1 = 0;
String numbers[5] = {"+98*********", "+98**********"};
String ersal[5] = {"AT+CMGS=\"+98*********\"", "AT+CMGS=\"+98*********\""};
void setup()
{
pinMode(rel1, OUTPUT);
pinMode(batt, INPUT_PULLUP);
digitalWrite(batt, LOW);
Serial.begin(9600);
gsmSerial.begin(9600);
delay(5000);
while (!gsmSerial.available())
{
gsmSerial.println("AT");
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
gsmSerial.println("AT+CMGF=1");
delay(1000);
gsmSerial.println("AT+CNMI=1,2,0,0,0");
delay(1000);
gsmSerial.println("AT+CMGL=\"REC UNREAD\"");
delay(25000);
gsmSerial.println("AT+CSMP=17,167,0,0");
delay(500);
}
void loop()
{
if (gsmSerial.available())
{
inputString = "";
delay(1000);
while (gsmSerial.available())
{
incomingByte = gsmSerial.read();
inputString += incomingByte;
}
delay(100);
// inputString.replace("\n","");
Serial.print("input : ");
Serial.print(inputString);
Serial.println(" end");
inputString.toUpperCase();
Serial.println("input up : " + inputString);
if (inputString.indexOf("ON1") > 0)
{
digitalWrite(rel1, HIGH);
}
if (inputString.indexOf("OFF1") > 0)
{
digitalWrite(rel1, LOW);
}
}
rels1 = digitalRead(rel1);
if (lastrel1 != rels1)
{
if (rels1 == HIGH)
{
lastrel1 = rels1;
for (byte i = 0; i < 2; i++)
{
gsmSerial.println("AT+CMGF=1");
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
}
gsmSerial.println(ersal[i]);
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
gsmSerial.print("LUMP PAZIRAEI ROSHAN SHOD");
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
}
gsmSerial.write(26);
}
delay(5000);
}
}
}
rels1 = digitalRead(rel1);
if (lastrel1 != rels1)
{
if (rels1 == LOW)
{
lastrel1 = rels1;
for (byte i = 0; i < 2; i++)
{
gsmSerial.println("AT+CMGF=1");
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
}
gsmSerial.println(ersal[0]);
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
gsmSerial.print(" LUMP PAZIRAEI KHAMOSH SHOD");
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
}
gsmSerial.write(26);
}
delay(5000);
}
}
}
// lkkkk
batts = digitalRead(batt);
if (lastbatt != batts)
{
if (batts == HIGH)
{
lastbatt = batts;
for (byte i = 0; i < 2; i++)
{
gsmSerial.println("AT+CMGF=1");
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
}
gsmSerial.println(ersal[i]);
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
gsmSerial.print("battery vasl shod");
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
}
gsmSerial.write(26);
}
delay(5000);
}
}
}
batts = digitalRead(batt);
if (lastbatt != batts)
{
if (batts == LOW)
{
lastbatt = batts;
for (byte i = 0; i < 2; i++)
{
gsmSerial.println("AT+CMGF=1");
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
}
gsmSerial.println(ersal[0]);
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
gsmSerial.print("batery ghat shod");
delay(500);
while (Serial.available())
{
gsmSerial.write(Serial.read());
}
while (gsmSerial.available())
{
Serial.write(gsmSerial.read());
}
gsmSerial.write(26);
}
delay(5000);
}
}
}
}
بیشتر بخش های برنامه را هم با کمک گفتگوهای داخل انجمن و دوستانم نوشتم و درست کار میکنه و فقط این باطری عملکرد درستی نداره
ویرایش اول:
با یک تقسیم مقاومتی ۱۲ ولت رو کردم ۴ولت . وصل کردم به پایه ۵ آردینو و پایه ۵را هم با یک مقاومت وصل کردم به gnd آردینو که درحالت عادی صفر باشه، اما همانطور که فرمودید با اینکار ولتاژ ۴ولت بهم میخوره، اما به جای تقسیم مقاومتی یک کاهنده میذارم و ولتاژ ۱۲ ولت رو میکنم ۴ ولت و خروجی مثبتش رو به پایه ۵ آردینو وصل میکنم درسته اما نمیدانم در بلند مدت برای آردینو مشکل ایجاد مینه یا نه و آیا ممکنه باعث سوختن آردینو بشه؟
راهی هست که همین تقسیم مقاوتی و با وجو مقاومت پول دان اینکار رو انجام بدم که کاهنده استفاده نکنم؟
ببخشید بیرون هستم امکان کشیدن نداشتم، چون یکی از بچه های الکترونیک میخواد از کافه ربات خرید کنه گفتم کمی صبر کنه اگر قطعه ای نیاز داشتم رو خریدش خرید منم اضافه کنه که به امید خدا بتونم تاقبل عید کارش رو تمام و تست کنم و برای عید که میریم ویلا مدار رو اونجا نصب کنم و به خاطر همین با اجازتون اتصالات را نوشتم و عکس نفرستادم
ویرایش دوم:
پایه ها به این صورت وصل شدن:
پایه ۳ سنسور دما dht11
پایه ۴ سنسور خشکی خاک
پایه ۵ از وسط تقسیم مقاومتی یا کاهنده برای تشخیص قطع برق
پایه ۶ و ۹ و ۱۰ و ۱۱ ماژول رله چهارتایی
پایه ۷ و ۸ به tx و rx ماژول sim800
Gnd آردینو با gnd ماژول sim800 وصل شدن
پایه ۵ هم به gnd با یک مقاومت ۱۰ کیلو اهمی وصل شده
تغذیه سنسورها و رله را هم از 5ولت و gnd آردینو گرفتم
ولتاژ آداپتور(ورودی) ۱۲ ولت هست که با دو تا کاهنده به ۵ و ۴.۲ ولت برای آردینو و sim800 تبدیل شده.