Niezawodny, bezpieczny, konfigurowalny pilot SMS (Arduino/pfodApp) - bez kodowania: 4 kroki
Niezawodny, bezpieczny, konfigurowalny pilot SMS (Arduino/pfodApp) - bez kodowania: 4 kroki
Anonim
Niezawodny, bezpieczny, konfigurowalny pilot SMS (Arduino/pfodApp) - bez kodowania
Niezawodny, bezpieczny, konfigurowalny pilot SMS (Arduino/pfodApp) - bez kodowania

Aktualizacja 6 lipca 2018: Wersja 3G/2G tego projektu, wykorzystująca SIM5320, jest dostępna tutaj

Aktualizacja: 19 maja 2015: Użyj biblioteki pfodParser w wersji 2.5 lub wyższej. Rozwiązuje zgłoszony problem braku wystarczającej ilości czasu na połączenie tarczy z siecią po włączeniu zasilania

Wstęp

Czym różni się zdalne sterowanie pfodSMS od innych implementacji:-

  • Jest niezawodny – na polecenia zawsze odpowiada się, a utracone wiadomości są ponownie proszone
  • Jest bezpieczny – wykorzystuje 128-bitową ochronę hasłem
  • Nie wymaga kont w serwisach internetowych firm trzecich – wystarczy aktywna karta SIM (bez pinu)
  • Jest konfigurowalny – możesz użyć pfodDesigner do stworzenia własnego, niestandardowego menu
  • To proste – pfodDesigner generuje cały kod. Nie musisz robić żadnego kodowania.
  • Jest elastyczny – wszystkie ekrany pfod są dostępne przez SMS, takie jak podmenu, lista wielokrotnego i pojedynczego wyboru, wprowadzanie tekstu, rejestrowanie danych i kreślenie.

Zobacz projekt wiadomości pfodSMS, aby dowiedzieć się, w jaki sposób połączenie SMS jest niezawodne. Zobacz Challenge and Response Security dla urządzeń pfod podłączonych do Internetu, aby uzyskać szczegółowe informacje na temat 128-bitowego zabezpieczenia. Zobacz pfodDesigner, menu Android / Arduino uproszczone, aby uzyskać szczegółowe informacje na temat projektowania własnego niestandardowego menu. Zobacz pfodSpecification.pdf, aby uzyskać szczegółowe informacje na temat wszystkich komunikatów i ekranów pfod, które możesz dodać samodzielnie.

Przykładowy Projekt – Sterowanie SMS Ciepłą Wodą

Jako przykładowy projekt, ta instrukcja opisuje, jak włączać i wyłączać podgrzewacz ciepłej wody za pomocą SMS-a i sprawdzić, czy jest włączony, czy wyłączony. Do instalacji potrzebny będzie elektryk.

Krok 1: Szybki start - zdalne sterowanie SMS

Szybki start - zdalne sterowanie SMS
Szybki start - zdalne sterowanie SMS
Szybki start - Zdalne sterowanie SMS
Szybki start - Zdalne sterowanie SMS

