Po zakupie Raspberry Pi Zero W i skonstruowaniu pierwszego drobnego projektu złożonego z gotowych elementów postanowiłem zainteresować się nieco elektroniką i budową własnych układów.
Długo zastanawiałem się nad tym co chciałbym zbudować. Projekt powinien składać się z różnych elementów współgrających ze sobą. Dodatkowo wszystko powinno być połączone logiką napisaną w Pythonie. Na koniec ważne jest, żeby nie kosztował mnie majątku.
W końcu wpadłem na pomysł zbudowania elektronicznej skarbonki. Projekt jest jeszcze w fazie planowania, jednak jednej rzeczy byłem pewien od samego początku: muszę w jakiś sposób wykryć ruch monety aby cała reszta zaczęła działać.
Wykrywanie ruchu na niewielkiej odległości
Istnieje wiele możliwości na wykrycie ruchu. Koniec końców wybór padł na niedrogi czujnik przerwania wiązki z diodą 3mm. Zasada jego działania jest bardzo prosta: nadajnik wysyła wiązkę podczerwieni w kierunku odbiornika, który za pomocą trzeciego kabla (białego) podaje wysoki lub niski stan w zależności od tego czy wiązka została przerwana czy nie.

Czujnik może być zasilany napięciem 3.3V lub 5V, więc nadaje się idealnie do projektów opartych o Raspberry Pi. Podłączając czujnik do wyższego napięcia można wykrywać przerwanie wiązki na dalszej odległości.
Podłączenie czujnika do Raspberry Pi
Nie mając zbyt dużego pojęcia o elektronice nieco obawiałem się pierwszego podejścia do własnoręcznego podpinania podzespołów. Dodatkowo w internecie nie mogłem znaleźć żadnego przykładu podłączenia do Raspberry Pi. Ostatecznie całość połączyłem w oparciu o poradnik do Arduino odpowiednio go dostosowując. Ku mojemu zaskoczeniu, wszystko zadziałało za pierwszym razem.


Przykładowy kod
#!/usr/bin/python ''' Autor: Krzysztof Grabania Źródło: https://grabania.pl/ Data: 2019-08-10 Przykładowy kod podłączenia czujnika przerwania wiązki do Raspberry Pi. Biały kabel odbiornika należy podłączyć do pinu 12 w Raspberry Pi. Zmienna STATE wskazuje na aktualny stan wiązki: - True: wiązka jest połączona - False: wiązka została przerwana ''' import RPi.GPIO as GPIO # Pin w Raspberry Pi służacy do odczytu danych RECEIVER_PIN = 12 # Domyślny stan połączenia wiązki STATE = True GPIO.setmode(GPIO.BOARD) # Ustaw pin odbiornika w trybie odczytu danych GPIO.setup(RECEIVER_PIN, GPIO.IN) while True: # Odczytaj stan pinu odbiornika NEW_STATE = GPIO.input(RECEIVER_PIN) # Jeśli nowy stan różni się od poprzedniego if (STATE != NEW_STATE): # Zapisz nowy stan STATE = NEW_STATE # Wyświetl informacje o aktualnym stanie wiązki if (STATE == False): print('Przewanie wiazki') else: print('Polaczenie wiazki')
Prezentacja działania
Już wkrótce.
Autorem obrazka wyróżniającego jest Gerardo Barreto z serwisu Unsplash.