Dżin Stefan (upgrade Maskotki)

Pan Leszek zaproponował fajny pomysł – zamiast planowanej „głowy” maskotki zrobić w to miejsce ludka nadmuchiwanego powietrzem! Jego uruchomienie, czyli niejako  „wyskoczenie” z wnętrza obudowy spowodowało u mnie skojarzenia bajkowego Dżina – i stąd tytuł dzisiejszego wpisu.

Na naszej balicy powstała pierwsza wersja projektu (kolor niebieski, po lewej stonie poniżych zrzutów-tablic :D), która szybko z opcji dwunożnej przeewoluowała do jednonożnej (prawy zrzut-tablicy, kolor czarny) – jako łatwiszej w realizacji, a może i ciekwszej?

Niby wszystko wydawało się proste: bierzemy jakiś materiał, lekki i wytrzymały (padło na worki na śmieci), tniemy i łączymy (taśma izolacyjna), potem wiatraczek do nadmuchania (na początku ten z obudowy PC-ta, taki jak w zasilaczach komputerowych) i będzie super. No i nie było.

Okazało się bowiem, że takie wiatraczki (typowo: 12V, 0.2A) są zdecydowanie za słabe aby napompować naszego Stefana – a aktualny projekt to maleństwo w stosunku do docelowego Dżina – 1m wysokości? czemu nie!

Po prostu podmuch wiatru generowany przez takie wiatraczki był za słaby. Znalazłem coś lepszego (z komputera Fujitsu) co powodowało kilkakrotnie większy podmuch – ale tylko lekko polepszyło sprawę. Jak rozwiązać ten problem? Dwie kwestie: 1) lepszy silnik, lub 2) zmniejszenie wagi naszego ludka (lub oba na raz).

Zmniejszenie wagi ludka okazało się proste do wykonania (choć pracochłonne). Podczas pomiarów na precyzyjnej wadze jubilerskiej okazało się, że waga izolki klejącej jedną rękę jest równa wadze samej ręki!  Dlatego zwykła taśma klejąca (przezroczysta) to lepszy pomysł. JEDNAK to za mało. Może w przyszłości należy kleić na klej? na gorąco (żelazkiem)? Trzeba o tym pomyśleć.

Ciąg powietrza: ciągle zbyt mały.
Dlatego zaproponowałem silnik od dronów XXD A2212 1400KV 2-3S (ciąg 830g) z mocnym, 30A regulatorem prędkości ESC (Electronic Speed Control). Przy tej okazji przedstawiłem sposób działania tego regulatora – protokół sterujący dokładnie taki sam jak serwo silniczki! Sterujemy więc sygnałem 50Hz z wypełnieniem 1ms (0% mocy) do 2ms (100% mocy). Nasz zasilacz ustawiony na max 3A prądu był i tak niewykorzystany w całości – przy tych wielkich śmigłach odważyłem się dać jedyni 20% mocy, a i tak deseczka z silniczkiem podskakiwała 😉

Teoretycznie mamy więc rozwiązane problematyczne kwestie – teraz tylko czas na zakup niezbędnych podzespołów i ich montaż. Podsumowując:

  1. Ludek z worków to dobry pomysł (materiał mocny).
  2. Klejenie lub prasowanie żelazkiem połączeń – konieczne.
  3. Ciąg powietrza z silnika bezszczotkowego sterowanego ESC.
  4. Pomysł na Stefana: jedna noga dwie ręce? a może 5 rąk? a może grecka litera fi? xi? chi? kappa? 😀
  5. Bardziej demoniczna twarz naszego Dżina? rekwizyty w rękach? Pojawiła się Pani Karolina, może ona coś wymyśli 😉

Tablica na koniec zajęć

Gratuluję twórczej pracy i zapraszam na kolejne spotkanie za tydzień!

(c) K.G. 2019

Maskotka

Niby niewiele – dwa przyciski włączające oba układy Arduino (niezależne od siebie) – a tu sporo pracy! Ponownie trzeba było pobawić się korkoborem 🙂 a także i nożykiem do papieru – górna podstawa okazała się być lekko za duża, więc zamiast piłować podstawę, ucięliśmy trochę kartonowego korpusu… To rozwiązanie zadziałało, ale w perspektywie jest upgrade obudowy a’la Trabant (dla niewtajemniczonych niemieckimi autami dołączam link z wyjaśnieniem) na wypas blachę i będą schody…

