Programowanie i robotyka z wykorzystaniem języka Python i zestawów LEGO

Założenia projektu

Projekt miał za zadanie wprowdzić uczniów w zakres programowania w języku Python, wprowadzić w zakres robotyki z wykorzystaniem zestawów Lego Education Spike oraz wprowadzić w zakres druku 3d. Zajęcia miały charakter teoretyczno-praktyczny, związany z poznawaniem mechanizmów algorytmiki i wykorzystania struktur danych dla ich realizacji w języku Python. Będzie to służyło późniejszemu wdrożeniu uczniów do programowania własnych procedur w obsłudze Lego Education Spike. W odniesieniu do tej pomocy dydaktycznej zostanie wykorzystana baza gotowych projektów pisana w mutacji języka Scratch oraz gotowych procedur w języku Python. Następnie uczniowie mieli możliwość tworzenia własnych rozwiązań konstrukcyjnych i algorytmicznych.

Projekt realizowany w zakresie Cyfrowej Szkoły Wielkopolsk@ w temacie szeroko pojętego programowania oraz wprowadzenia do robotyki miał/ma za zadanie stworzenie bazy pomocy naukowych, które będą w stanie stworzyć także dla następnych grup uczniów atrakcyjne zajęcia z kształceniem umiejętności, które przydadzą się w zajęciach hobbistycznych jak i sprawdzą się podczas przygotowania do matury z informatyki pod kątem programowania. Z tego powodu nacisk został położony na rozbudowę bazy dydaktycznej oraz edukacyjnej, co umozliwi tworzenie cyklicznych zajęć również dla młodszych roczników uczniów. Nic nie stoi na przeszkodzie w realizacji części zaprezentowanego materiału jak i wzbogacenie go o nowe kompotenty w zależności od modyfikacji założeń celów do realizacji.

Realizacja

Z uwagi na fakt, że szkoła posiada dziennik elektroniczny Vulcan do którego jest podpięty msTeams na potrzeby uczniów została stworzona grupa, na forum której były sukcesywnie zamieszczane materiały związane z tematyką zajęć. Uczniowie mieli możliwość umieszczania własnych plików czy informacji zwrotnych w odniesieniu do trwających zajęć. Uczniowie uczestniczący w projekcie byli również obecni na regularnych zajęciach związanych z przedmiotami szkolnymi, prowadzonymi przez opiekuna projektu, stąd była możliwość bezpośredniego zgłaszania uwag i propozycji w obrębie tych zajęć. 

Z uwagi na pandemię oraz na możliwość bardziej elastycznego przekazywania treści w dogodnych terminach/porach, część zajęć miała charakter zdalny.

Z powodu wchodzenia z projektem do grupy uczniów z różnych klas informatycznych zajęcia w ramach projektu były zapoczątkowane wprowadzeniem w podstawy algorytmiki w celu ustandaryzowania wiedzy jak i pod kierrunkiem późniejszych zajęć, w których zadania praktyczne były oparte na myśleniu algorytmicznym. Zajęcia z wymienionej części miały głównie charakter podawczy. Uczniowie byli zapoznawani z poszczególnymi elementami prezentowanych problemów. W skład panelu algorytmicznego weszły następujące prezentacje: Wprowadzenie do algorytmów (I), Wprowadzenie do algorytmów (II), Wprowadzenie do algorytmów (III).

Ważną częścią projektu było wprowadzenie w język Python. Z własnej praktyki nauczcielskiej można zaobserwować wzrastające zainteresowanie tym językiem, co wynika z tzw. niskiego progu wejścia tzn. łatwości przyswojenia podstaw Pythona przez początkujących programistów. Język Python jest również bardzo uniwersalnym narzędziem, które może być stosowane zarówno w tworzeniu klasycznych aplikacji, oprogramowania webowego czy tworzeniu interfejsu między urządzeniami peryferyjnymi a użytkownikiem. Zestaw Lego Prime Spike nadawał się tu znakomicie.

Głównymi celami podczas realizacji wprowadzenia do języka Python było wprowadzenie uczniów w następujące umiejętności:

– instalowanie i konfigurowanie środowiska programistycznego języka Python

– poruszanie się w podstawowych opcjach edytora kodu programów w języku Python – PyCharm

– pisanie i testowanie prostych aplikacji stosując najważniejsze zasady programowania w języku Python

– znajomość struktur danych w postaci kolekcji (m.in. set, dict, tuple, str, lista) oraz danych zewnętrznych

– programowanie funkcyjne i obiektowe (definiowanie i debugowanie funkcji, dekoratory, tworzenie klas i obiektów, iteratory, dziedziczenie,  metody instacji, polimorfizm, abstrakcyjność)

