Miesięczne archiwum: Grudzień 2015

RaspberryPi jako serwer wydruku CUPS który potrafi włączyć drukarkę

Rzecz wykonana chyba z rok temu, ale działa idealnie – serwer wydruku który potrafi włączyć drukarkę, wydrukować i ją wyłączyć. Posiadam dość leciwą drukarkę laserową HP LaserJet 1300, ale toner do niej starcza na wieki, a wydruki są bardzo dobre więc szkoda wymieniać na nową. Dwa minusy to zużywanie kilkanaście watt w bezczynności i brak modułu sieciowego przez ciężko drukować z różnych komputerów, o smartfonach nie wspomnę. Pierwotnie korzystałem z printservera firmy Edimax, ale działał tylko z Windowsami. RaspberryPi okazuje się świetnym rozwiązaniem bo nie dość, że nie ma problemu by drukować z Linuxów czy innych Androidów, to jeszcze może drukarkę włączyć na czas samego drukowania.

Do tego celu wykorzystałem popularny, tani moduł nadawczy na 433MHz (przykładowy nadajnik i odbiornik na AliExpress) i jedno z zestawu gniazdek z Biedronki sterowanych pilotem, oczywiście też na 433MHz. Do podsłuchania jaki kod jest potrzebny do włączenia i wyłączenia tego gniazdka wykorzystałem RF_Sniffer z github.com/ninjablocks/433Utils. Z tego samego repo wykorzystałem codesend który skompilowałem do dwóch binarek, jedna uruchamia drukarkę, druga ją wyłącza.

Żeby RPi wiedziało kiedy drukarkę włączyć i wyłączyć, przydatny jest dodatek do CUPSa o nazwie Tea4Cups. Pozwala on na wykonanie skryptów przed i po wykonaniu zadania drukowania. W tym celu w tea4cups.conf wykorzystuję zmienne prehook_0: i posthook_0: które jako argument przyjmują lokalizację skryptu wykonywanego odpowiednio przed i po. W samym CUPSie trzeba tylko dla wybranej drukarki w DeviceURI dodać prefix tea4cups:

W samych skryptach oprócz wywoływania codesend mam ustawiony sleep żeby dasz szansę drukarce na uruchomienie się, żeby system zobaczył urządzenie, a po wydruku chwila żeby drukarka odetchnęła i przestała wydawać wszelkie odgłosy.

Nie robię instrukcji krok po kroku bo generalnie wszystko już w Internecie jest, a i pewne rzeczy się szybko zmieniają, dlatego ogólnie opisuję co i jak, czasem gdzie na coś trzeba zwrócić uwagę.

Oczywiście trzeba mieć świadomość, że samo RPi i te gniazdka prąd też pobierają więc w przypadku nowych urządzeń może się ten zabieg nie opłacać.

Opublikowano RaspberryPi i podobne | Skomentuj

Atmega8 i najnowsze Arduino IDE (1.6.6)

Kiedy zachciałem wgrywać programy z Arduino IDE na Atmegę8 pojawił się problem – większość opisów jak dodać obsługę tego AVRa dotyczyła starego IDE albo i tak nie działało z najświeższymi wersjami. Najpierw sam coś posklejałem, później znalazłem na githubie optiboot, niestety z Atmega8 nie działał „out-of-box” ponieważ ArduinoIDE chciało korzystać z extended_fuses, a i sam bootloader w wersji skompilowanej nie był w paczce. Z tym też sobie poradziłem, wynik jest do pobrania jako załącznik do poprzedniego postu po angielsku. W końcu jednak trafiłem na fajne repozytorium, które daje bardzo dobre wsparcie dla mniej popularnych Atmeg i dodatkowo wystarczy tylko w Preferencjach IDE podać lokalizację pliku json. Wszystko tutaj: https://github.com/sleemanj/optiboot

Opublikowano Arduino, Atmega, embedded | Skomentuj

ARDUINO 1.6.6 with Optiboot and Atmega8

Recent versions of Arduino support custom boards by adding URL of json with package and in this way you can put address https://github.com/Optiboot/optiboot/releases/download/v6.2/package_optiboot_optiboot-additional_index.json and get the optiboot bootloaders BUT if want to use Atmega8 (at moment of writing this post) you will receive error because of avrdude command line has declared extended_fuses which do not exist  in Atmega8. This is the first problem. Second problem is that you need to compile optiboot for Atmega8 for your own because it is not in the package.

I solved both problems and made a rar file which you need only to extract to Arduino’s sketch folder. hardware.rar

It is tested with Arduino 1.6.6
UPDATE: I found fork of optiboot repository with good support for Atmega8 and working fine with latest Arduino IDE. See this page: https://github.com/sleemanj/optiboot

Opublikowano Arduino, Atmega, embedded | Skomentuj