Chcę się pobawić w embedded tzn. niskopoziomowe programowanie mikrokontrolera. Kupiłem klona Raspberry Pi Pico z alibaby, ale tak czytam dalej o tym i ludzie piszą, że Pico to jest już high level, posiada OS itd. i żeby kupować Arduino. Faktycznie tak jest, bo mi się wydaje, że nie?
Widzę też np. moduł wifi ESP-12F i jest napisane "for arduino", ale chyba nie ma ograniczeń, że musi być konkretny mikrokontroler, żeby z tego skorzystać? Tak samo jakieś buzzery albo czujniki światła, to chyba da się na płytce uniwersalnej podłączyć z Pico i używać?

Jak nie, to napiszcie co kupić na początek, żeby zacząć z programowaniem mikrokontrolerów, ogólnie elektroniką.

Są takie oficjalne - https://botland.com.pl/arduino-edukacja-oryginalne-zestawy/4796-arduino-starterkit-k000007-oficjalny-zestaw-startowy-z-plytka-arduino-uno-7630049200081.html
Ale cena jest gruba. W innym oficjalnym zestawie za 70 euro jest lutownica, którą na ali za 13 zł wczoraj widziałem, więc zajebistą marżę mają XD
#programowanie
cec

Mikrokontrolery AVR są bardzo proste na początek i mają bardzo dobrą dokumentację, wszystko jest w jednym PDFie. STM32 (ARM) pewnie będą tańsze, ale są dużo bardziej złożone w konfiguracji a dokumentacja składa się z kilku potężnych PDFów. A tak naprawdę niskopoziomowo możesz nawet PCta programować - piszesz program w asemblerze i wgrywasz na bootowalny nośnik ( ͡° ͜ʖ ͡°)


Pytanie czy chcesz się pobawić, żeby dobrze zrozumieć zasadę działania mikroprocesora, kompilacji itp, czy bardziej pod kątem przyszłego wykorzystania wiedzy w praktycznych projektach i pracy?

ReferenceError

@cec Chcę zrozumieć działanie mikroprocesora. Na razie nie przewiduję, żadnych projektów, ale kiedyś zrobiłem światłoluba. Tylko to tak bez zrozumienia i bym od zera pouczył się elektroniki, lutowania, wytrawiania, projektowania układów itd. ale to uzależniam od programowania mikrokontrolerów, bo jak mnie nie wciągnie, to pewnie nie będzie mi się chciało. Tylko minnisumo chciałbym od zera zrobić z tego co przychodzi mi do głowy.


Wiem, że można na PC pisać niskopoziomowo, ale podobają mi się ograniczenia sprzętowe w mikrokontrolerach. Wymyślanie algorytmów, żeby przezwyciężyć ograniczenia sprzętowe. Jak raycasting tj. fałszywe 3d na GameBoyu, który nie ma akceleratora.


No i do mikrokontrolera można podłączyć inne układy, widać jak przebiegają obwody, tu sygnał analogowy przekonwertujemy na cyfrowy itd. Jak zabawka, a do PC w procka się nie wepnę.


To możesz polecić jakiś AVR. To zamówię.


A jak jeszcze z tym Pico w porównaniu z AVR? Jak to się różni oprócz architektury?

Amhon

@ReferenceError na rpi będzie łatwiej. Masz tak naprawdę gotowca. Możesz pisać na nim w ci c++, ale jego największą przewagą jest to, że rozumie Pythona.

To o czym wyżej piszesz to właśnie poczujesz w arduino. Rpi pico to jak chcesz mieć działający, tani i energooszczędny, ale szanujesz swój czas i nie jesteś mistrzem C.

ReferenceError

@Amhon No to chcę Arduino i będę uczył się C. Arduino Nano, czy co innego kupować?

dotevo

polecam ESP32 z chin kupisz już z oled albo eink za grosze, a od razu masz wbudowane wifi i bt (a najnowsze modele zigbee) i można fajne rzeczy ogarnąć. Sam robiłem sterowanie oświetleniem akwarium na neopixel i odczyty temperatury. Teraz mam to spięte z HomeAssistant ale zabawa daje nieco frajdy ;)

ReferenceError

@dotevo no czytałem, że też dobry, ale czym to się różni od Arduino?

dotevo

No tym, że możesz użyć wifi i bt. Możesz używać w większości przypaków tych samych libek co dla arduino i nawet używać IDE dla arduino. Ja akurat używam platform.io

Shagwest

@ReferenceError Tak okołotematycznie - jakiś czas temu trafiłem na serię, w której gość buduje od podstaw komputer na 6502 (znanym na przykład z małego Atari), programuje go w assemblerze i ogólnie tlumaczy BARDZO przystępnie, jak to działa. Coś niesamowitego, polecam.


https://youtube.com/playlist?list=PLowKtXNTBypFbtuVMUVXNR0z1mu7dp7eH&si=rF5B-vLVX36lde8R

borsukh

Szczerze mówiąc jeżeli masz zacięcie to nie ma znaczenia czy to rPI czy Arduino. Wręcz uważam że z rPI więcej wyciągniesz. Nie musisz nawet się zagłębiać w OS. Tu:

https://youtube.com/playlist?list=PLVxiWMqQvhg9FCteL7I0aohj1_YiUx1x8&si=U-skbZsDmD9gEUkT

Jest zajebisty tutorial pod bare metal na rPI. Koleś pisze kod od podstaw - stawianie srodowiska, konfig Makefile, kod startowy, protokoły komunikacyjne itd. bez żadnego OS. Trzymaj się raspberry i powodzenia!

sierzant_armii_12_malp

ZX Spectrum Next

MEGA65

MiniPET

Foenix F256K

AgonLight2

Commander X16


