Advanced-Call-Controll-Relay-with-Arduino

Zapraszam do zapoznania się z moim projektem sterowania przekaźnikiem przy użyciu Arduino oraz modemu SIM800L.

Urządzenie powstało, ponieważ chciałem mieć możliwość otwierania bramy na osiedlu, bez konieczności używania pilota.

Idea była taka, żeby wyzwolić przekaźnik znajdujący się w mieszkaniu, który zwierając odpowiedni styk w domofonie, otworzy bramę.

Założenia:

  • urządzenie powinno obsługiwać tylko wskazane numery
  • numery nie powinny być hardkodowane w kodzie programu
  • urządzenie powinno móc pracować bez zasilacza
  • urządzenie powinno oszczędzać baterię
  • urządzenie powinno w pełni obsługiwać przychodzące wiadomości SMS
  • urządzenie powinno umożliwiać zdalne uruchomienie komend AT
  • urządzenie powinno umożliwiać zdalne wywołanie kodów USSD

Jak to działa?

Jest wskazane aby przy pierwszym użyciu, na karcie SIM nie znajdowały się kontakty. Wynika to z faktu, że numer telefonu kontaktu na pierwszej pozycji karty SIM, jest traktowany jako numer zarządzający. Tylko ten konkretny numer będzie mógł wykonywać operacje za pomocą komend SMS.

Jak sprawdzić kontakty na karcie SIM?

Poniżej znajduje się kod prostego szkicu, do komunikacji Arduino via Serial port z modemem podłączonym do pinów 11/12

Po wgraniu szkicu do Arduino, należy w Serial Monitorze wywołać komendę listującą wszystkie kontakty karty SIM

Jeżeli na pierwszej pozycji mamy jakiś wpis, to kasujemy go przez wywołanie

Wracamy do kodu głównego.

Szkic wykorzystuje zmodyfikowaną przez mnie bibliotekę GSM-GPRS-GPS-Shield-GSMSHIELD którą należy pobrać i dodać do IDE

Modyfikacja umożliwia m.in. komunikację z modułem SIM800L, czego nie oferował oryginał


Jak widać powyżej, definiujemy dwa przekaźniki RELAY1, RELAY2 sterowane przez wyjścia A1A2callsAddr oraz openingAddr są adresami Eprom, gdzie przechowuję wartości calls oraz  opening, które zliczają ile połączeń odebrał modem oraz ile razy został uruchomiony przekaźnik (otwarta brama).

Zakładam że na początku warto przyjrzeć się komunikatom na konsoli, więc nie komentujemy #define LOCAL_DEBUG. Z drugiej strony warto zakomentować #define SMS_ON. Mamy wtedy pewność że kod nie wyśle żadnej wiadomości SMS. #define SMS_ON powinno być odkomentowane kiedy zakończymy debugowanie/testowanie.

W setupie nie dzieje się nic szczególnego, włączamy rozszerzone opisy błędów i sprawdzamy czy na karcie znajdują się jakieś wiadomości SMS. To na wypadek, gdyby podczas wyłączenia modemu, lub przy niewgranym szkicu, przyszły do nas nowe wiadomości. Normalnie sprawdzenie wiadomości następuje po wybudzeniu Arduino przez modem.


Pętla

Skoro jesteśmy w pętli, to znaczy że modem uruchomił Arduino. Możliwości są dwie:

  • połączenie głosowe
  • wiadomość SMS

Modem wybudza Arduino przez podanie sygnału z pinu RING w modemie na pin D1. attachInterrupt(1, pinInterrupt, LOW) 

Sprawdzamy to za pomocą call.CallStatus(). Jeżeli zwraca CALL_INCOM_VOICE, to wybudziło połączenie głosowe . W przeciwnym razie –  wiadomość SMS.

Przypadek 1 połączenie głosowe

Warunek (call.CallStatusWithAuth(number, 1, 100) == CALL_INCOM_VOICE_AUTH) sprawdza czy dzwoniący numer number znajduje się na karcie SIM w przedziale 1-100.

Jeżeli tak, to “podnoszę słuchawkę” czekam po czym “rozłączam się” i wyzwalam przekaźnik. Czemu tak? Oczywiście można wysłać kod zajętości ale wtedy osoba dzwoniąca trafi na pocztę lub wysłucha komunikat o zajętości – po czym będzie musiała się rozłączyć a do nas (modem) przyjdzie SMS o próbie połączenia. Odebranie i szybkie rozłączenie załatwia problem w niecałe 2 sekundy.

Po zakończeniu rozmowy wracamy do pętli i wywoływana jest procedura checkSMS()

checkSMS()

Sprawdzamy czy na karcie są jakiekolwiek SMSy

Sprawdzamy czy jest zdefiniowany numer Administratora

Sprawdzamy czy nadawcą wiadomości jest Administrator

Rozdzielamy wiadomość SMS na słowa rozdzielone średnikiem

Lista zdefiniowanych keywordów

Lista obsługiwanych wiadomości sterujących SMS

