Kod

Programowanie robotów: Część 2 poradnika robotyki

Programowanie robotów: Część 2 poradnika robotyki

Kurs praktyczny: „Programista mikrokontrolerów”

Dowiedz się więcej

Przygotowanie środowiska programistycznego Arduino IDE

Środowisko programistyczne Arduino IDE to jedno z najpopularniejszych i najwygodniejszych środowisk programistycznych do tworzenia projektów na platformie Arduino. W tym środowisku napiszemy program sterujący robotem. Plik instalacyjny można pobrać z oficjalnej strony Arduino.

W środowisku Arduino IDE utworzymy kod, a następnie wgramy go na płytkę Arduino Uno za pomocą tego samego programu. Szablon pustego szkicu w Arduino IDE przedstawia się następująco:

Zrzut ekranu: Arduino IDE

Język programowania używany w Arduino IDE jest oparte na C++. C++ jest jednym z kluczowych języków programowania w robotyce i innych dziedzinach. Jeśli planujesz zgłębiać dziedzinę robotyki, zdecydowanie zaleca się bliższe poznanie C++. Pozwoli Ci to rozwinąć swoje umiejętności i zwiększyć efektywność pracy nad projektami związanymi z Arduino i innymi platformami.

Ten szkic zawiera dwie funkcje: setup() i loop(). Przyjrzyjmy się bliżej ich przeznaczeniu. Funkcja setup() odpowiada za konfigurację początkową, gdzie inicjowane są zmienne, konfigurowane piny i wykonywane są inne czynności przygotowawcze. Jest ona wykonywana jednorazowo podczas uruchamiania programu. Z kolei funkcja loop() zawiera kod główny, który będzie wykonywany wielokrotnie. To tutaj następuje główne wykonanie logiki programu, w tym przetwarzanie danych, interakcja z czujnikami i sterowanie urządzeniami. Zrozumienie tych funkcji jest kluczem do efektywnego programowania na platformie Arduino.

  • W setup() zmienne są zazwyczaj inicjowane, a tryby połączeń (pinów) są zmieniane za pomocą funkcji pinMode(). Kod wewnątrz setup() jest wykonywany jednorazowo, zaraz po uruchomieniu Arduino, więc ta metoda jest w rzeczywistości używana do początkowej konfiguracji płytki.
  • Funkcja loop() zawiera główny kod, który jest uruchamiany w sposób ciągły po zakończeniu funkcji setup().
  • Parametr void przed funkcją wskazuje typ wartości zwracanej po wykonaniu poleceń funkcji. W tłumaczeniu na język rosyjski „void” oznacza „pustkę” — oznacza to, że funkcja nic nie zwraca.

Przeczytaj także:

Roboty: rodzaje, struktura i obszary zastosowań

Roboty Są to złożone mechanizmy zdolne do wykonywania zadań z wysokim stopniem autonomii. Istnieje wiele rodzajów robotów, różniących się funkcjami i przeznaczeniem. Roboty przemysłowe są na przykład szeroko stosowane w produkcji do automatyzacji procesów montażu. Roboty usługowe są wykorzystywane w hotelach, restauracjach i placówkach medycznych, zapewniając komfort i bezpieczeństwo.

Roboty składają się z kilku kluczowych komponentów: czujników, siłowników, kontrolerów i oprogramowania. Czujniki umożliwiają robotom postrzeganie otoczenia, a siłowniki zapewniają ruch. Kontrolery kierują działaniami robota, a oprogramowanie definiuje algorytmy operacyjne i interakcje użytkownika.

Roboty są aktywnie wdrażane w różnych dziedzinach: od rolnictwa i budownictwa po medycynę i edukację. Pomagają zwiększyć wydajność procesów, obniżyć koszty i poprawić jakość realizacji zadań. Technologia rozwija się z roku na rok, a roboty stają się coraz bardziej wszechstronne, otwierając nowe horyzonty zastosowań w naszym życiu.

Pisanie kodu

Teraz zobaczymy, jak napisać program sterujący naszą maszyną. Nie martw się, wyjaśnimy to szczegółowo i zademonstrujemy ten proces na przykładach. Jeśli nie masz dziś ochoty programować, możesz skorzystać z gotowego kodu.

Aby sterować robotem, użyjemy aplikacji mobilnej do wysyłania poleceń, które będą odbierane przez moduł Bluetooth podłączony do robota. Naszym celem jest opracowanie programu zdolnego do przetwarzania tych poleceń. Program będzie odczytywał dane z modułu Bluetooth, konwertował je na sygnały sterujące dla silników i przesyłał te sygnały do ​​silników, zapewniając wykonanie określonych czynności.