Każdy uczestnik projektu miał za zadanie napisać program(-y) związane z bieżącym materiałem. Zarówno na zajęciach dedykowanych temu projektowi jak i spotkaniach w szkole (w ramach innych przedmiotów) istniała możliwość wymiany poglądów, rozwiązania bieżących trudności w zrozumieniu materiału czy też podpowiedzi/sugestii związanych z dodatkowymi materiałami dla osób szczególnie zainteresowanych tą materią.

Uczniom została udostępniona dokumentacja omawianych elementów języka w postaci dedykowanego repozytorium materiałów na stronie projektu a także na dedykowanym serwerze internetowym. Każde zadanie również doczekało się publikacji swojej przykładowej treści wraz z komentarzami omawiającymi realizowany kod programu.

Kolejnym elementem realizacji projektu edukacyjnego była praca z zestawem Lego Education Spike. Celami, do których wszyscy uczestnicy projektu zmierzali z większymi lub mniejszymi trudnościami było:

– zapoznanie się z mozliwościami zestawu Lego Education Spike

– realizacja gotowych scenariuszy zajęć m.in. ze strony producenta programu firmy Lego

– tworzenie własnych autorskich realizacji scenariuszy zadań z uwzględnieniem API Lego Education Spike

– publikowanie autorskich rozwiązań w zakresie rozwiązań programistycznych w odniesieniu do Lego Education Spike

Z uwagi, że zestawy klocków Lego Education Spike są dostępne wyłącznie podczas zajęć (żaden z uczniów nie posiada prywatnie tego zestawu) wszelka kontrola i nadzór w postępach w pracy z zestwem Lego Education Spike była ograniczona do praktycznego rozwiązywania zadań związanych z bieżącymi projektami/zadaniami podczas przeprowadzania zajęć.

Uczniowie zyskali również możliwość zgłaszania swoich pomysłów na realizację konkretnych funkcjonalności zestawu Lego Education Prime w postaci pseudokodu bądź kodu wynikowego w języku Python, który był implementowany przez opiekuna projektu (bądź zainteresowanych uczniów) i w przypadku jego możliwości zastosowania wynik działania jak i program były prezentowane na zajęciach. 

Ostatnim modułem w realizacji projektu Cyfrowej Szkoły Wielkopolsk@ na zajęciach było wprowadzenie do druku 3d. Na zajęciach uczniowie realizowali m.in:

  • samodzielne uruchomienie drukarki 3D – każdy z uczniów miał możliwość samodzielnego użycia sterowania drukarką 3d.
  • samodzielne przeprowadzenie kalibracji (przygotowanie) drukarki 3D. 
  • samodzielne wyjęcie zainstalowanego filamentu oraz instalacja nowego. 
  • samodzielne przygotowanie pliku sterującego pracą drukarki 3D. Ćwiczenie polegało na  wczytaniu wcześniej przygotowanego pliku do programu typu Tinkercad i wyborze odpowiednich parametrów wydruku. Tak przygotowany plik został następnie zapisany na  karcie  pamięci  (SD).  Ćwiczenie  było wykonywane  indywidualnie  lub w zespołach dwuosobowych.
  • wyjęcie wykonanych wydruków z drukarki 3D. 
  • wymianę dyszy oraz czyszczenie ekstrudera. Wymiana dyszy polegała na jej odkręceniu od ekstrudera przy pomocy klucza płaskiego o odpowiednim rozmiarze. Następnie dyszę należało wyczyścić i przykręcić do ekstrudera tym samym kluczem. 
  • zadaniem uczniów było samodzielne usunięcie podpór ze wcześniej wydrukowanych elementów. Ćwiczenie było wykonywane przy użyciu takich narzędzi jak: nóż, cążki, pilnik. Ćwiczenie mogło być wykonywane indywidualnie lub w zespołach dwuosobowych.

Podsumowanie.

Realizację projektu w ramach Cyfrowej Szkoły Wielkopolsk@2020 w zakresie Uczniowskich Laboratoriów Informatycznych należy ocenić pozytywnie. Uczniowie zyskali dostęp do narzędzi informatycznych, które z racji nieznajomości istnienia czy bariery cenowej były dla nich niedostępne. Mimo zakończenia projektu w maju br. wytworzyła się grupa pasjonatów programowania, którzy zadeklarowali regularne uczęszczanie na zajęcia związane z programowaniem zestawu Lego Spike Education. Projekt mimo formalnego zakończenia będzie miał charakter ciągły w postaci dalszych zajęć. Również z biegiem czasu pojawiły się na zajęciach osoby, które wcześniej nie deklarowały zainteresowania projektem. Teraz chcą w nim aktywnie uczestniczyć. Jest to bardzo pozytywna tendencja. Temu też służyła struktura projektu, który, korzystając ze sprawdzonych przykładów, przybrał postać kursu programistycznego, możliwego do adaptacji dla kolejnych roczników uczniów. Należy odnotować również wzrost kompetencji programistycznych, co przekłada się na lepszy odbiór materiału z podstawy programowej na informatyce i przedmiotach zawodowych informatycznych.

