logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Neoway M590 + Arduino: SMS z czujnika temperatury nie działa poprawnie

max-pl 29 Sie 2017 22:26 2646 43
Najlepsze odpowiedzi

Jak poprawnie odebrać SMS z komendą „#tmp” w Arduino z modemem M590 i odesłać wynik temperatury z DS18B20?

Problem nie leżał w samym M590, tylko w obsłudze SMS i odczycie DS18B20: trzeba najpierw poprawnie odebrać wiadomość, a dopiero potem porównywać komendę, a do temperatury użyć DallasTemperature [#16673115][#16679696] Modem po SMS nie zwraca samego „#tmp”, tylko pełniejszy komunikat z nagłówkiem i danymi, więc w pętli trzeba czekać na odebranie znaków i dopiero wtedy je analizować, zamiast sprawdzać pojedynczy fragment od razu po `readString()` [#16673100][#16673115] Przy wysyłaniu SMS użyj `AT+CMGS`, poczekaj na znak `>` i zakończ Ctrl+Z; `CMGW` tylko zapisuje wiadomość w pamięci [#16672873][#16673014] W przypadku DS18B20 autorowi pomogło przejście na bibliotekę DallasTemperature, bo wcześniejszy kod dawał pierwszy poprawny pomiar, a kolejne odczyty powtarzały starą wartość [#16679626][#16679696]
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA
  • #1 16670662
    max-pl
    Poziom 9  
    Posty: 44
    Ocena: 2
    Witam
    Chcę aby arduino za pośrednictwem m590 wysłał odczyt z czujnika temp. sms,kiedy dostanie komende " #tmp ".Napisałem taki kod,ale po wysłaniu smsa nic się nie dzieje.W monitorze portu szeregowego wyświetla sie tylko po "modem test " a po chwili z 10 x "coś się dzieje ".Dopiero zaczynam z programowaniem i elektroniką więc proszę o wyrozumiałość i cierpliwość : >
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 16671080
    adam74m
    Poziom 13  
    Posty: 58
    Pomógł: 2
    Ocena: 3
    Witam.
    Napisz, jak zasilasz m590. Trzeba pamiętać, że modem pobiera krótkie impulsy prądu o wartości 2A i zasilanie musi dać radę.
  • #3 16671220
    max-pl
    Poziom 9  
    Posty: 44
    Ocena: 2
    Zasilacz 3A 12V to podłączone do przetwornicy,napięcie wyjściowe 3,9V.Przed podłączeniem do arduino modem sprawdzalem podpięty bezposrednio do PC przez konwerter.Wszystko działa,loguje się,nie restartuje się,działa stabilnie.Myslę ze to kwestia kodu,ponieważ modem cały czas jest zalogowany i chodzi ( jest sygnał jak dzwonie ).
  • #4 16672260
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 16672553
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #7 16672565
    max-pl
    Poziom 9  
    Posty: 44
    Ocena: 2
    Czujnik temperatury ds18b20.To "coś się dzieje " służyło mi tylko do diagnozowania kodu i usunąłem jako zbędne.Aktualnie modem dostaje komendy CNMI itp. Zawarte w kodzie i odpowiada na nie OK.Ale po wysłaniu sms z komendą dalej nic sie nie dzieje.
  • #8 16672621
    Konto nie istnieje
    Konto nie istnieje  
  • #9 16672756
    max-pl
    Poziom 9  
    Posty: 44
    Ocena: 2
    Przepraszam za chaotyczność,już tłumacze.Do modułu wysyłają się tylko komendy z setup czyli: At,At,CMGF,CNMI na które moduł odpowiada Ok ( po każdej z tych komend odpowiada ok).Po wysłaniu sms do modułu z treścią " #tmp" nic się nie dzieje ale moduł cały czas chodzi o gdy na niego zadzwonie to jest sygnał.To powtarzanie "coś się dzieje" mogło być kwestią podłączenia rx i tx,po zmianie kodu i zmianie pinów rx i tx ( wczesniej miałem podłączone na 0 i 1 w Arduino,teraz 2,3 ) problem znikł.
    Dziękuje za pomoc i jeśli są jeszcze jakieś niejasności to odpowiem.
  • REKLAMA
  • #10 16672770
    Konto nie istnieje
    Konto nie istnieje  
  • #11 16672873
    adam74m
    Poziom 13  
    Posty: 58
    Pomógł: 2
    Ocena: 3
    Na moje oko, to kolega R_MIK już napisał o przyczynie. W programie zamień CMGW na CMGS.
  • #12 16672938
    max-pl
    Poziom 9  
    Posty: 44
    Ocena: 2
    Zamieniłem CMGW na CMGS oraz "#tmp" na "#" i dalej nic.Dla zdiagnozowania wpisałem " Serial.println ("moduł działa..");" po " if (cellSerial.available() > 0) "w void loop.Powinno chyba wyrzucić w monitorze " moduła działa..." kiedy dzwonie na moduł a nic się nie dzieje mimo że sygnał jest.
  • #13 16672968
    Konto nie istnieje
    Konto nie istnieje  
  • #14 16673003
    max-pl
    Poziom 9  
    Posty: 44
    Ocena: 2
    Kod zaktualizowany.Gdy sprawdzałem moduł to wyrzucał komunikat RING gdy dzwoniłem.Pisząc że jest sygnał chodzi mi że gdy dzwonie na modem to mam sygnał w słuchawce czyli wynika z tego że moduł jest zalogowany do sieci.
    Co do komunikatu po CMGS.Jeśli chodzi o kod to CMGS nie jest wysyłany do modułu ( tak jak pisałem wyżej w monitorze pojawiają się tylko komendy z void setup.Czyli At,At,CMGF,CNMI na które moduł odpowiada OK.Tylko te komendy pojawiają się w monitorze).Jeśli wpisywałem CMGS podczas sprawdzania modułu to moduł wyrzucał " > ".
  • #15 16673014
    adam74m
    Poziom 13  
    Posty: 58
    Pomógł: 2
    Ocena: 3
    Po cmgs pojawia się '>', co jest znakiem zachęty. Wpisuje się wtedy treść i potwierdza ctrl+z.
  • #17 16673022
    Konto nie istnieje
    Konto nie istnieje  
  • #18 16673058
    max-pl
    Poziom 9  
    Posty: 44
    Ocena: 2
    Ok,przepraszam za bałagan,dopiero zaczynam z programowaniem i elektroniką,proszę o wyrozumiałość.
    R-MIK napisał:
    Pytam więc, co miał się dziac po tym gdy zatelefonujesz na modem (dzwoni to się w kościele).

    Wydaje mi się że gdy telefonuje powinno pojawiac się w monitorze " moduł działa..." zgodnie z komendą:
    max-pl napisał:
    if (cellSerial.available() > 0)
    {
    Serial.println ("moduł działa..");
    umieszczoną na początku void loop.
  • #19 16673100
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #21 16673115
    Konto nie istnieje
    Konto nie istnieje  
  • #23 16677848
    max-pl
    Poziom 9  
    Posty: 44
    Ocena: 2
    Na podstawie przykładu kodu z sieci i jego modyfikacji stworzyłem kod który działa.Mam jedynie jeden problem.Po wysłaniu "tmp" dostaje sms zwrotny z temperaturą lecz ta temperatura nie zmienia się,jeśli nagrzeje w ręku czujnik i ponownie wyśle " tmp" to dostaje sms z temperaturą odczytaną wcześniej.Sam czujnik na pewno działa,testowałem go na prostym programie do odczytu temperatury w monitorze.Wszystko jest ok,pokazuje temperaturę która prawidłowo się zmienia.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #24 16677954
    Konto nie istnieje
    Konto nie istnieje  
  • #26 16678354
    Konto nie istnieje
    Konto nie istnieje  
  • #28 16678852
    Konto nie istnieje
    Konto nie istnieje  
  • #29 16679070
    max-pl
    Poziom 9  
    Posty: 44
    Ocena: 2
    Dodałem "odczytana temp.. " w powyższym fragmencie i jest on cały czas poprawnie wykonywany.Jedynie odczytana temperatura jest nie halo.Pierwszy odczyt jest ok ale następne odczyty ( po wysłaniu 2 sms-a i kolejnych ) są powtórzeniem pierwszego odczytu.Nie moge znaleźć co tu jest nie tak.Wygląda jakby czujnik po pierwszym pomiarze się zawieszał i podawał tylko temperaturę odczytaną za pierwszym razem.
  • #30 16679432
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

✨ Użytkownik starał się skonfigurować moduł Neoway M590 z Arduino do wysyłania SMS z odczytem temperatury z czujnika DS18B20 po otrzymaniu komendy "#tmp". Problemy z kodem obejmowały brak odpowiedzi na SMS oraz nieprawidłowe odczyty temperatury. Użytkownicy forum sugerowali różne poprawki, w tym zamianę komendy "#tmp" na prostszy znak oraz poprawne zarządzanie odczytem temperatury. Ostatecznie, po zastosowaniu biblioteki DallasTemperature, problem z odczytem temperatury został rozwiązany, jednak użytkownik zauważył, że odczyty temperatury nie zmieniały się po pierwszym pomiarze. Dyskusja obejmowała również kwestie zasilania modułu oraz oszczędności energii.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA