
W tym poście zamierzamy zbudować przyjazny dla rolników obwód sterownika silnika pompy GSM, który mógłby
włączać i wyłączać system nawadniania zdalnie z dowolnego miejsca na świecie za pomocą SMS-a przez telefon komórkowy i wysyłać Ci wiadomość z potwierdzeniem. Pomysł został zgłoszony przez pana PG Ragavandira.
Projektowanie
Rolnictwo to jedna z największych gałęzi przemysłu w Indiach, która co roku dostarcza żywność ponad miliardowi ludzi. Produkcja dużej ilości pożywienia nigdy nie jest łatwym zadaniem. Jednym z czynników jest nawadnianie.
Większość pól uprawnych rolnika znajduje się z dala od ich miejsca zamieszkania, samo włączenie pompy wodnej kosztuje ich transport w ciągu roku.
Indie są znane z umiejętności informatycznych i programów kosmicznych i osiągnęły mniej niż koszt filmu „Gravity”, co oznacza wielki potencjał inżynierów i naukowców. Ale umiejętności nie są równomiernie rozłożone w różnych dziedzinach. Rolnictwo jest jedną z dziedzin, w których rozwój technologiczny jest powolny.
Ten oparty na SMS-ie sterownik silnika pompy GSM robi mały krok w kierunku rozwój rolnictwa to może nie jest rewolucyjny projekt, ale może przynieść radość rolnikom.
Przejdźmy do technicznej części projektu.
Projekt jest zaprojektowany z minimalną liczbą komponentów sprzętowych, aby początkujący mógł go z łatwością wykonać.
Układ składa się z zasilacza, który zasila całość.
Arduino jest mózgiem projektu, który podejmuje decyzje i modem GSM, który wysyła i odbiera SMS-y oraz komunikuje się z użytkownikiem i przekaźnikiem sterującym silnikiem.
Jak to działa

Uwaga: Proszę użyć rezystora co najmniej 10K na podstawie tranzystora BC548, 330 Ohm jest za niskie.
Plik obniżenie transformatora 230VAC na 12VAC i prostownik mostkowy konwertuje prąd zmienny na prąd stały, a prąd przepływa przez kondensator elektrolityczny, aby wygładzić zasilanie.
Stały Regulator napięcia 12V zasila arduino, modem GSM i przekaźnik. Plik Modem GSM jest podłączony do arduino na pinie # 0 i pinie # 1, które są odpowiednio RX i TX.
RX z GSM jest podłączony do TX z arduino, a TX z GSM jest podłączony do RX z arduino. Jeśli jesteś zdezorientowany, spójrz na poniższy schemat, błędne połączenie nie spowoduje wysłania ani odebrania wiadomości SMS.
ARDUINO TX ---------------------- Modem RX GSM
RX ---------------------- TX
Ustanowione jest również połączenie ziemia-ziemia między modemem arduino i GSM.
Spróbuj zdobyć męskie złącze zasilania jack dla GSM i arduino, jeśli nie tylko przylutuj przewody bezpośrednio z zasilacza do arduino i GSM, co może zwiększyć bałagan w projekcie.
Tranzystor steruje przekaźnikiem, a dioda chroni obwód przed skokami wysokiego napięcia podczas włączania / wyłączania przekaźnika.
Plik Wskaźnik ledowy pokazuje stan przekaźnika. Jeśli dioda LED świeci się, gdy przekaźnik jest włączony, a dioda nie świeci, przekaźnik jest dezaktywowany.
Włóż ważną kartę SIM do modemu GSM i spróbuj skorzystać z ofert SMS-ów, z których korzysta operator sieci, takich jak obniżanie stawek, co zmniejszy koszty SMS-ów.
Kod programu:
//----------------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'
') // 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'
') // 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'
') // 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'
') // 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------------//
UWAGA 1: Podczas kompilacji program wyświetla ostrzeżenie, które możesz zignorować. Program jest zweryfikowany i przetestowany.
UWAGA 2: Proszę usunąć połączenie TX i RX z arduino podczas wgrywania kodu.
UWAGA 3: Zastąp „xxxxxxxxxxxxx” numerem telefonu odbiorcy w 4 miejscach w programie.
UWAGA 4: Prosimy o zakup modemu GSM bez przycisku zasilania w module, w przypadku awarii zasilania nie włączy się on do sieci komórkowej, chyba że ręcznie wciśniesz przycisk, więc unikaj tego typu modemów GSM. Modem GSM bez przycisk zasilania połączy się z siecią komórkową bezpośrednio po utrzymaniu zasilania.
Autorski prototyp obwodu sterownika silnika pompy GSM:

