niedziela, 3 kwietnia 2016

Atmel SAM L21 Xplained Pro - Wstęp - Ośla łączka


Od czterech lat tworzę cuda niewidy na mikrokontrolerach, w większości 8-bitowych AVR'ach. Jednak przychodzi taka chwila w której myślisz sobie: a może by pójść o krok dalej, poznać więcej, doświadczyć czegoś nowego? Dzięki uprzejmości firmy JM Elektronik rozpocząłem nowy rozdział w mojej książce przygód z mikrokontrolerami. Ośla łączka z zestawem Atmel SAM L21 Xplained Pro, bo od czegoś trzeba zacząć.

Zestaw ten w zamyśle ma pozwolić na poznanie wszystkich możliwości badanego procesora przed wdrożeniem go do jakiegoś potężnego projektu, czy urządzenia które będą produkowane na większą skalę. Wypuszczono jeszcze pełno modułów (jak w Arduino) pozwalających poszerzyć możliwości o BLE, WIFI, klawiaturę, dodatkowe guziki itd. itd... Jako że platforma jest mega niszowa, moja ośla łączka będzie bardziej opowieścią o tym, jak odkrywam jeszcze głębiej świat mikrokontrolerów, niźli jakimś poradnikiem dla świeżaków od deski do deski.


Na wstępie chciałbym powiedzieć: czym do diaska się różni taki mikrokontroler od poczciwej Atmegi8? Prawie dwoma dekadami postępu technologicznego. Jest więcej pamięci na program, jest więcej ramu, więcej peryferii, więcej, więcej! Daje to zdecydowanie większe pole do popisu (czy jak kto woli mniejszą konieczność na optymalizacje projektów).

 

Z najciekawszych dodatków w porównaniu do staruszka AVR'a znalazłem:
- 16 niezależnych przerwań zewnętrznych z (prawie) dowolnego pinu mikrokontrolera (w atmedze "ósemce" było ich aż 2)
- debugger pozwalający na żywo analizować program na działającym układzie - w przypadku avrów i ISP nie było takiej opcji
- 12 bitowy przetwornik cyfrowo-analogowy - prosta droga do stworzenia generatora przebiegów, czy odtwarzacza empetrójek bez PWMa
- wbudowany zegar RTC, na płytce testowej widać sam kwarc z bateryjką od pamięci - nie potrzeba zewnętrznego scalaka, jak w przypadku Atmegi8
- rozbudowane timery, liczniki
- obsługa USB
- nie ma o dziwo pamięci EEPROM


Co ma wspólnego "nowy" mikrokontroler ze starą Atmegą?
Nadal piszemy program, który ładujemy do pamięci flash. Nie ma żadnego systemu operacyjnego (wyjątkiem jest RTOS), nie ma żadnego dysku. Jest to mikrokontroler na wypasie, ale wciąż nie można nazwać tego komputerem płytkowym, jakim jest np. Raspberry Pi.


Tak więc jak mówi staropolskie przysłowie: "Początek z każdą platformą sprzętową od zamigania diodą rozpocznij". Producent przygotował własne IDE Atmel Studio, bazujące na Visual Studio od Microsoftu. Jako że już trochę w nim pracowałem szykując projekty w dotnecie, poczułem się trochę jak w domu. Po wpięciu płytki do komputera środowisko automatycznie mi ją wykryło, po czym dało automatycznie do wyboru opcje co by tu z nią zrobić.


Po wyborze przykładowego programu z listy, odpala nam się projekt tak jak w Visualu. Możemy działać.


Warto tu wspomnieć kilka słów o ASF, czyli frameworku od Atmela. Jest to zestaw gotowych bibliotek, szmerów bajerów umożliwiających odpalenie znacznie znacznie więcej przy użyciu jednej linijki.

Przykładowa inicjalizacja pinu. Generujemy strukturę do której wpisujemy standardowe dane, po czym zmieniając jej kolejne elementy tworzymy wzór dla funkcji uruchamiającej pin w mikrokontorlerze.

struct port_config pin;
port_get_config_defaults(&pin);
pin.direction = PORT_PIN_DIR_OUTPUT;
port_pin_set_config(PIN_PA10, &pin);

Program od migania diodą przedstawia się następująco, jest parę różnic w stosunku do avrgcc, jednak nie ma zbyt dużej filozofii.

int main(void)
{
system_init();
delay_init();
struct port_config pin;
port_get_config_defaults(&pin);
pin.direction = PORT_PIN_DIR_OUTPUT;
port_pin_set_config(LED0_PIN, &pin);
port_pin_set_output_level(LED0_PIN, LED0_INACTIVE);
while (true) {
port_pin_toggle_output_level(LED0_PIN);
delay_s(1);
}
}