Aby aktywować moduł, należy nawiązać komunikację przez port szeregowy. W funkcji setup() dodaj następujący wiersz kodu:

To polecenie konfiguruje port szeregowy do określonej szybkości transmisji, która musi być zgodna z szybkością transmisji modułu Bluetooth. Standardowa szybkość transmisji dla portu szeregowego wynosi 9600 bps. Zapewnienie zgodności tych szybkości jest kluczowym krokiem dla prawidłowego działania urządzenia i stabilnego przesyłu danych.

W poprzedniej sekcji instrukcji podłączyliśmy styki silników do pinów 6-9 w Arduino. Teraz musimy określić te piny w kodzie. Aby to zrobić, dodaj odpowiednie wiersze do funkcji setup().

Polecenie pinMode określa tryb pracy podłączonych pinów w Arduino. Na przykład, używając pinMode(6, OUTPUT); ustawia pin 6 w tryb wyjściowy, co umożliwia wysyłanie sygnałów sterujących z płytki Arduino. Jest to ważny krok podczas pracy z urządzeniami cyfrowymi, ponieważ prawidłowe ustawienie pinów zapewnia poprawną interakcję z komponentami zewnętrznymi.

W funkcji void loop() implementujemy kluczową logikę programu. To tutaj zostaną zdefiniowane główne operacje, które program powinien wykonywać na bieżąco. Należy pamiętać, że ta pętla będzie wykonywana w nieskończoność, dlatego konieczna jest optymalizacja kodu pod kątem efektywnego wykorzystania zasobów. Należy również zapewnić obsługę ewentualnych błędów i sytuacji wyjątkowych, aby zapewnić stabilne działanie programu. Należy zwrócić uwagę na stosowanie opóźnień i warunków, aby uniknąć niepotrzebnego obciążenia procesora. Prawidłowa organizacja pracy w tej funkcji pomoże osiągnąć wysoką wydajność i niezawodność całej aplikacji.

Ta funkcja sprawdza obecność czytelnych danych na porcie szeregowym, które w naszym przypadku odpowiadają poleceniom sterującym. Do realizacji tego sprawdzenia używana jest metoda Serial.available(). Jeśli dane są dostępne, są one odczytywane w celu dalszego przetwarzania.

Wartości atrybutu data w tym kontekście mogą przybierać różne formy i wartości. Służą one do przechowywania dodatkowych informacji powiązanych z elementami HTML, umożliwiając efektywną interakcję z nimi za pośrednictwem JavaScript. Korzystanie z atrybutów data pomaga ulepszyć strukturę i funkcjonalność strony internetowej. Na przykład, atrybuty data mogą być używane do przekazywania informacji o stanie elementu, identyfikatorach lub innych niestandardowych danych, które mogą być przydatne w przypadku dynamicznej zawartości. Dlatego atrybuty data odgrywają ważną rolę w rozwoju nowoczesnych aplikacji internetowych i pomagają zapewnić bardziej interaktywne wrażenia użytkownika.

  • ‘F’ (forward): ruch do przodu;
  • ‘B’ (backward): ruch do tyłu;
  • ‘L’ (left): ruch w lewo;
  • ‘R’ (right): ruch w prawo;
  • ‘0’ (stop): stop.

Po otrzymaniu polecenia „forward” program aktywuje piny 6 i 7. Zapewnia to wymaganą reakcję urządzenia na dany sygnał. W rezultacie aktywowane piny inicjują odpowiednie działania, które można wykorzystać w różnych projektach związanych z automatyką i sterowaniem.

Aby określić niezbędne porty dla różnych ruchów, można zastosować metodę eksperymentalną. Należy aktywować pary pinów jedna po drugiej i obserwować kierunek ruchu samochodu. Takie podejście pozwala dokładnie określić, które kombinacje portów odpowiadają za każdy ruch, co znacznie upraszcza proces konfiguracji i sterowania urządzeniem.

W Arduino poziomy HIGH i LOW reprezentują poziomy logiczne, które kontrolują stan pinów. Używając digitalWrite(pin, HIGH), przykładamy wysokie napięcie do określonego pinu, co go włącza. Używając digitalWrite(pin, LOW), przykładamy niskie napięcie, co wyłącza pin. Te polecenia pozwalają sterować różnymi komponentami, takimi jak diody LED, przekaźniki i inne urządzenia podłączone do Arduino. Zrozumienie działania poziomów logicznych stanowi podstawę tworzenia różnych projektów na platformie Arduino, zapewniając niezawodną kontrolę stanów pinów i interakcję z urządzeniami zewnętrznymi.

