Archiwum kategorii: Scratch

Kurs: Podstawy robotyki – Czujnik dotyku – Programowanie Scratch

W tym artykule wykonamy podstawowe warsztatowe ćwiczenia w programowaniu czujnika dotyku.

Do ich wykonania będziemy potrzebowali: sterownik (jednostka sterująca), czujnik dotyku, jeden silnik, przewody do podłączenia czujnika dotyku i silnika a także aplikację Scratch, bądź program dedykowany dla konkretnego modelu robota (w tym zadaniu program oparty na języku Scratch).

W opracowaniu tego artykułu wykorzystaliśmy materiały przygotowane przez nas dla robotów modularnych i dostosowane w formie kursu robotyki do serii robotów Abilix Krypton.
W poszczególnych robotach tłumaczenia nazw i kolory poszczególnych bloków mogą się różnić. Zasada działania i programowania w języku Scratch pozostaje jednak podobna. 

  1. Przygotuj:

  • blok motoru (małego, bądź dużego)
  • czujnik dotyku
  • przewody połączeniowe
  • sterownik
  1. Podłącz za pomocą przewodów:

  • motor do portu A w sterowniku
  • Czujnik dotyku do portu 1 w sterowniku
  1. Uruchom sterownik
  2. Połącz komputer / tablet ze sterownikiem
  3. Uruchom aplikację (Scratch) by wykonać przykładowe zadanie.

Przykładowe zadanie: (Krypton 0, 2)

W momencie uruchomienia programu silnik pracuje z maksymalną prędkością w lewą stronę. Po wciśnięciu czujnika dotyku silnik obraca się z maksymalną prędkością w prawą stronę.

Level up:

W momencie uruchomienia programu silnik porusza się z prędkością 20%Vmax w lewo. Po wciśnięciu czujnika dotyku zmienia prędkość do 50% Vmax. Po kolejnym wciśnięciu czujnika silnik pracuje z prędkością 100% Vmax a następnie po 5 sekundach program jest wyłączany.


Rozwiązanie:

  1. Uruchom program (Programowanie) i podłącz sterownik.
  2. Przeczytaj raz jeszcze zadanie, wypisz najważniejsze założenia programu:
„W momencie uruchomienia programu silnik pracuje z maksymalną prędkością w lewą stronę. Po wciśnięciu czujnika dotyku silnik obraca się z maksymalną prędkością w prawą stronę.”

  1. Z zakładki Czynności wybierz polecenie „Włącz mały silnik Port <A> Prędkość <100>
    i umieść go pod niebieskim blokiem „Główny
Chcemy by silnik pracował bez zmian aż do czasu wciśnięcia czujnika.  Wykorzystamy więc blok kontroli, który przekaże instrukcję, aby program czekał do wykonania następnego polecenia do czasu aż wydarzy się sytuacja, którą za moment zaprogramujemy (o tym, czy sytuacja się wydarzyła poinformuje sterownik właśnie blok kontroli).

4. Z czerwonej zakładki Kontrola wybieramy blok „Czekaj do <…>” i umieszczamy go pod ustawionym wcześniej blokiem „Włącz mały silnik Port <A> Prędkość <100>”.

5. Z żółtej zakładki Czujniki wybieramy blok „Port kolizji <automatycznie> uderz w obiekt” (czujnik dotyku jest wciśnięty) i zagnieżdżamy go wewnątrz bloku „Czekaj do <…>”, w specjalnie przygotowanym polu.

Jesteśmy na etapie pisania fragmentu programu – instrukcji mówiącej  o tym, co wydarzy się po wciśnięciu czujnika. Chcemy by silnik pracował teraz z prędkością 100% w przeciwnym kierunku.

6. Nasz czujnik jest podłączony do portu nr 1, warto zmienić parametr Automatycznie na port 1.

  1. Z zakładki Czynności wybierz blok „Włącz motor mały Port <A> Prędkość <100>” i umieść go pod blokiem kontroli, który przed chwilą został przez nas utworzony. Prędkości tego bloku na <-100>.
  2. Uruchom program.

 