Dodawanie kontaktu – komenda np C;A;123456789;Janek Michalczewski;N spowoduje sprawdzenie czy podany numer już nie istnieje na karcie SIM, jeżeli nie – to dodanie na pierwszej wolnej pozycji. Ponieważ numer z przykładu ma tylko 9 cyfr, dodany zostanie do niego prefix 48. Poza tym nazwa zostanie przycięta do 14 znaków, co wynika z ograniczeń karty SIM. Litera N na końcu jest opcjonalna, jeżeli zostanie użyta, to po dodaniu do książki, na numer rejestrowanego kontaktu, zostanie wysłany SMS z potwierdzeniem rejestracji.

Usuwanie kontaktu – komenda np C;D;123456789 spowoduje odszukanie i usunięcie kontaktu z tym numerem

Usuwanie wszystkich kontaktów C;D;A usuwa wszystkie kontakty łącznie z Administratorem

Wyszukiwanie kontaktu – np C;F;123456789  sprawdzi czy podany numer znajduje się na karcie SIM

Wywołanie komendy AT  -np A;A;AT+CSQ sprawdzi poziom sygnału odbieranego, informacja zwrotna (jeżeli nie dłuższa niż 160 znaków) zostanie odesłana przez SMS

Wywołanie kodu USSD -np A;U;*127*1# sprawdzi stan środków w nju mobile

Na koniec komenda którą sprawdzam statystyki połączeń oraz ilość otwarć bramy oraz stan baterii A;I

Przy okazji komend należy pamiętać że wysłanie pierwszej, nie spowoduje jej wykonania! Wynika to z faktu, że na początku nie mamy wpisanego numeru Administratora i komenda nie przechodzi weryfikacji. Pierwszy SMS skutkuje tylko przypisaniem nadawcy do roli Administratora.

Kolejną rzeczą są odpowiedzi na komendy AT oraz kody USSD. Jeżeli ich długość przekroczy 160 znaków, nie zostaną odesłane do Administratora.

Jeżeli program odbierze nieautoryzowaną wiadomość SMS prześle ją do Administratora.

Pełny kod

I jeszcze kilka zdjęć dla wzrokowców 🙂

Uproszczony schemat.

Zapraszam do komentowania!

Dodaj komentarz

5 komentarzy do "Advanced-Call-Controll-Relay-with-Arduino"

Powiadom o
avatar
Sortuj wg:   najnowszy | najstarszy | oceniany
Michal
Gość

Witam bardo fajny projekcik.
Mam prośbe – czy dało by się dodać bardziej wyraźny schemat połaczeń. Na obecnym moduły nie są zbyt dobrze opisane

PS. nei wiem dlaczego ale moge ywlaczyc CAPSLOCKA tutaj

1234567
Gość
Relay_controlled_by_phone_call_Advanced:420: error: invalid conversion from 'byte* {aka unsigned char*}' to 'const char*' [-fpermissive] In file included from e:pgpgArduinohardwarearduinoavrcoresarduino/Arduino.h:25:0, from sketchRelay_controlled_by_phone_call_Advanced.ino.cpp:1: e:pgpgarduinohardwaretoolsavravrincludestring.h:133:15: error: initializing argument 1 of 'size_t strlen(const char*)' [-fpermissive] extern size_t strlen(const char *) __ATTR_PURE__; Relay_controlled_by_phone_call_Advanced:423: error: invalid conversion from 'byte* {aka unsigned char*}' to 'const char*' [-fpermissive] In file included from e:pgpgArduinohardwarearduinoavrcoresarduino/Arduino.h:25:0, from sketchRelay_controlled_by_phone_call_Advanced.ino.cpp:1: e:pgpgarduinohardwaretoolsavravrincludestring.h:133:15: error: initializing argument 1 of 'size_t strlen(const char*)' [-fpermissive] extern size_t strlen(const char *) __ATTR_PURE__; ^ exit status 1 invalid conversion from 'byte {aka unsigned char}' to 'const char*' [-fpermissive] A lot of mistakes, please tell me how to solve, thank you very… Czytaj więcej »
jackie
Gość

log

Arduino:1.6.6 (Windows Server 2008 R2), 开发板:”Arduino Nano, ATmega328″

