niedziela, 1 maja 2016

Płytka prototypowa na bazie ESP8266 (ESP-01)

To nie jest kolejny artykuł traktujący od początku do... nieco dalej (bo na pewno nie do końca) o płytkach ESP8266. Żeby się dowiedzieć, co to takiego, odwiedźcie proszę np. tę stronę (oraz wiele innych – poproście o pomoc Waszą ulubioną wyszukiwarkę): http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family.

No ale żeby nie było, ESP8266 to układ zawierający na pokładzie wydajny mikrokontroler z rdzeniem RISC-owym, taktowany zegarem 40MHz (wersja, o której jest ten wpis) lub 80MHz, 512KB pamięci flash i podsystem komunikacji przez sieć WiFi. Jest powszechnie wykorzystywany jako swego rodzaju karta sieciowa do połączeń bezprzewodowych naszych urządzeń IoT, które budujemy w zaciszu domowych laboratoriów (i nie tylko).
Układ montowany jest na płytkach występujących w kilku wersjach, różniących się przede wszystkim liczbą wyprowadzeń uniwersalnych, czyli GPIO – im większa liczba, tym większe możliwości wykorzystania układu (więcej urządzeń peryferyjnych itp.). Są też pewne różnice we wnętrzu układu.
Najtańszą i – teoretycznie – najbardziej ograniczoną płytką jest ESP-01, o której wykorzystaniu napisałem dalej. Płytki dostarczane są domyślnie z oprogramowaniem pozwalającym na komunikację za pomocą języka Hayes, czyli hm... słynnych komend modemowych "AT". Trochę się pobawiłem tymi komendami i byłem, delikatnie mówiąc, zawiedziony. Dlatego też od razu wszystkie moje moduły zaflaszowałem oprogramowaniem NodeMCU, stworzonym specjalnie dla płytek ESP8266, pozwalającym stosować w programowaniu filozofię i metodologię znaną z Node.js, pisząc w języku Lua (da się przeżyć), a programy umieszczać "w kostce" w postaci skryptów posiadających swoją nazwę i uruchamianych w dowolnym momencie – "ręcznie" (np. przez program z Arduino) albo automatycznie, przez skrypt init.lua (czyli skrypt startowy).
W jaki sposób wgrać do układu najnowszą wersję NodeMCU? Opis znajdziemy np. tutaj: http://nodemcu.readthedocs.io/en/dev/en/flash/ (oficjalna dokumentacja, jest też link do tutoriala), natomiast o samym projekcie NodeMCU możemy przeczytać na stronie http://nodemcu.com/index_en.html.

Gdy już opanowałem płytki ESP-01, najprostsze i teoretycznie najsłabsze z serii, okazało się, że dwa wyprowadzenia GPIO to zdecydowanie za mało, jeśli chcemy wykorzystać ten układ w sposób nieco inny, niż tylko karta sieciowa WiFi do Arduino. Tym bardziej, że układ pracuje w logice 3,3V, więc o ile Arduino Due czy płytka Nucleo nie mają z ESP żadnych problemów, o tyle Arduino Uno i wszystkie inne *duino bazujące na AVR-ach pięciowoltowych potrzebują konwertera stanów logicznych. W przypadku prototypów da się to spokojnie załatwić (dostępne są nawet 16-pinowe konwertery dwukierunkowe), zaś w warunkach produkcyjnych – bywa nieco trudniej. Najlepiej więc, jeśli mamy do dyspozycji płytkę ESP-12 (znaną również jako "moduł NodeMCU").
Ale ja swego czasu nabyłem kilka sztuk płytek ESP-01, a ponieważ nie mam zwyczaju marnować różnych rzeczy, postanowiłem znaleźć jakieś obejście. I długo nie szukałem. Na blogu poświęconym m. in. płytkom, które są głównym bohaterem tego wpisu, znalazłem ten oto artykuł: "NodeMcu and I2C: How to start and using the PCF8574A I2C port expander on ESP-01 board". Swoją drogą, warto poczytać tego bloga.