Trochę bardziej zaawansowany program z przerwaniem zewnętrznym. Możemy przypisać takowych 16 do prawie każdego pinu i są one wywoływane spoza pętli main, podobnie jak w przypadku avrów. Program jest deko dłuższy i wrzucam go w postaci screenów (klik aby powiększyć). Program robi tyle, że po wciśnięciu przycisku PB05 wywoływane jest przerwanie w którym badany jest stan tego przycisku. Dodatkowo miga sobie w pętli głównej druga dioda. Wiem, program nie należy do najmądrzejszych, ale wystarczyło mi to do nauczenia się działania całego mechanizmu.




Cóż mogę powiedzieć po pierwszych godzinach z Atmel SAM L21 Xplained Pro? Całkiem zaawansowana płytka, nada się na jakiś odważny złożony projekt (ciągle mi chodzi po głowie generator przebiegów elektrycznych). Temat ogólnie jest godny dalszego rozwinięcia i będę nad nim w dalszym ciągu pracował.

piątek, 26 lutego 2016

Rasperry Pi - stan komputerka na wyświetlaczu OLED SSD1306


Od dłuższego czasu zastanawiałem się nad adaptacją dość małego wyświetlacza OLED. W technologie ubieralne na pewno się udawać nie będę, a sam wyświetlacz do automatyki średnio się nada. Postanowiłem wykorzystać go do równie małego Raspberry Pi Zero, tworząc z jego użyciem swoistą "deskę rozdzielczą" tego komputerka. Pomysł jest w fazie rozbudowy, ale już wygląda na tyle fajnie, że postanowiłem się nim podzielić. Wyświetla trzy wartości: zajętość CPU, ramu i obecny adres IP w sieci lokalnej.

Co należy zrobić aby odpalić wspomniany wyświetlacz? Zakładam że posiadasz Raspberry Pi w wersji B1, B+1 albo Zero. W pierwszej trzeba uruchomić moduł I2C. Postępujemy zgodnie z poradnikiem na stronie: https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c
Dogrywamy biblioteki od GPIO, grafik w pythonie jak i samych sterowników od SSD1306. Wystarczy wklepać komenda po komendzie poniższy zestaw:

sudo apt-get update
sudo apt-get install build-essential python-dev python-pip

sudo pip install RPi.GPIO 
sudo apt-get install python-imaging python-smbus
sudo apt-get install git 
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git 
cd Adafruit_Python_SSD1306 
sudo python setup.py install
sudo pip install psutil

Pobieramy moją paczkę ze skryptem: http://1drv.ms/1T02KuB, rozpakowujemy ją do /home/pi/ Podpinamy nasz wyświetlacz zgodnie ze schematem, filozofii co prawda nie ma, ale zamieszczam dodatkowo pinout maliny. Trzeci dotyczy również RPi Zero, są to dokładnie te same piny.



OLED LCD <-> Raspberry Pi
SDA <-> SDA1 (pin nr.3)
SCL <-> SCL1 (pin nr.5)
VCC <-> 5V (pin nr. 2 lub 4)
GND <-> GND (tu mamy do wyboru do koloru: 6,9,14,20,25,34,39)

Skrypt uruchomiamy komendą: sudo python oled.py Jeśli wszystko jest w porządku, na wyświetlaczu powinien pojawić się stan jak na moim pierwszym zdjęciu.  

No fajnie, ale co zrobić żeby nie odpalać tego ręcznie za każdym razem po uruchomieniu Maliny?

Tak to powinno wyglądać
Jest też i na to patent. Otwieramy na RPi plik komendą: sudo nano /etc/rc.local. Przed ostatnią linijką dodajemy polecenie wywołania skryptu, z kompletnym adresem gdzie się znajduje oraz znakiem & na końcu. Przyciskając CTLR+O wywołujemy zapis pliku, dajemy enter, potem wychodzimy z notatnika CTRL+X. Po uruchomieniu ponownie, skrypt powinien ruszyć już automatycznie.  

W razie problemów zapraszam do kontaktu, służę pomocą :)

Pozdrawiam,
Marcin

Źródła, z których bezczelnie ściągałem na potrzeby tego artykułu:
https://learn.adafruit.com
http://raspi.tv

poniedziałek, 22 lutego 2016

Raspberry Pi Python - programowanie w przeglądarce dzięki Adafruit webIDE


Każdy kto programował w Pythonie na Raspberry Pi, zastanawiał się dlaczego działa to tak nieintuicyjnie. No bo niby jak to ugryźć? Na wariata przez konsole dziubać? Czy może otworzyć sesję VNC i klikać z poziomu wirtualnego pulpitu? Ani jedno ani drugie rozwiązanie nie należą do mega wygodnych opcji. Na szczęście Adafruit przygotowało dość fajne miniśrodowisko programistyczne działające z przeglądarki - Adafruit webIDE.

