Arduino - aplikacja sieciowa Tinkercad
Animowane połączenia między symulowanymi modułami."

Skok do aplikacji Arduino IDE 2.1.0
sterującej modułami hardwerowymi Arduino.

Jest początek maja 2023r, za miesiąc skończę 80-dziesiątkę, brak sił by zająć się jakąś pasją wymagającą wysiłku fizycznego. Nawet malarstwo czy też genealogia lub strona internetowa nie wciągają mnie tak jak to było wcześniej. Prace w ogródku zupełnie nie wchodzą w grę, nawet koszenie trawy już mnie wykańcza. W takich to okolicznościach doskwierającej apatii, zupełnie przypadkowo znalazłem w sieci aplikację edukacyjną firmy Tinkercad, jedna z 3 częsci tej aplikacji dotyczy elektroniki a dokładnie symulacji działania procesora Arduino UNO.

Programowanie odbywa się przy użyciu języka C++, uzupełnieniem własnego kodu są biblioteki specjalne, podobnie jak to jest w C++, dedykowane dla Arduino UNO. Procesor Arduino UNO opracowany został w zasadzie do użytku hobbystycznego, obsługuje zarówno transmisje cyfrowe jak też analogowe. Dostęp do aplikacji możliwy jest po zalogowaniu się do Tinkercad, wówczas w zakładce '‘obwody’' tworzy się dla użytkownika indywidualny zbiór przeprowadzonych przez niego ćwiczeń, które można w dowolnym momencie edytować, zmieniać, eksperymentować. Do aplikacji można się zalogować poprzez Google.

Główne okno aplikacji zawiera: Panel - edytor kodu (w nim biblioteki), panel - uruchomienie symulacji, panel komponentów(modułów), konsole szeregową (OUT), ramkę wprowadzanie danych (IN). Należy wspomnieć, że szybkość przebiegu symulacji w znacznym stopniu zależy od szybkości łącza internetowego (aplikacja sieciowa). Mankamentem krytycznym jest sytuacja, że aplikacja przed zamknieciem nie pyta czy zapisać zmiany (Można po wprowadzonych zmianach utracić pierwotny kod !!!)


Przykładowy widok głównego okna obwodów.

Przykładowy widok głównego okna 'obwodów'.


   Arduino UNO - symulacja   Główna strona Tinkercad  wejście do zakładki 'obwody'.
Inne strony www w temacie Arduino UNO:
1.   arduino.cc
2.   arduinogetstarted.com
3.   circuitbasics.com






Arduino IDE ver 2.1.0 - aplikacja.
Sterowanie mikroprocesorem Arduino UNO R3."

Pomyślne eksperymenty z symulacyjnym oprogramowaniem sieciowym, skłoniły mnie do poważniejszego zajęcia się tym razem fizycznym procesorem Arduino UNO R3. Ściągnąłem z sieci program Arduino IDE ver 2.1.0, instalacja przebiegła bezproblemowo. Następny krok to zakupienie modułu ARDUINO UNO R3 ATMEGA328 CH340 AVR KLON. Aby jak najszybciej sprawdzić Arduino, dokupiłem moduł shield 1602 2x16 - wyświetlacz z klawiaturą, który posiada dopasowane piny, pozwalające wpiąć się na sztywno do Arduino. W sieci znalazłem przykładowe kody wyswietlajace znaki na wyświetlaczu LCD - 2 wiersze po 16 znaków - eksperymentowanie udało się.


Arduino UNO
Widok Arduino UNO R3.

Poniżej zamieściłem planszę i wykaz przedstawiające zestaw startowy różnych modułów i czujników sterowalnych przez Arduino, łącznie ok. 40 pozycji. Zestaw zakupiony na 'Allegro' zawiera również akcesoria niezbędne do montażu ćwiczeń. W sumie poniosłem koszt w wysokości ok. 280zł. Oczywiście poziom mojej wiedzy na temat programowania w C++ jest jeszcze zbyt niski bym mógł wykonać te najbardziej skomplikowane eksperymenty, ale na 'Allegro' znalazłem jeszcze przynajmniej kilka modułów lub czujników z którymi bym sobie poradził, więc dokupiłem za ok. 80 zł jeszcze 10 sztuk.



zestaw startowy