W skrzynce z układami scalonymi znalazłem całą masę układów PCF8574AP (demobil :-)), zatem postanowiłem wykonać własną płytkę prototypową, która zbliżyć się może  funkcjonalnością do wyższych wersji.
Zgromadziłem zatem następujące elementy:
  • ESP8266 w wersji ESP-01;
  • 2 układy PCF8574AP (ekspandery magistrali I2C/TWI);
  • niewielkich rozmiarów płytkę uniwersalną z dwustronnie metalizowanymi punktami lutowniczymi;
  • regulator (stabilizator scalony) napięcia LM1117-3,3V (LDO, zatem z radiatorkiem);
  • kilka kondensatorów (według dokumentacji regulatora napięcia);
  • "płotek" goldpinów;
  • kilkanaście drucików w izolacji;
  • dwie zworki.
Najpierw jednak zrobiłem proto-prototyp na płytce stykowej. Generalnie projekt wyglądał w ten sposób:

zaś gotowa płytka prototypowa wygląda tak:


Na płytce, oprócz 16 linii wejścia-wyjścia, znalazły się goldpiny zasilania – podajemy napięcie 5V, zaś scalony regulator napięcia dostarcza wymaganych przez układ ESP 3,3V (na szczęście ekspandery I2C działają sprawnie przy tym napięciu), goldpiny sterowania – do resetu sprzętowego i włączenia trybu programowania (operacje wykonywane zworkami), transmisji szeregowej – do komunikacji z Arduino/Nucleo/konwerterem USB-UART oraz magistrali I2C. Wyprowadzenie "na zewnątrz" magistrali I2C daje możliwość podłączenia dodatkowych układów wejścia-wyjścia, gdyby się okazało, że proste, cyfrowe 16 linii nie spełnia naszych oczekiwań (np. odpada PWM, chyba, że znajdziemy coś na I2C – np. podłączymy odpowiednio zaprogramowany układ ATtiny85).
Pamiętać należy o tym, że urządzenia (układy) podłączone do I2C – w tym również zastosowane w projekcie ekspandery – muszą mieć unikatowe adresy, inaczej komunikacja nie będzie możliwa.

Warto zainteresować się układami z serii ESP8266 – dają ogromne możliwości przy bardzo niskich kosztach i względnie niskim poborze energii, łatwo się je programuje, nawet, jeśli musimy troszkę się oswoić z językiem Lua... A w zasadzie nie musimy – jeśli jesteśmy użytkownikami Arduino, to możemy programować płytki ESP (NodeMCU) z poziomu naszego ulubionego środowiska i w naszym ulubionym języku C/C++ (opis, jak dostosować Arduino IDE do współpracy z NodeMCU/ESP8266, bez problemu znajdziemy w internecie, np. tutaj /bardzo interesujący serwis!/: http://www.jarzebski.pl/arduino/arduino-i-klony/nodemcu-v2-esp8266-lua.html).

Udanych projektów i do zobaczenia przy następnym artykule :-)

poniedziałek, 1 lutego 2016

Nucleo (L152RE na przykład) – wygodna w obsłudze płytka prototypowa z mikrokontrolerem ARM.

Nowy rok to nowe zabawki, chciałoby się powiedzieć. W każdym razie zainspirowany dyskusją, którą prowadziliśmy w Google+ w związku ze zmianą właściciela marki Atmel i przyszłością rodziny AVR, sięgnąłem po niedrogą płytkę prototypową firmy STMicroelectronics, zawierającą mikrokontroler tegoż producenta, z rdzeniem w architekturze ARM. Wybór – całkowicie przypadkowy, bo chodziło o najtańszą ofertę w serwisie aukcyjnym – padł na Nucleo L152RE. Dane dotyczące platformy i tego konkretnego modelu znajdziecie na stronie producenta, więc nie będę ich tutaj powielał (dbajmy o ten nasz biedny internet). Tam też znajdziecie serię instruktaży wideo, pokazujących, jak zacząć pracę z płytkami Nucleo i jak ją z powodzeniem kontynuować. Tutaj zatem będzie krótko, na zachętę.

