Przejdź do głównej zawartości

Programowanie pod strzechy

Obietnice były wielkie, a efekty? Czy mamy to czego chcieliśmy?

Dwa projekty, jeden cel



Raspberry Pi miało dać ludziom platformę do nauki programowania małych rzeczy. Komputer który był tani i teoretycznie wszystkomający, tak naprawdę w większości przypadków kończy jako set-top box przy telewizorze zastępując funkcje smart TV, lub retrokonsola do starych gier odpalanych na emulatorze. Przypadki kiedy RPi (i jego klony) są używane do czegokolwiek poważniejszego można policzyć na palcach. Prawdę mówiąc moje zastosowanie nie odbiega wcale od tego schematu, RPi 2B jest u mnie retrokonsolą, OPi PC przez większość czasu się nudzi będąc głównie serwerem aplikacji WWW i MQTT. Nie przyznam się ile różnych SBC leży u mnie w pudełkach, ale jest to konkretna moc obliczeniowa. Być może prowadzę nudne życie, ale nie widzę dla nich konkretnych zastosowań.


Do towarzystwa jest Arduino UNO, 8-bitowy mikrokontroler na płytce developerskiej również ze wszystkim. Oryginał nie jest tanią zabawką (prawie 100 złotych za oryginalną płytkę), ale zadowalającej jakości klony na popularnym chińskim portalu można kupić za ułamek tej ceny, wliczając w to przesyłkę. Za te pieniądze dostajemy platformę, którą się łatwo oprogramowuje i można z nią zrobić zdecydowanie więcej niż tylko pomrugać diodami, choć na pierwszy rzut oka jej możliwości wyglądają skromnie. A co się najczęściej z nimi robi? No niestety, ale właśnie głównie mruganie diodami, a co najwyżej elektroniczny termometr.

Dlaczego jest tak dobrze, skoro jest tak źle?

Tak naprawdę to nie jest wcale źle. Dzięki popularności RPi ludzie oswajają się z informatyką na niskim poziomie, zapoznając się z systemami komputerowymi od samego dna. Trzeba płytkę podłączyć do WiFi (ręczne grzebanie w plikach konfiguracyjnych), trzeba zapewnić stabilne zasilanie, trzeba skierować sygnały na wyjściu na odpowienie kanały. Jest to bardzo odległe od obietnicy plug and play, którą serwują wielcy tego świata, według której wszystko ma się dziać samo, a urządzenia mają być w pełni funkcjonalne w momencie wyjęcia z pudełka. Zderzenie z rzeczywistością komputerową czasem jest bolesne (w szczególności gdy gotowce z internetu nie działają), ale zwykle wychodzi na dobre. Jeżeli jednak ktoś chciał użyć RPi do nauki programowania, to szybko przekonał się, że znacząco wygodniej programuje się na zwykłym komputerze (PC czy Apple, bez różnicy).

Z kolei Arduino potrafi wprowadzić w świat elektroniki praktycznej, przy okazji przypominając podstawowy kurs zagadnień o elektryczności z fizyki. Niektórym przestaje wystarczać to, co oferuje tzw. Arduino IDE i szybko orientują się, że tak naprawdę programowanie mikrokontrolerów to C++ i od tego języka nie da się uciec, pomimo usilnych prób odizolowania użytkownika od zawiłości tego języka. Pod względem nauki programowania Arduino zrobiło znacznie więcej niż RPi, ponieważ wymagało programowania. Tak naprawdę istniejące gotowce w większości przypadków nie nadają się do powtórnego wykorzystania, a służyć mogą co najwyżej jako wskazówka. Z kolei niewielka ilość dostępnych zasobów szybko wymusza daleko idącą optymalizację kodu. Można byłoby chcieć więcej, ale i to jest zadowalający efekt.

Informatyka dla trzeciego świata

Pomysł na wykorzystanie tych tanich urządzeń w edukacji w zacofanych krajach południa nigdy nie złapał wiatru w żagle. Tak naprawdę są to zabawki bogatych, a przynajmniej dla tych, którym zostaje trochę pieniędzy przed pierwszym. Są projekty, ale spotykają się z rzeczową krytyką opartą na technologicznej wiedzy. A każdy z nich staje przed tym samym problemem - dostarczamy płytki i co dalej? I żaden z nich nie udziela na to pytanie odpowiedzi, jakby najważniejsza była nie idea wyprowadzania biednego południa z zapaści, a samo robienie dobrze.