Oto krótki przewodnik po stworzeniu własnego SMS-owego sterowania ciepłą wodą.

  1. Kup części z tej listy..
  2. Zainstaluj Arduino IDE w wersji 1.5.8 oraz pobierz i zainstaluj bibliotekę pfodParser..
  3. Pobierz darmowy program pfodDesigner.
  4. Zaprojektuj własne menu, aby włączać i wyłączać wejście cyfrowe za pomocą suwaka menu w telefonie komórkowym z systemem Android.
  5. Wygeneruj kod, wybierając jako połączenie tarczę SeeedStudio SIM900 GPRS. (Istnieje również opcja dla nakładki IteadStudio SIM900).
  6. Przenieś wygenerowany kod z telefonu komórkowego do IDE (szczegóły w pfodAppForAndroidGettingStarted.pdf), dodaj swoje tajne hasło, skompiluj i pobierz na Arduino Mega 2560.
  7. Zainstaluj kartę SIM w osłonie GPRS i podłącz osłonę do Mega 2560. Upewnij się, że łącza szeregowe są ustawione na Szeregowy sprzętowy, jak pokazano powyżej..
  8. Podłącz wyjście cyfrowe do półprzewodnikowego lub normalnego przekaźnika między D3 a GND (lub którykolwiek pin wybrany w pfodDesigner). Zobacz Jak dodać przekaźniki do Arduino, aby uzyskać więcej informacji na temat przekaźników..
  9. Podłącz zasilanie USB do Mega. Kod biblioteczny uruchamia dla Ciebie tarczę GPRS..
  10. Zainstaluj pfodApp na swoim telefonie z Androidem i skonfiguruj połączenie SMS z numerem telefonu SIM tarczy. (szczegółowe informacje można znaleźć w pliku pfodAppForAndroidGettingStarted.pdf). Ustaw hasło dla połączenia, jeśli je dodałeś..
  11. Połącz się i zobacz swoje niestandardowe menu wyświetlane przez SMS. Kliknij przycisk, aby włączyć lub wyłączyć przekaźnik..
  12. Poproś elektryka, aby zainstalował przekaźnik w obwodzie ciepłej wody i podłącz zasilacz USB, aby zasilić Mega i osłonę

Krok 2: Więcej szczegółów

pfodDesigner

pfodDesigner wygeneruje cały kod potrzebny do włączenia i wyłączenia przekaźnika półprzewodnikowego lub innego, ale połączenie SMS w bibliotece pfodParser obsługuje wszystkie ekrany pfod, więc gdy zaczniesz, możesz dodać podmenu, suwaki numeryczne, suwaki wielotekstowe, ekrany wprowadzania tekstu, rejestrowanie danych i kreślenie, wszystko przez SMS. Sprawdź plik pfodSpecification.pdf, aby zobaczyć wszystkie obsługiwane ekrany i komunikaty.

Wygenerowany kod jest tutaj. Nie ma podpowiedzi, a tylko jeden przełącznik, aby wiadomość była krótka. Długie menu są wysyłane za pośrednictwem wielu wiadomości SMS, których dotarcie zajmuje więcej czasu. Jeśli masz długie menu, kod połączenia sms w bibliotece pfodParser obsłuży to wszystko za Ciebie.

Aby dodać hasło do połączenia SMS, zmodyfikuj linię

parser.connect(&pfodSMS); // podłącz parser do strumienia SMS do czegoś takiego jak parser.connect(&pfodSMS, F("173057F7A706AF9BBE65D51122A14CEE"));

ale użyj własnego hasła o długości do 32 cyfr szesnastkowych, 0..9 A.. F. Hasła krótsze niż 32 cyfry szesnastkowe są uzupełniane zerami. Zobacz A Simple Wifi/Internet pfodDevice z 128-bitowymi zabezpieczeniami (Arduino), aby dowiedzieć się, jak wygenerować losowe hasło i wyprowadzić je do kodu QR, aby łatwo wprowadzić go do systemu Android. Zobacz także pfodAppForAndroidGettingStarted.pdf

pfodDesigner wygeneruje również kod dla połączeń Bluetooth i Wi-Fi przez port szeregowy i Ethernet przez SPI, wszystko z opcjonalnym 128-bitowym zabezpieczeniem

pfodApp

Pierwszą rzeczą, o której należy zdać sobie sprawę, jest to, że SMS-y są powolne i mogą w ogóle nie docierać do celu lub nie docierać do celu. Więc kiedy połączysz się z pfodApp, będzie trochę opóźnienia, zanim pojawi się odpowiedź SMS. Jeśli wiadomość została zgubiona lub opóźniona, pfodApp automatycznie wyśle ją ponownie po 3 minutach. Po 5 takich próbach pfodApp poinformuje Cię, że połączenie zostało utracone. Możesz dostosować czas 3 minut na ekranie edycji połączenia pfodApp.

