OLED PiCobber dedykowany wyświetlacz dla RPi
Od pojawienia się Raspberry Pi minęło już sporo czasu, ale nadal ten produkt jest na fali i co jakiś czas firmy wypuszczają na rynek swoje rozszerzenia od prostych po te przeznaczone dla bardziej cykniętych użytkowników. GEEKROO, aby nie odstawać od konkurencji także zaproponowała linię swoich produktów, którą nosi nazwę PiCobbers(Cobbers to australijskie określenie kumpli). Na ową grupę składa się sześć różnych przystawek:
- Wireless PiCobber
- IR Remote PiCobber
- PWM Servo PiCobber
- OLED PiCobber
- Power Supply PiCobber
- HiFi DAC PiCobber
Firma Geekroo pochodzi z Australii - swoją siedzibę ma w południowej jej części, a dokładnie w mieście Adelaide. Określają się mianem elektroników maniaków. Zajmujemy się projektowaniem, produkcją i sprzedażą gadżetów elektronicznych, akcesoriów dla Arduino, Raspberry Pi i BeagleBone. Cała załoga pracuje hobbistycznie tworząc swoje produkty w wolnym czasie - to się nazywa pasja :)
W moje ręce trafił OLED PiCobber w raz z dedykowaną obudową. Na płytce mamy do dyspozycji 1,3” wyświetlacz OLED + 6 programowalnych przycisków. Dodatkowo na płytce znajduje się miejsce na wlutowanie odbiornika IR. Standardowo urządzenie działa w trybie SPI, zaś z czasem zostanie udostępniona możliwość odpalenie w trybie I2C.
Przygotowania
Kod, który został udostępniony przez pasjonatów (http://g-base.org/oled-picobber-user-manual ), zawiera już podstawy do testowego uruchomienia wyświetlacza. Jednak aby rozpocząć pracę z owym programem musimy spełnić kilka warunków.
Przed wszystkim musimy zainstalować niezbędny stuff, a zrobimy to z użyciem poniższego polecenia:
sudo apt-get install python-dev i2c-tools python-smbus libjpeg
W kolejnym kroku powinniśmy włączyć obsługę interfejsu SPI, w tym celu musimy edytować plik “/etc/modprobe.d/raspi-blacklist.conf”, gdzie zakomentowujemy linię:
blacklist spi-bcm2708
Następnie w pliku /etc/modules musimy dodać dwie następujące linie:
i2c-bcm2708 i2c-dev
Po tej czynności powinniśmy zrestartować Malinę, zaś po ponownym uruchomieniu systemu wpisując w konsoli:
lsmod
...powinniśmy zobaczyć spi_bcm2708 na liście modułów.
Teraz czeka nas instalacja SPI wrappera, dzięki któremu będziemy mogli łączyć się z urządzeniami SPI za pomocą sterownika spidev:
mkdir python-spi cd python-spi wget https://raw.github.com/doceme/py-spidev/master/setup.py wget https://raw.github.com/doceme/py-spidev/master/spidev_module.c sudo python setup.py install
Ostatnim krokiem w procesie przygotowawczym będzie instalacja biblioteki wiringpi, która umożliwi nam dostęp do pinów GPIO z poziomu pythona.
sudo apt-get install python-pip sudo pip install wiringpi2
Bym był zapomniał o doinstalowaniu PILa (PYTHON IMAGE LIBRARY), będziemy go wykorzystywać do blitowania obrazów na wyświetlacz.
sudo pip install pil
Wielki finał
W tym momencie zbliżamy się do końcówki całego wpisu, gdzie zobaczymy jak działa udostępniony program przez twórców tej przystawki. Owy kod na ekranie wyświetli datę (dzień, miesiąc, rok), a następnie przewinie aktualny ekran na drugi zbuforowany gdzie pokaże dokładną godzinę. Oto kawałek programu wykonywującego:
offset = 0 # flips between 0 and 32 for double buffering # While loop has bulk of the code in it! while True: # write the current time to the display on every other cycle if offset == 0: text = time.strftime("%A") led.draw_text2(0,0,text,2) text = time.strftime("%e %b %Y") led.draw_text2(0,16,text,2) text = time.strftime("%X") led.draw_text2(0,32+4,text,3) led.display() time.sleep(1) else: time.sleep(1) # vertically scroll to switch between buffers for i in range(0,32): offset = (offset + 1) % 64 led.command(led.SET_START_LINE | offset) time.sleep(0.01)
[yt=https://www.youtube.com/watch?v=9rxWSvoDGj4] Jak można zauważyć po prezentowanym kodzie obsługa wyświetlacza nie jest skomplikowana, a udostępniona biblioteka daje nam szereg możliwości - do tego dochodzi sześć programowalnych przycisków. [yt=https://www.youtube.com/watch?v=uQti-9jM58E] Zastosowany wyświetlacz (ssd1306) w OLED PiCobber jest dość popularny - znajdziemy go także w rozwiązaniach innych firm np. Adafruit - dzięki czemu w internecie roi się od przykładów jego zastosowań i pomysłów na jego wykorzystanie.