A tak to wszystko teraz wygląda w środku:

  1. Pierwsza płytka Arduino UNO steruje silnikami (2x Monster VNH2P30) oraz odbiera komunikację z modułu Bluetooth (XM-15B).
  2. Druga płytka Arduino UNO steruje oświetleniem (ledy WS2812b). Obie połączone są ze sobą (2x piny cyfrowe) – wybór efektu dla LEDów podaje pierwsza płytka (aktualnie tylko 2 piny, ale może więcej w przyszłości).
  3. Na drugim Arduino zamocowany jest shield (wykonanie P. Bartek) sterujący ledami z „pro” konektorami  😉
  4. W perspektywie jest wymiana drugiego UNO na Mega, bo jest chęć dołożenia przycisków – choć można zawsze pobawić się multiplekserem i nie wymieniać na Mega (zobaczymy).
  5. Dodanie „ukrytych przycisków” do sterowania efektami oświetlenia bez aplikacji AndroidRC – to uniezależni Maskotkę od pierwszego Arduino UNO i zwiększy jej walory demonstracyjne (a także na wypadek jakiejś awarii pierwszego układu).
  6. Aktualnie sterowanie odbywa się przez Bluetooth (moduł XM-15B) i apkę AndroidRC (bo najprościej i działa). W planach jest zrobienie kontrolera i wykorzystanie modułu radiowego nRF24L01 2.4GHz (który znamy i lubimy).
  7. Aku trzeba przymocować „pasami” (na rzep).
  8. Upgrade obudowy (aluminiowa, pomalowana z podkładem).
  9. Więcej efektów świetlnych?
  10. Wyszła spora plątanina przewodów… nieelegancko więc będzie trzeba nad tym popracować (zebrac wszystko na płytę główną).
  11. Wentylacja (w sieć grafenu z drukarki 3D? kto wie…).
  12. Głośniczek i prosta komunikacja?
  13. Głowa robota – kask? nadmuchiwany ludek?
  14. Komunikacja – LCD? OLED?

Testy wykonane, Maskotka „śmiga” i świeci, więc wszem i wobec ogłaszamy, że ten etap zakończyliśmy pomyślnie. Gratuluję wszystkim zaangażowanym!

(c) K.G. 2019

Maskotka – jest moc!

Pan Bartek zaprezentował swoje demo – wersja 0.2beta 😉 Niebawem ujawni szczegóły programowania i synchronizacji (5 pasków LEDów programuje niezależnie) ale trzeba przyznać, że efekt wygląda bardzo obiecująco – a zmieniać zawsze można ile się chce… ile dusza artystyczna pozwoli 😉

Trzeba zaznaczyć, że Pan Bartek zrobił to „na sucho” – właściwie w głowie, bez podłączenia tych wszystkich LEDów do prądu (brak odpowiedniego zasilacza w domu) – próba generalna „synchronów” odbyła się dopiero na kole Fi-BOT!

Wspólnie z Panem Leszkiem oraz z Panem Łukaszem polepszono konstrukcję Maskotki (gwozdki, profesjonalne podkładki i „korkobor” – hit!), a następnie Pan Bartek przymocował paski do obudowy – efekt okazał się wart zachodu!

Trzeba pochwalić też Pana Mateusza – jego soft  z testowego pojazdu wgrany do Maskotki zadziałał! Wiadomo, nie od razu, ale tak zawsze jest gdy się robi coś konkretnego. Teraz pozostało skomunikować jedno Arduino odpowiedzialne za efekty świetlne z płytką Arduino od podwozia i sterowania. Na początek będzie więc maksymalnie 3 efekty, czyli wystarczą dwa piny cyfrowe łączące obie płytki – jedna włącza sekwencję LOW i HIGH, druga ją odczytuje i wyświetla dany efekt. W przyszłości może będą 3 piny, a tym samym 7 efektów – może każdy uczestnik Fi-BOTa zaprogramuje swój własny? taka „personalizacja” 😉

Backstage

Warto przedstawić co się dzieje „za kulisami” 😉 A tu jeszcze wszystko w powijakach, bez płytki dystrybucyjnej, brak profesjonalnych łączy i chyba stabilizatora 5V (bo zasilanie będzie z żelowego akumulatora 6V lub 12V).

Tak więc jest jeszcze trochę pracy…

Maskotka – kolorki, kolorki (ws2812b)

Korpus pomalowany – spray (matowy GOLDCAR) zdał egzamin 😉 Pan Bartek wytrwale lutuje moduły ws2812b ze sobą, poświęcając temu zajęciu dużo uwagi – gratuluję wytrwałości! Grecka litera fi powali wszystkich na kolana 😀

Pan Przemek i Łukasz wytrwale świecą LEDami, tym razem sterując nimi przez UART z Monitora Portu Szeregowego – na kolejnych zajęciach zastąpimy ten monitor apką z Androida i modułem Bluetooth. Brawo!

Pan Leszek łączy środowisko Unity z elektroniką – mając swoja grę (napisaną właśnie w  Unity) chce zbudować własny kontroler – aby gra była ciekawsze. Świetny pomysł – okazało się jednak, że sama umiejętność odczytania przycisku nie wystarczyła… problem zrobił się bardziej softwarowy, ale więcej szczegółów niebawem.

 