Nie jest to jakieś wielki odkrycie, ponieważ dodatek ten już ma co nieco czasu, ale warto zwrócić na nie uwagę. Wszystko instaluje się jedną komendą poprzez ssh, do pracy wymaga również konta na bitbucket (taki odpowiednik githuba). Obsługa jest prosta, tworzymy projekt, tworzymy plik ze skryptem, odpalamy go potem w konsoli jednym klikiem z przeglądarki.


webIDE posiada również planowy wywoływacz skryptów, który odpala skrypt w wybranych ramach czasowych. Możliwości tego miniśrodowiska są dość spore, do tego nie musimy nic wgrywać do stronie naszego peceta - jak dla mnie bomba. Cóż więcej dodawać, bierzcie i kodujcie :)


Szerszy opis instalacji znajdziecie na stronie Adafruit: https://learn.adafruit.com/webide/installation, jednak podpowiem, że sprowadza się ona do wklepania poniższej komendy w konsoli:
curl https://raw.githubusercontent.com/adafruit/Adafruit-WebIDE/alpha/scripts/install.sh | sudo sh

Jeśli okaże się że macie zajęty domyślny port 80 (np. zainstalowany apache), instalator przerzuci webIDE na inny port (w moim przypadku był to 8090).

Dzięki za uwagę!

P.S. Zbieram powoli siły po operacji, z dnia na dzień jest coraz lepiej. Dzięki za życzenia zdrówka na fanpage'u, dzięki za wsparcie :) Napędza mnie to mega do dalszego działania. I'm back!

wtorek, 10 listopada 2015

Najprostszy pecetowy oscyloskop na bazie Arduino UNO


Jednym z najbardziej brakujących przyrządów w moim warsztacie jest oscyloskop. Nieraz brakuje mi tej możliwości zauważenia pewnych trendów, pewnych zjawisk w obwodzie, których bez tego urządzenia zobaczyć nie mogę. Jako że jeszcze własnego oscyloskopu się nie dorobiłem, zacząłem szukać alternatyw. Pomyślałem o Arduino. Znalazłem parę projektów, chodzących mniej lub bardziej, ale najbardziej spodobał mi się projekt autorstwa niejakiego azo747 ze strony
http://sourceforge.net/projects/scopino 
Co prawda parametrami taki oscyloskop dupy nie urywa, ale jak się nie ma co się lubi, to się lubi co się ma ;)


Implementacja urządzenia jest banalna. Wgrywamy projekt Arduino na płytkę, odpalamy program, wybieramy port com, na którym nasze UNO figuruje i tyle. Można się pokusić o jakiś dzielnik napięcia dla wartości wyższych niż 5V albo dodanie składowej stałej na jakimś wzmacniaczu operacyjnym do badania sygnałów przemiennych. W najbliższym czasie pokuszę się o stworzenie takowej dostawki.



poniedziałek, 9 listopada 2015

Tydzień bez smartphona - jak go przeżyłem?


Rachuj nie rachuj, smartphony stały się częścią naszej rzeczywistości. Wszyscy ich używają, gdzie się nie obejrzysz ktoś pyka paluchem w dotykowy ekran. W większości ludki pykają w jakieś strony ze śmiesznymi obrazkami, albo scrollują Facebooka. Sam zacząłem dostrzegać u siebie ten trend, że przez większość czasu używam smartphona do pierdół. Pierdół, których tak naprawdę nie potrzebuje i w żadnym stopniu nie rozwijają we mnie niczego. Dlatego aby chociaż trochę od tych smartphonowych bodźców odpocząć, odstawiłem na tydzień swojego LG L90 na rzecz "iPhona roku 2005" - Sony Ericssona K750i.

Pierwsza reakcja po wzięciu Soniaka do ręki? Szukanie przycisku do blokowania telefonu! Jakiegokolwiek smartphona byśmy nie wzięli, usypiamy/budzimy go do życia pojedynczym klikiem, przeważnie z boku obudowy. Tu takiego rozwiązania próżno szukać, żadnych bocznych klików, żadnych slide-to-unlocków, ponieważ mamy tu staroszkolną kombinację klawiszy z dwóch skrajnych rogów klawiatury.


