Elektroniczne sterowanie przyciskami w urządzeniach

Jak Pythonem wcisnąć przycisk na urządzeniu elektronicznym

Urządzenia elektroniczne z przyciskami wymagają człowieka by nimi operował - naciskał różne przyciski by uzyskać zadany efekt. A gdyby tak zmodyfikować urządzenie z przyciskami żeby elektronicznie wciskał je mikrokontroler? Np. mała kamera, którą włączy i nagra klip o określonej długości, po czym wyłączy kamerę. W tym artykule zaprezentuję właśnie prostą przeróbkę kieszonkowej kamerki do postaci sterowalnej elektronicznie.

Kamera

Do eksperymentów wybrałem chyba najtańszą z prostych chińskich kamerek dostępnych na Allegro - kamerkę brelok z dwoma przyciskami, wejściem mini USB oraz slotem na kartę microSD. Żeby włączyć kamerę trzeba wcisnąć jeden z przycisków na ponad sekundę. By zrobić zdjęcie trzeba krótko nacisnąć drugi. Długie naciśnięcie spowoduje rozpoczęcie nagrywania klipu.

Kamera brelok
Kamera brelok - przyciski sterujące

Po odkręceniu dwóch śrubek można wyjąć całą kamerę z obudowy. Zyskujemy dostęp do samych przycisków i ścieżek jakie są przez nie łączone w chwili wciśnięcia.

Mini akumulator zasilający kamerę
Elektronika kamery

Kamera pozwala robić zdjęcia i nagrywać klipy. Jakość jest bardzo słaba, ale działa. Niska cena pozwala bez stresu eksperymentować na elektronice kamerki.

Przykładowe zdjęcie z kamery

Jako że przyciski mają cztery nóżki trzeba sprawdzić, pod które z nich podprowadzona jest ścieżka. Można zwierać poszczególne nóżki kablem połączeniowym i obserwować czy np. kamera się włączy. W tym przypadku używane były dwie lewe pary nóżek obu przycisków. Przylutowałem do nich krótkie przewody, które w dalszej części trafią do elektronicznego przełącznika.

Przyciski na płytce kamery

Elektroniczny przełącznik

Przełączniki sterowane za pomocą pinu GPIO to tranzystory, przekaźniki mechaniczne, czy przekaźniki półprzewodnikowe. Do małych napięć można stosować małe tranzystory albo przekaźniki półprzewodnikowe przeznaczone do takich napięć. Do dwóch przycisków potrzebowalibyśmy dwa tranzystory i dwa oporniki (GPIO - opornik - baza tranzystory). Przewody biegnące od przycisku trzeba byłoby podłączyć do dwóch pozostałych pinów tranzystora (kolektor/emiter), ale trzeba by też zmierzyć napięcie na nich (który jest plusem).

Ja zastosowałem przekaźnik półprzewodnikowy LAA110 dostępny m.in. w AVT.pl. W odróżnieniu od rozwiązania z tranzystorem nie wymaga mierzenia napięcia na przycisku - przewody można połączyć dowolnie bo ten przekaźnik to włącznik, który po prostu zamyka obwód. Żeby zamknąć obwód przez piny sterujące musi popłynąć prąd (pin cyfrowy w stanie wysokim oraz GND):

Przekaźnik LAA110
Przekaźnik LAA110 na płytce uniwersalnej

Dodatkowo na jednej kości są dwa włączniki więc można sterować dwoma przyciskami. Niestety scalak jest za mały na płytki stykowe więc przylutowałem go do zwykłej płytki uniwersalnej wraz z przewodami.

Przekaźnik można przetestować na np. diodzie LED - z jednej strony układ z diodą LED, a z drugiej GPIO/GND, które powinno zamknąć obwód z diodą gdy pin ustawimy w stanie wysokim. Gdy tak się stanie mamy pewność że wszystko działa.

Test przekaźnika na układzie z diodą LED

Niektóre urządzenia mogą stosować wyższe napięcia i moce - warto wiedzieć o jakie wartości chodzi by dobrać odpowiedni tranzystor, czy przekaźnik. Odradzam jakąkolwiek zabawę z urządzeniami zasilanymi bezpośrednio z sieci. Urządzenia zasilane z np. 12V zasilaczy mogą właśnie stosować 12V na liniach, które będziemy chcieli łączyć.

Sterowanie kamerą przez mikrokontroler

Kamera podłączona do przekaźnika

Mając działający przekaźnik albo tranzystory można połączyć je z przewodami wyprowadzonymi z przycisków kamery. Ja użyłem pyMCU. Pod pin D1 podpiąłem przycisk włączający i wyłączający kamerę, a pod D2 przycisk od nagrywania/robienia zdjęć. Oto kod do obsługi kamery przez mikrokontroler:

from time import sleep

import pymcu


class Camera(object):
    START_BUTTON = 1
    REC_BUTTON = 2

    def __init__(self, mb):
        self.mb = mb

    def toggle_camera(self):
        self.mb.pinHigh(self.START_BUTTON)
        sleep(3)
        self.mb.pinLow(self.START_BUTTON)
        sleep(2)

    def take_picture(self):
        self.mb.pinHigh(self.REC_BUTTON)
        sleep(0.5)
        self.mb.pinLow(self.REC_BUTTON)

    def toggle_recording(self):
        self.mb.pinHigh(self.REC_BUTTON)
        sleep(4)
        self.mb.pinLow(self.REC_BUTTON)


mb = pymcu.mcuModule()
camera = Camera(mb)
camera.toggle_camera()
camera.take_picture()
#camera.toggle_recording()
#sleep(5)
#camera.toggle_recording()
camera.toggle_camera()

Poręczna klasa przełącza odpowiednie piny i odczekuje odpowiedni czas wciśnięcia żeby kamera zareagowała. Teraz kamera może być kontrolowana przez cokolwiek z pinami GPIO - czy to przez (mini) komputery, czy płytki z mikrokontrolerami. Tak samo inne urządzenia - limitem jest wyobraźnia... i cena urządzeń. Odradzam eksperymentowanie na czymś drogim ;)

Metoda nieinwazyjna polegałaby na zastosowaniu np. serwomechanizmu, którego łopatka wciskałaby przycisk. Wymaga to jednak odpowiedniego przymocowania serwa, co nie musi być łatwe.

blog comments powered by Disqus

Kategorie

Strony