Kurs: Podstawy robotyki – Czujnik dotyku

W opracowaniu tego artykułu wykorzystaliśmy materiały przygotowane przez nas dla robotów modularnych i dostosowane w formie kursu robotyki do serii robotów Abilix Krypton.
W poszczególnych robotach tłumaczenia nazw i kolory poszczególnych bloków mogą się różnić. Zasada działania i programowania w języku Scratch pozostaje jednak podobna. 

W tej części naszego kursu zajmiemy się sczytywaniem informacji z czujnika dotyku i jego programowaniem. Zanim jednak przejdziemy do tego punktu, zastanówmy się jak ten czujnik działa.

Człowiek – czujnik dotyku w ludzkim ciele?

Aby zobrazować jego działanie, dobrze jest w ramach wprowadzenia zastanowić się nad jedną kwestią: Wiemy, że nasze ciało odczuwa każdy dotyk. Gdzie zatem my mamy czujnik dotyku?

Oczywiście, całe nasze ciało jest czujnikiem dotyku. Odczuwamy dotknięcie przedmiotu
(i przedmiotem) nie tylko za pomocą naszych dłoni, czy nóg ale też np. pleców, szyi czy nawet nosa. Dzieje się tak, ponieważ nasze ciało jest silnie unerwione i każdy impuls ze skóry człowieka jest przekazywany do naszego procesora—mózgu. Informacja o dotknięciu przedmiotu przechodzi od miejsca którym dotykamy rzecz (np. palca) aż do naszego głównego procesora. Przejście informacji o dotknięciu odbywa się za pomocą naszego systemu nerwowego—układu  przewodów, które wysyłają sygnały do naszego mózgu. Ten analizuje zebrane informacje i ocenia, czy powinien reagować (i w jaki sposób), czy też nie, np. jesteśmy świadomi tego, że nosimy ubrania – ich dotyk jest delikatny—nie chcemy natomiast w tej sytuacji reagować.)

Robot – jak działa czujnik dotyku?

Wewnątrz czujnika dotyku znajduje się obwód elektryczny,  który za pomocą przewodów jest podłączony do sterownika. Ten wysyła sygnał w postaci cyfrowego impulsu elektrycznego. W momencie kiedy czujnik jest w stanie swobodnym (nie jest wciśnięty) obwód elektryczny jest otwarty i sygnał nie wraca z powrotem do sterownika. Sterownik otrzymuje więc informację zwrotną, że obwód elektryczny jest otwarty i czujnik nie oddaje sygnału do sterownika. Innymi słowy—wartość sygnału, którą czujnik zwraca do sterownika jest równa 0.

Obwód czujnika dotyku (zderzenia) jest zamykany w momencie wciśnięcia analogowego czerwonego przycisku. Sygnał wysyłany przez sterownik przechodzi wtedy przez zamknięty obwód a sterownik otrzymuje informację, że sygnał cyfrowy, który został  nadany wrócił. Wartość zwrócona przy takim układzie zamkniętym nazywana jest stanem wysokim i określona wartością 1.

Tę samą zasadę przekazywania impulsu elektrycznego przez układ wykorzystuje się także np. w testerach żarówek. Do testera cyfrowego podpinane są dwa przewody, które podłącza się do obwodu żarówki. Jeżeli nie jest spalona, obwód jest zamknięty i sygnał wraca do testera. Również elektrycy sprawdzają przejścia sygnału elektrycznego w przewodach w budynkach mieszkalnych w podobny sposób.

