Sprzęt  / Artykuł

SelfPIe Printer, czyli pomysł na selfie z wykorzystaniem Raspberry Pi

Autorem tekstu jest Tomasz Zieliński.

Jednoukładowy komputer Raspberry Pi ma pewną specyficzną cechę: niemal każdy, kto pozna jego możliwości i cenę, stara się wymyślić zastosowanie uzasadniające zakup. W niniejszym tekście opisuję taki właśnie proces - zamiast dopasować narzędzia do rozwiązania problemu, zacząłem od pomysłu na zbudowanie “jakiegoś fajnego gadżetu”, a dopiero potem zająłem się szukaniem potencjalnych zastosowań.

Pierwotną inspiracją był projekt “Little Printer”, czyli sympatyczna malutka drukarka termiczna do drukowania różnych drobiazgów, niestety bardzo droga - przeszło 700 zł za gotowy produkt.

Proces kreatywny przebiegał mniej więcej tak: Raspbery Pi i drukarka Adafruit Thermal Printer będą razem kosztować połowę tej kwoty. Hm, ta drukarka może drukować bitmapy. Może więc dodać do zestawu kamerę? Brzmi świetnie, tylko jak sprawdzić ujęcie przed wydrukiem? Może shackować Kindle i wyświetlać fotkę na e-papierze? Ale w ten sposób pokażemy jedynie statyczne obrazy. Może malutki projektorek Optoma Pico? Za duże koszty. Może ekran LCD? Bingo! Tanie, samochodowe monitorki do kamer cofania mają wejście kompozytowe PAL czyli można je podłączyć do Raspberry Pi.

Mamy więc kamerę, ekran, drukarkę i komputer sterujący całością. Do kompletu potrzebujemy jeszcze jakiegoś przycisku wyzwalającego akcję i pokrętło do sterowania poziomem ekspozycji (czułości) kamery. Jeśli kamerę ustawimy w stronę użytkownika, otrzymamy maszynkę do robienia selfie, czyli autoportretów.

Rodzi się pomysł na Selfie Printer, a raczej: SelfPIe Printer.

Do czego to służy?

front

Jak już wspomniałem, do gotowej koncepcji trzeba jeszcze wymyślić zastosowania. Oto garść pomysłów, drukarka może:

  • na targach kariery IT - zwabiać do stoiska potencjalnych kandydatów do pracy
  • w sali konferencyjnej firmy - intrygować kontrahentów
  • w poczekalni u dentysty - zabawiać pacjentów
  • w recepcji - służyć do produkcji supertanich, jednorazowych identyfikatorów ze zdjęciem
  • podczas kinderparty - dać pół godziny oddechu podczas którego zgraja dzieci będzie się znakomicie bawić drukując jedną fotkę za drugą (sprawdzone!)

Gotowe urządzenie po zbudowaniu działa tak:

Koszty eksploatacji

Jedno zdjęcie z marginesami i stopką zużywa jakieś 10 cm bieżących papieru termicznego. Trzydziestometrowa rolka kosztująca 1,20 zł pozwoli na sporządzenie 300 wydruków co oznacza koszt poniżej pół grosza za sztukę. Trwałość głowicy drukującej to 50 km (pół miliona wydruków).

Przy szacowanej mocy 10W (komputer, ekran i drukarka w ruchu) godzina pracy SelfPIe Printer będzie kosztowała jakieś pół grosza. W rzeczywistości koszty energii mogą być dwu- lub trzykrotnie wyższe z powodu strat w układzie zasilania.

Zastosowane oprogramowanie

Podstawową zaletą Raspberry Pi jest to, że działa na nim Linux - dzięki temu po pierwsze mamy możliwość zalogowania się do konsoli i interaktywną pracę zdalną, po drugie zaś do dyspozycji pozostaje wielki wybór oprogramowania. Ponieważ zaś na rynek trafiły przeszło dwa miliony sztuk Raspberry Pi, możemy znaleźć w internecie setki poradników, przykładów, instrukcji i innych materiałów edukacyjnych.

Co ważniejsze - jest spora szansa, że będziemy mogli programować “malinkę” w swoim ulubionym języku programowania: do wyboru mamy Pythona, Javę, C/C++, Mono (czyli linuksowy port środowiska .NET) i wiele innych.

SelfPIe Printer bazuje na dystrybucji Raspbian. Do robienia zdjęć wykorzystałem standardowy program Raspistill, wzbogacony o obsługę pokrętła do regulacji ekspozycji i przycisku do zatwierdzania ujęcia. Do ich odczytu wykorzystałem wyśmienitą bibliotekę pigpio. Działa ona na przerwaniach, więc skanowanie zmian pozycji pokrętła (enkodera binarnego) nie wysyca procesora - zmodyfikowany Raspistill zużywa 8% CPU a mógłby ułamek tego - kosztem dokładności w odczycie tempa i kierunku obrotów gałki.

Skalowanie sfotografowanego obrazka jest robione za pomocą programu epeg. Normalizacja, korekcja histogramu i konwersja do dwóch kolorów ma miejsce przy użyciu pakietu ImageMagick. Za wydruk gotowego obrazka odpowiada biblioteka Python Thermal Printer Library.