Widok zestawu startowego.


lista elementów
Lista elementów - modułów, czujników i innych elementów.


Opiszę w skrócie jak wygląda przykładowa sesja eksperymentalna z Arduino. Przykład: moduł wyświetlacza LCD - wpisuję w Google 'Arduino LCD' - wyswietla mi się przynajmniej kilkanaście linków do naibardziej popularnych stron w tym temacie. Ogladam schemat połączeń z Arduino, kopiuję kod, czytam opis. Wybieram na początek najbardziej prosty przykład (kilkanaście linijek codu) i uruchamiam go w interfejsie Arduino IDE 2.1.0, gdy wszystko jest OK, gdy rozumiem co kolejno program robi, staram się zmieniać parametry by uzyskać inne efekty działania (gdy wystapi błąd, dobrze jest zrozumieć co stało się nie tak i naprawiać). Szukam następnie bardzie złożonych kodów, z ambitniejszymi wynikami działania, wtedy najczęściej konieczne staje się 'studiowanie' innych przykładów na ten temat w internecie i na YouTube. To co powyżj opisałem w skrócie, w rzeczywistości pochłania mnie bez reszty, często nawet śni mi się po nocach. Przypominają mi się wówczas lata 90-te i pierwsze kroki w Visual Basic-u - dla przyjemnosci, ale także Visual Basic-u for applications - do zawodowego pisania programów związanych z Międzynarodowym Ruchem Telefonicznym.


lista elementów

Dodatkowa lista elementów - modułów, czujników.


Arduino - następny etap czyli eksperymenty praktyczne.

Mogę stwierdzić, że system "Arduino" wciągnął mnie ponownie w programowanie, tym razem wszakże w eksperymenty praktyczne. Ujawniła się ponownie pasja programowania ale na wyższym poziomie, czyli procesora sterujacego różnymi modułami i czuinikami.Przykładowe sensory dla Arduino:
optyczny,
magnetyczny,
dżwiekowy,
gazowy,
wilgoci,
ruchu,
wstrząsu,
i wiele innych, może nawet kilkadziesiąt.
Są także moduły takie jak wyświetlacze LCD, matrix; na nich najpierw skupiłem swoją uwagę z sukcesem na poziomie niskim narazie. W sieci są tysiace przykładów i artykułów ułatwiajacych eksperymentowanie takim hobbystom jak ja. Mnustwo jest takze filmów o tej tematyce na YouTube. Początkowo najprostsze eksperymenty wykonywałem korzystajac z luźno leżących elementów z pomocą matrycy montażowej, takie działania wszakże przy bardziej złożonych układach są kłopotliwe - robi się bałagan, przewody się plączą, czasami wypadają z gniazd. Wykonałem więc tablicę montażową, na której mocuję moduły, są one stabilne, przyjemniejszy i pewniejszy jest montaż.


Arduino UNO
Powyżej widok stanowiska montażowego z tablicą i kasetką z czujnikami, przewodami i innymi elementami. Opisuję sytuację na 10 cze 2023r.
Poniżej stanowisko po wykonaniu kilku eksperymentów, ta konkretna fotka wykonana w trakcie eksperymentu z czujnikiem temperatury - 23 st. C.

Arduino UNO


W tm miejscu (15 lip 2023) - po kilku tygodniach eksperymentów - jest dobry moment by wyrazić swą opinię na temat mojego najnowszego hobby. Muszę przyznać, że zafascynowany jestem programowaniem procesora Arduino językiem C++. Należy zaznaczyć, że pomysł z Arduino - który zdobył popularność na całym świecie - był "strzałem w dziesiątkę" i że można porównać z nim tylko Visual Bacic Microsoftu z przed kilkudziesięciu lat. Ja mam to szczęście, że zaangażowany byłem i teraz jestem w obu projektach popularyzatorskich.

Geriatrzy twierdzą, że nic tak dobrze nie robi na starość jak angażowanie swego intelektu w jakąś pasję, ja to obecnie czynię z dużą satysfakcją. Muszę wszakże przyznać, że w stosunku do czasu Visual Basicu mam znacznie słabszą pamięć i co chwilę - podczas eksperymentów - muszę posiłkować się wiedzą z komputera, choć nieco wcześniej czytałem istotne dla mnie wówczas materiały. Trochę utrudnia mi to pisanie kodu, bowiem często muszę mieć otwartych kilka stron by wyszukiwać w nich niezbędne dane.