Praktyczne wykorzystanie czujników dotyku

  • Uruchomienie i wyłączenie programu za pomocą czujnika to jedno z najpopularniejszych zastosowań użycia czujnika dotyku. Wykorzystywane jest we wszelkiego rodzaju urządzeniach domowych sterowanych cyfrowo za pomocą wbudowanych programów.
  • Czujniki dotyku można znaleźć m.in. w samochodach—są odpowiedzialne za uruchomienie poduszek powietrznych, przesyłają informację o tym czy ktoś siedzi na miejscu kierowcy / pasażera. Czujniki te wykorzystywane są też m.in. w komputerach, urządzeniach elektronicznych, telefonach (włącznik i przycisk głośności).
  • Czujnikiem dotyku jest też touchscreen—jego zasada działania jest jednak inna—jest to czujnik pojemnościowy.
  • Czujniki dotyku wbudowane m.in. w klawiaturę elektrycznych instrumentów muzycznych (np. pianino elektryczne) potrafią przekazać nie tylko informację o zamknięciu danego obwodu (wciśnięciu klawisza) ale też potrafią zmierzyć siłę z jaką dany czujnik został naciśnięty. Dzięki temu możliwa jest praca np., klawiatury dynamicznej—im mocniej klawisz zostanie uderzony, tym mocniejszy będzie dźwięk.
  • Czujnik dotyku wykorzystywany może być również jako guzik służący do chwilowego przerwania danego programu, celem włączenia innego na krótki okres czasu. Na tej zasadzie działają na przykład wszystkie urządzenia AGD z opcją „Turbo”, m.in.. Blendery, miksery a także suszarki elektryczne.

Programowanie w Scratch

Schemat programowania czujnika dotyku w Scratch jest bardzo podobny dla każdego robota.Blok odpowiedzialny za odczyt wartości czujnika dotyku znajduje się w zakładce „Czujniki”. Blok czujnika nie jest blokiem samodzielnym, jest tzw. parametrem który należy umieścić wewnątrz innego bloku analizującego jego wartość i kontrolującego dalsze działanie programu w zależności od wskazań czujnika. Bloki te można znaleźć w zakładce „Kontrola”.

Przykłady wykorzystania czujnika dotyku zagnieżdżonych w blokach kontroli z wyjaśnieniem ich działania w programie Android Krypton Scratch.

Program zatrzyma się w tym miejscu i będzie oczekiwał na sygnał z czujnika dotyku (jest wciśnięty) by przejść do wykonywania dalszej części programu

Program będzie powtarzał algorytm zapisany wewnątrz bloku „Powtarzaj do” do czasu aż czujnik dotyku zostanie uderzony (wciśnięty).

Jeżeli czujnik dotyku będzie wciśnięty program wykona algorytm zapisany wewnątrz bloku. W przeciwnym razie program przejdzie dalej do wykonywania kolejnej części programu.

Jeżeli czujnik dotyku będzie wciśnięty program wykona algorytm wewnątrz bloku bezpośrednio pod warunkiem. W przeciwnym razie program wykona algorytm znajdujący się w drugim wierszu („inny”) tego bloku i dopiero potem przejdzie dalej do wykonywania kolejnej części programu.

Jesteśmy autorami tekstu, zdjęć i grafik w tym artykule. Kopiowanie materiału w celach komercyjnych bez zgody i wiedzy właściciela jest zabronione.

Połączenie DJI Tello Edu z komputerową aplikacją Scratch

Dron DJI Tello Edu to dron świetnie nadający się do nauki latania i sterowania w trzech płaszczyznach. Waży zaledwie 80g, przy czym jest niesamowicie stabilny. Jego zalety wskazaliśmy już kiedyś w krótkim filmie. Jego największą zaletą jest jednak możliwość wykorzystania go do nauki programowania. Dron ten jest programowalny w środowisku Scratch, Swift i Python. Skupmy się jednak na środowisku Scratch.

