Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Rapsberry PI Pico RP2040, cóż to za zwierzę?

ArturAVS 06 Jan 2023 11:08 3600 54
Computer Controls
  • Rapsberry PI Pico RP2040, cóż to za zwierzę?
    Popularna "malinka" (Rapsberry z ang. malina) od Rapsberry Pi Foundations jako jedna z pierwszych otwarła drogę dla komputerów typu SBC (Single Board Computer - komputer na jednej płytce drukowanej) pod domowe strzechy. Po części zawdzięczała swą popularność dającymi duże możliwości zasobami sprzętowymi oraz dedykowanym systemem operacyjnym opartym o jądro Linuxa. Drugim aspektem była niska cena. Powstało mnóstwo akcesoriów rozszerzających możliwości "malinki" w postaci dodatkowych modułów przypominających nieco shieldy znane z Arduino. RPi zauważając popularność swego tworu nie zasypiało gruszek w popiele i pojawiały się kolejne wersje SBC dające coraz to większe zasoby a jednak cechujące się nadal niską ceną. Czasami jednak potrzeba małego komputera o dużych możliwościach dla bardzo początkujących, w ten sposób w oparciu o RP2040 powstało Rapsberry Pi Pico.





    Rapsberry PI Pico RP2040, cóż to za zwierzę?



    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Moduł wyglądem przypomina nieco przerośnięte ArduinoNano czy BluePill, używa jednak kontrolera RP2040 zaprojektowanego przez RPi.


    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Moduł przy wymiarach około 21x51mm jest stosunkowo luźno obsadzony, ale przyjrzyjmy się schematowi;

    Rapsberry Pi Pico schemat ideowy

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    W zasadzie poza układem przetwornicy zapewniającej zasilanie oraz pamięci flash i samego RP2040 praktycznie nic tu nie ma! W czym zatem tkwi siła Pico?


    RT6150B-33 przetwornica buck-bost

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Rapsberry PI Pico RP2040, cóż to za zwierzę?



    Dzięki zastosowaniu układu przetwornicy RT6150B-33 możemy Pico Pi zasilać napięciem od 1,5 do 5,5V co daje duże możliwości w budowie przenośnych urządzeń. Pamięć NAND flash W25Q16 pełni rolę nośnika oprogramowania użytkownika co daje 2MB "przestrzeni dyskowej".
    No dobrze, ale co tak naprawdę kryje się pod nazwą RP2040? Tu przychodzi z pomocą strona RPi;


    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Zaraz zaraz, dwa rdzenie? Oczywiście jest to prawda! Poza dwoma rdzeniami ARM Cortex M0+ do dyspozycji mamy pełny zestaw układów peryferyjnych;


    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Co dostajemy do dyspozycji?

    • Rdzeń ARM Cortex-M0+ Dual-Core 133 MHz
    • Pamięć Flash na module 2 MB
    • Złącze 40-pin, 23 GPIO cyfrowe oraz 3 piny ADC
    • Interfejsy,2x UART, 2x I2C, 2x SPI, oraz aż do 16 kanałów PWM!
    • Logika I/O to 3,3V niestety (o tym trochę później)


    Oraz wiele wiele innych, tu zapraszam do szczegółowego zbadania noty katalogowej RP2040. Możemy nieco się zdziwić. Poniżej krótkie porównanie Pico pi vs Arduino UNO/Nano.


    Rapsberry PI Pico RP2040, cóż to za zwierzę?



    Pinout Pico Pi oraz funkcje wyprowadzeń

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Jak zacząć pracę z Pico Pi? Dla mniej zaawansowanych programistów oraz nowicjuszy (tak jak ja :D) dobrym startem może być skorzystanie z Arduino IDE. Biblioteki oraz definicje płytek są dostępne, tu pod nazwą Arduino Mbed OS RP2040 Boards;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Pierwszy sketch czyli przykładowy blink (miganie LED) i Arduino IDE wyrzuca błąd;


    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Musimy uruchomić bootloader RP2040, aby to zrobić trzeba przytrzymać wciśnięty przycisk BOOTSEL w module i podłączyć USB. Dla mnie takie rozwiązanie jest nieco mało komfortowe gdyż trudno jest mi taką operację przeprowadzić jedną dłonią. Nie mniej po takim podłączeniu moduł zgłasza się w systemie jako dysk przenośny;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Dysk zawiera link do strony z dokumentacją Rapsberry oraz plik tekstowy z wersją bootloadera;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Tu jednak powstał mały problem, na warsztatowym PC mam Arduino IDE w wersji 1.8.19 oraz Win 7 32, problemem są sterowniki CDC. System wykrywał Pico jedynie jako zewnętrzny dysk (po wciśnięciu i przytrzymaniu przycisku oraz podłączeniu do USB) oraz sygnalizował w Menadżerze Urządzeń nowe urządzenia ale bez sterowników (wykrzyknik). Nawet po zainstalowaniu sterownika z tej strony https://learn.adafruit.com/welcome-to-circuitpython/windows-7-and-8-1-drivers, Arduino IDE nie "widziało" Pico Pi. Obszedłem ten problem w może mało wygodny lecz skuteczny sposób :D. Po prostu skopiowałem skompilowany sketch z folderu tymczasowego (tam gdzie Arduino IDE przechowuje wyniki kompilacji) bezpośrednio do folderu głównego Pico;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Tu jeszcze pewne wyjaśnienie, kompilator tworzy kilka plików o różnych rozszerzeniach np. .hex dla AVR. Dla Pico gotowym plikiem jest ten z rozszerzeniem .uf2, bootloader uruchamia ten plik automatycznie po włączeniu zasilania;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Praktycznie choć są dwa pliki z takim rozszerzeniem to oba działają identycznie, a przynajmniej ja nie zauważyłem żadnych różnic. Na domowym laptopie z Win 10 64 oraz Arduino IDE w wersji 2.01 wszystko zadziałało "od strzała", dowodem jest poniższy film;





    Tu dochodzimy do tego, dlaczego napisałem że RP2040 niestety dysponuje logiką 3,3V. Zajmuję się głównie techniką cyfrową z logiką TTL czyli 5V i poza kilkoma różnymi wyświetlaczami TFT nie dysponuję żadnymi peryferiami dającymi się bezpośrednio (bez konwertera poziomów) podłączyć do Pico. Pierwsze próby z wykorzystaniem TFT 320x240 ze sterownikiem ILI9341 spełzły na niczym, Arduino IDE mimo zainstalowanych odpowiednich bibliotek odmawiało współpracy. Tu nie jestem do końca przekonany czy to moje małe z nim doświadczenie czy po prostu jest to jeszcze niedopracowane dla Pico w tym środowisku.

    Zaraz, przecież wcale nie muszę korzystać z Arduino IDE. RP2040 można programować w C, C++ (bardzo słabo znam) oraz w Pythonie. Ale co to jest ten Python?

    Cytując za Wikipedią;
    Quote:
    Python – język programowania wysokiego poziomu ogólnego przeznaczenia, o rozbudowanym pakiecie bibliotek standardowych, którego ideą przewodnią jest czytelność i klarowność kodu źródłowego. Jego składnia cechuje się przejrzystością i zwięzłością.




    Oswajamy węża, czyli pierwsze kroki

    Rapsberry PI Pico RP2040, cóż to za zwierzę?

    Grafika zaczerpnięta ze strony Adafruit

    Python występuje w kilku wersjach zależnie od zastosowania, jedną z wersji jest CircuitPython który jest głównie przeznaczony do obsługi sprzętu. Jednym z darmowych edytorów/IDE jest Thonny, którego to postanowiłem zainstalować. Samo jednak zainstalowanie nic nam nie da, musimy wgrać również jego "jądro" do Pi Pico. Aby to zrobić kopiujemy plik z "jądrem" do Pico a wtedy po uruchomieniu Thonny i podłączeniu Pico do USB zgłasza się "Wąż" na nasze rozkazy :D;


    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Oczywiście język interfejsu możemy wybrać;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Dobrze jest też ustawić autodetekcję podłączonego Pico;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Jądro Ciruit Python'a możemy pobrać stąd; https://circuitpython.org/board/raspberry_pi_pico/ a potrzebne biblioteki są tu; https://circuitpython.org/libraries. Szukając przykładowego programu korzystającego z wyświetlacza trafiłem na emulator on-line;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    https://wokwi.com/ , https://wokwi.com/projects/309427357921313345

    Po zbudowaniu na płytce stykowej układu testowego z wyświetlaczem OLED 128x32 opartym o kontroler SSD1306 i uruchomieniu programu jest sukces :D;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Tu takie drobne wyjaśnienie, program uruchamiamy i zatrzymujemy niejako zdalnie. Program nie będzie uruchamiał się automatycznie po włączeniu zasilania, aby to nastąpiło należy zmienić nazwę pliku zawierającego nasz program w katalogu głównym na code.py lub main.py.
    Domyślnie plik code.py zawiera tylko to; print("Hello World!"). Jeśli zmienimy nazwę naszego programu to wystartuje on automatycznie i będzie działać w pętli i o ile nie umieścimy w programie jakiejś funkcji zatrzymującej go (np. przez dodatkowy przycisk czy inny warunek) to stracimy dostęp do Pico z poziomu edytora Pythona na komputerze. Robimy tzw. bricka czyli cegiełkę. Tu nawet wgranie za pomocą bootloadera ponownie pliku .uf2 z jądrem Pythona czy skompilowanego w Arduino IDE szkicu nic nam nie da. Trzeba wgrać "czyściciela" pamięci flash, o czym wspomina dokumentacja Pico Pi;
    Rapsberry PI Pico RP2040, cóż to za zwierzę?



    Po prostu musimy wgrać plik flash_nuke.uf2, po tym zabiegu mamy czystą pamięć flash i możemy kontynuować nasze zabawy. Tu możemy być spokojni o uszkodzenie RP2040 w sposób programowy, sam bootloader jest zapisany w pamięci ROM i o ile nie uszkodziliśmy elektrycznie układu to nic złego się nie stanie :D. Pewną ciekawą alternatywą dla początkujących i mniej wymagających użytkowników może być użycie MicroBlocks czyli tworzenie programu w sposób graficzny przy pomocy zdefiniowanych klocków.

    Widok edytora MicroBlocks z programem dla dziesięciu mrugnięć wbudowanego w Pico Pi LED

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Moduł Pico Pi uważam za świetną alternatywę dla innych płytek rozwojowych, duża ilość GPIO, stosunkowo szybki przetwornik 12-to bitowy ADC (~500ksps) w połączeniu z dwoma rdzeniami oraz całkiem przyzwoita ilość RAM daje bardzo duże możliwości. Rapsberry Pico Pi występuje w kilku wersjach różniących się nieco designem PCB oraz dodatkowo komunikacją WiFi;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Wersje od lewej;

    • Rapsberry Pico Pi (prezentowana w tekście) - RP2040 na płytce ze złączami umożliwiającymi bezpośrednie lutowanie lub użycie goldpin
    • Rapsberry Pico Pi H - jak wyżej z fabrycznie wlutowanymi goldpinami
    • Rapsberry Pico Pi W - tak jak Pico Pi + komunikacja WiFi oparta o układ CYW43439
    • Rapsberry Pico Pi WH - tak jak Pico Pi W z fabrycznie wlutowanymi goldpinami


    Wersje z WiFi różnią się sekcją zasilania ze względu na dodatkowy pobór mocy przez kontroler sieci bezprzewodowej, zastąpiono RT6150 układem RT6154. Co ciekawe Rapsberry udostępnia dokumentację dla płytki rozszerzeń pod nazwą VGA Carrier Board dla KiCad która dysponuje dwoma wyjściami DAC (jedno PWM a drugie z przetwornika I2S/PCM) oraz wyjściem VGA a także slotem kart mikro SD, poniżej rendering płytki na moim warsztatowym PC;

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Bardzo spodobało mi się Pico Pi :D Pozostaje zdobyć jakieś peryferia i uczyć się uczyć... Kilka pomysłów na zastosowanie mam ale tu bez wiedzy oraz umiejętności trochę czasu może to zająć...

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    ArturAVS
    Moderator HP/Truck/Electric
    Offline 
    Z wykształcenia technik RTV, z zamiłowania elektronik/elektrotechnik konstruktor.
    Has specialization in: kf, audio, elektronika truck, nietypowe urządzenia
    ArturAVS wrote 18052 posts with rating 4442, helped 1713 times. Live in city Grajewo. Been with us since 2005 year.
  • Computer Controls
  • #2
    khoam
    Level 41  
    Moim zdaniem, jest to w tej chwili najbardziej "przyjazna" płytka z ARM dla początkującego. Cenowo też nie "zabija". Jak ktoś będzie chciał pisać programy bezpośrednio w C/C++, to dostępne SDK do RP2040 jest też moim zdaniem dość łatwe do opanowania, a przede wszystkim dobrze udokumentowane.

    Są też dostępne wersje RP2040-Zero w mniejszych pcb (podobny koszt), które mogą znaleźć zastosowanie w budowie własnych urządzeń IoT.

    Rapsberry PI Pico RP2040, cóż to za zwierzę?
  • #3
    TechEkspert
    Editor
    Co do VGA Carrier Board jest to wygodne rozwiązanie,
    natomiast poniżej RP2040 z rezystorami na płytce stykowej aby wygenerować sygnał VGA i uruchomić Dooma :)





    W wersji PRO ;) 3 szt RP2040 na PCB generujące sygnały VGA na osobne monitory
    i trzy osoby grają na tym sieciowo w Dooma :)



  • #4
    tmf
    Moderator of Microcontroller designs
    Bawię się tym od jakiegoś czasu i mam takie mieszane odczucia. Płytka ok, świetna dokumentacja, ale...
    - instalacja środowiska (nie arduino IDE, ale czegoś powiedzmy bardziej "profesjonalnego") - tragedia. Nie ma gotowego instalatora wszystkiego co potrzeba. Dla początkującego to nie za fajne doświadczenie.
    - jeśli ktoś myśli o sprzętowym debugowaniu to owszem, jest pico probe, ale.. znowu koszmar konfiguracyjno/instalacyjny - brak sensownego IDE, które to po prostu robi od strzału.
    Poza tym płytka ok, tania, prosta, duże możliwości, aczkolwiek chińskie klony są lepsze - chociażby banalnie prosta sprawa - wtyczka USB-C o wiele wygodniejsza niż micro-USB z oryginału. Co prawda można sobie zadać pytanie dla kogo to jest, bo jeśli zrobimy fair porównanie pico vs. ESP32 to jednak ESP32 zdecydowanie wygrywa - wady ma te same, ale większe możliwości :) Trochę nie czaję wersji pico z WiFi, bo raz, że bezprzewodówka w porównaniu z ESP wypada nader skromnie, to jeszcze jest to dodatkowy moduł, a w ESP mamy all-in-one. Dwa rdzenie też nie za bardzo czaję po co - dla początkującego to strzał w kolano i pewnie 100% projektów będzie bazować na jednym., dla osoby bardziej zaawansowanej znowu ESP32...
    Na duży plus to PIO - naprawdę cuda można na tym zrobić. Oczywiście część mankamentów da się łatwo poprawić, np. brak IDE (w sensie brak IDE out of the box) z porządnym debugerem. Czekam aż producent coś z tym zrobi, aczkolwiek pewnie się nie doczekam :)
  • #5
    khoam
    Level 41  
    tmf wrote:
    Dwa rdzenie też nie za bardzo czaję po co - dla początkującego to strzał w kolano i pewnie 100% projektów będzie bazować na jednym.

    Biblioteki Arduino Core dla RP2040 korzystają z dwóch rdzeni oraz z FreeRTOS. Podobnie, z dobrodziejstwa dwóch rdzeni korzysta MicroPython i CircuitPython.

    tmf wrote:
    Oczywiście część mankamentów da się łatwo poprawić, np. brak IDE (w sensie brak IDE out of the box) z porządnym debugerem. Czekam aż producent coś z tym zrobi, aczkolwiek pewnie się nie doczekam

    Nie ma takiej potrzeby :) Jest już Visual Studio Code, jest PlatformIO dla VSCode (zapewnia instalację i aktualizację toolchain). Z porządnym debuggerem (również dla Arduino), statyczną analizą kodu, unit testing, intellisense, integracją z cmake, git, github, doxygen ... i wiele innych mniej lub bardziej przydatnych rzeczy. Bardzo podobnie, jak dla ESP32 :)

    Rapsberry PI Pico RP2040, cóż to za zwierzę?
  • Computer Controls
  • #6
    tmf
    Moderator of Microcontroller designs
    khoam wrote:
    Nie ma takiej potrzeby Jest już Visual Studio Code, jest PlatformIO dla VSCode. Z porządnym debuggerem (również dla Arduino), statyczną analizą kodu, unit testing, intellisense, integracją z cmake, git, github, doxygen ... i wiele innych mniej lub bardziej przydatnych rzeczy. Bardzo podobnie, jak dla ESP32

    Wiem, używam tego, ale początkowa konfiguracja to koszmarek, a i dalej tak sobie.
    khoam wrote:
    Biblioteki Arduino Core dla RP2040 korzystają z dwóch rdzeni oraz z FreeRTOS. Podobnie, z dobrodziejstwa dwóch rdzeni korzysta MicroPython i CircuitPython.

    Tak, ale ja piszę o projekcie użytkownika. To, że są biblioteki/programy, które z tego korzystają to jedno, ale prosta aplikacja sama się magicznie wielordzeniowa nie zrobi. Poza tym, przy tak małych MCU jednak jest większy sens pracować bliżej sprzętu. O ile RTOS ok, to mnie koncepcja Arduino odrzuca, bo od razu kastruje użyty MCU do CPU, czyli odrzuca to co w MCU jest najsilniejszą stroną - peryferia. Jasne, są "biblioteki", które korzystają z peryferii, jednak nie da się zrobić 100% abstrakcji, która jednocześnie da użytkownikowi pełne profity z działania bezpośrednio na sprzęcie.
  • #7
    khoam
    Level 41  
    tmf wrote:
    Poza tym, przy tak małych MCU jednak jest większy sens pracować bliżej sprzętu. O ile RTOS ok, to mnie koncepcja Arduino odrzuca, bo od razu kastruje użyty MCU do CPU, czyli odrzuca to co w MCU jest najsilniejszą stroną - peryferia.

    Nikt tego programiście nie zabrania, nawet jak korzysta z Arduino Core. Nie ma też obowiązku korzystania z arduinowej biblioteki np. do obsługi wyświetlacza, jeżeli koniecznie chce użyć własnej, a reszta może być "arduinowe". Takie dyskusje nie mają sensu. Nie można zakładać góry, że jak ktoś korzysta z frameworka arduinowego, to będzie tylko i wyłącznie korzystał ze "złych" arduinowych bibliotek i produkował "złe" programy. Można napisać program w środowisku Arduino, który poza setup() nie będzie korzystał z żadnych dodatkowych arduinowych "udogodnień" i będzie odwoływał się bezpośrednio do CMSIS z pominięciem nawet Pico SDK.
  • #8
    ArturAVS
    Moderator HP/Truck/Electric
    khoam wrote:
    Moim zdaniem, jest to w tej chwili najbardziej "przyjazna" płytka z ARM dla początkującego. Cenowo też nie "zabija".

    Dlatego właśnie zamierzam nabyć w najbliższym czasie jeszcze ze dwa takie moduły.
    TechEkspert wrote:
    wygenerować sygnał VGA i uruchomić Dooma

    O! Faktycznie nieźle wygląda. Mnie przy poszukiwaniach przykładów użycia interesowały bardziej przyziemne rzeczy np. https://github.com/ArjanteMarvelde/uSDR-pico. Skoro dało się obróbkę FFT zrobić na lekko przetaktowanym Arduino Nano to Pi aż się prosi w tym zastosowaniu. Praktycznie oprócz kilku elementów wszystko mam do budowy tego TRX, fajnie podzielono funkcje. Jeden rdzeń robi za DSP dla odbioru/nadawania a drugi sterowaniem i wyświetlaniem, choć bardziej bym tu widział jakiś TFT np. 320x240 niż alfanumeryczny 2x16.
    tmf wrote:
    Bawię się tym od jakiegoś czasu i mam takie mieszane odczucia. Płytka ok, świetna dokumentacja, ale...

    Łyżka dziegciu też musi być, ale masz rację Tomek. Nawet z Arduino nie jest łatwo zacząć bardziej zaawansowaną zabawę. ESP32 mimo również dwóch rdzeni ma małą ilość GPIO, gdyż dużo z nich nie może być wykorzystane dowolnie. Tu PIO daje niesamowitą przewagę. Czego mi brakuje, to również zintegrowanego IDE. W ogóle nie rozumiem tych kombinacji z jakimkolwiek IDE, dziesiątki plików konfiguracyjnych to po prostu dżungla do przejścia. Może to wynika z mego małego doświadczenia w programowaniu (a szczególnie C, C++), ale uważam to za zbędną komplikację.
  • #9
    khoam
    Level 41  
    ArturAVS wrote:
    ESP32 mimo również dwóch rdzeni ma małą ilość GPIO, gdyż dużo z nich nie może być wykorzystane dowolnie. Tu PIO daje niesamowitą przewagę.

    Zamieściłeś ładną tabelkę porównującą Pico z Nano, więc dla zaspokojenia Twojego niezadowolenia z ESP32 zamieszczam poniżej inną :)

    Rapsberry PI Pico RP2040, cóż to za zwierzę?

    Ceny płytek rozwojowych z ESP32 zaczynają się od ok. 15 PLN na popularnym, chińskim portalu.
  • #10
    tmf
    Moderator of Microcontroller designs
    khoam wrote:
    Nie ma też obowiązku korzystania z arduinowej biblioteki np. do obsługi wyświetlacza, jeżeli koniecznie chce użyć własnej, a reszta może być "arduinowe". Takie dyskusje nie mają sensu. Nie można zakładać góry, że jak ktoś korzysta z frameworka arduinowego, to będzie tylko i wyłącznie korzystał ze "złych" arduinowych bibliotek i produkował "złe" programy.

    Nigdzie tak nie napisałem. Jednak patrząc na statystyki to jednak większość osób poza to co oferuje framework się nie wychyla - niestety.
    Z tego samego powodu, statystycznego, zakładam, że dwa rdzenie to raczej nie dla początkujących. Oczywiście, świetnie, że Pico jest, mam parę takich płytek, na początku miałem trochę większy względem nich entuzjazm, ale całkiem on jeszcze nie opadł. Gdyby było do tego wygodne środowisko, w stylu klikam install.exe i mam za te kilka minut wszystko skonfigurowane, cacy i piękne, to w ogóle pico byłoby fajnym kandydatem na podmiankę AVR. A jak się mam bawić niemalże z konsoli, jak za starych dobrych czasów hackowania po nocach, to już wolę ESP32 - z grubsza to samo, tylko lepiej :) Na plus pico dużo bardzo fajnych przykładów.
  • #11
    khoam
    Level 41  
    tmf wrote:
    A jak się mam bawić niemalże z konsoli, jak za starych dobrych czasów hackowania po nocach, to już wolę ESP32 - z grubsza to samo, tylko lepiej

    Tego zupełnie nie rozumiem tzn. tej konsoli. Chyba piszemy o zupełnie różnych MCU :)
  • #12
    tmf
    Moderator of Microcontroller designs
    khoam wrote:
    Tego zupełnie nie rozumiem tzn. tej konsoli. Chyba piszemy o zupełnie różnych MCU

    Piszę o instalowaniu narzędzi, pobieraniu SDK z gita, zabawie w konfigurację Visual Studio Code, flashowanie picoprobe odpuszczę, bo miło, że jest takie narzędzie za free, ale zaraz potem mamy znowu praktycznie z konsoli konfigurację debugera. Aha, to nieoficjalne narzędzie, które proponują nie do końca działa, tzn. np. może źle skonfigurować środowisko.
    Żeby nie było, że tak sobie wymyślam, wystarczy przejrzeć na YT poradniki jak to skonfigurować, albo strony z recepturą - włos się jeży. Chyba, że czegoś nie wiem, to chętnie poznam drogę na skróty.
  • #13
    LA72
    Level 40  
    Mała i pożyteczna "malinka", na której mam zrobiony interfejs do joya z Amigi/Atari.
    A stąd się o tym dowiedziałem.
    https://www.instructables.com/Retro-9-Pin-Joystick-to-USB-Converter/
  • #14
    khoam
    Level 41  
    tmf wrote:
    Żeby nie było, że tak sobie wymyślam, wystarczy przejrzeć na YT poradniki jak to skonfigurować, albo strony z recepturą - włos się jeży.

    Do poradników na YT mam alergię, a korzystałem po prostu z dokumentacji producenta ("Getting started with Raspberry Pi Pico"). Link
    Do tej pory nie sądziłem, że ta dokumentacja może wywoływać aż tak negatywne emocje.
  • #15
    tmf
    Moderator of Microcontroller designs
    khoam wrote:
    Do tej pory nie sądziłem, że ta dokumentacja może wywoływać aż tak negatywne emocje.

    Ok, może się źle wyraziłem. Nie negatywne, da się to przejść, ale... postaw się w roli osoby początkującej, która się dopiero uczy. Przyznasz, że nie wygląda to zachęcająco jeśli dostajesz kilkustronnicową instrukcję instalacji z magicznymi zaklęciami... Tak już tylko przy okazji dodam, że po instalacji czasami coś niestety nie działa i jest to frustrujące. Np, w Visual Studio Code masz cmake zamiast CMake, instalujesz pakiet zgodnie z instrukcją i nadal magicznie masz cmake, który nie działa. Dopiero potem okazuje się, że masz path nie teges... i tak można ciągnąć. Oczywiście po tym wszystkim to instalacja i konfiguracja GDB to już pikuś :)
    Po prostu uważam, że mając taki produkt, inwestując pewnie sporo w doskonałą dokumentację i przykłady, warto dodać wisienkę na torcie - czyli prosto instalowalne środowisko działające prosto z pudełka. Oczywiście jeśli myśli się o tym, aby pico było takim entry level dla osób wchodzących w elektronikę i programowanie MCU. Bo jeśli to ma być dla wyjadaczy to jasne, tak jak jest, jest ok. Tylko wyjadacze chyba zamiast inwestować czas w dual core CM0+, wejdą dla tej klasy projektów w coś poważniejszego.
    Druga dla mnie niezrozumiała decyzja projektowa, to w obliczu konkurencji jaką jest ESP8266 i ESP32, brak wbudowanej obsługi radia... a potem robimy wersję W z zewnętrznym modułem WiFi (i tylko WiFi) . Bardzo dziwna polityka. Ale to chyba trzeba zrozumieć mentalność pracowników dużej firmy. Podobnie zrobił Microchip - kupili Atmela, mieli doskonałe XMEGA, wypuścili refresha, czyli AVR Dx, które pod wieloma względami są super, ale różne zaawansowane bajery z XMEGA obcięli... czyli tak jakby nie chcieli osiągnąć zbyt dużego sukcesu, a może konkurencji dla innych swoich produktów?
  • #16
    khoam
    Level 41  
    tmf wrote:
    Oczywiście jeśli myśli się o tym, aby pico było takim entry level dla osób wchodzących w elektronikę i programowanie MCU.

    Moim zdaniem polityka tej firmy jest taka, aby tym "pierwszym" językiem dla początkujących był Python. Analogiczna sytuacja jest na standardowej "malince". Język C/C++ to już drugi poziom dla użytkowników bardziej ambitnych lub wymagających. To, że w przypadku RP2040 "wyszło" przy okazji Arduino to raczej dobrze niż źle.

    tmf wrote:
    Druga dla mnie niezrozumiała decyzja projektowa, to w obliczu konkurencji jaką jest ESP8266 i ESP32, brak wbudowanej obsługi radia... a potem robimy wersję W z zewnętrznym modułem WiFi (i tylko WiFi) .

    Też tego nie rozumiem, być może przyczyną był brak stosunkowo taniego SoC z ARM i WiFi na pokładzie. Co ciekawe, konkurencyjne produkty na bazie RP2040 mają też na pokładzie ESP32-C3 i te płytki dalej są atrakcyjne cenowo :)
  • #18
    ArturAVS
    Moderator HP/Truck/Electric
    TechEkspert wrote:
    Co do VGA Carrier Board jest to wygodne rozwiązanie

    Znalazłem takie coś; http://www.breatharian.eu/hw/picovga/index_en.html Wygląda ciekawie...

    Rapsberry PI Pico RP2040, cóż to za zwierzę?


    Płytkę Pico VGA mają tu; https://botland.com.pl/raspberry-pi-pico-hat-...rry-pi-pico-pimoroni-pim553-769894017180.html
  • #19
    Chivo
    Level 24  
    Też kupiłem płytkę Pico RP2040 przy okazji zakupów w Botland za 20 złotych bo jest tania. Wciąż leży w biurku i czeka na lepsze czasy. Najbardziej brakuje mi specjalistycznego środowiska IDE jak do AVR czy STM32 bo nie chcę się bawić w sztuczki z Arduino i podobnymi.
  • #20
    lopr_pol
    Level 29  
    Żeby to jeszcze wifi miało to by było fajne, a tak to za drogie.
  • #21
    ArturAVS
    Moderator HP/Truck/Electric
    W Botland Pico Pi 26,50 zł a Pico Pi W (z WiFi) 41,90 zł. Tu faktycznie ESP32 wygrywa cenowo, ESP32-WROOM-32UE w Soyter to ~17 zł. W zeszłym roku kupowałem dwie sztuki u nich.
    khoam wrote:
    Zamieściłeś ładną tabelkę porównującą Pico z Nano, więc dla zaspokojenia Twojego niezadowolenia z ESP32 zamieszczam poniżej inną

    Nie jestem niezadowolony, po prostu drażni mnie w ESP to że nie można prawie dowolnie korzystać z każdego GPIO.
  • #22
    tmf
    Moderator of Microcontroller designs
    ArturAVS wrote:
    W Botland Pico Pi 26,50 zł a Pico Pi W (z WiFi) 41,90 zł.

    Na ali można dostać po 13-15 zł. Polecam bo te płytki mają USB-C (oczywiście tylko gniazdko, ale jest to dużo wygodniejsze i solidniejsze) oraz opcjonalnie dodatki typu WS2812 i dodatkowy przycisk.Dodatkowo opcjonalnie większą pamięć zewnętrzną. Mam oryginały i klony i IMHO klony są lepsze.
  • #23
    ArturAVS
    Moderator HP/Truck/Electric
    tmf wrote:
    Dodatkowo opcjonalnie większą pamięć zewnętrzną.

    Wiesz Tomek, przyszło mi do głowy aby samego flash'a podmienić, ciekawe czy by poszło... Tak zamiast 2MB wstawić ze 4 lub 8 albo 16 :D? Mam do testów jeszcze jeden moduł z RP2040 z dodatkowymi peryferiami i fabrycznie wgranym CircuitPythonem, ale to temat na kolejny artykuł. Gdyby nie to że środowisko dla C/C++ zabiera tak dużo miejsca (którego nie mam za wiele na dyskach w swoich PC) to bym spróbował ugryźć "to ciacho" pod C właśnie. Samo czytanie instrukcji instalacji środowiska podnosi mi ciśnienie :-(. Wczoraj uruchomiłem pod Arduino takiego cosia;
    https://www.tomshardware.com/news/raspberry-pi-pico-audio-spectrum-visualizer Tylko z innym wyświetlaczem, ten który mam to 128x32, nie mniej sam program działa całkiem fajnie a testowałem z generatorem DDS.
  • #24
    tmf
    Moderator of Microcontroller designs
    ArturAVS wrote:
    ak zamiast 2MB wstawić ze 4 lub 8 albo 16 ?

    Oczywiście, pójdzie bez problemu. Chyńczycy takie sprzedają i działa.
    Ja pisałem, kiedyś się tym pobawię... na razie mi entuzjazm trochę opadł, ale płytka ciągle kusi, głównie przez to PIO.
  • #25
    ArturAVS
    Moderator HP/Truck/Electric
    tmf wrote:
    głównie przez to PIO

    No też mnie kusi w wiadomym związku z pewnym wyświetlaczem :D. Tylko te konwertery poziomów...
  • #26
    tmf
    Moderator of Microcontroller designs
    ArturAVS wrote:
    Wczoraj uruchomiłem pod Arduino takiego cosia;

    Tak przy okazji trochę OT, bo widzę, że cie analiza FFT kręci i chyba miałeś jakieś podejścia na AVR? To taka ciekawostka, kilka lat temu Chińczycy zrobili klona AVR i dodali coś od siebie, m.in. moduł obliczeniowy i wiele innych. To był klon ATMega328.
  • #27
    ArturAVS
    Moderator HP/Truck/Electric
    tmf wrote:
    widzę, że cie analiza FFT kręci i chyba miałeś jakieś podejścia na AVR?

    Nie tyle co "kręci" tylko chciałbym to praktycznie wykorzystać w analizatorze widma audio który dawałby sensowne pomiary i nie był tylko błyskotką na stole. AVRy są za cienkie tutaj (pasmo ADC, RAM), zrobienie tego w sposób analogowy to co najmniej dwadzieścia filtrów pasmowych (po 10 na kanał). Łatwiej to zrobić na mikrokontrolerze z odpowiednimi zasobami i programową analizą FFT.
  • #28
    khoam
    Level 41  
    ArturAVS wrote:
    Łatwiej to zrobić na mikrokontrolerze z odpowiednimi zasobami i programową analizą FFT.

    Espressif udostępnia bibliotekę ESP-DSP do tego celu, dla zmienno- i stałoprzecinkowych operacji. Spora część tego kodu jest napisana w asemblerze ;)
    Link
  • #29
    tmf
    Moderator of Microcontroller designs
    ArturAVS wrote:
    AVRy są za cienkie tutaj (pasmo ADC, RAM)

    Wiem, to tylko było jako ciekawostka. Aczkolwiek... przy wspomaganiu obliczeń przez te klony może z tego wyjść całkiem niezłe FFT (oczywiście jako hobbystyczne rzeźbienie, bo prościej użyć jakiegoś ESP, czy pico właśnie).
    Kiedyś popełniłem analizę na VS1003B - pewnie jeszcze pamiętacie - był taki dekoder mp3. Tak naprawdę to mały procesor DSP, ponieważ producent dał IDE i kompilator więc można napisać własny program. I jak na owe czasy był to naprawdę mocny procesor, który oprócz dekodowania mp3 mógł robić o wiele więcej, ja użyłem tego do dekodowania DTMF. Zresztą jak ktoś chce to dodałem to jako przykład do jednej z książek o XMEGA - można sobie pobrać za darmo. Przy okazji XMEGA mają świetny hardware i można było całą komunikację z VS zrobić sprzętowo z użyciem DMA i event system. Dlatego kręci mnie PIO z Pico, bo na tym pewnie też można niezłe cuda wyrzeźbić.
  • #30
    tzok
    Moderator of Cars
    Płytka bardzo fajna, ale ma jedną zasadniczą wadę - nie współpracuje z logiką 5V, a szkoda, bo byłaby idealnym rozwiązaniem dla retro komputerów. Tam jest spore zapotrzebowanie, głównie na emulatory różnych egzotycznych pamięci masowych i póki co rządzą tam płytki NanoV3 i BluePill.

    LA72 wrote:
    mam zrobiony interfejs do joya z Amigi/Atari.
    Podobny konwerter mam zrobiony na Pro Micro (AtMega 32U4).