Nowy semestr – plan pracy

Wojny robotów

Poprzedni semetr zakończyliśmy poznaniem niezbędnych elementów, jakie zamierzamy wykorzystać nad naszym projektem. Teraz przyszedł czas na zebranie tego w całość. Powstał taki oto plan:

  1. Konstrukcja mechaniczna.
  2. Programowanie:
    1. sterowanie pojazdem z „kabla”
    2. sterowanie bezprzewodowe (bluetooth)
    3. czujka pola magnetycznego
    4. kolorowe LEDy – sygnalizacja energii, paliwa…
  3. Różne scenariusze zabawy:
    1. „bij zabij” – każdy na każdego
    2. „zając” – jeden ucieka, inni go gonią
    3. …zobaczymy
  4. Finalizacja projektu, część i chwała, nagrody prezydenta RP i sukces finansowy 😉

Punkt pierwszy jest kluczowy i zarazem problematyczny – zamierzamy zrobić coś prowizorycznego, ze sklejki, gumki recepturki i papieru toaletowego (oraz inne rzeczy „spod ręki” – liczy się kreatywność, i na tym polega problematyczność). Przyświecać nam będzie główny cel – podwozie ma być (w miarę) stabilne i gotowe do realizacji kolejnych punktów. W przyszłości (za semestr?) studenci poznają tajniki druku 3D i stworzą piękne pojazdy, na razie będzie prowizorka.

Rzeczy „spod ręki” nie są takie ubogie – w szafie pracowni znalazł się zestaw kół sportowych o średnicy 56 mm i szerokości 25 mm.

koła Tamiya 70111

Napęd bazować będzie na dwóch serwach pracy ciągłej – Feetech FT90R. Wybór podyktowany był tym, że nie musimy montować sterownika do silników DC (mostek H) gdyż te mikro-serwa mają sterowanie wbudowane w sobie.

Serwo pracy ciągłej – podstawa napędu.

Trzeba „tylko” wykombinować połączenie silniczka z tymi kołami… Tym zajmiemy się za tydzień.

Forbot.pl — nowy konkurs z nagrodami pieniężnymi

Portal forbotl.pl ponownie organizuje konkurs, do którego można zgłaszać artykuły dotyczące szeroko pojętej elektroniki. Może ktoś z Państwa będzie zainteresowany udziałem w tej akcji? Mile widziane są teksty dotyczące m.in.: Arduino, Raspberry Pi, ESP, STM32, FPGA, Raspberry Pi Pico, MicroPython, Grafana, MQTT, TensorFlow, AI, TinyML, RISC-V, Arduino CLI, Arduino Pro, Node-RED, ESP32, LoRa, Home Assistant, Processing, Firebase (w kontekście IoT). Do wygrania są karty podarunkowe Allegro o wartości 2000 zł, 1000 zł ale nagrodzonych zostanie aż 7 osób. Więcej info na https://forbot.pl/blog/

(c) K. G. 2021

 

Podstawy: programowalne LED-y ws2812b

Wojny robotów

Pracujemy nad ostatnim elementem składowym projektu Wojny robotów – kolorowych wyświetlaczy (do przedstawiania poziomu „życia”, „paliwa” itd). Wszystko okazuje się dziecinnie proste – a to za sprawą gotowych bibliotek dla Arduino (był to właśnie pretekst do poznania instalacji bibliotek w Arduino IDE). Pracowaliśmy ze wcześniejszym materiałem z fi-bot’a – zajrzyj.

Zadanie z zajęć: kontrolować liczbę świecących LEDów potencjometrm.

Podstawy: Bluetooth + mikroserwa

Podstawy Arduino

Tym razem poznajemy coś konkretnego – moduł Bluetooth XM-15B. Umożliwi on komunikację z naszym smartfonem i sterowanie wieżtyczką (zbudowaną z 2 mikroserw, jak na poprzednich zajęciach).

Komunikacja z Bluetoothem z wykorzystaniem SoftwareSerial-a.

Poznaliśmy obiekt SoftwareSerial pomocny w komunikacji z dwoma urządzeniami działającymi przez UART, a (niestety) Arduino UNO ma tylko jeden Serial… Wykorzystaliśmy darmową apkę z AndroidStore „Bluetooth control 8 lap” która sterowała wieżyczką. Brawo Studenci!

Wieżyczka z 2x mikroserwo sterowana przez Bluetooth.

Ta apka jest dobra na początek, można poszukać czegoś lepszego w sklepie ale… dlaczego nie stworzyć własnej? To naprawdę proste – z odpowiednim środowiskiem, czyli (polecam) MIT App Inventor

MIT App Inventor – tworzenie pod Androida z bloczków/klocku jak w Scrachu!

Maskotka

Prace trwają: BB poprawia łącza i soft, KG wierci i kręci 😛 A co z tego wyszło? Skrzypi, ale jeździ jak wariat 😀

Podstawy: odczytywanie sygnałów (analogowo i cyfrowo)

Podstawy Arduino

Dalej ćwiczymy funckję analogRead() – tym razem z fajnym modułem, mianowicie czujnikiem pola magnetycznego SS49E. Podłączamy zasilanie a sygnał wychodzi z 3-ciej nóżki, jak na rysunku poniżej:

Czujka i opis nóżek (PIN-outy).

