niedziela, 9 czerwca 2024

czujniki I2C dla ESP8266 ESP32


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.


 Wydawał się bo opinie na jego temat są mocno negatywne. Ale o tym za chwilę.

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
  • Czujnik zbliżeniowy
  • Czujnik światła otoczenia
  • Czujnik kolorów RGB


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.

  • Napięcie zasilania: od 3,3 do 5 V
  • Interfejs komunikacyjny: I2C
  • Rozdzielczość: 16-bitów
  • Zakres dynamiczny: od 0,1 lux do 40 000 lux



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