Aplikacja, którą można pobrać z platformy Google Play pozwala rozwinąć umiejętności sterowania dronem nie tylko przez sterowanie pilotem w aplikacji (ekranem telefonu), czy też sterowaniem żyroskopowym (jeżeli telefon taki czujnik posiada) ale również przez programowanie w środowisku Scratch. Jest ono wykorzystane tak w grywalizacji (która polega na pokonywaniu misji specjalnych wykonywanych przez drona w symulatorze lotu), jak i w swobodnym programowaniu DJI Tello Edu – z wykorzystaniem szczegółowych parametrów, bloków kontroli lotu a nawet warunków logicznych opartych na wbudowanych w drona czujnikach.

Niemniej jednak, jak większość androidowych aplikacji, tak i aplikacja DJI Tello Edu posiada pewne ograniczenia w zakresie programowania. Firma postanowiła się mimo wszystko nie ograniczać i umożliwiła podłączenie drona do pełnego środowiska Scratch na komputerze, dzięki czemu możliwości programowania zostały rozszerzone nie tylko o kolejne bloki ale i pełną współpracę programowania w zakresie dron + ekran komputera (duszki, sceny, zachowania, obsługa parametrów czujnika, wskazania i ruch myszy).

Podłączenie drona do komputerowej wersji Scratch 2.0 nie jest trudne, niemniej jednak dobrze jest wykonać je krok po kroku, tak by zrobić to w ciągu krótkiej chwili a nie w czasie np. godziny lekcyjnej. Jako że „trening czyni mistrza”, warto spróbować nawiązać połączenie kilkukrotnie, dzięki czemu praktyczny czas połączenia aplikacji komputerowej z dronem zajmie nam ok. 30 sekund.

Zaczynijmy zatem:

