Nowe zabawki – sponsorowane przez Parlament Studentcki UwB

Informuję wszystkich robotków z koła Fi-BOT Wydzialu Fizyki UwB, że w dniu dzisiejszym (29-04-2016) przyszła pierwsza paczuszka z podzespołami sponsorowanymi przez Parlament Studencki UwB. Projekt ten złożyła i uzyskała finansowanie Pani Noemi. Mamy 2 mikro-silniczki oraz zestaw mocowań, kół i enkoderów do nich! Niech Was nie zmartwi rozmiar tych silniczków – bo one mają moc! No i do tego jeszcze 4x serwa (też nie byle jakie). Czekam jeszcze na zestawy do komunikacji Bluetooth…

Zapraszam do galerii „unboxing” 😉

DSC_1048

A co kryje w sobie ta paczuszka? może chomika?
DSC_1057

Zawartość w pełnej okazałości. Długopis nie wchodzi w skład zestawu (to mój prywatny i nie oddam!) – służy do zorientowania się w rozmiarach zakupionych gadgetów. Czyli dokładnie czego?

DSC_1052

4x Serwo PowerHD AR-3606HB (praca ciągła)

DSC_1053

wraz z bogatym zestawem orczyków!

DSC_1051

A tutaj mikrosilniki Pololu HP 298:1. Niech nikogo nie zmartwi rozmiar tego silniczka – w tym maluchu drzemie niezła moc!

DSC_1050

Dodatkowo: zestaw kół, mocowań no i enkoderów dedykowanych do Pololu!

DSC_1049

Ponownie wszystko w  całej okazałości.

Firma, w której zamówiłem, dołączyła słodki upominek Pani Noemi – autorki projektu

DSC_1055

cukiereczek czeka do odbioru po długim weekendzie – zapraszam!

Zajęcia nr 3 – komunikacja szeregowa Arduino z PeCe-tem