Jak korzystać z powyższej konfiguracji:
• Wyślij / włącz silnik / SMS z telefonu komórkowego, aby aktywować przekaźnik.
• Wyślij / wyłącz silnik / SMS, aby wyłączyć przekaźnik.
• Wyślij / test / SMS do testowania odpowiedzi z obwodu.
Upewnij się, że zaczynasz polecenie od „/” i kończysz na „/”, w przeciwnym razie nie zostanie ono zaakceptowane jako prawidłowe żądanie.
• / motor on / włączy przekaźnik i powróci z potwierdzeniem SMS „Motor Activated”.
• / silnik wyłączony / wyłączy przekaźnik i powróci z potwierdzeniem SMS „Silnik wyłączony”.
• Jeśli wyślesz / przetestujesz / otrzymasz wiadomość SMS z potwierdzeniem „System działa poprawnie”.
• Powyższy komunikat oznacza, że konfiguracja działa poprawnie.
• Jeśli potwierdzenie nie zostanie zwrócone, możesz założyć, że żadne działanie nie jest poprzedzone przez silnik i możesz rozwiązać problemy.
• Po włączeniu konfiguracji poczekaj 1 minuta system wyśle wiadomość SMS z potwierdzeniem „System jest gotowy do przyjmowania poleceń”. po otrzymaniu tego SMS-a Twój projekt jest gotowy do wyświetlenia.
Powyższe polecenia są niezawodne i nigdy nie uruchamiają silnika fałszywie, konfiguracja nie odpowie na żaden SMS inny niż powyższe polecenia.
Udoskonalenie powyższej koncepcji
Powyższy obwód aplikacji pompy GSM przyciągnął wielu czytelników i otrzymaliśmy mnóstwo zapytań i sugestii. Jeden z zapalonych czytelników tej witryny, pan Gandhi, zasugerował dobre ulepszenie wcześniejszego projektu.
Potwierdzenie SMS, gdy silnik jest rzeczywiście WŁĄCZONY
Ulepszenie polega na potwierdzaniu cofnięcia, w którym użytkownik otrzyma odpowiedź SMS na swój telefon komórkowy z GSM układ sterownika pompy gdy użytkownik wyśle prawidłowy komentarz SMS.
Istniejący projekt wysyła wiadomość SMS z potwierdzeniem do użytkownika niezależnie od aktualnego stanu przekaźnika, tj. WŁ. / WYŁ.
Nowa zmiana konstrukcyjna zaproponowana przez pana Gandhiego sprawdza stan przekaźnika, czy przekaźnik jest fizycznie przełączany w swój stan, czy nie.
Zmiana jak na tę nową wodę GSM projekt sterownika pompy można bezproblemowo zaimplementować do poprzedniego projektu, dodając system sprzężenia zwrotnego, jak pokazano na schemacie, i przesyłając nowy kod.
Schemat obwodu:

Kiedy wysyłamy polecenie SMS „/ MOTOR ON /”, pin # 9 przechodzi w stan wysoki i włącza przekaźnik. Jeśli przekaźnik połączy styk wspólny i zwierny, pompa uruchomi się, a także włączy transformator, który da +5 na wyjściu.
Sygnał + 5V jest podawany na pin # 7, który potwierdzi i powróci z potwierdzeniem „Motor włączony”.
Kiedy wyślemy „/ MOTOR OFF /” pin # 9 zmieni stan na LOW i przekaźnik rozłączy piny wspólne i N / O, spowoduje to wyłączenie pompy i podłączonego transformatora. Wyjście na pinie nr 7 przechodzi w stan LOW i powraca z potwierdzeniem „Silnik wyłączony”.
Jeśli nie ma potwierdzenia SMS jest odbierany na Twój telefon komórkowy , możemy potwierdzić, że nie podjęto żadnych działań i pompa jest w ostatnim żądanym stanie, możesz przejść do witryny i rozwiązać problem lub nie otrzymano potwierdzenia z powodu przerwy w zasilaniu.
Kod programu:
//----------------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'
') // 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'
') // 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'
') // 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'
') // 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------------//
Powyższa realizacja nie jest praktycznie przetestowana, ale autor jest w stu procentach pewien, że powyższy pomysł się sprawdzi. Jeśli czytelnicy znaleźli jakiekolwiek problemy z powyższym ulepszeniem, mogą wyrazić to poprzez sekcję komentarzy.
Lista części
1) Zmniejszenie napięcia transformatora 12-0V
2) Diody IN4007 x5
3) LM7812 x1
4) przekaźnik 12 V x1
5) Tranzystor BC548 x1
6) kondensator elektrolityczny 1000 uF x1
7) Moduł GSM: model SIM 800 lub SIM 900
8) rezystor 330 omów x2
9) LED CZERWONA / ZIELONA x1
10) Arduino Uno lub Arduino nano lub Arduino Mega
11) wtyk męski DC x2
Klip wideo:
Integracja z silnikami 3-fazowymi
Otrzymałem wiele próśb o unowocześnienie stopnia przekaźnikowego do powyższej konstrukcji, tak aby stał się kompatybilny z obsługą silników trójfazowych za pomocą poleceń telefonu komórkowego GSM.
Dlatego postanowiłem zaprojektować wymagany obwód, który będzie ufnie być w stanie włączać i wyłączać dane silniki trójfazowe z typowym mechanizmem stycznikowym startu i stopu.
Poniższy rysunek pokazuje, jak skonfigurować projekt za pomocą obwodu IC 4017.

UWAGA: Wartości 100uF / 10K oraz 220uF i 47K mogą wymagać pewnych korekt, aby zapewnić odpowiednią wielkość opóźnienia dla odpowiednich tranzystorów i stopni przekaźnika.
Poprzedni: Obwód bezpieczeństwa wskaźnika pozycji intruza Dalej: Zdalnie sterowany obwód regulatora natężenia światła słonecznego