To są maszyny dla twardzieli - a nie jakieś Arduino…

ZohanTSW

Nie wiem jak wiele masz motywacji w sobie i jak dokładnie chcesz rozumieć mikrokontrolery, więc odpiszę co nieco odnosząc się do niektórych komentarzy. Mam sporo doświadczenia w embedded, chętnie się podzielę.

Osobiście na początek odradzałbym raspberry i tego typu rzeczy jeśli chcesz się czego nauczyć, ponieważ to są małe komputery. Poradniki opierają się na "wgraj se na kartę pamięci raspbiana i się baw", czyli pracujesz na linuksie (raspbian to Linux), czyli na zwykłym kompie - jeden użytkownik pisał że można wtedy używać pythona. Tak, super, tylko po co? Oczywiście raspberry ma jakieś interfejsy typu uart, i2c itp, ale używając driverów z kernela wydaje mi się że nie nauczysz się wiele - no ale pytanie czego oczekujesz. Co do wyższej szkoły jazdy - tak, jeśli chcesz nauczyć się wypiekać własnego linuksa, skrojonego na twoje potrzeby (np buildroot). To jest wyższa szkoła jazdy.

No chyba że raspberry pi bare metal, jednak to jest na pewno bardziej skomplikowane niż arduino.

Amatorski świat embedded kręci się wokół Arduino Uno, najwięcej gotowców, exampli w necie i wszystkiego jest właśnie pod pinout Uno i chyba od tego poleciałbym zacząć. Jest pełno driverów w necie z których można korzystać, ale różnica w porównaniu z rpi będzie taka, że łatwiej będzie zobaczyć co się skąd bierze (w końcu nie masz całego kernela linuksowego do prześwietlenia). Można kupić jakiś zestaw Uno + czujniki + podstawowe elementy elektroniczne + płytka stykowa. Najlepiej szukać klona arduino (chiński klon jest jakieś 100zł tańszy). W ten sposób powinieneś zapoznać się ze światem embedded, poznać problemy ze sprzętem, podstawowe interfejsy komunikacyjne, jakieś podstawy podstaw elektroniki. Oczywiście wszystko jest pisane w C czy nawet jakimś arduinowej modyfikacji.

Co do następnego kroku to spróbowałbym innego mikrokontrolera (np stm32) albo zrobić blinking leda w innym języku. Tak, w embedded można pisać w C++ (z powodzeniem, nie słuchaj jak ktoś mówi że nie xd), jest jakiś micropython, nawet w lua.

Tego typu mapki są fajne do nauki, bo są specyficzne pojęcia w tej branży, o których ludzie z innych branż nie zawsze mają pojęcie

b59d5245-eac5-47d0-95ef-a1e38236bb23
ReferenceError

@ZohanTSW no ja właśnie chcę operować bezpośrednio na sprzęcie bez żadnych niepotrzebnych warstw abstrakcji. C kiedyś się uczyłem i mi C odpowiada. W takim razie kupię klona Uno.

To jest dla mnie prosta droga tj. albo mi podejdzie pisanie w C bezpośrednio na sprzęcie, albo sobie daruję, bo mnie interesuje sposób działania układów scalonych tj. rejestry, zarządzanie pamięcią, wskaźniki, stosy itd. Przebranżawiać się nie będę, a zbudować to chciałbym jedynie robota minisumo od zera. Projektowanie PCB i ta fizyczna część elektroniki też mnie interesuje, ale to osobna sprawa.


Rusta też się uczyłem i widziałem, że też jest opcja pisać w Ruscie na Uno.

ZohanTSW

Okej, brzmi jakby dobrze było to zrobić na RTOSie, przynajmniej ja bym tak zrobił, ale bare metal też się da

argonauta

Dawno nic w tym nie robiłem, ale spostrzeżenia są takie:


Jak chcesz faktycznie niskopoziomowo to ATmega / ATtiny, programator, kwarc i własna płytka stykowa.


Arduino i jego "ekosystem" daje ci po prostu możliwość pisania prostszego kodu dzięki gotowym bibliotekom które "schowają" przed Tobą ustawienia rejestrów, przestawiania wajchy dla trybów na pinach etc.


Także do nauki pierwsza opcja, później jak już to ogarniasz i chcesz tworzyć szybko rozwiązania to Arduino :)

argonauta

P.S. Arduino jest OpenSource, jest pełno płytek które są markowane innym logiem np. Funduino, ACS

ReferenceError

@argonauta płytki Arduino zawierają ATmege i nie zczaiłem na początku, ale chyba rozumiem.


Masz na myśli, że kupuję goły mikrokontroler, obudowę do niego, płytkę uniwersalną, zasilanie (kwarc), programator łączę do odpowiednich pinów układu i tak działam?


Też o tym myślałem i też tak raczej zrobię niezależnie czy kupię coś jeszcze.

argonauta

@ReferenceError dokładnie tak

sorek

@ReferenceError polecam kupić ESP32 (nie poprzednie, bo są nie wspierane).


Od razu nauczysz się obsługi RTOS, queue, tasków oraz innych przydatnych w tym świecie rzeczy które później nauczą Cię sporo w wyższych levelach. Do tego ten mikro zostanie z Tobą na dłużej bo ma 2 rdzenie, dość sporo ramu i flasha oraz ma wifi i bt więc jak będziesz chciał robić ciekawsze rzeczy to nie będzie dla Ciebie ograniczeniem.

ReferenceError

Dzięki za odpowiedzi.


Kupiłem klona Nano i różne sensory. ESP32 dużo mocniejsze, ale na co mi ta moc teraz. Najwyżej po prostu kupię w przyszłości. Już chciałem to po prostu zamówić, bo każdy co innego pisze i poleca XD

Zaloguj się aby komentować