Logika ruchu zostanie zaimplementowana podobnie dla pozostałych kierunków: w lewo, w prawo i do tyłu.

Ukończony kod sterujący silnikami jest dostępny poniżej. Proszę rozwinąć spoiler, aby go zobaczyć.

Przesyłanie kodu do Arduino

Teraz, gdy nasz kod jest gotowy, musimy go przesłać na płytkę Arduino. Aby to zrobić, podłącz Arduino do komputera kablem USB i uruchom środowisko programistyczne Arduino IDE. W interfejsie IDE skonfiguruj ustawienia przesyłania kodu: wybierz odpowiednią płytkę i port. Z listy dostępnych płytek wybierz Arduino Uno, ponieważ to właśnie ten model będziemy wykorzystywać. Przesyłanie kodu do Arduino to kluczowy etap procesu programowania, a odpowiednie ustawienia gwarantują pomyślną kompilację i przesłanie programu na płytkę.

Zrzut ekranu: Arduino IDE

Przy wyborze odpowiedniego portu USB należy wziąć pod uwagę kilka czynników. Porty USB różnią się typem i standardem, co wpływa na prędkość przesyłania danych i kompatybilność urządzeń. Najpopularniejsze typy USB to USB-A, USB-B, USB-C i micro USB. Na przykład USB-C oferuje wysoką prędkość przesyłania danych i odwracalną łączność, co czyni go idealnym rozwiązaniem dla nowoczesnych urządzeń. Ważne jest również, aby zwrócić uwagę na wersję USB: USB 2.0, 3.0 i 3.1 różnią się specyfikacją prędkości i mocy. Upewnij się, że wybrany port odpowiada wymaganiom Twojego urządzenia, aby zapewnić maksymalną wydajność i efektywność.

Zrzut ekranu: Arduino IDE

Przed opublikowaniem ukończonego programu należy przeprowadzić kontrolę błędów. Aby to zrobić, użyj przycisku „Sprawdź”.

Zrzut ekranu: Arduino IDE

Jeśli wszystko będzie gotowe, Prześlij kod dla płytki.

Zrzut ekranu: Arduino IDE

Czytaj także:

Sieci neuronowe we współczesnym świecie: sztuczna inteligencja o niestabilnym zachowaniu i problemy ze zdrowiem psychicznym chatbotów

Współczesne sieci neuronowe, pomimo swoich osiągnięć, czasami wykazują niestabilne zachowanie, co budzi obawy wśród użytkowników. Sztuczna inteligencja stworzona z wykorzystaniem takich systemów może wykazywać objawy podobne do zaburzeń psychicznych, co dało początek terminowi „schizofrenia AI”. Zjawisko to staje się coraz bardziej istotne w kontekście rosnącego wykorzystania chatbotów i innych form sztucznej inteligencji w życiu codziennym.

Ważnym aspektem jest to, jak niekompletne algorytmy mogą prowadzić do nieprzewidywalnych rezultatów w komunikacji. Nieprawidłowe dane lub błędy w szkoleniu mogą powodować, że sztuczna inteligencja będzie przejawiać zachowania postrzegane jako dziwne, a nawet niepokojące. Użytkownicy powinni mieć świadomość, że interakcje z takimi systemami nie zawsze odzwierciedlają prawdziwe ludzkie emocje i myślenie.

Dlatego ważne jest, aby uwzględnić te aspekty podczas opracowywania i użytkowania sieci neuronowych, aby zminimalizować ryzyko problemów i zwiększyć poziom zaufania do sztucznej inteligencji.

Konfiguracja sterowania ze smartfona

W tym projekcie wykorzystano aplikację Arduino Bluetooth Controller na platformę Android do interakcji z modułem Bluetooth HC-06. Podobne aplikacje są również dostępne na iPhone'a, ale nie możemy zagwarantować ich skuteczności. Może być konieczne samodzielne znalezienie odpowiednich alternatyw dla pracy z Bluetooth na urządzeniach Apple.

