Kanał łączności I2C już jest. Teraz warto pomyśleć jakie elementy taki kanał może połączyć. Po jednej stronie będzie oczywiście mikrokontroler. Mój ulubiony ESP32 C2 już czeka w kolejce. A co będzie po drugiej pomyślimy dzisiaj.
Gdzie szukać ciekawych propozycji modułów z magistralą I2C? Ja zaglądam na strony sklepów z elektroniką dla habbystów (botland , kamami ) Liczbowo jest tego naprawdę sporo. Ale dokładniejszy przegląd pozwala wytypować tylko kilka interesujących propozycji - głównie czujników. W mojej domowej automatyce widzę miejsce dla modułów do pomiaru parametrów powietrza - temperatury, wilgotności, ciśnienia. Ciekawe są również czujniki jakości powietrza - TVOC i CO2 a raczej eCO2.
Kupiłem na próbę kilka modułów i sprawdzę co z nimi można ciekawego zrobić
GY-21
Czujnik temperatury i wilgotności - niedrogi i przyzwoity
- zakres pomiaru wilgotności: 0-100 %RH
- Wilgotność dokładność ±2% ponad 5 do 95% RH (typ)
- Temperatura zakres of -40 to 125°C
- Temperatura dokładność ±0.6°C ponad -30°C do 90°C (typ)
- czas odczytu <50mS
- 3.3 do 5V zasilanie
- I2C_ADDR 0x40
AHT10
Czujnik temperatury i wilgotności - równie tani i bardziej dokładny. Ma jednak minus wyprowadzenia pinów są inne niż większości modułów co nieco komplikuje jego przyłączenie do płytki procesora.
- napięcie zasilania: od 1.8V do 5V
- dokładność pomiaru temperatury: 0.3°C
- zakres pomiaru temperatury: -40°C do 85°C
- dokładność pomiaru wilgotności: 2 %RH
- zakres pomiaru wilgotności: 0-100 %RH
- I2C_ADDR 0x38 lub 39 po przelutowaniu opornika
BMP 280
Czujnik ciśnienia atmosferycznego - najpopularniejszy w chińskim sklepie. Działa i jest ok. Ma dodatkowe piny, które można pominąć jeśli komunikujemy się z modułem poprzez I2C.
Napięcie zasilania: 3,3 V
Zakres pomiarowy: od 300 hPa do 1100 hPa
Dokładność: 1 hPa
Interfejs komunikacyjny: I2C lub SPI
Wbudowany termometr
SDO=0 adres = 0x76 SDO=1 aders = 0x77
CSB=1 BMP w modzie I2C
ENS160 + AHT2x
Ciekawą propozycją wydawał się zintegrowany z dwóch czujników moduł. Zawiera czujnik jakości powietrza ENS160 i czujnik temperatury i wilgotności AHT2x - x oznacza którąś z wersji AHT.
AHT2x
Jakie są dokładnie parametry czujnika AHT2x nie wiadomo, bo nie wiadomo, którą wersję zapakowano moduł w Chinach. Ale to bez znaczenia. Można przyjąć, są to takie parametry jak powyżej.
- Adres 0x38
ENS160
To czujnik jakości powietrza
- Zakres pomiaru TVOC: od 0 do 65000 ppb
- Zakres pomiaru eCO2: od 400 do 65000 ppm
- Czas nagrzewania poniżej 3 minut
- Adres I2C: 0x52, 0x53
- Temperatura robocza: od -40 do 85 °C
- Wilgotność robocza: od 5 do 95 %RH
- 5 stopniowy wskaźnik jakości powietrza (do sterowania np. wentylatorem)
Moduł ma sporo zacisków ale dla I2C potrzebujemy jedynie zasilanie i dwie linie sygnałowe
Pin CS służy do wyboru rodzaju protokołu 0 - SPI 1 - I2C
INT to sygnał przerwania dla mikroprocesora gdy pomiar jest gotowy do odczytu
ADD ustawia adres dla I2C 0 - 0x52 1- 0x53
Czujnik ma atrakcyjną cenę (ok 20 PLN) ale sporo niedostatków.
Trzeba mu dołożyć kondensator filtrujący (ok 10 uF) do zasilania czujnika ENS160 by pracował poprawnie (mój akurat pracuje poprawnie). W sprzedaży są już czujniki zawierające jedynie ENS160 ale w cenie wyższej niż moduł zespolony. Zapewne pozbawiony tej wady.
Ponadto grzałka czujnika jakości powietrza mocno wpływa na pomiar temperatury przez AHT ( a pewnie i wilgotności też) zawyżając pomiary o kilka stopni. Cóż jeśli coś jest do wszystkiego może być do niczego.
Pobawiłem się tym czujnikiem trochę. Czujnik pokazuje dziwne wartości. Niby działa i reaguje na zmiany i CO2 i TVOC ale wyświetlane pomiary są mocno zawyżone. Jak na razie czujnik idzie do przechowalni - może w przyszłości coś się więcej wyjaśni. To stosunkowo świeży produkt z wieloma nie opisanymi funkcjami.
Trochę na temat tego czujnika tutaj
https://wiki.dfrobot.com/SKU_SEN0514_Gravity_ENS160_Air_Quality_Sensor
https://github.com/adafruit/ENS160_driver
https://github.com/DFRobot/DFRobot_ENS160
https://www.instructables.com/ENS160-AHT21-Sensor-for-Arduino/https://github.com/esphome/feature-requests/issues/2035#issuecomment-1837542271
https://github.com/sciosense/ENS160_driver/issues/8
Koniec końców moduł zaczął działać ale wymaga anielskiej cierpliwości. Ma mocno skomplikowaną procedurę auto kalibracji - trzeba go uruchomić na 1-2 tygodnie w pomieszczeniu w którym co pewien czas będzie dostęp świeżego powietrza (otwarcie okna na minimum 15 min). Wskazania czujnika sprowadzane są wtedy do wartości minimalnej TVOC = 0 eCO2 = 400. Kilkukrotne powtórzenie procedury "wietrzenia" czujnika powoduje iż zaczyna on pokazywać sensowne wartości. Na plus czujnika należy wskazać bardzo dużą czułość.
Generalnie czujnik wart zainteresowania ale nie w wersji combo gdyż wskazania temperatury i wilgotności są całkowicie rozjechane przez grzejnik czujnika TVOC.
SGP30
Początkowe trudności z ENS160 wymusiły zakup konkurencyjnego czujnika. Wybrałem ten model z SGP30 -to był błąd.
Czujnik nie zadziałał. Spór otwarty i pieniądze za chwilę wróciły na konto.
SGP30 po raz drugi
Nie ma dużego wyboru czujników jakości powietrza więc ponownie zaryzykowałem zakup z SGP30. Tym razem taki
Napięcie zasilania: od 1,8 V do 5 V
Interfejs komunikacyjny: I2C
Adres interfejsu komunikacyjnego I2C: 0x58
Zakres pomiarowy:
TVOC: od 0 ppb do 60000 ppb
eCO2: od 400 ppm do 60000 ppm
Częstotliwość próbkowania: 1 Hz
Czujnik działa choć jest z nim sporo zachodu by go skalibrować. Opis może będzie w osobnym poście. Ostatecznie poszedł na półkę.
SHT30
Jeszcze jeden czujnik temperatury i wilgotności bardziej dokładny od pozostałych. Choć bez przesady - komu potrzebny jest pomiar temperatury powietrza z dokładnością do 0,2 oC? Niedrogi, działa i ma standardowy rozkład pinów.
- napięcie zasilania: od 2V do 5V
- dokładność pomiaru temperatury: 0.2°C
- zakres pomiaru temperatury: -40°C do 125°C
- dokładność pomiaru wilgotności: 2 %RH
- zakres pomiaru wilgotności: 0-100 %RH
- adres 0x44
GY-9960-3.3 APDS-9960
Czujnik światła z kilkoma dodatkowymi funkcjami
Czujnik gestów i zbliżeniowy - kiepski, światła Ok, kolorów nie sprawdziłem. Kupiłem dla funkcji zmierzchowych w domowej automatyce. Niedrogi powinien spełnić swoją rolę.
VL53L0X
Ciekawostka - laserowy ! czujnik pomiaru odległości do 2 m .
Rozdzielczość 1mm
Dokładność od 4 do 12% w zależności od koloru obiektu przy czasie pomiaru 33ms
Dokładność < 3 % przy czasie pomiaru 200ms
Pomiar odległości: 2 cm do 2 m
Długość fali lasera: 940 nm
Adres interfejsu I2C: 0x29
TSL2561
Linowy czujnik światła odpowiadający widzeniu ludzkiego oka. Zawiera dwa czujniki światła widzialnego i podczerwieni.
Czujnik działa na zasadzie całkowania wartości pomiaru przez co może mierzyć bardzo małe poziomy oświetlenia.
PAJ7620U2
Czujnik 9 podstawowych gestów.
- Napięcie zasilania: 5 V
- Prędkość pomiaru gestów:
- Tryb normalny - od 60 °/s do 600 °/s
- Tryb gamingowy - od 60 °/s do 1200 °/s
- Rozpoznawanie 9 podstawowych gestów
- Odporność na światło otoczenia: <100 k Lux
- Wbudowane wykrywanie zbliżenia
- Adres I2C: 0x73
- Redukcja szumów otoczenia
- Odległość wykrywania: 5 cm do 10 cm
- Częstotliwość odświeżania: 120 Hz
Czujnik działa nawet dobrze ale odległość maksymalna 10 cm dla rozpoznawania gestów mocno ogranicza zastosowanie.
I to na razie tyle co udało mi się wybrać z bogatej listy modułów I2C dostępnych na chińskim portalu. Powoli trzeba będzie znaleźć dla nich sensowne zastosowanie ale o to niech się już martwi nasz ulubiony ciąg dalszy.
Brak komentarzy:
Prześlij komentarz