Zacznę od końca. Jestem pod ogromnym wrażeniem tej platformy. Bo tak: 
  • żeby pisać programy i ładować je do układu nie jest potrzebne żadne oprogramowanie instalowane na naszym komputerze – wystarczy w miarę świeża przeglądarka WWW i połączenie z internetem;
  • żeby podłączyć płytkę Nucleo do komputera, potrzebujemy port USB; w systemie Windows potrzebne są jeszcze sterowniki – znajdziemy je na stronie producenta, zalinkowanej wcześniej;
  • co do programowania, powinniśmy znać język C/C++ i – rzecz jasna – topologię wyprowadzeń płytki, nazwy jej elementów zaimplementowane w bibliotece dla C/C++ itp.
Bierzemy zatem naszą płytkę Nucleo, podłączamy do komputera, instalujemy sterowniki (jeśli to konieczne, aktualizujemy firmware – patrz: linki na stronie producenta) i oczom naszym ukazuje się napęd USB o nazwie "NUCLEO". 
Wchodzimy teraz – za pomocą przeglądarki ;-) – na stronę mbed.org (lub od razu developer.mbed.org), czytamy sobie zawarte tam informacje (niecierpliwi mogą ten krok pominąć, aczkolwiek...), zakładamy konto, łączymy je sobie z twitterem, githubem i z czym tam jeszcze chcemy (możemy też nie łączyć) i zaglądamy na nasz dysk USB "NUCLEO". Znajdziemy tam plik "mbed.htm". Przeciągamy go "na przeglądarkę" – zostaniemy przekierowani na stronę, która pozwoli nam dodać posiadaną i podłączoną do komputera płytkę prototypową do naszego konta (czyli powiązać płytkę z kontem). Pozwalamy na to i od tego momentu możemy spokojnie używać online'owego IDE z kompilatorem, produkującym kod wynikowy specjalnie dla naszego mikrokontrolera i naszej płytki :-) W serwisie mbed.org znajdziemy również bardzo przydatną, praktycznie niezbędną w dalszej pracy charakterystykę wspieranych platform (strona poświęcona mojej płytce).
Program, po skompilowaniu, wysyłany jest na nasz komputer w postaci binarnego wsadu. Kopiujemy (lub przenosimy) ten wsad do naszego dysku "NUCLEO" i... gotowe! Mikrokontroler zaprogramowany! Dociekliwi zauważą, że po odświeżeniu dysk "NUCLEO" zawiera tylko plik "mbed.htm", wsad zniknął :-)
Prawda, że cudownie proste?
Dla zabawy i porównania z Arduino pozwoliłem sobie przeportować na Nucleo przykładowy program, wyświetlający tablicę kodów ASCII w oknie terminala portu szeregowego PC. Ale to nie było żadne wyzwanie (działa jak w Arduino), zatem komputer PC zastąpiłem moim modułem sterownika LCD z komunikacją przez port szeregowy. Owszem, Nucleo ma wadę – jak praktycznie każdy ARM, pracuje w logice 3,3V, więc w celu wymiany danych z urządzeniami pracującymi w logice 5V (TTL) musimy użyć konwertera poziomów (lub konwersji poziomów logicznych w ogólności).
Kod źródłowy programu i efekt działania zarejestrowany ukrytą kamerą smartfona zaprezentowane zostały poniżej.
  • Kod: 
  • Film demonstracyjny:
 

Myślę, że płytki z serii Nucleo mogą być całkiem niezłą alternatywą dla Arduino, również Arduino Due (tam też jest ARM). Mam nadzieję, że przyszłość przyniesie wiele ciekawych inspiracji i projektów zrealizowanych z wykorzystaniem tej platformy (chodzi tu głównie o mnie ;-))