Już w tej chwili mogę ocenić ten zakres Arduino w którym się poruszam, jest to zapewne 10 - 15 % jego możliwości w ramach z kolei moich zdolności percepcji tej współczesnej elektroniki. I tak - po pierwsze zdziwiony jestem systemem zapisu plików (rozszerzenie *.ino) które muszą być zlokalizowane w katalogu o tej samej nazwie co sam plik ??? Po drugie system oparty jest na dziesiątkach bibliotek, często tworzonych przez programistów hobbystów, którzy nie publikują ich pełnych możliwości i funkcjonalności. Przykładem może być czujnik temperatury i wilgotności, musiałem próbować kilka bibliotek obsługujących ten czujnik, nim znalazłem właściwą i dopiero kod dał się skompilować. Biblioteki dobrze opracowane znacznie upraszczają proces pisania kodu, bo wystarczy odwołać się po nazwie do odpowiedniej funkcji w tej bibliotece i nasz kod może ograniczyć się czasami do jednej linijki, przykład:
czujnik temperatury:
int temp = dht.readTemperature();
czujnik wilgoci:
int wilgoc = dht.readHumidity();
Trudności nastręcza także obsługa błędów w kodzie - jest w języku angielskim i w dialekcie programistów zawodowych C++. Nie bardzo rozumiem dlaczego autorzy Arduino nie opracowali odpowiedniej funkcji czytania czasu systemowego z komputera. Prawdziwą przyjemność po napisaniu i skompilowaniu kodu, daje możliwość wyswietlenia wyników z czujnika na jakimś typie wyświetlaczy: siedmiosegmentowe, LCD, matrycowe, OLED. Czasami wystarczy wyniki uzyskać na monitorze portu szeregowego w aplikacji Arduino IDE. Edytor IDE obsługuje prawie całe słownictwo C++ - funkcje, zmienne, struktóry języka itd.

W pewnym momencie uświadomiłem sobie, że jestem o krok od uzależnienia tą elektroniką, wciąż przeszukiwałem internet w poszukiwaniu nowych czuiników na których mógłbym ekserymentować. Doszło do tego, że sprowadziłem kilkanaście modułów gdzieś z Chin za posrednictwem AliExpress'u, oczekując 3,4 tygodnie na dostawę. Również owładnęła mną chęć poszukiwania w internecie coraz to nowych przykładów programowania w Arduino, by móc je zastosować w moich eksperymentach. 4 sirpnia 2023r. zamówiłem jeszcze w Aliexpresie 3 czujniki temperatury i ciśnienia - 2 różne, oraz moduł z żyroskopem
3 osiowym. Niżej widoczne zespolone moduły, które wraz z dwoma różnymi czujnikami:
1. Temperatury i ciśnienia atmosferycznego,
2. Temperatury i ciśnienia atmosferycznego i wilgotnosci.
tworzą jeden układ. Każdy moduł ma osobny program (szkic) do wykonania. Uruchamiam je na zmianę, oba zapisują datę, czas i wyniki do osobnych plików *.txt lub *.csv na karcie SD.
Pierwszy z czujników:
Data,Czas,Temperatura,Wilgotność
2-8-2023,16:13:19,   23.20 °C,   55 %
Drugi z czujników:
Data i Czas,Temperatura,Ciśnienie,Wysokość
2-8-2023,16:27:29,   24.51°C   992.18hPa   176.92m.n.p.m

Po wykonaniu Zespolonej wtyczki modułów będę starał się wykonać szablon programu(szkicu), w który wkopiowywało by się kod obsługujący np. czujnik lub jakiś moduł. Wynikowy kod zaopatrywałby wyniki w datę i czas i zapisywałby wyniki do pliku na karcie SD.



Arduino UNO

Wyżj widoczna zespolona wtyczka modułów zegara i czytnika SD.


Programowanie wyświetlacza OLED 128 x 64 (0,96 Arduino I2C SSD1306)