Konfiguracja wysyłania poleceń przez Bluetooth z telefonu wymaga kilku kroków. Najpierw upewnij się, że Bluetooth jest włączony w urządzeniu mobilnym. Następnie przejdź do ustawień Bluetooth i wybierz urządzenie, z którym chcesz się połączyć. Po pomyślnym nawiązaniu połączenia będziesz mógł wysyłać polecenia z telefonu do podłączonego urządzenia. W razie potrzeby zainstaluj niezbędne aplikacje do zarządzania połączeniem Bluetooth. Upewnij się, że urządzenie obsługuje funkcje niezbędne do prawidłowej obsługi poleceń. Wykonując te proste kroki, możesz łatwo skonfigurować wysyłanie poleceń przez Bluetooth z telefonu. Aby rozpocząć, pobierz i zainstaluj aplikację Arduino Bluetooth Controller na telefonie. Ta aplikacja umożliwia sterowanie urządzeniami Arduino przez Bluetooth, zapewniając wygodny interfejs do interakcji z projektami. Upewnij się, że telefon obsługuje Bluetooth i jest poprawnie skonfigurowany do współpracy z aplikacją. W interfejsie musisz wybrać odpowiednie urządzenie do połączenia przez Bluetooth — moduł HC-06, którego używamy w tym projekcie. Następnie wprowadź domyślne hasło, 1234. Następnie wybierz scenariusz Gamepad w celu dalszej konfiguracji.

Zobaczysz interfejs sterowania Zrzut ekranu: Arduino IDE / Skillbox Media

Po naciśnięciu przycisków w interfejsie aplikacji dane powinny zostać przesłane do Arduino przez Bluetooth. Umożliwi to bezprzewodową komunikację między urządzeniem a kontrolerem, co jest niezbędne do stworzenia intuicyjnej i funkcjonalnej aplikacji. Wykorzystanie Bluetooth do przesyłania danych zapewnia stabilne połączenie i szybką reakcję systemu na polecenia użytkownika. Użycie kontrolera Arduino Mega zamiast standardowego Arduino Uno pozwala na obserwację procesu przesyłania poleceń z urządzenia mobilnego do płytki robota. Pozwala to na bardziej efektywne sterowanie robotem i rozszerza możliwości projektowe. Arduino Mega oferuje większą liczbę wejść i wyjść, co czyni go idealnym wyborem do złożonych projektów. Należy pamiętać, że udana komunikacja między smartfonem a płytką wymaga odpowiedniej konfiguracji oprogramowania i użycia odpowiednich bibliotek. Aby wykonać to zadanie, należy wgrać kod weryfikacyjny na płytkę i go uruchomić. Pozwoli Ci to przetestować i upewnić się, że urządzenie działa poprawnie.

Zamiast wyników

Gratulujemy udanego złożenia i zaprogramowania Twojego pierwszego robota. Teraz masz okazję samodzielnie nim sterować. Jesteś gotowy na nowe eksperymenty i odkrycia w świecie robotyki. Twoje umiejętności się rozwiną i będziesz mógł tworzyć bardziej złożone projekty. Zacznij odkrywać funkcjonalność swojego robota i wciel swoje pomysły w życie.

Ten projekt pomógł nam rozwinąć kluczowe umiejętności w robotyce. Udoskonaliliśmy umiejętność montażu urządzeń, opanowaliśmy pracę z mikrokontrolerem Arduino i nauczyliśmy się podłączać i sterować silnikami. Te umiejętności tworzą solidny fundament pod bardziej złożone projekty w przyszłości.

Co dalej

Teraz możesz personalizować swoją maszynę bez ograniczeń, wykorzystując wszystkie możliwości swojej wyobraźni. Możesz na przykład podłączyć ją do czujników światła, kamery, mikrofonu i manipulatora do przechwytywania różnych obiektów. Takie ulepszenia nie tylko rozszerzają funkcjonalność urządzenia, ale także otwierają nowe horyzonty dla kreatywności i eksperymentów.

Różne wersje robotów kołowych opartych na Arduino Zrzut ekranu: Kuongshun / AliExpress / Supereyes

Niektórzy entuzjaści integrują sztuczną inteligencję z projektami opartymi na Arduino, wykorzystując API znanych sieci neuronowych. Możesz pójść o krok dalej i nauczyć swojego robota prowadzenia rozmowy za pomocą ChatGPT, dodając mały głośnik. Być może to Ty stworzysz pierwszego Terminatora. Zastosowanie sztucznej inteligencji w robotyce otwiera nowe horyzonty i możliwości tworzenia interaktywnych urządzeń.

Programista mikrokontrolerów

Nauczysz się pisać kod dla urządzeń sterujących robotami, dronami i innymi urządzeniami elektronicznymi. Możesz rozpocząć karierę w jednym z najbardziej obiecujących obszarów branży IT.

Dowiedz się więcej