Jeśli dodasz hasło, pojawi się sześć wiadomości SMS (po trzy w każdą stronę), zanim menu główne zostanie odebrane przez pfodApp. Te dodatkowe komunikaty pojawiają się tylko przy początkowym połączeniu, po którym nie ma żadnych dodatkowych komunikatów podczas korzystania z hasła. Zacznij więc bez hasła, aby sprawdzić, czy wszystko działa, a następnie dodaj hasło później.

Osłona SMS/GPRS

Możliwe problemy to karty SIM zabezpieczone numerami PIN lub nieuprawnione do łączenia się z siecią. Biblioteka pfod automatycznie włącza tarczę GPRS i szuka odpowiedzi „gotowość na połączenie”. Jeśli ta odpowiedź nie nadejdzie, biblioteka wyłączy się i spróbuje ponownie, więc jeśli zobaczysz lampkę zasilania na osłonie GPRS, która zaświeci się na 20 sekund, a następnie zgaśnie, oznacza to problem z połączeniem z siecią. Wyjmij kartę SIM i wypróbuj ją w normalnym telefonie. Sprawdź, czy nie jest wyświetlany monit o podanie numeru PIN.

Jeśli to nie jest problem, będziesz musiał włączyć debugowanie startowe, jak opisano poniżej, aby zobaczyć, co się dzieje.

Zasilanie tarczy Mega/GPRS

Ekran pobiera do 2A impulsów i do 0,5A w sposób ciągły. Zakładając zasilanie bateryjne 12V, 0,5A przekracza pojemność pokładowego zasilacza Mega. Więc ten ekran NIE powinien być zasilany z wejścia 7V do 12V w Mega. Alternatywą jest zasilanie Mega i ekranowanie przez połączenie USB. Użyłem zasilacza USB 1A. Do testów użyłem koncentratora z zasilaniem Belkin (F4U020), aby zapobiec pobieraniu nadmiernego prądu z portu USB komputera.

Do zasilania z akumulatora 12 V sugeruję użycie wysokiej jakości ładowarki samochodowej USB 5 V, 1 A lub wyższej. Wysokiej jakości zasilacz samochodowy USB 5 V powinien być zaprojektowany tak, aby radził sobie z przepięciami występującymi w samochodowych układach elektrycznych, dlatego powinien być odpowiedni dla większości systemów ładowania 12 V.

Przekaźnik półprzewodnikowy

Ponieważ ten przykładowy projekt steruje podgrzewaczem ciepłej wody (obciążenie rezystancyjne), przekaźnik półprzewodnikowy jest idealny. Jeśli chcesz włączać i wyłączać silniki, uruchamiać generatory itp., porozmawiaj ze swoim elektrykiem o odpowiednim przekaźniku do tego zadania. Jeśli potrzebujesz przekaźnika dużej mocy, możesz użyć małego napędu przekaźnika przy płycie arduino, aby włączać i wyłączać przekaźnik mocy.

Dostępnych jest wiele wersji przekaźników półprzewodnikowych. Upewnij się, że kupujesz, który może obsłużyć prąd i napięcie twojego grzejnika i może być kontrolowany przez 5 V prądu stałego i kilka miliamperów dostępnych z pinu wyjściowego Arduino. Zastosowany tutaj, FOTEK SSR-40 DA, przełącza do 380VAC przy 40Ampach i jest sterowany przez coś powyżej 3V DC i pobiera mniej niż 7mA.

Musisz użyć radiatora i nałożyć CIENKĄ plamę pasty termoprzewodzącej lub pasty termoprzewodzącej z tyłu przekaźnika półprzewodnikowego przed przykręceniem go do radiatora. Pomysł polega na całkowitym pokryciu powierzchni najcieńszą warstwą masy do zatapiania głowy, aby wypełnić mikroskopijne doliny na powierzchni metalu. Po włączeniu przełącznik półprzewodnikowy spada 1,6 V, co generuje 16 watów ciepła przy 10 amperach. Radiator musi pozbyć się tego ciepła, więc należy go montować na wolnym powietrzu, a nie w plastikowej skrzynce.