1 LO Białystok zdobywa 1sze miejsce w Destination Imagination!

Zwycięstwo! 1-szemiejsce w konkursie!

Uczniowie z I LO w Białymstoku pod kierownictwem mgr Pawła Andryszaka (nauczyciel fizyki I LO o raz IV LO Białystok, absolwent Wydziału Fizyki UwB) zdobyli 1-sze miejsce w olimpiadzie kreatywności! Małą cegiełkę dołożył też Wydział Fizyki zapoznając uczniów z programowaniem platformy Arduino (zajęcia dodatkowe zorganizowane dzięki współpracy P. Andryszaka z K. Gawrylukiem).

Kilka słów więcej o współpracy 1 LO Białystok i Wydziale Fizyki – tutaj. Serdecznie gratulujemy pracowitości i WYGRANEJ!

(c) K. G. 2019

Maskotka – kolorki, kolorki…

Trwają prace nad elementami świecącymi do Maskotki – projekt Pana Bartka w realizacji… na razie „na próbę” – obudowa z kartonu. Efekt przed malowaniem i lakierowaniem poniżej 😉

Trzeba pamiętać, że paski kolorowych LEDów (u nas WS2812B) będą jeszcze ciekawie zaprogramowane… to ZWIĘKSZY efekt końcowy! Zapowiada się ciekawy efekt!

Regularne + nowy termin spotkań

U niektórych jeszcze sesja (poprawkowa), więc frekwencja marna – ale nie ma co narzekać, bo dołączył do nasz jeden nowy student. W końcu nie w liczbie a w pomysłowości i intelekcie siła! 😀

To ostatnie zajęcia wtorkowe, terminy spotkań ulegają zmianie i będziemy się widywać w PIĄTKI o godz. 13:00 (sala 1064, Kampus, Wydział Fizyki – wiadomo).

(c) K. G. 2019

Nowy semestr = nowy termin

Sesja zakończona… w nowym semestrze proponuję spotkania we wtorki o godz. 16:15
Proszę pisać komentarze, jeśli to Państwu koliduje z innymi obowiązkami (choć uprzedzam, że dużego pola manewru nie mamy: środy odpadają, bo sala zajęta jest do godziny 17:30).

OSTATECZNIE wyszło na to, że będziemy się spotykać w PIĄTKI o godz. 13:00 – zapraszam!

(c) K.G. 2019

regularnie

Regularne zajęcia, omówienie planów na przyszłość – różne projekty.

  • finisz Line Folowera (brawo p. Bartek),
  • rozwiązanie kwestii Arduino Mega i biblioteki SoftwareSerial w kontekście obsługi modułu BlueTooth – nie działa z powodów opisywanych tutaj (zwracam uwagę na sekcję Limitations), ale … po co nam SoftwareSerial skoro Mega ma 3 part UARTów? Zamiana SoftwareSerial na Serial1 rozwiązuje problem,
  • pojazd (miniaturka) przekazany p. Mateuszowi – trzeba zrobić sterowanie, aby przenieść to na większy model,
  • sterowanie wieżyczką (2x serwo) – p. Łukasz ma zadanie z układem współrzędnych na kartce papieru i laserem sterowanym przez port szeregowy (ponownie UART),
  • kolorowe kółka (ws2812) ciągle czekają na p. Mariusza,
  • kolorowe ozdoby (ws2812) do naszego robota – p. Bartek?

(c) K.G. 2019

kolorowo – ws2812b

Poznaliśmy bardzo ciekawy układ: 3x LED (kolor czerwony, niebieski i zielony) + sterownik ws2811 – wszystko razem tworzy moduł oświetlenia RGB, który bardzo łatwo się steruje – a uzyskane efekty są bardzo przyjemne ;-)Moduły mogą być sprzedawane osobno (pojedynczo), ale super prezentują się układy połączone w „oczko” lub listwy.

3x RGB

Każdy LED świeci światłem o danej długości (L [nm]), maksymalną jasnością (J [mcd]) i cechuje się też konkretnym spadkiem napięcia (V [V]). Poniżej dane z datasheet.:
Red L=620-625 J=390-420 V=2.0-2.2
Green L=522-525 J=660-720 V=3.0-3.4
Blue L=465-467 J=180-200 V=3.0-3.4