Warte podkreślenia jest, że ta czujka odróżnia dwa bieguny magnesów i dlatego jest warta zakupu. Przy tej okazji przekonaliśmy, że Arduino IDE wyposażone jest w automatyczne rysowanie wykresów dzięki Kreślarce – trzeba tylko wysyłać na port szeregowy liczby w postaci napisów (gdy chcemy dwie krzywe na wykresie – liczby muszą być podane w jednej linii, oddzielnone spacjami). Proste, a jakie użyteczne!

Skoro mamy przećwiczone analogRead() to powracamy do mniej widowiskowego digitalRead(): podłączamy moduł przycisku

Moduł przycisku tact-switch.

W kolejnym kroku podłączyliśmy moduł czujnika drgań:

Moduł czujnika drgań.

Ponownie wykorzystaliśmy Kreślarkę by rysować drgania czujnika, razem z wykresem pola magnetycznego – proste, ale cieszy 😉

Maskotka

Prace trwają: BB z PP rozkładają pojazd, programują i… stwierdzają zgon jednego z dwóch Arduino! Przyczyna? no właśnie… dochodzenie trwa…

Podstawy: odczyt analogowy – moduł JOY + wieżyczka

Podstawy Arduino

Poznajemy funckję analogRead() – podłączamy potencjometr i sprawdzamy odczyty napięcia (porównujemy ze wskazaniami multimetru). Natrafiliśmy na „pułapkę informatyka”: dzielenie całkowite! W celu odczytania wartości napięcia nie można było napisać analogRead(A0)*5/1024, zamiast tego należało rzutować typy lub wymuisić obliczenia w arytmetyce liczb rzeczywistej, przez napisanie liczby 5 jako liczba rzeczywista: analogRead(A0)*5.0/1024. Teraz już wszystko działa, więc podłączamy dwa potencjometry ale… w module popularnej gałki JOY-sticka:

Moduł gałki JOY-a (czyli dwa potencjometry).

Moduł wykorzystaliśmy do rozbudowy zabawy z mikroserwami z poprzenich zajęć – tym razem mamy do dyspozycji wieżyczkę sterowanych dwoma mikrosilniczkami.

Wieżyczka sterowana JOY-em.
Należy podkreślić, że zasilanie dwóch takich silniczków bezpośrednio z Arduino nie jest mądrym pomysłem, dlatego warto użyć zewnętrznego zasilania.

Maskotka

Prace trwają: BB z PP rozkładają pojazd i montują profesjonalne uchwyty montażowe do zasilania 😉

Wydrukowane „trzymaki” do akumulatora (oczywiście autorstwa BB).
Trzymaki w akcji 😉

Widać, że podwozie Maskotki nadaje się już do wymiany – paskudne te otwory… Wynika to z różnych koncepcji systemu kół, które wymusiły docinanie otworów „na szybko”. Kolejnym krokiem będzie przygotowanie nowej płyty…

PID oraz podstawy: PWM + (mikro)serwo

Podstawy Arduino

Piny cyfrowe PWM z multimetrem i LED-em, a potem serwosilniczek (Serwo.h, silnik.attache(pin), silnik.write(stopnie).

Maskotka

BB: regulator PID dla 1 koła: poniżej wynik działania algorytmu regulującego pracę silnika: kolor czerwony to krzywa pożądana (nastaw użytkownika, potencjometrem), kolor niebieski to aktualna praca koła. Oś Y na wykresie to RPS, czyli obroty na sekundę.

Praca regulatora PID ma polegać na tym, że RPS koła ma podążać za ustaloną wartością niezależnie od zewnętrznych czynników (np. koło na lodzie=kręci się praktycznie bez oporów, lub koło w błocie =ciężko mu wyjechać). Najważniejsze współczynniki regulatora PID Pab bartek dobrał metodą „prób i błędów” (plus własne, wcześniejsze doświadczenie) i są dobrane dla konkretnego silnika (dlatego ich tutaj nie podaję). Zauważ, jak szybko silnik dopasowuje się do pożądanej wartości). Przy okazji: wykres ze „starej” wersji algorytmu, na zajęciach Pan Bartek go udoskonalił i reakcja koła jest jeszcze szybsza!

podstawy: Serial + wyswietlacz 7(8?) segmentowy

Podstawy Arduino

Obiekt Serial i funkcja wypisująca na ekranie napisy, wartości zmiennych. Ale nie tylko – wczytywanie danych z PC do Arduino. To już prawdziwa rozmowa! Nowi Studenci bardzo pracowici – ich programy wyświetlają już wszystkie cyfry!

Maskotka

Prace nad ulepszeniem napędu trwają (BB).

podstawy: Serial + LEDy

Podstawy Arduino

LED-y podłączone do Arduino: pinMode(), digitalWrite(), delay() – trzy funkcje, a ile radochy!

Maskotka

Sterowanie bezprzewodowe (PP) – działa! Mimo to pojazd jeździ bokiem, bo silniki pracują nierówno oraz mechanika kuleje…

podstawy: LED + Arduino IDE

Podstawy Arduino

1x LED + Arduino: setup(), loop(), pinMode(), digitalWrite(), delay() – zaczyna się zabawa…

Maskotka

Projekt wraca na trapetę – ale najpierw trzeba to spowrotem uruchomić, a tu przewody się rozłączyły, radiówka nie działa…. Brawo dla PP + BB za reaktywację Maskotki!