czwartek, 27 sierpnia 2015

Windows Phone i wakacje – czyli bezbolesnego przejścia z Androida na Windows Phone część druga.

Zamiast wstępu

Witam po dość długiej przerwie, spowodowanej pracą, brakiem weny, czasu itd.
Minęło kilka miesięcy, odkąd stałem się użytkownikiem telefonu z systemem Windows Phone 8.1 i muszę przyznać, że euforia trwa nadal. Urządzenie, mimo zawalenia aplikacjami i plikami wszelakimi, nadal działa płynnie, stabilnie i szybko – czyli tak, jak urządzenie mobilne działać powinno. W tym czasie moja Nokia przeżyła kilka upadków, sporą wilgotność otoczenia, wysokie temperatury i kilka górskich wypraw. Mimo zaledwie 5-megapikselowej matrycy aparatu/kamerki zdjęcia są naprawdę niezłej jakości – doszło nawet do tego, że w celu zwiększenia wygody podczas odpoczynku wakacyjnego zrezygnowałem z zabrania na wczasy prawdziwych aparatów fotograficznych. I dobrze na tym wyszedłem, mimo, że doskonale wpisałem się  stereotyp turysty, który wszędzie łazi z komórką i wszystko foci...
W tej części – chyba ostatniej, nie jestem pewien – cyklu o migracji z Androida na Windows Phone zająłem się właśnie wakacjami z windowsowym smartfonem, postrzeganymi przez pryzmat kilku niezbędnych aplikacji (nie podaję linków ze względu na chwilowy chaos panujący na witrynie sklepu z aplikacjami; z poziomu aplikacji Sklep Waszego telefonu wszystko jednak bez problemu znajdziecie).

Wspomnienia

Wspomnienia z wakacji to oczywiście przede wszystkim zdjęcia i filmy. Robimy ich dużo i najczęściej tylko raz oglądamy, ale jednak... Oto kilka aplikacji, które polecam każdemu amatorowi zdjęć, nie tylko wakacyjnych. Wybór subiektywny – czyli lubię i używam.
  • Lumia Camera – wygodny, prosty w użyciu aparat fotograficzny i kamera wideo (od tego zaczynamy ;-))
  • Lumia Kreatywne Studio – podstawowy edytor fotografii plus kilka ciekawych efektów – w tym szalenie modny tilt shift;
  • Lumia Panorama – zdjęcia panoramiczne, a dokładnie panoramy składane z wykonywanych kolejno zdjęć; w górach idealna.
  • Lumia Selfie – wiadomo, dla wielu to podstawa ;) – jeśli Wasza słuchawka nie posiada przedniej kamerki, aplikacja doskonale sobie poradzi z główną, czyli wykryje twarz(e), dopasuje ostrość, zasygnalizuje ten fakt dźwiękowo i wykona fotkę; potem jeszcze możliwa podstawowa obróbka;
  • Lumia Storyteller – pozwala zapanować nad zdjęciami, grupując je w opowieści – automatycznie według daty i miejsca wykonania (chyba każdy ma włączony zapis lokalizacji wykonania zdjęcia? Nie? To włączcie – w WP to naprawdę działa!) lub ręcznie, według naszego uznania; opowieści można publikować w dedykowanym serwisie oraz na podstawie wskazanej opowieści można wygenerować krótki filmik (w oparciu o wybrane fotki) z podkładem muzycznym. Naprawdę polecam jeśli chcecie w ciągu około 30 sekund pokazać komuś, jak było i żeby przy tym nie zasnął ;)
  • Gloomlogue – masa ciekawych efektów i opcji edycyjnych;
  • Hyperlapse Mobile – dla wszystkich, którzy uwielbiają filmy poklatkowe; program cechuje prostota i niezła stabilność obrazu w efekcie końcowym;
  • GeoPhoto – rozmieszcza Wasze zdjęcia na mapie, dzięki czemu wiecie, gdzie je wykonaliście; pomaga zapominalskim, ale nie tylko. Oczywiście trzeba mieć włączoną opcję zapisu lokalizacji w pliku zdjęcia.
