Popularny post Gieneq Napisano Luty 11, 2021 Popularny post Udostępnij Napisano Luty 11, 2021 Postanowiłem napisać, krótki wstęp do programowania Raspberry Pi Pico z użyciem Pythona i IDE PyCharm, aby ułatwić wejście w temat rosnącej liczbie początkujących użytkowników RPi Pico. Na tę chwilę plugin do PyCharma nie wspiera płytki Raspberry Pi Pico, stąd nie ma prostego sposobu na używanie modułu rp2, lecz niebawem może się to zmienić. Artykuł ten jest dla tych, którzy chcą poznać możliwości nowej płytki Raspberry Pi Pico i do programowania zamierzają wykorzystać język MicroPython. Choć środowisko Thonny rekomendowane przez fundację świetnie się do tego zadania nadaje, to są jeszcze inne możliwości – jedną z nich jest IDE PyCharm od JetBrains, który posiada chociażby lepszą podpowiedź składni. Wymagane programy Zaczynamy od pobrania: interpretera Pythona wersja 3.x (11.02.2021 wersja 3.9), programu PyCharm Community (11.02.2021 wersja 2020.3.3), wsadu do RPi Pico (zakładka Getting started -> zielony przycisk Download UF2 file). Będąc na stornie Raspberry zauważymy na pewno animację jak należy załadować plik aby na RPi Pico, aby uruchomić interpreter MicroPythona. Streszczając należy zrobić tak: wcisnąć i przytrzymać przycisk Bootsel na płytce RPi Pico podłączyć płytkę do komputera (płytka RPi Pico będzie widoczna jako nowe pamięć masowa), skopiować/przeciągnąć i upuścić plik wsadowy z rozszerzeniem uf2. Po tej operacji RPi pamięć masowa odłączy się i od teraz możemy cieszyć się interpreterem MicroPythona! Wchodzimy w menadżer urządzeń: prawy przyciskiem myszy klikamy flagę Start -> Menadżer urządzeń -> Porty (COM i LPT). W moim przypadku jest to COM4: MicroPython REPL Możemy od razu przetestować działanie REPL (Read Evaluate Print Loop). Jest to interaktywny sposób komunikacji z interpreterem. Polecenia i odpowiedzi wysyłane są przez UART. Otwieramy program Putty, wybieramy Serial na porcie 4, ustawiamy BAUD na rekomendowaną wartość 115200 (inna też zadziała) i odpalamy sesję. Czarno... błąd? Nie, znak zachęty został wysłany wcześniej i go nie widzimy. Wystarczy wpisać cokolwiek i pojawi się pierwsza linia. Można też użyć skrót Ctrl-D, który wykona programowy restart. MicroPython v1.14 on 2021-02-05; Raspberry Pi Pico with RP2040 Type "help()" for more information. >>> Skrót Ctrl-D służy do programowego restartu, a skrót Ctrl-C do przerwania programu. Widzimy znak zachęty >>>, możemy wpisać kilka poleceń żeby sprawdzić jak to działa: Warto oczywiście sprawdzić co znajdziemy w pomocy: >>> help() Welcome to MicroPython! For online help please visit https://micropython.org/help/. For access to the hardware use the 'machine' module. RP2 specific commands are in the 'rp2' module. Quick overview of some objects: machine.Pin(pin) -- get a pin, eg machine.Pin(0) machine.Pin(pin, m, [p]) -- get a pin and configure it for IO mode m, pull mode p methods: init(..), value([v]), high(), low(), irq(handler) machine.ADC(pin) -- make an analog object from a pin methods: read_u16() machine.PWM(pin) -- make a PWM object from a pin methods: deinit(), freq([f]), duty_u16([d]), duty_ns([d]) machine.I2C(id) -- create an I2C object (id=0,1) methods: readfrom(addr, buf, stop=True), writeto(addr, buf, stop=True) readfrom_mem(addr, memaddr, arg), writeto_mem(addr, memaddr, arg) machine.SPI(id, baudrate=1000000) -- create an SPI object (id=0,1) methods: read(nbytes, write=0x00), write(buf), write_readinto(wr_buf, rd_buf) machine.Timer(freq, callback) -- create a software timer object eg: machine.Timer(freq=1, callback=lambda t:print(t)) Pins are numbered 0-29, and 26-29 have ADC capabilities Pin IO modes are: Pin.IN, Pin.OUT, Pin.ALT Pin pull modes are: Pin.PULL_UP, Pin.PULL_DOWN Useful control commands: CTRL-C -- interrupt a running program CTRL-D -- on a blank line, do a soft reset of the board CTRL-E -- on a blank line, enter paste mode For further help on a specific object, type help(obj) For a list of available modules, type help('modules') PyCharm i plugin MicroPythona Instalujemy teraz Pythona i PyCharma. Po tym otwieramy PyCharma i widząc Ekran powitalny przechodzimy do zakładki Plugins i szukamy wtyczki do MicroPythona: Instalujemy, zamykamy i tworzymy nowy projekt – tu nie przejmujemy się dodatkowym interpreterem zwykłego Pythona, tak musi być. Wpisujemy nazwę i idziemy dalej: Teraz trzeba wpisać informację o porcie COM, na którym widoczna jest płytka. W tym celu idziemy do Menu -> File -> Settings... Wybieramy port COM4 i ustawiamy płytkę. Tu niestety nie ma jeszcze RPi Pico, ale płytka Pyboard też się nada. Klikamy OK, wracamy do edytora. Na górze pod zakładką z plikiem main.py pojawi się najpewniej ostrzeżenie o brakujących pakietach. Instalujemy, czekamy i po chwili w dolnym prawym narożniku środowiska pojawi się informacja o zakończonym pobieraniu. Wszystko gotowe! Sprawdźmy jak działa REPL. Z menu wybieramy Tools -> MicroPython. Mamy tu do wyboru 2 opcje: uruchomienie REPL, usuniecie wszystkich plików z urządzenia. Usunięcie wszystkich plików może przydać się, gdy nagromadzi się nam sporo skryptów Pythona lub dokonamy większej refaktoryzacji - aby nie szukać poszczególnych zmian można wymazać całość i wgrać na nowo. Ważna uwaga: pamięć masowa, którą widzimy po podłączeniu RPi Pico z wciśniętym Bootsel nie zawiera plików skryptów – nie należy wrzucać tam plików .py, bo będzie trzeba wgrać na nowo interpreter. Pliki w MicroPythonie Jak zatem mieć wgląd w system plików? Tu trzeba przyznać, że środowisko Thonny ma to ładnie zorganizowane. Przy tworzeniu nowego pliku jesteśmy pytani gdzie to zapisać i można coś otworzyć, poklikać jak w eksplorerze: Ale w PyCharmie też się da 🙂 Wybieramy z listy narzędzi otwarcie REPL i na dole ekranu przełączy się zakładka na Terminal i zobaczymy znak zachęty. Jeżeli coś będzie nie tak, najpewniej mamy otwartą inną sesję na tym samym porcie COM. Jednocześnie może być otwarta tylko jedna sesja! Tyczy się to też wgrywania plików. Na początek dodajmy moduł os (Operating System) odpowiedzialny za zarządzanie systemem plików. import os Następnie sprawdźmy co nasz system plików zawiera poleceniem: os.listdir() Uzyskamy taki wynik: Czysto, a czego się spodziewać jak nic jeszcze nie wgraliśmy? Zamykamy sesję krzyżykiem obok zakładki nad oknem terminala Local (2) ×, ewentualnie używając skrót Ctrl-] zasugerowany na wstępie przed znakiem zachęty. Hello world Wgramy zatem nieśmiertelny przykład i zobaczmy jak to jest widoczne. Najpewniej mamy już przygotowany plik main.py. Czyścimy go Ctrl-A + Delete i wklejamy przykład: from machine import Pin from time import sleep builtin_led = Pin(25, Pin.OUT) while True: builtin_led.value(1) sleep(1) builtin_led.value(0) sleep(1) Zapis Ctrl-S i wgrywamy, ale to zaraz. Za pierwszym razem potrzebny jest dodatkowy krok. Po prawej stronie w widoku projektu znajdujemy plik main.py, klikamy na niego prawym przyciskiem myszy i z rozwijanej listy wybieramy Modify Run Configuration... Otworzy się okno w którym powinna widnieć nazwa konfiguracji: Flash main.py i ścieżka do pliku main.py. Klikamy OK i gotowe. Od teraz kliknięcie zielonego trójkąta zamiast uruchomić skrypt w interpreterze Pythona, zapisze go na płytce RPi Pico. Nie tylko plik main.py, każdy inny też. Klikamy zatem trójkąt i wbudowana zielona dioda powinna zacząć migać! Wiele plików Sprawdźmy jak działa dodawanie innych plików. Utwórzmy plik w obrębie projektu, nazwijmy go second.py: Wybranie zielonego trójkąta nie spowoduje wgranie pliku second.py, lecz tego który ostatnio wybraliśmy (main.py). Klikamy prawym przyciskiem myszy na plik second.py i wgrywamy. Można jednak zrobić to inaczej... Jeżeli wiemy, że często zmieniamy różne pliki, możemy wybrać do wgrania cały katalog. Zmieniamy więc w konfiguracji ścieżkę. W moim przypadku jest to: C:/Users/Lenovo/PycharmProjects/RPi_Pico_start/ W ten sposób po wybraniu zielonego trójkąta w logu Run zobaczymy wgrane 2 pliki: Connecting to COM4 Uploading files: 0% (0/2) C:\Users\Lenovo\PycharmProjects\RPi_Pico_start\main.py -> main.py Uploading files: 50% (1/2) C:\Users\Lenovo\PycharmProjects\RPi_Pico_start\second.py -> second.py Uploading files: 100% (2/2) Soft reboot Dioda dalej miga w swoim tempie – przy wielu plikach otwarty zostanie plik wejściowy main.py. Przejdźmy teraz do REPL aby zobaczyć co jest w systemie plików: >>> import os >>> os.listdir() ['main.py', 'second.py'] >>> Są 2 pliki. Wpiszmy polecenie sprawdzające wielkość jednego z nich: >>> os.stat('main.py') (32768, 0, 0, 0, 0, 0, 176, 1609460138, 1609460138, 1609460138) >>> 4 pozycja od końca - 176 B tyle samo co w pliku wgranym z PyCharma. Ctrl-] i zamykamy REPL. UART print() W Arduino bardzo pomocną opcją debugowania jest wysyłanie tekstu na port szeregowy. Tu też jest taka możliwość. Dodajmy 2 linie odpowiedzialne za wypisywanie tekstu. Kod będzie wyglądał tak: from machine import Pin from time import sleep builtin_led = Pin(25, Pin.OUT) print("Hello from Pico") while True: builtin_led.value(1) sleep(1) builtin_led.value(0) sleep(1) print("blink...") Wgrywamy (niekoniecznie całą zawartość katalogu). Na port COM4 będą wypisywane informacje, możemy zatem albo skorzystać z programu typu Putty w którym zobaczymy aktualnie wykonywany kod, albo skorzystać z REPL PyCharma. Tylko REPL służy nie do tego, więc po otwarciu zobaczymy błąd. Ale szybki restart Ctrl-D i gotowe! MicroPython v1.14 on 2021-02-02; Raspberry Pi Pico with RP2040 Type "help()" for more information. >>> MPY: soft reboot Hello from Pico blink... blink... Zaletą Putty jest możliwość przechodzenia pomiędzy REPL i wykonywanym skryptem. Ctrl-C zatrzyma wykonywanie i przejdzie do REPL, Ctrl-D uruchomi skrypt na nowo poprzez programowy restart (uruchomienie domyślnego main.py). Warto też zauważyć, że wszystkich tych komplikacji nie doświadczymy w rekomendowanym środowisku Thonny – komunikacja z programem jest tam naprawdę bezproblemowa. Zakończenie W artykule przedstawiono jak przygotować IDE PyCharm do Pracy z Raspberry Pi Pico. Program PyCharm dostarcza wiele bardziej profesjonalnych narzędzi takich jak podpowiedź składni, lecz przez to że nie jest to dedykowane narzędzie to na pewno spotkamy kilka utrudnień. Możliwe, że da się temu jakoś zaradzić poprzez ustawienia konfiguracji i dodatkowe wtyczki. Niemniej programować się da i zależnie od upodobań może to być wygodniejsze. Warto też śledzić aktywność w obrębie wtyczki do MicroPythona, ostatnia wersja pojawiła się w grudniu 2020 roku i jak na razie nie ma o tym informacji. Choć niektóre funkcje da się zaprogramować, to w pewnym momencie kompatybilność MicroPythona dla płytek pyboard z RPi Pico kończy się – brak modułu rp2 skutecznie odetnie wiele nowych funkcji. Zatem pozostaje czekać na rozwój społeczności, lub drążenie tematu we własnym zakresie. 8 Cytuj Link do komentarza Share on other sites More sharing options...
Popularny post Gieneq Luty 16, 2021 Autor tematu Popularny post Udostępnij Luty 16, 2021 Ostatnio natrafiłem na ten kanał, wygląda jak kompletny noname ale treść jest bardzo dobra. Filmik krok po kroku jak przygotować środowisko do programowania, tym razem w C z VS Code. Poza tym przybywa nagrań objaśniających programowanie Pico. 4 Cytuj Link do komentarza Share on other sites More sharing options...
TTX2022 Marzec 11, 2022 Udostępnij Marzec 11, 2022 Jaka jest nazwa pliku startowego 'main.py'? Nadanie innych nazw plików po zabraniu zasilania i po nowym starcie Pico nie uruchamia programu. W VSC można podglądać pliki zawarte w Pico, czy tylko opcja z konsoli? Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!