Etap 1: Pobranie aplikacji i sterowników

  1. Pobierz na komputer aplikację Scratch 2.0 Edytor Offline. Jest w pełni darmowa, można ją znaleźć pod tym linkiem. (https://scratch.mit.edu/download/scratch2). Zainstaluj ją na swoim komputerze postępując według wewnętrznej instrukcji programu.Obecnie dostępna jest już nowa wersja Scratch 3.0, niestety na ten moment nie przygotowano jeszcze pod nią sterowników dla drona.
  2. Pobierz aplikację do uruchamiania skryptów JavaScript) NODE. Również jest darmowa. Najlepiej jest pobrać wersję rekomendowaną. Najnowsze wersje nie zawsze są stabilne (co może negatywnie wpłynąć na współpracę drona z komputerem). NODE dostępny jest pod tym linkiem: https://nodejs.org/en/ . Po pobraniu należy postępować według wewnętrznej instrukcji aplikacji, by ją zainstalować i uruchomić w środowisku windows.
  3. Pobierz biblioteki i sterowniki dla Tello, potrzebne do sterowania dronem w środowisku programistycznym Scratch. Są również darmowe (https://dl-cdn.ryzerobotics.com/downloads/tello/20180222/Scratch.zip). Po pobraniu znajdują się w skompresowanej paczce, należy je więc wypakować do (wszystkie 3 pliki) do folderu (koniecznie zapamiętując którego ;), sugerujemy najprościej: C:\DJI\Scratch), tzn. Na dysku „C” utwórz nowy folder „DJI”, w nim nowy folder „Scratch” i wklej do niego 3 wypakowane pliki – Tello.js; Tello.s2e; TelloChs.s2e.)

 

 

 

  Etap 2: Rozszerzenie Scratch o bloki programowania dla DJI Tello Edu

Po pobraniu i instalacji wspomnianych wyżej aplikacji uruchamiamy środowisko programistyczne Scratch 2.0. Następnie przytrzymując lewy klawisz Shift wybieramy z górnej zakładki menu „File” otwierając tym samym rozszerzony panel poleceń. Na samym dole klikamy opcję „Import experimental http extension”. Wyszukujemy pobrane przez nas sterowniki (wybraliśmy C:\DJI\Scratch) i importujemy plik „Tello.s2e”. Minimalizujemy program Scratch 2.0.

Następnie za pomocą wiersza polecenia i aplikacji NODE uruchomimy skrypt, który umożliwi nam sterowanie dronem z poziomu aplikacji Scratch 2.0. (Klikamy lupę obok windows menu „Start” i wpisujemy „cmd.exe”  )

Uruchamiamy wiersz polecenia (Lupka->cmd.exe). Dalej, za pomocą wiersza poleceń przechodzimy do folderu z trzema wypakowanymi plikami Tello. Korzystamy z komendy: cd ŚcieżkaDoFolderu. W naszym przypadku pełna komenda wygląda następująco: cd C:\DJI\Scratch  i klikamy Enter.

Kiedy wejdziemy do naszego folderu ścieżka poleceń powinna wyglądać tak:

Następnie uruchomimy skrypt Tello.js ,dzięki któremu nasz dron będzie pracował w środowisku Scratch 2.0. Aby go uruchomić konieczna jest wcześniejsza instalacja aplikacji NODE (link podano powyżej). W celu uruchomienia skryptu wpisujemy w wierszu poleceń komendę node tello.js (i zatwierdzamy klikając Enter)

Pojawi się następujący komunikat:

Oprogramowanie sterujące jest gotowe. Teraz minimalizujemy okno Wiersza poleceń (to czarne) i przechodzimy do podłączania drona do komputera.

Etap 3: Podłączanie drona

Na początku uruchamiamy drona (patrząc na kamerę przytrzymujemy przycisk z jego lewej strony). Dalej na komputerze, wyszukujemy w sieciach bezprzewodowych połączenie z naszym dronem (w naszym przypadku to TELLO-D3B1E3) i klikamy Połącz.

Nasz dron jest połączony.

Aby sprawdzić połączenie dobrze jest wykonać prosty test w programie Scratch (mieliśmy go zminimalizowany):

Kiedy zielona flaga wciśnięta -> Wystartuj drona -> Wykonaj obrót o 360 stopni -> Wyląduj

  1. Z zakładki Control wybieramy blok „When clicked” i umieszczamy go w oknie programowania.
  2. Z zakładki „More blocks” wybieramy blok „take off” (tł. Startuj) i umieszczamy pod wsześniej wybranym blokiem
  3. Z zakładki „More blocks” wybieramy polecenie „rotate CW with angle <…>”
    (CW oznacza clockwise – zgodnie z ruchem wskazówek zegara // CCW – counterclockwise – przeciwnie do ruchu wskazówek zegara). Ustalamy parametr obrotu o kąt – „360”
  4. Z zakładki „More blocks” wybieramy polecenie „land”(tł. Ląduj) i umieszczamy w naszym skrypcie pod blokiem „rotate CW with angle 360”.

Nasz program jest gotowy. Aby go uruchomić należy kliknąć zieloną flagę. Enjoy!

Photon i Scratch – pomiar odległości

Zadanie należy do tych nieco trudniejszych, jednak do osiągnięcia celu wystarczy jednostka lekcyjna.

Jest to też świetny sposób na ćwiczenie zakresów w oznaczonych warunkach w przypadku pomiaru odległości. Kilka zakresów pomaga w efektywny sposób zapamiętać w jaki sposób tworzy się warunki zależne od zakresu odległości (powtarzalność).

Zadanie:

Napisz program dzięki któremu zmierzysz odległość od przeszkody z Photonem:
a) duszek Photona będzie na ekranie wskazywał aktualny pomiar
b) kolory duszka będą się zmieniać w zależności od danej odległości, np.
0-10 czerwony
10 – 20 pomarańczowy
20-30 żółty
30 – 40 zielony
40-50 niebieski
c) Robot Photon będzie zmieniał kolory oczu i antenek w tych samych kolorach, co duszek na ekranie.

Do zadania konieczny jest dongle USB Photon Magic Bridge.

Więcej kart pracy można znaleźć na naszej grupie fb: Roboty Edukacyjne w Szkole

Efekt:

Duszek i stroje:

Yellow, Green, Red, Orange, Purple, Blue

Rozwiązanie zadania