Główną wartością projektu są jego zasoby programistyczne. W celu lepszej wizualizacji artykułu podsumującego projekt zrezygnowano z zamieszczania wszystkich materiałów wideo w postaci gotowych okien do odtwarzania treści jak i zrezygnowano z przytaczania w obrębie jednej strony wszystkich kodów źródłowych. Całość jest zamieszczona poniżej w postaci czytelnego układu linków do materiałów, które można przerabiać w dowolnej kolejności jak i korzystać z nich przy innych założeniach celów edukacyjnych ze względu na uniwersalność treści przykładów w języku Python.

Należy dodać, że stworzenie wszystkich materiałów dodatkowych wymagało olbrzymiej pracy koncepcyjnej oraz edytorskiej. Pozostaje mieć nadzieję, że ich szerokie użycie (do czego zachęcam) będzie dobrze kompensować wysiłek włożony w ich powstanie. 

Multimedia

—————————————-

Zdjęcia

Implementacja programu 'Trener’

lego_primetrener_implementacja_programu2.jpglego_primetrener_implementacja_programu1.jpg

lego_primetrener_implementacja_programu3.jpglego_primetrener_implementacja_programu4.jpg

lego_primetrener_implementacja_programu5.jpglego_primetrener_implementacja_programu6.jpg

lego_primetrener_implementacja_programu7.jpglego_primetrener_implementacja_programu8.jpg

breakdance1.jpgbreakdance2.jpg

Implementacja programu 'Breakdance’

breakdance3.jpgbreakdance4.jpg


Testowanie czujnika kolorów

lego_primetestowanie_czujnika_kolorow.jpglego_primetestowanie_czujnika_kolorow_2.jpg

Programowanie czujnika światła

lego_primeprogramowanie_czujnika_swiatla.jpg

Programowanie robota

lego_primeprogramowanie_robota.jpg

Programowanie skoczka

lego_primeprogramowanie_skoczka.jpg

Elementy wydrukowane na drukarce 3D

drukarka3d1.jpgdrukarka3d2.jpg

drukarka3d3.jpg

Projektowanie elementów do druku na drukarce 3d

druk3d_solid_edge_czesc_sekwencyjna_1.jpgdruk3d_solid_edge_czesc_sekwencyjna_3.jpg

druk3d_creality_slicer_czesc_sekwencyjna_2.jpgdruk3d_lacznik.jpg

Drukowanie kompotentów na drukarce 3d – noga łóżka

Drukowanie kompotentów na drukarce 3d – łącznik prosty

Drukowanie kompotentów na drukarce 3d – fork

Prezentacje

Praca z Lego Prime Spike – cz. I

Praca z Lego Prime Spike – cz. II

Filmy

Programowanie ruchów robota

Złóż zamówienie – implementacja programu

Breakdance – implementacja programu

—————————————-

Linki do pozostałych zasobów projektu

Python – prezentacje w formacie .mp4

  1. Instalacja Python i PyCharm w systemie Windows (1)
  2. Zmienne i typy danych(2)
  3. Instrukcja input i funkcje matematyczne(3)
  4. Operatory warunkowe(4)
  5. Pętla For (For Range)(5)
  6. Pętla WHILE, instrukcja BREAK i CONTINUE(6)
  7. Obsługa wyjątków i liczby zmiennoprzecinkowe o większej precyzji(7)
  8. Strings(8)
  9. Więcej funkcji STRING(9)
  10. Funkcje(10)
  11. Funkcje 2(11)
  12. Listy(12)
  13. Listy 2(13)
  14. Słowniki(14)
  15. Funkcje rekurencyjne(15)
  16. Pliki i krotki(16)
  17. Klasy i obiekty(17)
  18. Dziedziczenie i polimorfizm(18)

Python – prezentacje w formacie .pdf

  1. Instalacja Python i PyCharm w systemie Windows (1)
  2. Zmienne i typy danych(2)
  3. Instrukcja input i funkcje matematyczne(3)
  4. Operatory warunkowe(4)
  5. Pętla For (For Range)(5)
  6. Pętla WHILE, instrukcja BREAK i CONTINUE(6)
  7. Obsługa wyjątków i liczby zmiennoprzecinkowe o większej precyzji(7)
  8. Strings(8)
  9. Więcej funkcji STRING(9)
  10. Funkcje(10)
  11. Funkcje 2(11)
  12. Listy(12)
  13. Listy 2(13)
  14. Słowniki(14)
  15. Funkcje rekurencyjne(15)
  16. Pliki i krotki(16)
  17. Klasy i obiekty(17)
  18. Dziedziczenie i polimorfizm(18)