Opóźnienia są złe

Osłona GPRS dostarcza wiadomości SMS przez połączenie szeregowe w dowolnym momencie, a główna pętla () musi wywołać cmd = parser.parse(); często w celu przetworzenia danych szeregowych przed wypełnieniem 64-bajtowego bufora w kodzie biblioteki Arduino i utratą danych.

Musisz więc utrzymywać szybkie działanie głównego loop(). Nigdy nie powinieneś używać delay() i powinieneś sprawdzić, czy żadna z używanych bibliotek nie ma w sobie opóźnień. Używając domyślnej prędkości transmisji 19200 SIM900 przez Serial Serial, nie uznałem za konieczne zwiększanie rozmiaru bufora w kodzie biblioteki Arduino. Nie używam Software Serial, tylko Serial i Serial1, Hardware Serial Serial i prawie wszystkie wiadomości wysyłane przez pfodApp są bardzo małe, 10 lub 12 bajtów. Możesz jednak zwiększyć rozmiar bufora Arduino, jeśli chcesz, modyfikując definicję w HardwareSerial.h z #define SERIAL_BUFFER_SIZE 64 do #define SERIAL_BUFFER_SIZE 128

Jednak odkryłem, że jeśli włączyłem wyjście debugowania, jak opisano poniżej, musiałem mieć bardzo dużą szybkość transmisji dla połączenia terminala, w przeciwnym razie opóźnienie wprowadzone przez wysyłanie wiadomości debugowania do terminala powodowało pominięcie części wiadomości SMS.

Instalacja

Dodałem osłonę zacisków śrubowych, więc miałem do czego podłączyć przewody przekaźnika półprzewodnikowego. Nie kazałem jeszcze montować sterownika przez mojego elektryka. Musi być umieszczony w izolowanym pudełku, ale z radiatorem wystającym przez szczelinę i podłączonym do przewodu zasilającego ciepłą wodę.

Krok 3: Sugestie dotyczące dalszych ulepszeń – alerty, rejestrowanie danych i kreślenie

Powyższy przykładowy projekt pokazuje tylko, w jaki sposób woda jest włączana lub wyłączana i pozwala ją przełączać. Ale połączenie SMS obsługuje wszystkie wiadomości pfod (patrz pfodSpecification.pdf)

Jeśli dodasz czujnik temperatury do swojego arduino, możesz również wysyłać monitorowanie temperatury i przesyłać odczyty w regularnych odstępach czasu. Aby odesłać odczyt danych jest taki sam dla bluetooth, wifi lub SMS, wystarczy dodać kod jak na poniższym przykładzie. Zobacz Rejestrowanie danych i kreślenie, aby uzyskać więcej szczegółów i przykłady rejestrowania i kreślenia danych.

parser.println(czas);parser.print(', ');parser.println(temperatura);

Gdy biblioteka pfodSMS zobaczy nową linię z println(), wyśle surowe dane jako SMS. Na swoim telefonie po prostu pozostaw pfodApp działającą w tle, a Twój telefon powiadomi Cię o otrzymaniu SMS-a. Otwórz ponownie pfodApp, aby przenieść go na wierzch, a następnie otwórz ekran surowych danych z menu telefonu komórkowego, aby zobaczyć dane. Uwaga: Wiadomości pfodSMS to znaki UTF-8 wraz z numerami połączenia i wiadomości, zakodowane przy użyciu kodowania Base64, aby nie wyglądały jak normalny tekst. Zobacz projekt wiadomości pfodSMS dla wszystkich szczegółów.

