Układ elektroniczny
Czujnikiem, którym się posłużymy, będzie matryca trzydziestu sześciu fototranzystorów. Jej schemat wraz z połączeniami do płytki Nucleo L476RG prezentuje rysunek. Wszystkie kolektory fototranzystorów z pojedynczego wiersza są podłączone do wejścia przetwornika analogowo-cyfrowego oraz podciągnięte do 3,3 V za pomocą rezystora o rezystancji 100 kΩ. Emitery są połączone w kolumnach. Każda z nich jest podłączona do pinu mikrokontrolera pracującego jako wyjście. Kolumna jest aktywna, gdy na wyjściu panuje stan niski. Do płytki zostały także podłączone trzy diody LED, które służą do pokazania jaki kształt został wykryty. Matryca została zlutowana na uniwersalnej płytce PCB. Gotowy model prezentuje fotografia tytułowa
Zbieramy dane
Zanim przystąpimy do trenowania sieci musimy zebrać dane. W repozytorium [1] znajdziemy program, który w pętli odczytuje stan fototranzystorów i wysyła je poprzez port szeregowy jako tablicę liczb w formacie JSON. Potrzebne są nam jeszcze kształty, które będziemy rozpoznawać. Ja zdecydowałem się na kwadrat o boku 4 cm, koło o średnicy 4 cm oraz trójkąt równoboczny o boku 4 cm. Kształty zostały wycięte z grubego kartonu.
Do odczytu danych została przygotowana aplikacja w formie strony WWW. Znajdziemy ją w repozytorium [1] w folderze gui oraz pod adresem [2]. Jej działanie zostało sprawdzone w przeglądarce Chrome. Po jej uruchomieniu klikamy przycisk Connect i z listy wybieramy port COM naszego projektu. Gdy port zostanie prawidłowo otwarty, zostanie pokazany aktualny stan czujników. Aby zapisać przykład szkoleniowy wybieramy odpowiednią etykietę: Pusty, Kwadrat, Koło, albo Trójkąt i klikamy Add. Struktura danych z oznaczonymi przykładami będzie pojawiać się na dole strony. Jest to słownik przechowujący dwie tablice: labels zawiera etykiety, a data odpowiadające im stany matrycy.