Trzeba uważać, aby zasilając takie paski uważnie dobrze policzyć wymagany MAKSYMALNY prąd pobrany przez układ! Mamy tu 3 LEDy, więc gdy wszystkie będą świecić na 100% to potrzeba ~3x20mA na każdy jeden moduł. Nasze „oczko” ma 12 takich układów, więc daje to około 0.72A prądu –  czyli już uszkodziliśmy Arduino (pamiętamy, że wydajność prądowa płytki Arduino UNO <0.5A ? trzeba na to uważać!). Gdy zasilamy paski/oczka bezpośrednio z Arduino proszę zmniejszyć jasność ledów do 10% albo i niżej (w zależności ile ich mamy).

Przestrzegaj tych reguł (wzięte z /dev/jarzebski)

  • Nie przekraczaj napięcia zasilania powyżej 5V,
  • Dodaj kondensator elektrolityczny o pojemności od 100µF do 1000µF (np.: 6.3V lub wyższy) przy zasilaniu pierwszej diody,
  • Dodaj rezystor o wartości od 300Ω do 1kΩ pomiędzy mikrokontrolerem, a pierwszym pinem DIN. Rezystor ten umieść jak najbliżej diody,
  • Postaraj się możliwie skrócić odległość pomiędzy mikrokontrolerem, a pierwszą diodą,
  • Nie podłączaj diod przy włączonym zasilaniu. Jeśli już musisz, rób to w kolejności: masa, zasilanie, linia sterująca, a odłączaj w odwrotnej kolejności
  • Jeśli diody zasilasz z oddzielnego źródła zasilania, najpierw doprowadź zasilanie do diod, potem do mikrokontrolera,
  • Pamiętaj o zabezpieczeniu antystatycznym 🙂 swetry, polary i inne ubiory łatwo gromadzące ładunek nie są wskazane

Polecam cały wpis o tych układach na /dev/jarzebski.

NeoPixel

Biblioteka do programowania układów WS2812B.

    #include <Adafruit_NeoPixel.h>
     
    #define PIN 7
    #define LICZBADIOD 12
     
    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(LICZBADIOD, PIN, NEO_GRB + NEO_KHZ800);
     
    void setup(){
      pixels.begin(); // najpierw inicjalizacja biblioteki
    }
    
    int nr=0;
    void loop(){
        if (nr > LICZBADIOD) nr=0;
        pixels.setPixelColor(nr, random(0,256), random(0,256), random(0,256)); //programujemy LED-a o numerze nr
        pixels.show(); // konieczne, aby zmiany były widoczne
        delay(30);
        pixels.setPixelColor(nr, 0, 0, 0); //kolor czarny dla  LED-a o numerze nr 
        nr++;
    }

Kompilacja zakończona z komunikatem:

Szkic używa 3046 bajtów (9%) pamięci programu. Maksimum to 32256 bajtów. Zmienne globalne używają 46 bajtów (2%) pamięci dynamicznej, pozostawiając 2002 bajtów dla zmiennych lokalnych.

Zmieniamy LICZBEDIOD z 12 na 59 i… ten sam rozmiar zajmowanej pamięci. Ta uwaga do porównania dla kolejnej (popularnej) biblioteki.

FastLed

Kolejna biblioteka do programowania tych układów WS2812B.

#include <FastLED.h>
#define NUM_LEDS 12
#define DATA_PIN 7

CRGB leds[NUM_LEDS];

void setup() { 
   FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
   FastLED.setBrightness(10);
}

void loop() { 
      if (nr > NUM_LEDS) nr = 0;
      //leds[nr] = CRGB::Blue; 
      leds[nr].r = random(0, 256);  
      leds[nr].g = random(0, 256);  
      leds[nr].b = random(0, 256);       
      FastLED.show();   //wyswietlamy zaprogramowale kolory LEDow
      leds[nr] = CRGB::Black;
      delay(30);
      nr++;
}

Kompilujemy i widzimy:

Szkic używa 4040 bajtów (12%) pamięci programu. Maksimum to 32256 bajtów. Zmienne globalne używają 139 bajtów (6%) pamięci dynamicznej, pozostawiając 1909 bajtów dla zmiennych lokalnych.

Widzimy, że ten sam kod jest większy z wykorzystaniem FastLed-a. OK. Idziemy krok dalej i zmieniamy NUM_LEDS na 59 i…

Szkic używa 4040 bajtów (12%) pamięci programu. Maksimum to 32256 bajtów. Zmienne globalne używają 280 bajtów (13%) pamięci dynamicznej, pozostawiając 1768 bajtów dla zmiennych lokalnych.

Która biblioteka lepsza – FastLed czy NeoPixel? hmmm… Po pierwsze: obie są proste w użyciu – to zaleta obu. Jednak: FastLed jednak rezerwuje 3 bajty (kolory RGB) dla każdego ws2812b – co jest dość pamięciożerne, tym bardziej, że takie Arduino UNO ma jedynie (aż?) 2kB pamięci. Jednak o wadach i zaletach na razie nie będę się  wypowiadać.

(c) K.G. 2019