Python – kody źródłowe do materiałów z projektu w formacie .py

2.Zmienne i typy danych – kod.py

3.Instrukcja input i funkcje matematyczne – kod.py

3.Zadanie – konwersja kilometrów na mile.py

4.Operatory warunkowe – kod.py

4.Zadanie – jaka szkoła w zakresie wieku.py

4.Zadanie – wybór szkoły w zakresie wieku.py

5.Pętla for i range – kod.py

5.Zadanie – drukowanie numerów nieparzystych.py

5.Zadanie – uzyskanie wyliczenia inwestycji po 10 latach.py

5.Zadanie – Wydrukowanie prostej pętli.py

6.Pętla While, instrukcje Break i Continue – kod.py

6.Zadanie – rysowanie drzewka – druga implementacja.py

6.Zadanie – rysowanie drzewka o zadanej wysokości.py

7.Obsługa wyjatków i liczby zmiennoprzecinkowe – kod.py

8.Strings – kod.py

8.Zadanie – funkcje na ciągach.py

8.Zadanie – kodowanie ciągów na unicode i odkodowanie.py

9.Więcej funkcji string – kod.py

9.Zadanie – implementacja szyfru Cezara.py

9.Zadanie – tworzenie akronimu.py

9.Zadanie – tworzenie większej ilości funkcji operujących na stringach.py

10.Funkcje – kod.py

10.Zadanie – rozwiązanie równania z jedną niewiadomą.py

11.Funkcje 2 – kod.py

11.Zadanie – wyświetlenie liczb pierwszych z określonego przedziału.py

12.Listy – kod.py

12.Zadanie – generowanie listy z zadanym przedziałem liczbowym.py

12.Zadanie – testowanie funkcji list.py

13.Listy 2 – kod.py

13.Zadanie – tworzenie listy z liczbami parzystymi.py

13.Zadanie – tworzenie tabliczki mnożenia na dwuwymiarowej liście.py

13.Zadanie – wyciąganie liczb z wyrażenia podanego przez użytkownika.py

14.Slowniki – kod.py

14.Zadanie – testowanie funkcji słownika.py

14.Zadanie – tworzenie słownika z danymi klientów.py

15.Funkcje rekurencyjne – kod.py

15.Zadanie  – obliczanie liczb Fibonacciego.py

15.Zadanie – obliczanie silni.py

15.Zadanie – obliczanie silni – druga wersja.py

16.Pliki i krotki – kod.py

16.Zadanie  – wypisanie liczby słow i ich średniej długości z pliku.py

16.Zadanie – operacje na pliku.py

17.Klasy i obiekty – kod.py

17.Zadanie – oprogramowanie klasy kwadrat.py

17.Zadanie – wartości domyślne konstruktora obiektu.py

18.Dziedziczenie i polimorfizm – kod.py

Python – przykłady kodów źródłowych do programowania Lego Prime Spike

Pliki projektów wykorzystywane w drukowaniu na drukarce 3d

—————————————-

Linki do stron zewnętrznych

Realizacja zadań maturalnych w oparciu o poznane komponenty języka Python (materiał własny nauczyciela)

—————————————-

Zespół projektowy

Nazwa szkoły: Zespół Szkół nr 1 w Nowym Tomyślu
Nauczyciel – opiekun grupy projektowej: Jacek Prętki
Uczniowie – członkowie zespołu projektowego: 

  • Michał Bzdęga – klasa 3TIg
  • ? Bartosz Czapracki – klasa 1TI
  • ? Emil Frański – klasa 1TI
  • ? Remigiusz Górniaczyk – klasa 1TI
  • ? Stanisław Karpowicz – klasa 1TI
  • ? Karol Kaźmierczak – klasa 1TI
  • ? Jakub Kuchta – klasa 1TI
  • ? Ksawery Kucz – klasa 3TIg
  • ? Filip Olekszy – klasa 3TIg
  • ? Dawid Pawlik – klasa 1TI
  • ? Hanna Połomka – klasa 3TIg
  • ? Dawid Szopka – klasa 3TIg
  • ? Natalia Tomkowiak – klasa 3TIg
  • ? Mikołaj Wajman – klasa 1TI
  • ? Maksymilian Wolski – klasa 1TI