VIRTUINO generalnie jest przeznaczone do pracy w sieci wewnętrznej. Można otworzyć ruter tak by nasze moduły były widziane z INTERNETU ale to ani bezpieczne ani wygodne rozwiązanie. Pozostaje skorzystać z gotowego projektu w chmurze oferującego dostęp do moich modułów najtańszym i najprostszym sposobem. Na początek wybór padł na ARDUINO Cloud i zobaczymy co z tego wynikło .
Dlaczego Arduino Cloud? Głównie dlatego, że to Arduino i spodziewam się najmniejszych problemów przy wdrożeniu. Drugi powód - aplikacja dostępna jest praktycznie na każdy OS w tym i na IOs a to oznacza dla mnie 100% zdalny dostęp z dowolnego miejsca i o każdej porze. Czy oznacza to że chmury Microsofta, Amazona czy Google są gorsze? Nie wiem, ale mam jakoś większe zaufanie do Arduino i trochę już ten temat mam ogarnięty.
Zacznę od końca tj. od widoków pulpitu przykładowego projektu. W komputerze wygląda to tak
a na iphonie tak
Brzydkie? To mało powiedziane - wręcz okropne. Ale jakie to ma znaczenie, Najważniejsze że działa i tu i tu. I o dziwo w telefonie aplikacja ładuje się bardzo szybko a dostęp do pulpitu jest łatwy i przyjemny.
Ograniczenia wersji darmowej idealne wpisują się w moje potrzeby - możliwość dołączenia do dwóch modułów, i do 5 zmiennych oraz praktycznie nieograniczona możliwość tworzenia dowolnych pulpitów. Jak dla mnie tego aż za nad to. Jeśli tylko biblioteki Cloud nie będą konfliktować się z innymi wciągnę aplikację na stałe do projektów.
A teraz trochę o samym programie. Struktura typowa z serwerem centralnym, do którego przyłączamy moduły i aplikacje sterujące. Obsługiwane moduły to oczywiście płytki Arduino ale dopuszczono też do systemu moduły z ESP8266/32. Choć liczyć się należy z możliwymi błędami w obsłudze bo te dwie platformy są ciągle w fazie testów.
Jak zacząć?
Na serwerze https://cloud.arduino.cc/home/ zakładamy sobie darmowe konto. Następnie zgodnie z instrukcją https://docs.arduino.cc/arduino-cloud/getting-started/esp-32-cloud definiujemy moduł (device) wybierając typ płytki/procesora (u mnie ESP8266). Na koniec konfiguracji dostajemy ID modułu i KEY do projektu. Zdefiniowany moduł łączymy z projektem (things) dla którego wygenerujemy kod programu dla mikrokontrolera pozwalający na połączenie ESP z serwerem Cloud. Przed wygenerowaniem kodu określić jeszcze trzeba sygnały (zmienne) jakie będą przesyłane pomiędzy modułem a aplikacją. Może być ich max 5 szt. Do wyboru mamy różne typy zmiennych - jest ich sporo choć jak dla mnie najważniejsze to bool, int, float i String. Reszta to nie znane mi bliżej kombinacje.
UWAGA: Typ zmiennej ma wpływ na możliwość wyboru określonego widgeta (u). I tak np. jeśli chcemy umieścić na pulpicie przełącznik to MUSIMY do niego dowiązać zmienną typu bool.
W zależności od wyboru opcji zmienne będą mogły być przesyłane w jedną lub obie strony. Ważna jest także to czy wymiana danych ma być cykliczna (np. co 1 sek) czy odbywać się po zmianie wartości zmiennej.
Teraz konfigurator online będzie na nas wymuszał zastosowanie onlinowej wersji kompilatora kodu ale należy to zlekceważyć. W sekcji NETWORK wpisujemy cokolwiek w polach parametrów dostępu do naszej sieci wifi i w polu KEY - później w naszym komputerowym kompilatorze wpiszemy prawidłowe wartości.
Teraz będzie najciekawiej - jak uciec od onlinowej wersji kompilacji i przenieść ją do sketcha w naszym komputerze. A więc po kolei
- pierwszy krok to wgranie brakujących bibliotek potrzebnych do kompilacji naszego projektu. Ściągamy z githuba następujące pliki
Pliki ładujemy do katalogu z naszymi bibliotekami choć pewnie można je zainstalować na stałe do managera bibliotek Arduino.
- przechodzimy do zakładki sketch a następnie "open full edytor" i kopiujemy cały kod z pierwszej zakładki do Arduino na naszym komputerze
- tworzymy u siebie nową zakładkę o nazwie thingProperties.h i kopjujemy do niej całą zawartość tego pliku z sieci
- w miejsce następujących linii
i możemy już próbować skompilować kod. Jeśli przeszedł bez błędów proponuję wgrać go do modułu i sprawdzić czy łączy się on z Chmurą Arduino. Świadczyć będzie o tym zielona kropka przy naszym module w polu Devices.
Teraz możemy spokojnie nakarmić szablon naszym programemDane przesyłane z aplikacji do ESP obsługiwane są w procedurach
void onXXX1Change() {
// Add your code here to act upon R2 change
}
gdzie XXX1 to nazwa naszej zmiennej obsługiwanej przez tę procedurę.
Wysyłanie danych zmiennej YYY2 do aplikacji jest podobne do tego z VIRTUINO 6
YYY2 = wartość_naszej_zmiennej;
Po wgraniu programu do modułu czas no końcowy etap pracy - tworzenie pulpitu nawigacyjnego naszego projektu. Mamy do tego zakładkę Dashboards. I tu bawimy się już z ustawianiem widgetów i dowiązywaniem do nich poszczególnych zmiennych. I praktycznie od razu możemy sprawdzić efekty naszej pracy sterując zmiennymi lub odczytując ich wartość w widgetach. Toporne to i słabo konfigurowalne ale naprawdę działa!
Jeszcze tylko załadowanie aplikacji Cloud do telefonu i Voilà !!!
A więc do dzieła bo dalszy ciąg czeka.
PS
A tu bardziej szczegółowy opis całej konfiguracji dla płytki MKR1000
https://projecthub.arduino.cc/Arduino_Genuino/c00f687a-4694-49e8-8e95-47194db11373
Suplement
Dodałem cały kod do połączenia z Arduino Cloud i o dziwo nic się nie konfliktuje. VIRTUINO pięknie działa równolegle do Arduino Cloud. Jest tylko jedenmały problem - cały program urósł do ponad 450 kB (45% zajętej pamięci) apamięć danych zajęta jest w niemal 50%. No nieźle. Pocieszające jest to że większość moich domowych modułów nie wymaga dostępu z Internetu.
Powyższe wnioski skłaniają mnie jednak do poszukiwania i innych sposobów dostępu danych z moich mikrokontrolerów. Zobaczymy co na to nasz ulubiony ciąg dalszy
Brak komentarzy:
Prześlij komentarz