Przykład panoramki wykonanej za pomocą aplikacji Lumia Panorama (widok z Wielkiej Raczy)

niedziela, 1 marca 2015

Bezbolesne przejście z Androida na Windows Phone - część pierwsza.

Android to bez wątpienia najpopularniejszy obecnie system operacyjny dla urządzeń mobilnych (generalnie dla "niepecetów"), lubiany przez użytkowników i programistów, bazujący na jądrze Linuksa, czyli mający korzenie i genezę w tak przeze mnie cenionym otwartym oprogramowaniu. Jednak jeśli nie jest zainstalowany na mocnym sprzęcie, Android potrafi do siebie perfekcyjnie zniechęcić każdego użytkownika, który oczekuje od swojego np. smartfona tej jednej, prostej rzeczy – płynnego działania.
Zdaję sobie sprawę, że być może moje pojęcie na temat płynnego działania jest inne, niż być powinno z punktu widzenia większości użytkowników systemu rozwijanego przez Google, jak i samych zapewne twórców tego systemu, ale jednak pozwalam sobie zachować własne zdanie... A ponieważ dawno już minęły czasy, gdy doskonale się bawiłem przy grzebaniu w sprzęcie, instalowaniu systemów i ich podrasowywaniu, kompilowaniu jądra Linuksa itd., więc wszelkie "rootowania", podmienianie ROM-ów czy inne sztukowanie telefonów–półproduktów (no bo jak inaczej nazwać produkt, w którym trzeba kilka dni intensywnie grzebać i tracić gwarancję, żeby cokolwiek działało?) nie jest dla mnie. A tym bardziej dla Zwykłego Użytkownika.
Jeśli zatem ktoś się uprze przy Androidzie, to pozostaje mu szukać czegoś raczej z górnej półki, z trzema lub czterema gigabajtami RAM, kilkurdzeniowym procesorem i "cyjanogenem" instalowanym domyślnie... Taka konfiguracja podobno gwarantuje płynne działanie.
Jeśli zaś nie chcemy już Androida, to mamy dwa wyjścia:
  • iPhone;
  • Microsoft (dawniej Nokia) z Windows Phone 8.1 (póki co).
W pierwszym przypadku musimy dysponować nieco większą gotówką, chyba, że chcemy jakiś niewspierany model – miesiąc temu była wyprzedaż iPhone 4S za 1200zł. W drugim przypadku już nawet za 600zł jesteśmy w stanie dostać telefon, który będzie działał bardzo płynnie, stabilnie, będzie wygodny w obsłudze – i to bez zabiegów "rootowania" czy innych podmianek. I w przypadku którego 1GB RAM będzie ekstrawagancją, zalecaną głównie graczom chcącym się bawić w najnowsze tytuły.

Nie da się ukryć, że wpis jest tendencyjny, tak nawiasem. Ale co tam.

To, co mnie ujęło w Nokii Lumii 630, to przede wszystkim prostota tego modelu, brak zbędnych (dla mnie) dodatków, a przede wszystkim zaskakująca wygoda obsługi. Nie tęsknię za pięcioma czy siedmioma pulpitami upstrzonymi ikonkami i widgetami. Kafelki są naprawdę niezłe (na telefonie; w przypadku komputera jestem raczej konserwatystą ;-)). No i parametry sprzętowe – o dziwo, dla systemu Windows Phone wystarczające, dla Androida... No cóż, dla Androida tak ze sześć razy za mało RAM-u...