Muzyka jest najważniejsza.
Pamiętam ten szpan, empetrójka w telefonie! Już nie trzeba było nosić oddzielnego urządzenia. To było coś, do tego 1GB pamięci wymiatał. Muzyka w Sony Ericssonie wciąż mi się podoba, jakością nie ustępuje obecnym chinolom. Para oryginalnych słuchawek, która uchowała mi się w stanie niemalże "nówka fófka nie śmigane" również spisują się fajnie. Dedykowane przyciski do przełączania/pauzowania/zmiany głośności piosenek są również na plus - bez problemów można nimi zarządzać nie wyjmując telefon z kieszeni. Te w obecnych smarthphonach są malutkie, w kieszeni ciężko je wyczuć.
Jedyna wada Sony Ericssona do jakiej można się przyczepić, to dedykowany port gdzie te słuchawki wpinamy. Z czasem zatrzaski po prostu się wyrabiają i przestają dobrze kontaktować. K750i nie posiadał jeszcze automatycznego wyłączania muzyki przy wypięciu słuchawek, toteż czasem w autobusie przypadkiem możemy zagrać na głośniku. 


Zjednoczona rewolucja
Jednakowe złącze micro-usb i mini-jack we wszystkich obecnych smartphonach to najlepsza rzecz jaka mogła się przydarzyć urządzeniom nowej generacji. Nie potrzebujemy żadnych przejściówek a i ładowarkę możemy pożyczyć od kogoś bez znaczenia czy ma Samsunga, LG, Sony czy jakąkolwiek inną markę. No właśnie, ładowarkę...

Z k750i nie muszę dźwigać ze sobą żadnych powerbanków.
Grunt to "prunt"
Testowany przeze mnie telefon został zakupiony w 2007 roku i był używany przez jakieś 5 lat, po czym wylądował w szufladzie. Bateria swoje już przeżyła, ale wciąż daje radę. 4 dni w cyklu mieszanym co prawda pupy nie urywa, jednak syndrom codziennego ładowania "bo może nie starczy na jutro baterii" zniknął. Soniaki były znane z tego że na ostatnich 5% potrafiły wytrzymać nieproporcjonalnie dużo czasu w stosunku do całej baterii, toteż nie miałem większych obaw wychodzić z domu z baterią rzędu tych wartości.

Opera Mini
Jest to przeglądarka która dała drugie życie starym telefonom pod J2ME. Działa stabilnie, strony po GPRS wczytują się dostatecznie szybko. Jak się zapewne domyślacie, nie udało mi się powstrzymać przed wejściem na Facebooka, który choćbym był na końcu świata będzie mi towarzyszył niczym cień. Jego funkcjonalność jest wystarczająca, bez problemu sprawdzimy
Z internetem jest jeszcze jedna ciekawostka: Przeciętna prędkość GPRS rzędu 2-3KB/s jaką osiągnąłem w testach nie wykracza poza ramy "lejków" oferowanych przez większość operatorów, toteż dostęp do internetu mamy za darmo i bez limitów.
Na Operze bez problemu sprawdzimy również GMaila, odszukamy wybrane zagadnienie z Wikipedii i znajdziemy numer do ulubionej pizzerii. Funkcje internetowe? Żaden problem!


"Jeeej, jaki mały"
Sony Ericsson'a jako klasyczny telefon doceniam także za wygodę obsługi. Wyciągasz z kieszeni, bez specjalnej uwagi wklepujesz kombinacje klawiszy do zadzwonienia pod szukany czy ostatnio wybierany numer. Takiej wygody nie zaznacie przy dotykowym telefonie.
Mamy coraz zimniejsze dni i jako że łapki marzną, trzeba odziewać się w rękawiczki. Czułość ekranu dotykowego pozwala obsługiwać telefon w cienkich, (umówmy się - kiepsko ogrzewających), płóciennych rękawiczkach - to fakt. Jednak nie ma szans jeśli założymy coś grubszego/skórzanego. Tutaj po raz kolejny wygrywa telefon klasyczny, guziki i joystick są na tyle wyczuwalne, że nie ma żadnego problemu wyklikać pożądaną kombinacje.

Wnioski
Pierwszy tydzień smartphonowego odwyku przyniósł mi parę korzyści. Zdecydowanie rzadziej spoglądałem na telefon - głównie przez brak powiadomień, to z Facebooka, to z maila i innych usług. Przestałem wgapiać się w niego bezpośrednio przed spaniem - po prostu Soniak szedł spać razem ze mną. Mogę potwierdzić, że odbiło się to pozytywnie na moim spaniu. Internety w tej kwestii nie kłamią, smartphone/tablet/komputer bezpośrednio przed snem = gorsze spanie. Jako że wciąż nie mam parcia na powrót do swojego LG L90, swój smartphonowy odwyk będę kontynuował dalej. 

Polecam wykonanie takiego doświadczenia dla każdego. Znajdź swój stary telefon, zmieniaj karcioszkę SIM i przez tydzień przekonaj się na własnej skórze, czy smartphone jest Twoim sługusem, czy może to Ty jesteś dla niego na każde zawołanie.