Arduino Polska Forum

Pełna wersja: Problem z projektem termometru pod SIM800L v2
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam wszystkich!


Biorę się za budowę projektu termometru cyfrowego, który ma być wykorzystany w serwerowni małej firmy i ma ostrzegać przed zwiększoną temperaturą (np. wskutek uszkodzenia klimatyzatora). Po przekroczeniu ustawionego progu temperatury powinien być wysłany SMS pod numer wskazany w programie ostrzegający, że temperatura jest za wysoka.
To tak w skrócie, jednak poza tym termometr będzie wyposażony w LCD, tak aby można było w każdym momencie po wejściu do serwerowni odczytać aktualną temperaturę oraz w buzzer, który dodatkowo będzie ostrzegał osoby w pobliżu o zwiększonej temperaturze.
Moduł GSM, który używam do projektu to SIM800L v2 EVB (logika działająca na napięciu 5V).

Problem pojawił się z wysyłką SMSów. Układ nie zawsze wysyła smsy ostrzegające, nie mam już pomysłów czego to może być przyczyna. Po prostu czasem wszystko działa i za każdym razem po przekroczeniu danej temp. SMS zostaje wysłany, a już po kolejnym uruchomieniu płytki żadne smsy nie dochodzą.. Program nie jest idealny, na pewno mógłby być napisany o wiele lepiej, jednak myślę, że problem nie leży po stronie programu - ta sama sytuacja dzieje się na innym przykładowym programie, który w pętli powinien wysyłać bez przerwy testowego smsa.

Trochę dodatkowych informacji na temat samego projektu:
Płytka: klon Uno (próbowałem z 3 różnymi, na każdej jest problem)
Zasilanie arduino: 12V DC 0,5A, próbowałem również 5V2A oraz z USB podłączonego pod zasilacz warsztatowy (przerobiony ATX).
Zasilanie modułu GSM: 5V z arduino, próbowałem również zasilić sam moduł z zasilacza ATX oraz zasilaczem 5V 1200mA.
Zasilanie LCD: 5V z arduino.
Termometr: DS18B20
LCD HD44780 podłączony z wykorzystaniem 74HC595.

W każdej możliwej kombinacji zasilania, manipulowania kodem jest ten sam efekt - raz wysyła smsy normalnie, a raz wcale.


Zrobiłem schemat w fritzing, jednak jest on trochę mało czytelny, nie wiem jak mógłbym go poprawić - jest to mój pierwszy schemat w tym programie.
Jeśli ciężko będzie cokolwiek z niego odczytać - proszę o jakieś wskazówki co mogę zmienić.
https://i.imgur.com/q8TEMI5.png


Proszę o pomoc, ponieważ sam nie mam już pomysłów co tutaj może być problemem. Najbardziej prawdopodobne wydaje mi się zasilanie, jednak nie wiem już jak jeszcze mogę to sprawdzić.

Poniżej przykładowy kod, na którym występuje problem - program wgrany na układ, którego schemat załączam.


Kod:
#include <SoftwareSerial.h>
//piny na których jest podłączona komunikacja z modułem GSM
SoftwareSerial gsm800(8,7);

void setup() {
Serial.begin(9600);

while(!Serial);
gsm800.begin(9600);
delay(100);
gsm800.write("AT+CMGF=1\r\n");
delay(100);
gsm800.write("AT+CMGS=\"+48xxxxxxxxx\"\r\n");
delay(1000);
//treść wiadomości podczas startu systemu, ma na celu zweryfikowanie czy całość działa poprawnie
gsm800.write("start systemu");
delay(1000);
gsm800.write((char)26);
delay(1000);
}




void loop() {

gsm800.write("AT+CMGF=1\r\n");
delay(1000);
gsm800.write("AT+CMGS=\"+48xxxxxxxxx\"\r\n");
delay(1000);
gsm800.write("test");
delay(1000);
gsm800.write((char)26);
delay(1000);
}


[attachment=455]