Możesz użyć tego samego procesu, aby wysłać alert, gdy coś zmieni się zdalnie. tj. parser.println(F("Temperatura zewnętrzna poniżej 0℃"));Uwaga: znak ℃ UTF-8 w ciągu. pfodSMS przekazuje wszystkie znaki UTF-8 do pfodApp.

Krok 4: Debugowanie podczas korzystania z połączenia SMS w bibliotece PfodParser

Debugowanie podczas korzystania z połączenia SMS w bibliotece PfodParser
Debugowanie podczas korzystania z połączenia SMS w bibliotece PfodParser
Debugowanie podczas korzystania z połączenia SMS w bibliotece PfodParser
Debugowanie podczas korzystania z połączenia SMS w bibliotece PfodParser

pfodDesigner generuje kod, który działa, ale możesz chcieć debugować swój własny dodatkowy kod lub sprawdzić, co się dzieje podczas uruchamiania osłony GPRS lub odbierania wiadomości SMS. Istnieje kilka podejść, które możesz zastosować.

Debugowanie własnego kodu

Jeśli debugujesz własny kod, możesz po prostu zakomentować linię pfodSMS i podłączyć parser do portu szeregowego, a następnie usunąć osłonę GPRS i uruchomić Mega z terminala Arduino. tj. zmień setup() na

//pfodSMS.init(&Serial, 9); // nie uruchamiaj parser tarczy GPRS.connect(&Serial); // podłącz parser do portu Serial zamiast strumienia SMS

Następnie z terminala Arduino możesz wpisać {.}, aby Mega zwrócił menu główne, a następnie odesłać polecenie, które chcesz wykonać, np. {A`1}, aby włączyć przekaźnik i {A`0}, aby go wyłączyć. (pfodApp zwykle wysyła te komunikaty po kliknięciu suwaka.) Następnie dodaj dodatkowy debugujący parser.println(), aby monitorować, co robi dodatkowy dodany kod.

Monitorowanie tarczy GPRS

Jeśli chcesz zobaczyć, co robi tarcza GPRS. Jak się uruchamia, odbiera wiadomości SMS itp. Następnie musisz zmienić okablowanie ekranu, podłączyć je do Mega Serial1 (szeregowego) i zwolnić połączenie szeregowe (USB) dla wyjścia debugowania do Arduino IDE Monitor.

Aby podłączyć osłonę GPRS do Mega 2560 Serial1, usuń łącza pokazane powyżej i dodaj przewody do pinów Mega TX1 i RX1.

Następnie zmień kod setup() na

void setup() { Serial1.begin(19200); // zmień Serial na Serial 1 Serial.begin(57600); // Zwróć uwagę na dużą szybkość transmisji portu szeregowego USB // do monitora Arduino IDE. for (int i=3; i>0; i--) { // odczekaj kilka sekund, aby zobaczyć, czy jesteśmy programowani delay(1000); } pinMode(cmd_A_pin, WYJŚCIE); pfodSMS.setDebugStream(&Serial); // trzeba to zrobić przed wywołaniem pfod_SMS.init // lub innej metody pfod_SMS // zainicjować SMS i podłączyć parser // zmienić następną linię na Serial1 pfodSMS.init(&Serial1, 9); // podłącz Seeed GPRS shield V2 do Serial1 zamiast Serial parser.setDebugStream(&Serial); // trzeba to zrobić przed parser.connect // lub wywołaniem jakiejkolwiek innej metody parser parser.connect(&pfodSMS); // podłącz parser do strumienia SMS }

Teraz możesz odkomentować niektóre ustawienia Debug w bibliotece pfodParser na końcu pliku pfodSMS_SIM900.cpp.

Na przykład odkomentowanie #define DEBUG_SETUP spowoduje wydrukowanie (do strumienia debugowania) tego, co dzieje się podczas włączania tarczy GPRS i przygotowywania jej do odbierania wiadomości SMS.

Odkomentowanie #define DEBUG da wiele informacji o otrzymywanych wiadomościach SMS.

Otóż to !