Ostatnio sporo się zadziało :)
Narodziny dziecka obfitują w różnego rodzaju motywacje do tworzenia najróżniejszych pomocy, stąd może dzięki temu trochę więcej pojawi się na tym blogu. Powiedzmy, że rozpoczynam cykl #tataprogramuje ;)
Do tego jakiś czas temu wyposażyłem się w Snapmakera 2 - urządzenie 3 in 1, w tym drukarkę 3d - więc wyobraźnia szaleje.
Pierwszym opisanym projektem będzie stworzenie elektronicznej niani, której komponenty po okresie użyteczności przy dziecku, będzie można wykorzystać do czegokolwiek innego.
Na początek stworzymy elektroniczną nianię bez dźwięku (choć i mikrofon można do tej wersji projektu dodać - może potem). Potrzebne będą nam przede wszystkim:
- Raspberry PI Zero W - jest to minikomputer mieszczący się na kilkucentymetrowej płytce, który można zasilać ze zwyczajnej ładowarki USB. Posiada różne peryferia na pokładzie, jak Wi-Fi, szereg portów gpio oraz dedykowane łącze kamery, które dziś wykorzystamy.
- Kamera IR - do tego projektu kupiłem jedną z dedykowanych kamer do "malin" - kamerę ze zmienną ogniskową, z matrycą 5 Mpx i dwoma dodatkowymi oświetlaczami power led na 850nm. Nie jest to jednak konieczne, by poprzestać na tej kamerce. O tym później.
- Karta micro SSD - każda od 4Gb wzwyż się nada. Może być bardziej pojemna, ale tu nie ma takiej potrzeby. Lepsze przydadzą się do innych rzeczy.
- długi kabel micro-USB i zasilacz/ładowarka.
- Jakikolwiek smartfon/komputer - do wyświetlania strumienia video :)
Jak wspominałem - mam też drukarkę 3d, więc wykorzystam ją do nadania kamerce wyrazu poprzez stworzenie obudowy. Nie jest to konieczne, ale na pewno przydatne.
Przydać się może też jakakolwiek klejarka do klejenia na gorąco.
Słów kilka o kamerze IR
Tak naprawdę można wykorzystać jakąkolwiek kamerę internetową, jednak w
tym przypadku nie obejdzie się bez modyfikacji. Każda
kamerka z matrycą CCD jest czuła na podczerwień. Ponieważ na co dzień nie chcemy by aparaty i kamery pokazywały nam więcej niż sami widzimy - instaluje się w nich filtry podczerwieni. Wystarczy taki filtr usunąć, dodać źródło światła podczerwonego - i mamy kamerę widzącą w ciemności. W przyszłym poście opiszę projekt z taką zmodyfikowaną kamerką internetową.
Przygotowanie "Maliny"
sudo apt install rpi-imager
Dalej wybieramy nasz nośnik i...większość dzieje się już samo. System wgrany, ale trzeba jeszcze kilka rzeczy ustawić.
Sieć - ustawienie bezpośrednio na karcie SSD
Po pierwsze - w sekcji boot tworzymy plik wpa_supplicant.conf, a w nim umieszczamy nazwę naszej sieci i hasło, np.:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=PL network={ ssid="NazwaNaszejSieci" psk="SuperHasło" key_mgmt=WPA-PSK }
Po uruchomieniu plik ten powinien znaleźć się w katalogu /etc/wpa_supplicant.
Pozostaje nam jeszcze pozwolić na logowanie po ssh. Aby to wykonać należy po prostu stworzyć pusty plik o nazwie "ssh" w tej samej co poprzednio sekcji boot karty ssd.
Teraz w końcu możemy włożyć kartę do czytnika na Malinie i podłączyć urządzenie do prądu.
Możemy też już podłączyć naszą kamerkę, choć do skorzystania z niej jeszcze chwila.
Pozostałe ustawienia
Po włączeniu Raspberry Pi czekamy chwilę aż się uruchomi i połączy z naszą siecią. Możemy następnie spróbować się połączyć po ssh. Najprościej sprawdzić adres ip za pomocą interfejsu routera.
Urzytkownicy linuxa mogą spróbować też komendy:
arp -a
lub po zainstalowaniu nmap:
nmap -sP 192.168.1.0/24
Znając ip naszej Maliny możemy wydać komendę:
ssh pi@192.168.xx.xx
gdzie po "@" mamy adres ip Raspberry. Domyślne hasło to "raspberry", należy je szybko zmienić.
Po dostaniu się na urządzonko odpalamy konfigurację:
sudo raspi-config
Otworzy się nam menu konfiguracji Maliny:
Jeśli wejdziemy w 1. System options, możemy zmienić hasło i nadać nazwę naszej Malinie - zrób to, ułatwi to nam dalsze logowanie, bo nie będzie trzeba szukać ip - ja nazwałem swoje urządzenie pirek :). Należy jeszcze wejść w 3. Interface options i umożliwić działanie kamery. Po wszystkim przechodzimy do Finish i jeśli trzeba - restartujemy Raspberry.
Uruchamiamy strumień video
Strumień video możemy uruchomić jedną, choć dość skomplikowaną komendą:
raspivid -o - -t 0 -hf -w 800 -h 400 -fps 24 |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8160}' :demux=h264
Oczywiście nie wyczerpuje ona możliwości zastosowanej kamery, jednak na tę chwilę wystarczy do osiągnięcia w miarę stabilnego strumienia.
8160 to port na który wysyłamy strumień (może być inny, jeśli jest taka potrzeba).
Jeśli z jakiegoś powodu nie mamy na raspbery cvlc, instalujemy pakiet vlc:
sudo apt-get install vlc
Następnie możemy już spróbować zobaczyć co nam pokazuje kamerka. Możemy do tego użyć różnych programów. Ja - niezależnie czy na komputerze, czy androidzie - używam również vlc, bo jest bardzo wygodny.
VlC na komputerze
Zakładam, że masz/potrafisz zainstalować sobie program vlc na własnym komputerze, niezależnie od systemu który używasz.
Po uruchomieniu programu klikamy Plik->Otwórz strumień sieci.
http://192.168.xx.xx:8160
gdzie 192.168.xx.xx to adres ip naszego raspberry. Jeśli jednak nadaliśmy naszej Malinie nazwę, możemy spróbować dostać się do strumienia po niej. W moim przypadku:
http://pirek.local:8160
VLC na androidzie
Nie ma to jak móc podglądać strumień video z różnych urządzeń. Możemy to zrobić bezproblemowo. Instalujemy VLC na naszej komórce/tablecie, po czym w programie klikamy "dodaj strumień" i wpisujemy ten sam adres co wyżej. Po chwili mamy obraz z kamery na na naszym telefonie. Dodatkowo, jeśli wejdziemy w Ustawienia->Działanie po przełączeniu aplikacji i zaznaczymy "Odtwarzaj widea w trybie obraz w obrazie", to możemy mieć zminimalizowany podgląd wideo podczas używania telefonu/tabletu do innych celów.
VLC daje nam również możliwość łatwego rozjaśnienia/przyciemnienia obrazu, o czym informuje nas po włączeniu odbioru strumienia.
Strumień video po starcie systemu
vim /etc/rc.local
su -l pi -c "/home/pi/stream" &Tyle. Powinno zadziałać po każdym reboocie.
Obudowa
Tu użyję wzoru pobranego z Thingiversa "Raspberry Pi "Hank" the hidden Nightvision Camera".
Podłączamy i przekładamy kabel zasilający.
Jakość/długość kabla może wpłynąć na działanie układu. W pierwszym momencie użyłem kabla ok 1.5m i starszej ładowarki z wydajnością 0.7A i działało ok. Jednak gdy musiałem dołączyć przedłużacz USB, zastosowany zasilacz nie wystarczał - po połączeniu ze strumieniem urządzenie zawieszało się, bo nie dostawało odpowiedniej mocy. Gdy zastosowałem nowszą ładowarkę o wydajności 2A, wszystko wróciło do normy.
Do złożenia z elementami stojaka zastosowałem śruby M6. Na przyszłość warto wymienić zwykłe nakrętki na motylki - dla wygodniejszego ustawiania.
Brak komentarzy:
Prześlij komentarz