A teraz kilka słów na temat zasadniczy, czyli jak zastąpić nasz dotychczasowy telefon androidowy czymś działają... znaczy urządzeniem z systemem Microsoftu. Lumią dokładnie.
Większość popularnych aplikacji mobilnych ma odpowiedniki i wersje dla WP, jednak zdarzają się przypadki, gdy trzeba szukać alternatyw. Tak więc na początek trzy rzeczy.

Po pierwsze: przeniesienie kontaktów. Otóż Microsoft nie udaje, że Google nie istnieje, więc bez problemów można zsynchronizować kontakty z nowym telefonem za pomocą konta Google. A jeśli dołączymy do tego kalendarze i pocztę (dwa z trzech produktów Google, które bardzo lubię), to pełnia szczęścia.

Po drugie: Feedly. Otóż nie ma dla Windows Phone oficjalnej aplikacji dla Feedly, czyli serwisu, który przejął schedę po Czytniku Google'a, i dobrze, bo gdyby miała działać tak, jak androidowa... Zamiast Feedly mamy zatem np. Phonly. Wystarczy się zalogować za pomocą tego samego konta, które używamy w Feedly.

Po trzecie: Pocket. Wiele osób używa serwisu Pocket jako pewniejszej opcji dla zakładek, ulubionych itp. I znów – oficjalnej aplikacji dla WP nie ma. Jest więc Poki. Działa. Jak wszystko na WP ;-)

Żeby jednak nie było, że tylko pieśni pochwalne tutaj umieszczam, muszę też nieco ponarzekać. Ale tylko nieco. Otóż aplikacja mobilna mBanku jest bardzo słaba, a ostatnio, na skutek (chyba) zmian w usługach sieciowych banku (czekam na odpowiedź konsultanta), ma problemy z uruchomieniem się. Dalej, Google z jakichś powodów (nie znanych mi, a nie szukałem, o co tak naprawdę chodzi – może powód jest poważny) udaje, że nie ma systemu Windows Phone, więc nie ma też aplikacji dla usług Google'a, głównie Google Plus. Z drugiej strony, pamiętam, że mój androidowy telefon dostał potężnego kopa wydajnościowego po odinstalowaniu wszystkich aplikacji Google, łącznie z wyszukiwarką, tak więc...

Zatem – koniec części pierwszej.

wtorek, 27 stycznia 2015

Nieskomplikowany robot mobilny

Żadna to nowość w sieci – dwukołowy robot sterowany platformą Arduino i to jeszcze zbudowany w oparciu o gotową "ramę". A jednak jest szansa, że w każdym takim pojekcie i artykule na blogu znajdzie się coś ciekawego, może nawet unikatowego.
Historia tego robocika zaczęła się od marzenia, którym podzielił się ze mną pewnego wieczoru syn. Otóż powiedział, że chciałby mieć droida. Wiedziałem, o co chodzi, bo mój dziewięcioletni syn jest wielkim fanem Gwiezdnych Wojen (i aktualnie Harry'ego Pottera, choć na bal przebierańców idzie póki co jako Imperator Palpatine). Zadziałał efekt kolejki elektrycznej – zaproponowałem, że zbudujemy robota, który potrafi jeździć. Syn się zgodził.
Poszło więc zamówienie, dotarła paczka i poskładaliśmy robota, którego syn nazwał "Gnomonek", prawdopodobnie bazując na nazwie elementu zegara słonecznego.
Do dziś powstały cztery jego wersje, w zależności głównie od oprogramowania i zastosowanego dodatkowego sprzętu:
  • beam follower (czyli ścigający latarkę);
  • line follower (czyli jeżdżący po linii; w domu była to biała linia na brązowym tle, w pracy zaś, podczas prezentacji, czarna linia na jasnym tle – kwestia przestawienia paru znaków w programie);
  • robot zdalnie sterowany (za pomocą pilota od starego telewizora);
  • robot zdalnie sterowany (jak wyżej) z prostym systemem wykrywania przeszkód.
Końcowa wersja została tak przygotowana, żeby można było wrócić do każdej z poprzednich poprzez wgranie odpowiedniego programu.