Na naszych trzecich zajęciach powiedzieliśmy sobie o:

  • dalej o tablicach, bo są ważne!
  • programowanie strukturalne – tworzenie (niemych) funkcji, u nas void błysk(int czas) – jako podstawowych cegiełek, których będziemy często używać
  • poznajemy inne typy danych (czy wiesz, jakie wartości można w nich przechowywać?):
    • bajt (o rozmiarze 1 bajt – no bo niby jak inaczej!),
    • char (czyli znak, też 1 bajt) – przy tej okazji poznajemy ciapki (znaczki pojedynczego apostrofa \' \')
    • bool (prawda/fałsz, true/false) – 1 bajt
    • modyfikator unsigned
    • modyfikator long
    • stringi jak tablice znaków, poznajemy też psie uszy – czyli znaki amerykańskiego cytowania \” \”
    • float – do przechowywania liczb rzeczywistych, np. float pi=3.141592; (4 bajty)
  • o komunikacji szeregowej z zamierzchłych czasów PeCetowych – RS232
  • emulator portu RS232 w dzisiejszych kompach – wykorzystujemy port USB (w tym kilka zgryźliwych opinii o oprogramowaniu tego emulatora pod Windowsem – niestety, działa on słabiej niż analogiczne oprogramowanie pod Linuxa)
  • Serial.begin(9600) – rozpoczynamy transmisję szeregową z nasztm PCetem, ale „tracimy” piny #0 (nazwany RX – odbiór danych) i #1 (nazwany TX – transmisja danych) na naszej płytce Arduino (są one zajęte rozmową z PCetem). Dla bardziej dociekliwych dodam, że aby „odzyskać” te piny musimy zakończyć transmisję szeregową poleceniem Serial.end() – informacja dla zaawansowanych
  • Serial.print(„cokolwiek„)  – mówimy do PCeta, aby to usłyszeć, musimy otworzyć Monitor portu szeregowego w Arduino IDE. Trzeba pamiętać o konfiguracji Monitora tak samo, jak to zrobiliśmy od strony Arduino
  • Serial.println(„inny napis„) – napis zakończony przejściem do nowej linii
  • Serial.available() – sprawdzamy, czy są jakieś dane do odebrania przez Arduino
  • Serial.read() – czytamy jeden bajt. Przy tej okazji ćwiczyliśmy różnicę pomiędzy:
byte znak=Serial.read() // oraz

char znak=Serial.read().

Pamiętasz, o co chodziło? Co się wyświetlało w obu przypadkach po wpisaniu jednej literki, np. A? czy przypominasz sobie moją dygresję o znakach ASCII oraz o kodowaniu klawiatury?

  • wczytujemy napis (czyli ciąg znaków, np. wyraz pomidor) z Seriala – no i cóż? literka po literce?? Jak więc wczytać liczbę, powiedzmy 107?
  • Serial.parseInt() jako funkcja czytająca dane nadchodzące do Seriala i zamieniające je na liczbę całkowitą (integer) – czyli wczytując liczbę „107” nie mamy już trzech oddzielnych liczb (tj. 1, 0 i 7) tylko całą liczbę 107

Po tych zajęciach powinieneś znać:

  • umieć rozpoczynać komunikację PCta z Arduino przy pomocy obiektu Serial.begin(szybkość_transmisji)
  • pamiętać o roli pinów RX (#0) i TX (#1) w komunikacji szeregowej UART
  • znać podstawowe funkcje – przynajmniej Serial.println(„cokolwiek„)
  • umieć czytać znaki z klawiatury PCta, a także zamieniać te znaki na liczby

Praca domowa #1

Arduino + LEDy: wczytać numer diody, która ma się zaświecić (podpowiedź: pamiętajmy o ciapkach, czyli '1′, '2′ itd). Dodatkowo: jeśli dioda juz była włączona, to ją zgasić (podpowiedź: użyjmy pomocniczych zmiennych typu bool).

Praca domowa #2

Arduino + LEDy: wczytac liczbę błysków dla wszystkich diód, czyli ile razy mają błysnąć LEDy (a potem nic ma się nie dziać). Podpowiedź: wykorzystać funkcję zamieniającą wczytane znaki na liczbę całkowitą.

A co na kolejnych zajęciach?

wyświetlacz 7-mio segmentowy! a może nawet rejest przesuwny?

 

Arduino: soft do zderzaków + manufaktura nowego podwozia (25-04-2016)

Tym razem działaliśmy na dwa fronty: jeden zespól klecił hardware ? natomiast drugi pracował nad oprogramowaniem zderzaków, zrobionych z mikrostyków (chodzi oczywiście o wykrycie przeszkody –  zareagowanie na klik w przełączniku – i zmianę kierunku jazdy). Oba zespoły wykonały swoją misję. Zdobywają jeden punkt doświadczenia i awansują o  +1L  ?

DSC_1043m

Przy okazji softu: okazuje się, że konieczne są zmiany – pojazd nie zawsze „czuje” zderzenie. Albo wymienimy mikrostyki na bardziej czułe (np. krańcówki typu WK320 z miękkimi blaszkami a więc i dużo bardziej czułymi stykami), albo zmienimy soft tak, by był w stanie wykryć zderzenie gdy realizuje jazdę w danym kierunku. Opcję drugą można rozwiązać na co najmniej dwa sposoby, i tym zajmiemy się na następnym spotkaniu.

WK320

Wyłącznik krańcowy (krańcówka) WK320. Cena około 1zł za sztukę. Zwrócić należy uwagę na otwory do montażu – nie będzie już konieczności używania kleju i ołówków z Leroya 😉

Zajęcia nr 2 – 3 LEDy (7?) i bardzo szybki kurs programowania strukturalnego

Na naszych drugich zajęciach powiedzieliśmy sobie o:

  • czym są zmienne w programie?
  • ile pamięci (SRAM) zajmują zmienne? int = 2 bajty, float = 4 bajty
  • może zamiast deklarować zmienne, użyć #define – czyli słów kilka o preprocesorze
  • operator przypisania i niematematyczna konstrukcja a=a+10
  • skrócone operatory przypisania a+=10 (a także a-=10, a*=10, a/=2)
  • instrukcja warunkowa if 
  • grupowanie wielu instrukcji sterujących nawiasami sześciennymi { }
  • rozbudowana instrukcja warunkowa – if else
  • pętla for
  • tablice oraz operator [ ]
  • definiowanie wartości początkowych dla tablic – ponownie nawiasy sześcienne { } w innym kontekście!

Po tych zajęciach powinieneś znać:

  • orientować się w poruszanych zagadnieniach – dla mnie oczywistym jest, że nie sposób to opanować w 100% na naszych krótkim spotkaniu! tylko praktyka spowoduje, że zrozumiesz to, o czym była mowa (dlatego rozwiąż zadanie domowe)
  • podłączyć 3 (lub więcej) LEDów do Arduino i nimi sterować – nawet, jeśli masz problemy z pętlami (for) to jeszcze się tym nie przejmuj. Z czasem nabierzesz wprawy, o ile będziesz ćwiczyć

Praca domowa

Napisać program w Arduino, który steruje 7-mioma LEDami. Diody mają zapalać się od pierwszej do ostatniej, z odstępem 0.2s między kolejnymi włączeniami. Po zapaleniu wszystkich LEDów, gasimy je w odwrotnej kolejności – z tym samym odstępem czasu. Powodzenia! (Pamiętaj, że możesz mieć wirtualne Arduino u siebie w domu wchodząc na stronkę 123d.circuits.io i tam zapalać/gasić LEDy!)

Arduino: konwerter I2C dla wyświetlacza LCD HD44780 + microswitche ponownie (18-04-2016)

Po raz pierwszy na nasard_microsw_led2x16zym Kole pojawiła się kwestia komunikacji innej niż UART. Podłączyliśmy więc ekranik LCD za pomocą konwertera I2C. Dzięki temu zaoszczędzamy piny mikrokontrolera, które możemy zagospodarować inaczej.

Wróciliśmy też do mikroswiczy, z których budujemy zderzaki dla naszego pojazdu. Liczbę kliknięć (zderzeń) lewego i prawego czujnika (mikroswicza) wypisujemy na LCD w górnym, i dolnym wierszu. Za tydzień pojazd ruszy w swoją pierwszą, autonomiczną podróż ?

Zajęcia nr 1 – co to te Arduino? palimy diody! wirtualne Arduino

Na naszych pierwszych zajęciach powiedzieliśmy sobie o:

  • Arduino – otwarta platforma (open-hardware)
  • serce Arduino – mikrokontroler (uC, MCU), czyli mikrokomputer jednoukładowy (pojedynczy układ scalony zawierający w sobie procesr, pamięć, interfejsy wejścia-wyjścia, kontrolery przerwań…)
  • rodzina platform Arduino (czyli nie tylko UNO!)
  • budowa i parametry Arduino UNO
  • Arduino? Genuino? czyli o przyjaźni założycieli i rejestracji znaków handlowych
  • IDE (Integrated Development Environment) – środowisko programistyczne
  • omówienie (przykładowego) programu Blink wraz z przykładem tego programu w prawdziwym C/C++ (dla zaawansowanych)
  • poznajemy płytkę stykową
  • poznajemy podstawowe elementy elektroniczne – opornik (rezystor), dioda LED
  • dzielnik napięć!
  • wirtualne Arduino: 123d.circuits.io — dla tych, którzy już chcą, ale jeszcze nie zakupili płytki Arduino!
  • pierwszy program sterujący diodą! No i obiecane efekty pirotechniczne – palimy LEDy, zapominając (celowo!) o rezystorach!

Ku pamięci:

plytka_stykowa-schematPlytkaPrototypowa

Po tych zajęciach powinieneś znać:

  • orientować się w budowie platformy Arduino (piny cyfrowe, piny analogowe)
  • rozumieć połączenia na płytce stykowej
  • rozumieć konieczność stosowania rezystorów podczas podłączania LEDów
  • budowę programów dla Arduino, w tym znaczenie funkcji setup() oraz loop()
  • funkcję ustawiającą piny cyfrowe do sterowania napięciem, czyli pinMode
  • funkcję włączającą napięcie 5V (HIGH) lub 0V (LOW) na konkretnym pinie, czyli digitalWrite
  • funkcję zatrzymującą działanie programu na określoną liczbę mikrosekund – czyli delay

Arduino: TCRT5000 (11-04-2016)

TCRT5000 –  czujnik optyczny odbiciowy

Dioda z układutcrt5000s TCRT5000 emituje światło 950nm – niewidoczne dla ludzkiego oka, ale… nie dla kamery telefonu komórkowego ? Tutaj mamy dwa takie układy (patrz płytka stykowa na stole, obok Arduino), z których tylko jeden jest podłączony i działa. Który – to widać właśnie na ekranie telefonu komórkowego (kolor jasno-fioletowy na to wskazuje; kolor niebieski to dioda wyłączona – porównaj kolory diod na płytce stykowej).

Do czego ten układ? Detekcja linii, czujka zbliżeniowa… zobaczymy, jak my go wykorzystamy.