"Wielokąt_grafika_komputerowa.ino" to kod arduino adaptowany z kodu języka "Basic", jeszcze z czasów komputerów "Atari" i "Commodore 64"
- lata 80-te poprzedniego wieku, moje pierwsze programowania w Basic.
Programy na podstawie książki "Grafika komputerowa" R.Baumana 1989r. WKŁ str. 63, 103.
Wykreślona figóra ze str.103 niestety jest niedoskonała - duże błędy podczas przeliczania trygonometrycznego,
przy małej rozdzielczości ekranu OLED - 128 x 64. Program ze strony 63 kreśli wielokąt bardzo przyzwoicie.
Na ten moduł OLED adaptowałem także program który napisałem kiedyś w języku Visual Basic, jest to animacja zasady działania podnośnika hydraulicznego, bardzo płynnie chodzi. Zawsze fascynowała mnie grafika komputerowa, teraz gdy poznałem wyswietlacze OLED 128 x 32 i 128 x 64 oraz język Arduino wracam do tej pasji. O jednym się przekonałem - wszystkie poznane języki programowania funkcjonalnie są identyczne, różnią się tylko niuansami.

Jest 20 wrzesień 2023r, kilka tygodni pracowałem nad moją własną oryginalną animacją na oled - arduino. Kod tego szkicu zawiera ok.80 wierszy i dotyczy animacji kątów padania i odbicia na powierzchnię lustra, które zmienia kąt. Poniżej zamieszczam plik do pobrania zawierający 5 różnych szkiców, przy czym kilka to opracowane przeze mnie programy z książki o grafice komputerowej w języku Basic na komputery Atari i Commodore z końca XX wieku.

Oled-lustro       5 szkiców Arduino - oled - download.


Powrót do aplikacji sieciowej Tinkercad



Programowanie wyświetlaczy TFT LCD - 160x128, 320x240, 480x360


W 2024 roku zainstalowałem nową wersję Arduino IDE 2.3.6 . Chińczycy, poprzez funkcjonujący u nas w kraju kartel handlowy Alliexpress dostarczają polskim hobbystom elektronikom bardzo tanie podzespoły elektroniczne w tym przypadku chodzi mi o wyświetlacze TFT LCD. W 2025 r. nabyłem pierwszy kolorowy wyświetlacz 1,8" LCD 160x128 px. Posiada on 8 szpilek i dał się bez problemu podłączyć do kupionej nieco wczesniej płytki procesora ESP32. Sposób połączenia znalazłem w internecie. Prócz 2 przewodów zasilających 3,3 V istotnych jest jeszcze 5 połączeń. Na tym procesorze i tym wyświetlaczu napisałem kilka programów graficznych, zaś z internetu ściągnąłem bardziej skomplikowane programy. Zachęcony tymi sukcesami zamówiłem poprzez Alliexpress większy takze kolorowy wyswietlacz 2,4" o rozdzielczości 360x240 px. z dotykowym ekranem (+ 6 pinów). Inne piny są analogiczne, choć dwa mają inne oznaczenia. Oczywiście jest większy komfort wizualny, a teraz jeszcze spróbuję okablować i uruchomić ekran dotykowy. Muszę w tym miejscu wspomnieć, że gdy w 2024 r. pomyślnie programowałem na wyświetlaczach OLED, postanowiłem kupić i kupiłem duży wyświetlacz TFT LCD 480x360 px. ale niestety wtedy nie udało mi się go zainstalować, teraz gdy mam trochę więcej doświadczenia, postanowiłem zabrać się do niego. Niestety znów musiałem się poddać mimo przewertowania internetu. W tym miejscu opiszę sytuację tych tanich, chińskich wyswietlaczy. Wygląda na to, że sprzedają oni nie wpełni sprawne wyświetlacze, lub też są to wykonania ze zmienionymi parametrami i trzeba mieć dużą wiedzę by takie wyświetlacze dobrze zaprogramować. Coś w tym jest na żeczy, bo rozpiętość cen na wyglądajace identyczne urządzenia jest bardzo duża: ja płaciłem kilkadziesiąt zł. a są też ceny kilkuset złotowe. Oczywiście hobbystycznie używam na ogół najtańszych.


wyswietlacze  

Wyświetlacze LCD - od prawej: "mały", "średni", "duży", pod nimi mikroprocesor ESP32 .

Powrót do aplikacji sieciowej Tinkercad