Komentarze

  1. Ależ tak było od zawsze. 8-bitowce to były praktycznie konsole. Amiga w większości przypadków też. Dopiero PC zaoferował coś więcej szerszemu gronu i na tym wygrał.

    sprae

    OdpowiedzUsuń

Prześlij komentarz

Popularne posty z tego bloga

Programowanie ESP8266 w C/C++

ESP8266 powoli ustępuje miejsca swojemu następcy ESP32, ale jest to proces wyjątkowo powolny. Może to ceny tak samych chipów jak i płytek developerskich to powodują (niewiele jest gotowych modułów w cenie poniżej $10 z przesyłką), a może rozbudowany ekosystem bibliotek do ESP8266. W każdym razie ze starszym bratem ESP32 jeszcze długo będziemy mieć do czynienia, zwłaszcza że jest to wciąż jedna z najlepszych opcji jeżeli chodzi o mikrokontrolery.

ESP8266 można programować w Lua lub w Pythonie, jednak najlepszym wyjściem jest zaprogramowanie własnego firmware w C++ lub w C - daje to największą kontrolę i zapewnia najlepszą wydajność. Jakie mamy do tego możliwości? Od najłatwiejszej do najbardziej skomplikowanej.
ESP8266 core dla Arduino Link: Github

To jest najprostsze rozwiązanie, implementacja ramówki Wiring dla ESP8266. Jakkolwiek można tę obsługę zainstalować w Arduino IDE, to nie ma to większego sensu, bo nie da się tego edytora używać do niczego poważniejszego. Pisze się to w nor…

RetroPie, bo mi się dziecko alienowało

Dziecko moje najdroższe alienowało mi się siedząc przed komputerem w swoim pokoju. Nie żebym jej zabraniał, ale skoro ma grać, to niech gra przy nas, w salonie. Przynajmniej będziemy wiedzieli w co gra.

Wymagane hardware:

Raspberry Pi 2 Mod. B,karta SD min. 8GB,gamepad na USB,telewizor
Opcjonalne w zależności od konfiguracji:

karta WiFi na USBklawiatura na USBpendrive czy inny storage na USB Jak już to wszystko mamy, to możemy robić. Zajmie to parę godzin wszystkiego.
RetroPie Obraz RetroPie pobieramy ze strony projektu, to będzie ten którego nazwa kończy się na rpi2.img.gz. Następnie obraz ten trzeba rozpakować i nagrać w standardowy sposób na kartę SD. Wkładamy kartę do RPi, podłączamy pada do USB, bootujemy naszą zabawkę i zaczynamy konfigurowanko jak zwykle z RPi (z podłączonego klawikordu i na telewizorze, albo po ludzku, po zalogowaniu przez SSH), czyli najpierw używając skryptu raspi-config rozciągamy system plików na całą kartę, reboot, pełna aktualizacja systemu, być może reboo…

Hello, Mr. Developer

Po dłuższej robocie z innymi rzeczami trafił mi się jeden mały projekt, który idealnie nadał się na rozpoznanie bojem, co tam nowego panie w światku bibliotek narzędziowych/ramówek do robienia aplikacji sieciowych - proste REST API z jednym zasobem w kilku perspektywach. Pierwsza myśl była "robiłem to meeelion razy, w jeden dzień będzie z pokryciem 100%". Ale zaraz zorientowałem się, że to dobra okazja, żeby przy okazji rozejrzeć się, czy czasem coś nowego nie pojawiło się na arenie w ciągu tych 3 czy 4 lat, kiedy tłukłem w standardzie Flask + SQLAlchemy, do porzygu. Pamiętam przecież, jak ze 3 lata temu co chwilę pojawiały się jakieś zajawki, że tu jakiś framework osiągnął niesamowite wyniki w benchmarkach, a to jakiś przełomowy koncept miał na zawsze odmienić sposób w jaki robi się webaplikacje w Pythonie, a to to, a to tamto. Poprosiłem więc o chwilę ekstra na zastanowienie się i wyruszyłem wraz z Google na poszukiwanie króla dżungli.
Jest źle, a nawet bardzo źle. Asynch…