Mikrontroleer do nauki elektroniki

Czy znacie jakiś tani i w miarę dobry układ procesorowy do nauki elektroniki? Powinien mieć standardowo diody, buzzer, wyświetlacz i najlepiej możliwość dołączania innych podzespołów (np. czujniki).

Zależy na jakim poziomie chcesz się uczyć i jakie masz kwoty. Jak chcesz zaczynać czyste C to proponuję jakiś zestaw z AVR (np. http://sklep.atnel.pl/pl/p/Zestaw-uruchomieniowy-AVR-LIBRA/2). W zestawie masz wszystko czego dusza zapragnie.

Jak chcesz coś prostszego z ogromnym supportem i na czasie to interesuj się Arduino. Na początek Uno wystarczy. Można kupić oryginał (http://nettigo.pl/products/arduino-uno-r3) albo chiński klon na allegro. Materiałów masa w internecie. Tylko do tego trzeba dokupić peryferia, tj.: ledy, buzzery, wyświetlacze, czujniki itp. Ale to można stopniowo i systematycznie dokupywać.

Za STM32 może na początek nie warto się zabierać. Lepiej zacząć od 8-bitowców a potem przejść na 32 bity.

chcę od pdostaw. Jakieś programowanie zapalania diod, dźwieków itp.

Do podstaw najlepiej zaopatrzyć się w płytkę Arduino. Na początek polecam UNO lub Leonardo, z naciskiem na tą pierwszą w wersji THT, gdzie możesz swobodnie wymienić mikrokontroler w razie uszkodzenia. Możesz też zainteresować się jakąś pochodną Arduino np. AVTduino, lub RedBoard. Jest to o tyle wygodne rozwiązanie, że nie musisz martwić się o programator, w dodatku dostajesz bardzo przyjemny język Arduino (który tak naprawdę jest tylko biblioteką do AVR C).

Ostatecznie możesz także wyposażyć się w sam mikrokontroler AVR (opcjonalnie do tego kwarc, dwa kondensatory, zasilanie pociągniesz z programatora) i programator np. USBASP, jednak odradzam takie rozwiązanie.

Arduine jest dobre to tworzenia szybko prototypów, ale jeśli ktoś chce poznać programowanie mikro-kontrolerów od podszewki to polecam zacząć od tego http://sklep.atnel.pl/pl/p/Mikrokontrolery-AVR-Jezyk-C-podstawy-programowania-PL-Ksiazka-DVD/75 książka jest świetna i nadaje się spokojnie dla kogoś kto startuje od zera również.

Całkiem możliwe, że jest świetna. Niestety, nie miałem do czynienia z tą publikacją. Myślę jednak, że Arduino (lub jego klona) i tak warto mieć, gdyż później można wykorzystać go bez przeszkód jako programator AVR. Szczególnie, że Arduino kosztuje tyle, co programator.

A co robi ten programator? Znaczy, że wszelkie programy mowiące co ma robic kontroler już będą w nim zapisane?

Programator jest potrzebny do tego, byś w ogóle mógł zaprogramować dany mikrokontroler (oczywiście programator musi być do niego dostosowany). Innymi słowy jest ogniwem spajającym Twój komputer z mikrokontrolerem. Z kolei Arduino jest o tyle dobre, że daje Ci od razu platformę prototypową (nie potrzebujesz żadnego programatora, bo Arduino już ma go w sobie) wraz z językiem Arduino, którą możesz bez problemu przekształcić w programator, dzięki któremu zaprogramujesz zewnętrzne mikrokontrolery AVR. Przekształcenie Arduino w programator jest banalnie proste, gdyż ogranicza się do wrzucenia gotowego programu z IDE Arduino.

Teraz troszkę na temat języków programowania mikrokontrolerów AVR. Arduino jest dobrym językiem na początek, pozwalającym na praktycznie bezstresową naukę. Niestety, nie jest zbyt wydajny (choć wciąż lepszy od BASCOMa, od którego trzymaj się z daleka), co wychodzi szczególnie przy bardziej rozbudowanych projektach, gdy może nie wystarczyć Ci miejsca na program w pamięci mikrokontrolera. Dlatego po liźnięciu podstaw Arduino warto zabrać się do C, w którym identyczne programy mogą zajmować nawet połowę tego, co programy napisane w Arduino. Pozostaje jeszcze Assembler ale to już wyższa szkoła jazdy.

A Python lub Delphi?

Nie, nie ma mikrokontrolerach, Python to co najwyżej na R Pi ale to już nie mikrokontroler. Oba języki które podajesz mają zbyt duży narzut na CPU oraz RAM i dodatkowo wymagają zazwyczaj działania systemu operacyjnego na danym procesorze na którym są odpalane.

Zdaje się, że na AVR też jest jakaś implementacja Pythona (na ARM na pewno). Ale to coś jak przeglądarka WWW dla C64 - sztuka dla sztuki, a pożytku z tego żadnego. Zresztą czy Python tak bardzo różni się od C? Odrobinę inna składnia, troszkę inne podejście do obiektowości. Ale w moim odczuciu różnica jest wręcz nieodczuwalna. Dlatego nie warto się w to nawet bawić.