e:pgpgArduinoarduino-builder -dump-prefs -logger=machine -hardware “e:pgpgArduinohardware” -hardware “C:UsersAdministratorAppDataLocalArduino15packages” -tools “e:pgpgArduinotools-builder” -tools “e:pgpgArduinohardwaretoolsavr” -tools “C:UsersAdministratorAppDataLocalArduino15packages” -built-in-libraries “e:pgpgArduinolibraries” -libraries “C:UsersAdministratorDocumentsArduinolibraries” -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10606 -build-path “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmp” -warnings=none -prefs=build.warn_data_percentage=75 -verbose “E:pgpgArduino新建文件夹GSMSIM800LexamplesRelay_controlled_by_phone_call_AdvancedRelay_controlled_by_phone_call_Advanced.ino”
e:pgpgArduinoarduino-builder -compile -logger=machine -hardware “e:pgpgArduinohardware” -hardware “C:UsersAdministratorAppDataLocalArduino15packages” -tools “e:pgpgArduinotools-builder” -tools “e:pgpgArduinohardwaretoolsavr” -tools “C:UsersAdministratorAppDataLocalArduino15packages” -built-in-libraries “e:pgpgArduinolibraries” -libraries “C:UsersAdministratorDocumentsArduinolibraries” -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10606 -build-path “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmp” -warnings=none -prefs=build.warn_data_percentage=75 -verbose “E:pgpgArduino新建文件夹GSMSIM800LexamplesRelay_controlled_by_phone_call_AdvancedRelay_controlled_by_phone_call_Advanced.ino”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “e:pgpgArduinolibrariesGSMSIM800LGSM.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “e:pgpgArduinolibrariesGSMSIM800LHWSerial.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “e:pgpgArduinolibrariesGSMSIM800LLOG.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “-Ie:pgpgArduinolibrariesGSMSIM800L” “e:pgpgArduinolibrariesGSMSIM800LSIM900.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “e:pgpgArduinolibrariesGSMSIM800LWideTextFinder.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “e:pgpgArduinolibrariesGSMSIM800Lcall.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “e:pgpgArduinolibrariesGSMSIM800Lgps.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “e:pgpgArduinolibrariesGSMSIM800LinetGSM.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “e:pgpgArduinolibrariesGSMSIM800Lsms.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “e:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerialSoftwareSerial.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -M -MG -MP -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp”
“e:pgpgArduinotools-builderctags5.8-arduino2/ctags” -u –language-force=c++ -f – –c++-kinds=svpf –fields=KSTtzns “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmppreprocctags_target.cpp”
“e:pgpgArduinotools-builderctags5.8-arduino2/ctags” -u –language-force=c++ -f – –c++-kinds=svpf –fields=KSTtzns “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmppreprocctags_target.cpp”
“e:pgpgArduinohardwaretoolsavr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10606 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-Ie:pgpgArduinohardwarearduinoavrcoresarduino” “-Ie:pgpgArduinohardwarearduinoavrvariantseightanaloginputs” “-Ie:pgpgArduinolibrariesGSMSIM800L” “-Ie:pgpgArduinohardwarearduinoavrlibrariesEEPROM” “-Ie:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial” “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp” -o “C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp.o”
In file included from E:pgpgArduino鏂板缓鏂囦欢澶筡GSMSIM800LexamplesRelay_controlled_by_phone_call_AdvancedRelay_controlled_by_phone_call_Advanced.ino:23:0:

e:pgpgArduinolibrariesGSMSIM800L/sms.h:17:8: error: extra qualification ‘SMSGSM::’ on member ‘IsPhonePresent’ [-fpermissive]

char SMSGSM::IsPhonePresent(char *is_phone_number);

^

E:pgpgArduino鏂板缓鏂囦欢澶筡GSMSIM800LexamplesRelay_controlled_by_phone_call_AdvancedRelay_controlled_by_phone_call_Advanced.ino: In function ‘void checkSMS()’:

Relay_controlled_by_phone_call_Advanced:337: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘const char*’ [-fpermissive]

In file included from e:pgpgArduinohardwarearduinoavrcoresarduino/Arduino.h:25:0,

from C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp:1:

e:pgpgarduinohardwaretoolsavravrincludestring.h:122:14: error: initializing argument 2 of ‘char* strcat(char*, const char*)’ [-fpermissive]

extern char *strcat(char *, const char *);

^

Relay_controlled_by_phone_call_Advanced:420: error: invalid conversion from ‘byte* {aka unsigned char*}’ to ‘const char*’ [-fpermissive]

In file included from e:pgpgArduinohardwarearduinoavrcoresarduino/Arduino.h:25:0,

from C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp:1:

e:pgpgarduinohardwaretoolsavravrincludestring.h:133:15: error: initializing argument 1 of ‘size_t strlen(const char*)’ [-fpermissive]

extern size_t strlen(const char *) __ATTR_PURE__;

^

Relay_controlled_by_phone_call_Advanced:423: error: invalid conversion from ‘byte* {aka unsigned char*}’ to ‘const char*’ [-fpermissive]

In file included from e:pgpgArduinohardwarearduinoavrcoresarduino/Arduino.h:25:0,

from C:UsersADMINI~1AppDataLocalTempbuilde51375b59d4a0ce0d142645bcbd0e6d1.tmpsketchRelay_controlled_by_phone_call_Advanced.ino.cpp:1:

e:pgpgarduinohardwaretoolsavravrincludestring.h:133:15: error: initializing argument 1 of ‘size_t strlen(const char*)’ [-fpermissive]

extern size_t strlen(const char *) __ATTR_PURE__;

^

使用库 GSMSIM800L 在文件夹: e:pgpgArduinolibrariesGSMSIM800L (legacy)
使用 2.0 版本的库 EEPROM 在文件夹: e:pgpgArduinohardwarearduinoavrlibrariesEEPROM
使用 1.0 版本的库 SoftwareSerial 在文件夹: e:pgpgArduinohardwarearduinoavrlibrariesSoftwareSerial
exit status 1
invalid conversion from ‘byte {aka unsigned char}’ to ‘const char*’ [-fpermissive]

wpDiscuz