Interfejs użytkownika zasadniczo nie został oprogramowany, składa się z serii plików graficznych (statycznych oraz generowanych) które na konsoli wyświetla program fbi. Za późno odnotowałem istnienie ulepszonego forka o nazwie fim.

sample

Wszystkie programy kompilowano na Raspberry Pi, mogły więc być na bieżąco testowane i dostosowywane do potrzeb. Na pececie kompilacja przebiegałaby dużo szybciej, ale wymagała uprzedniego przygotowania środowiska do tak zwanej kompilacji skrośnej czyli zbudowania binariów dla systemu ARM na komputerze z procesorem x86.

Wywołanie skryptu do fotografowania i sporządzania wydruków wpisano do sekwencji startowej lokalnego użytkownika, logowanego do systemu automatycznie po starcie urządzenia. SelfPIe Printer jest więc bezobsługowy, nie wymaga podłączania do komputera ani internetu.

Opisany zestaw funkcji nie wyczerpuje oczywiście możliwości zestawu, oto kilka pomysłów na nowe funkcje:

  • po podłączeniu adaptera bluetooth drukowanie zdjęć przesłanych bezprzewodowo (np. z telefonu - nieprzetestowane ale raczej do zrobienia)
  • drukowanie zdjęć z nałożonym filtrem (inwersja, krawędzie, pikselizacja, itp.)
  • rozpoznawanie twarzy przy użyciu OpenCV i nakładanie efektu specjalnego (kapelusz, okulary, maska płetwonurka itp.)

Użyty sprzęt

Komponenty wchodzące w skład SelfPIe Printer:

  • Raspberry Pi model B 2.0 512MB - 149 zł
  • Karta SD 8GB - 28 zł
  • Kamera do Raspberry Pi rev.1.3 - 109 zł
  • Kolorowy monitor LCD 4,3” do kamery cofania - 124 zł
  • Drukarka Adafruit Thermal Printer - 199 zł
  • Zasilacz 5V 2.5A - 29 zł
  • Zasilacz 12V 0.5A - 20 zł
  • Enkoder binarny TT Electronics - 4 zł
  • Łącznik chinch 2xmęski - 4 zł
  • Przycisk - 3 zł
  • kabelki, wtyczki pinowe - kilka złotych
  • Obudowa robiona na zamówienie - 140 zł

Razem - ok. 900 zł

Podłączanie urządzeń peryferyjnych wymagało uwagi, gdyż pomylenie pinów, polaryzacji lub zwarcie obwodów na płytce może oznaczać nieodwracalne uszkodzenia. Do budowy urządzenia nie była jednak potrzeba znajomość elektroniki, a wszystkie wymagane połączenia były lutowane najtańszą lutownicą transformatorową.

pajaczek

Obudowę zaprojektowałem amatorsko, rozrysowując w programie graficznym otwory i sposób mocowania. Projekt zrealizowała firma ATIC, gdzie przełożono moje szkice na rysunek CAD, wycięto i zgięto pleksi oraz wklejono ścianki boczne. Tam też wycięto małe kółka i “pacmany” z których po sklejeniu powstały beczkowate uchwyty do przyklejenia wyświetlacza ze sterownikiem oraz kamery. Drukarka jest wpuszczona w otwór i zamocowana wkrętami dołączonymi do zestawu.

Zakupów dokonano w sklepach: arduinosolutions.com, nettigo.pl, conrad.pl oraz na Allegro.

Ciekawostki

  • Raspberry generuje obraz PAL o proporcjach 4:3, użyty wyświetlacz ma proporcje 16:10. Sterownik wyświetlacza domyślnie skaluje sygnał wejściowy na pełny ekran. Skalowanie można wyłączyć, aby jednak nie marnować miejsca na czarne paski, zastosowałem trick z generowaniem obrazu anamorficznego, tzn. wszystkie grafiki i podgląd wideo są nieproporcjonalnie rozciągnięte w pionie, wyświetlacz rozciąga je w poziomie, w efekcie kółko trzymane przed kamerą jest kółkiem na wyświetlaczu i na wydruku.
  • Przed montażem nie przewidziałem, że śrubki mocujące płytkę Raspberry Pi do ścianki muszą być aż tak malutkie, dawcą śrubek odpowiednich rozmiarów został konwerter USB-TTL CP2102 który miał parkę w zestawie (konwerter za 19,99 zł; użyty do przetestowania drukarki z peceta).

  • Raspberry Pi i użyty wyświetlacz mają żeńskie gniazda chinch co mnie mocno zaskoczyło - konieczne było użycie łącznika.

  • Najtrudniejszym do zdobycia komponentem był enkoder binarny.

  • Wszystkie wydruki próbne podczas konstrukcji SelfPIe Printer pochłonęły około dwóch trzecich jednej rolki papieru.

Podsumowanie

Jak pokazałem, do budowy fajnego urządzenia na bazie Raspberry Pi nie trzeba się znać na elektronice. Już podstawowa umiejętność programowania pozwala sterować urządzeniami zewnętrznymi, zaś zabawa z komputerem wielkości karty kredytowej jest naprawdę wyśmienita.

Uwaga: SelfPIe Printer jest na sprzedaż, odzyskanie zainwestowanych środków pozwoli na budowę kolejnego gadżetu. Pomysł już mam!

Autorem tekstu jest Tomasz Zieliński - tomasz.zielinski@gmail.com.

tyl
przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst