[PRZYKŁAD] Moduł DFRobot Fermion: AS7341 ze spektralnym czujnikiem światła

W niniejszym artykule zaprezentujemy moduł DFRobot Fermion: AS7341 ze spektralnym czujnikiem światła AS7341 firmy ams. Sensor umożliwia detekcję natężenia światła oraz prostą analizę jego widma. Pokażemy także prosty przykład obsługi sensora na platformie Arduino.

Do budowy przykładu użyjemy następujących elementów:

Sensor AS7341

Czujnik AS7341 produkowany przez ams to sensor umożliwiający detekcję natężenia światła. Układ pozwala na analizę widma optycznego w 11 kanałach w zakresie od 350 nm do 1000 nm. Sensor jest przeznaczony do aplikacji mobilnych umożliwiających identyfikację spektralną światła, a także dopasowanie koloru.

Sześć spośród 11 kanałów można przetwarzać równolegle za pomocą wbudowanego przetwornika analogowo-cyfrowego, natomiast pozostałe są dostępne przez multiplekser. Osiem kanałów obejmuje pełny zakres światła widzialnego, jeden mierzy bliską podczerwień, natomiast jeden to tzw. kanał czysty, mierzący natężenie w pełnym spektrum. Ostatni kanał służy do detekcji migotania sygnału świetlnego z częstotliwością 50 Hz lub 60 Hz. Silnik detekcji migotania może też przekazywać dane, co pozwala na zewnętrzne obliczenia innych częstotliwości. Układ można też synchronizować z sygnałami zewnętrznymi.

Czujnik AS7341 zawiera również filtry wbudowane w strukturę CMOS. Jest to osiągalne dzięki technologii filtrów interferencyjnych Nano-Optic. Natomiast obudowę zaprojektowano w ten sposób, aby zapewniała odpowiednią aperturę do kontroli światła wprowadzanego na matrycę czujników. Dane z czujnika oraz komendy są przesyłane za pomocą interfejsu I2C. Układ jest dostępny w obudowach OLGA-8 o wymiarach 3,1 x 2 x 1 mm.

Rys. 1. Rozkład pasm częstotliwościowych poszczególnych kanałów

Najważniejsze właściwości sensora AS7341:

  • Zakres wykrywania światła widzialnego:
    • F1 (405 – 425 nm),
    • F2 (435 – 455 nm),
    • F3 (470 – 490 nm),
    • F4 (505 – 525 nm),
    • F5 (545 – 565 nm),
    • F6 (580 – 600 nm),
    • F7 (620 – 640 nm),
    • F8 (670 – 690 nm),
  • Interfejs I2C,
  • Adres I2C: 0x39,
  • Napięcie zasilania 1,8 V,
  • Zakres temperatur pracy: -30°C do 85°C,
  • Zakres wilgotności roboczej: 5% RH do 85% RH
  • Wymiary: 3,1 x 2 x 1 mm

Moduł DFRobot Fermion: AS7341

W przykładzie wykorzystamy moduł DFRobot Fermion: AS7341 z wbudowanym czujnikiem. Moduł ma postać niewielkiej płytki o wymiarach 18 x 14 mm. Styki sensora wyprowadzono na standardowe złącza goldpin o rastrze 2,54 mm. Po przylutowaniu dołączonego złącza szpilkowego można więc moduł umieścić w płytce stykowej lub podłączyć przy pomocy standardowych przewodów. Moduł, oprócz sensora, zawiera także dwa stabilizatory umożliwiające wygenerowanie napięć 1,8 V (do zasilania czujnika) oraz 3,3 V (jako napięcie logiczne magistrali I2C).

Moduł akceptuje zasilania z zakresu napięć 3,3 – 5 V.

Rys. 2. Moduł DFRobot Fermion: AS7341

Podłączenie modułu

Moduł z czujnikiem AS7341 komunikuje się za pomocą interfejsu I2C, toteż należy podłączyć odpowiednie wyprowadzenia do złącza Arduino. Moduł będzie zasilany napięciem 5 V, również pozyskiwanym z płytki Arduino.

Połączenie przedstawiono na poniższej tabelce, a także fotografii.

Tabela 1. Sposób podłączenia modułu DFRobot Fermion: AS7341 do Cytron Maker Uno

DFRobot Fermion: AS7341 Cytron Maker Uno
VDD 5V
GND GND
SDA SDA
SCL SCL

Rys. 3. Moduł DFRobot Fermion: AS7341 podłączony do płytki Cytron Maker Uno

Kod przykładu

Przykład prezentuje prosty sposób implementacji obsługi czujnika AS7341 na platformie Arduino. Odczytuje on wszystkie kanały widma światła, a następnie wypisuje ich wartość na port szeregowy, wraz z opisem koloru.

Na początku należy dołączyć bibliotekę do obsługi modułu DFRobot z sensorem AS7341. Bibliotekę można pobrać w formacie zip ze strony producenta, a także z sekcji Do pobrania pod tekstem artykułu. Następnie tworzony jest obiekt as7341, z którego można uruchomić funkcje obsługujące czujnik.

W funkcji setup inicjalizowana jest komunikacja za pomocą portu szeregowego oraz komunikacja z czujnikiem przez I2C. W przypadku, gdy mikrokontroler nie będzie w stanie nawiązać komunikacji z sensorem, na porcie szeregowym ukaże się odpowiednia informacja.

Pętla główna programu tworzy dwa obiekty przechowujące dane. Jako, że wbudowany przetwornik ADC oferuje jedynie 6 kanałów, aby odczytać wszystkie informacje z sensora należy podzielić pracę na dwie części. Najpierw należy odczytać 4 kanały, następnie zmienić ustawienia multipleksera przekierowując do przetwornika nieodczytane wcześniej dane i odczytać pozostałe kanały.

Po wykonaniu pomiaru dane otrzymane z czujnika są wypisywane na port szeregowy. Generalnie im wyższa liczba tym większe natężenie światła w danym paśmie. Dokładne dane dotyczące wartości, a także metod kalibracji można znaleźć na stronie producenta czujnika: https://ams.com/as7341

 

Wynik pracy programu zaprezentowano na poniższym zrzucie ekranu:

Rys. 4. Wynik pracy przykładowego kodu

Pełen kod przykładu znajduje się w sekcji Do pobrania.

Moduł DFRobot Fermion: AS7341 jest dostępny w ofercie sklepu internetowego Kamami.pl

Do pobrania

O autorze