Контроллер двигателя насоса GSM с использованием Arduino
В этом посте мы собираемся построить фермерскую схему контроллера электродвигателя насоса для фермеров, которая могла бы включать и выключать оросительную систему удаленно из любой точки мира с помощью SMS-сообщения сотового телефона и возвращает сообщение с подтверждением. Идею просил г-н П. Г. Рагавандир. Давайте погрузиться в техническую часть проекта. Проект разработан с минимальными аппаратными компонентами, так что новичок может легко справиться с этим.
Схема состоит из источника питания, который питает всю установку.
Arduino - это мозг проекта, который принимает решения и GSM-модем, который отправляет и получает текстовые SMS и связывается с пользователем и реле, которое управляет двигателем.
Трансформатор отключается от 230 В переменного тока до 12 В переменного тока и мостового выпрямителя, преобразует переменный ток в постоянный ток, а ток проходит через электролитический конденсатор, чтобы сгладить источник питания. Постоянный стабилизатор напряжения 12 В обеспечивает питание для arduino, GSM-модема и реле. GSM-модем подключен к arduino на выводе № 0 и контакте №1, которые являются RX и TX соответственно. RX GSM подключен к TX arduino и TX GSM подключен к RX arduino. Если вы в замешательстве, просто посмотрите на приведенную ниже диаграмму, неправильное соединение не отправит или не получит SMS.
ARDUINO TX ---------------------- RX GSM-модем
RX ---------------------- TX
Соединение между землей и землей также устанавливается между модемом arduino и GSM.
Транзистор управляет реле, и диод защищает цепь от высоковольтных импульсов при включении / выключении реле.
Светодиодный индикатор показывает состояние реле. Если светодиод горит реле, и если светодиод выключен, реле деактивируется. Вставьте действительную SIM-карту на GSM-модем и попытайтесь воспользоваться преимуществами, предлагаемыми сетевым провайдером для SMS, такими как резаки скорости, что уменьшит расходы на SMS.
Код программы:
//----------------Program developed by R.Girish------------//
int LED = 8;
int motor = 9;
int temp=0;
int i=0;
char str[15];
void setup()
{
Serial.begin(9600);
pinMode(motor,OUTPUT);
pinMode(LED,OUTPUT);
digitalWrite(motor,LOW);
digitalWrite(LED,LOW);
delay(20000);
delay(20000);
delay(20000);
Serial.println("AT+CNMI=2,2,0,0,0");
delay(1000);
Serial.println("AT+CMGF=1");
delay(500);
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.println("System is ready to receive commands.");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
}
void loop()
{
if(temp==1)
{
check();
temp=0;
i=0;
delay(1000);
}
}
void serialEvent()
{
while(Serial.available())
{
if(Serial.find("/"))
{
delay(1000);
while (Serial.available())
{
char inChar=Serial.read();
str[i++]=inChar;
if(inChar=='/')
{
temp=1;
return;
}
}
}
}
}
void check()
{
if(!(strncmp(str,"motor on",8)))
{
digitalWrite(motor,HIGH);
digitalWrite(LED,HIGH);
delay(1000);
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.println("Motor Activated");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
}
else if(!(strncmp(str,"motor off",9)))
{
digitalWrite(motor,LOW);
digitalWrite(LED,LOW);
delay(1000);
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.println("Motor deactivated");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
}
else if(!(strncmp(str,"test",4)))
{
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.println("The System is Working Fine.");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
}
}
//----------------Program developed by R.Girish------------//
ПРИМЕЧАНИЕ 1. При компиляции программы отображается предупреждение, которое вы можете игнорировать. Программа проверена и протестирована.
ПРИМЕЧАНИЕ 2. Удалите TX и RX-соединение с arduino при загрузке кода.
ПРИМЕЧАНИЕ 3. Замените «xxxxxxxxxxxxx» на номер телефона получателя в 4 местах в программе.
ПРИМЕЧАНИЕ 4: Пожалуйста, приобретите GSM-модем без кнопки питания в модуле; в случае сбоя питания он не запирается в мобильную сеть, если вы не нажмете кнопку вручную, поэтому избегайте использования таких модемов GSM. Модем GSM без кнопки питания будет защелкнуться в мобильной сети сразу после сохранения питания.
Как использовать приведенную выше настройку:
• Отправьте / включите двигатель / SMS с мобильного телефона, чтобы активировать реле.
• Отправка / отключение двигателя / SMS для деактивации реле.
• Отправить / проверить / SMS для проверки ответа от схемы.
Убедитесь, что вы запускаете команду с помощью «/» и заканчиваете на «/», иначе она не будет приниматься как действительный запрос.
• включение / включение двигателя / включение реле и возврат с подтверждением SMS «Motor Activated».
• / выключить двигатель / выключить реле и вернуться с подтверждением SMS «Деактивировано двигатель».
• Если вы отправляете / тестируете / он вернется с подтверждением SMS «Система работает нормально».
• Приведенное выше сообщение означает, что ваша настройка работает нормально.
• Если подтверждение подтверждения не возвращается, вы можете предположить, что на двигателе не должно быть никаких действий, и вы можете устранить проблемы.
• После включения питания ON, подождите 1 минуту, система отправит SMS-сообщение с подтверждением «Система готова принять команды». После получения этого SMS ваш проект готов к работе.
Вышеупомянутые команды являются доказательством дурака и никогда не запускают двигатель ложно, настройка не будет реагировать на какие-либо СМС, кроме указанных выше.
Совершенствование вышеуказанной концепции
Улучшение связано с возвратом подтверждения, когда пользователь получит ответ SMS в своем мобильном телефоне из системы контроллера насоса GSM , когда пользователь отправит действительный комментарий SMS. Существующий проект отправляет SMS-сообщение подтверждения пользователю независимо от фактического состояния реле, т.е. ON / OFF. Новое изменение дизайна, предложенное г-ном Ганди, проверяет состояние реле, физически ли оно переключено на его состояние или нет. Изменение в соответствии с этим новым дизайном контроллера водяного насоса GSM может быть реализовано в предыдущем дизайне без особых хлопот, добавив систему обратной связи, как показано на схеме и загрузите новый код.
Когда мы отправляем SMS-команду «/ MOTOR ON /», вывод № 9 идет высоко и активирует реле. Если реле соединяет общие и штырьки N / O, запускается насос, а также включается трансформатор, который даст +5 на выходе. Сигнал + 5 В подается на вывод №7, который будет подтверждать и возвращать с подтверждением «Мотор активирован».
Когда мы отправляем «/ MOTOR OFF /», контакт № 9 поворачивается на LOW, а реле отключает общий и N / O контакты, это отключит насос, а также подключенный трансформатор. Выход на выводе №7 идет LOW и возвращается с подтверждением «Motor deactivated». Если в вашем мобильном телефоне не получено подтверждающее SMS-сообщение , мы можем подтвердить, что никаких действий не было предпринято, и насос находится в последнем запрошенном состоянии, вы можете перейти на сайт и устранить неисправность или не получать подтверждение из-за отключения питания.
//----------------Program developed by R.Girish------------//
int motor = 8;
int LED = 9;
int temp=0;
int i=0;
int ack=7;
char str[15];
void setup()
{
Serial.begin(9600);
pinMode(ack,INPUT);
pinMode(motor,OUTPUT);
pinMode(LED,OUTPUT);
digitalWrite(motor,LOW);
digitalWrite(LED,LOW);
delay(20000);
delay(20000);
delay(20000);
Serial.println("AT+CNMI=2,2,0,0,0");
delay(1000);
Serial.println("AT+CMGF=1");
delay(500);
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.println("System is ready to receive commands.");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
}
void loop()
{
if(temp==1)
{
check();
temp=0;
i=0;
delay(1000);
}
}
void serialEvent()
{
while(Serial.available())
{
if(Serial.find("/"))
{
delay(1000);
while (Serial.available())
{
char inChar=Serial.read();
str[i++]=inChar;
if(inChar=='/')
{
temp=1;
return;
}
}
}
}
}
void check()
{
if(!(strncmp(str,"motor on",8)))
{
digitalWrite(motor,HIGH);
delay(100);
if(digitalRead(ack)==1)
{
digitalWrite(LED,HIGH);
delay(1000);
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.println("Motor Activated");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
}
}
else if(!(strncmp(str,"motor off",9)))
{
digitalWrite(motor,LOW);
delay(5000);
if(digitalRead(ack)==0)
{
digitalWrite(LED,LOW);
delay(1000);
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.println("Motor deactivated");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
}
}
else if(!(strncmp(str,"test",4)))
{
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.println("The System is Working Fine.");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
}
}
//----------------Program developed by R.Girish------------//
Список запчастей
1) Трансформатор понижается на 12-0 В
2) Диоды IN4007 x5
3) LM7812 x1
4) Реле 12V x1
5) Транзистор BC548 x1
6) Электролитический конденсатор 1000uF x1
7) Модуль GSM: SIM 800 или SIM 900
8) 330 Ом Резистор x2
9) LED RED / GREEN x1
10) Ардуино Уно или Ардуино нано или Ардуино Мега
11) Разъем постоянного тока x2
Интеграция с трехфазными двигателями
У меня было много запросов на модернизацию ступени реле для вышеуказанной конструкции, чтобы она стала совместимой для работы 3-фазных двигателей с использованием GSM-сотовых телефонов. Поэтому я решил разработать требуемую схему, которая, мы надеемся, сможет включить и выключить заданные 3-фазные двигатели, имеющие типичный механизм контактора пуска и останова. На следующем рисунке показано, как настроить дизайн с использованием схемы IC 4017.
ПРИМЕЧАНИЕ. Для значений 100uF / 10K и 220uF и 47K могут потребоваться некоторые регулировки для обеспечения правильного количества задержки для соответствующих транзисторов и ступеней реле.