Loyiha · I2C · Sensorlar sinovi
Bitta ESP dashboardida to‘rtta I2C sensorni solishtiring — va ularning farqini ko‘ring
BME280, BMP280, AHT20 va HDC1080 bitta I2C shinasida o‘tiribdi. Har biri o‘z jonli qiymatini va trend grafigini yonma-yon oladi, shunda bir qarashda qaysi sensorlar mos kelishini — qaysilari yo‘qligini ko‘rasiz. Bulutsiz, ilovasiz. Bu sinovda HDC1080 undan 5 mm narida turgan BME280’ga nisbatan deyarli 10% yuqori namlik ko‘rsatdi.
Har bir harorat/namlik sensori datasheetida o‘z xatoligini e’lon qiladi, ammo halol sinov — bir nechtasini bir xil havoga qo‘yib, ularni bir xil lahzada o‘qishdir. Ushbu loyiha aynan shuni qiladi: to‘rtta ommabop I2C detali — BME280, BMP280, AHT20 va HDC1080 — bitta shinada, bitta ESP32 yoki ESP8266 va ularning barchasini bir vaqtda ko‘rsatadigan bitta veb-dashboard.
U RisalDash — bir nechta dash.metric(...) / dash.chart(...)
chaqiruvidan adaptiv, jonli dashboard yasaydigan va uni platadan to‘g‘ridan-to‘g‘ri WebSocket orqali
uzatadigan ochiq kodli Arduino kutubxonasi asosida qurilgan.
Raqamlar nima dedi
To‘rttasi ham birga onlayn bo‘ldi. Haroratlar zich edi — taxminan yarim gradus ichida. Namlik esa eng qiziq qismi bo‘ldi:
| Sensor | Manzil | Harorat | Namlik | Bosim |
|---|---|---|---|---|
| BME280 | 0x76 | 28.5 °C | 30.3 % | 967 hPa |
| BMP280 | 0x77 | 29.0 °C | — | 968 hPa |
| AHT20 | 0x38 | 28.6 °C | 32.3 % | — |
| HDC1080 | 0x40 | 28.7 °C | 39.7 % | — |
BME280, BMP280 va AHT20 taxminan 30–32% nisbiy namlik atrofida to‘plandi. HDC1080 esa 39.7%da o‘tirdi — deyarli o‘n punkt yuqori. Hech qaysisi ochiqchasiga “noto‘g‘ri” emas: bu aynan sensorlarni bir havoda solishtirganingizdagina ilg‘aydigan nusxadan-nusxaga siljishdir. Bu, shuningdek, yalang‘och bitta modulga ishonish emas, etalonga qarab kalibrlash foydasiga zo‘r dalil. Ikki bosim sensori (BME280 vs BMP280) 1 hPa ichida mos keldi.
Temir qism
- ESP8266 (Wemos D1 mini) yoki ESP32 — ~$3–5
- BME280 (0x76), BMP280 (0x77), AHT20 (0x38), HDC1080 (0x40) — har biri bir necha dollar
- Breadboard va jumper simlar
Ulanish shundan oddiyroq bo‘lmaydi: har bir sensor bir xil to‘rtta simni bo‘lishadi —
SDA, SCL, 3V3 va GND. I2C’ning butun mohiyati shu. ESP8266da shina —
SDA = D2 (GPIO4), SCL = D1 (GPIO5); ESP32da esa —
GPIO21 / GPIO22. Har bir qurilma o‘z manzilida javob beradi, shuning uchun ikki detal
bittasini bo‘lishmasa, ziddiyat yo‘q — bu yerda to‘rttasi ham har xil.
0x40dagi HDC1080.Bu belgi klassik tuzoq: bir xil PCB beshta har xil chipdan biri o‘rnatilgan holda sotiladi, va ular har xil drayverlardan foydalanadi. Nima olganingizga ishonchingiz komil bo‘lmasa, hamroh I2C Scanner misoli shinadagi har bir manzilni chip haqidagi eng yaxshi taxmin bilan chop etadi — platani ulang, u aytib beradi.
Kod
Dashboard deklarativ. Har bir sensor kichik blok — online LED, bir juft metrika va trend grafigi, — RisalDash esa ularni joylashtiradi va qiymatlarni jonli uzatadi:
#include <RisalDash.h>
#include <Wire.h>
#include <Adafruit_BME280.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_AHTX0.h>
#include <ClosedCube_HDC1080.h>
RisalUI dash("Sensor Compare");
void setup() {
Wire.begin(); // ESP8266: D2/D1 · ESP32: 21/22
bmeOK = bme.begin(0x76); // avto-aniqlash: ulading — u onlayn bo‘ladi
bmpOK = bmp.begin(0x77);
ahtOK = aht.begin(); // 0x38
hdcOK = i2cPresent(0x40);
dash.separator("BME280 · 0x76");
dash.led("BME280 online", &bmeOK);
dash.metric("BME280 temp", &bmeT, "°C").decimals(1);
dash.chart("BME280 temp trend", &bmeT, "°C");
dash.metric("BME280 humidity", &bmeH, "%").decimals(1);
// ...yana uchta blok: BMP280, AHT20, HDC1080
dash.enableOTA();
dash.apName("SensorCompare");
dash.begin(); // captive portal, keyin Wi-Fi’ingizga ulanadi
} Sensorlar avtomatik aniqlanadi: begin() chip javob berganini qaytaradi,
va aynan shu bul qiymat kartadagi “online” LED’ini boshqaradi. Sensorni shinadan ajratib oling —
uning kartasi shunchaki offline ko‘rsatadi, qolganlari ishlashda davom etadi. Qiymatlarni har ikki
soniyada loop()da isnan() tekshiruvlari bilan o‘qing, va har bir ochiq
brauzer bir vaqtda yangilanadi.
Wi-Fi sozlash — har bir RisalDash loyihasidagidek
Kodga hech narsa qattiq yozib qo‘yishning hojati yo‘q. Birinchi yoqilganda plata saqlangan tarmoqni
topa olmaydi, shuning uchun SensorCompare nomli captive-portalli kirish
nuqtasini ko‘taradi. Telefoningizni unga ulang, sozlash sahifasi o‘zi ochiladi, uy Wi-Fi’ingizni
tanlaysiz va parolni kiritasiz. ESP ma’lumotlarni saqlaydi, qayta yuklanadi va shu ondan boshlab
tarmog‘ingizga o‘zi ulanadi — dashboard lokal tarmoqdagi o‘z IP’sida kutib turadi.
Hammasini qurilmaning o‘zi uzatadi; hech narsa bulutga tegmaydi va o‘qishlaringiz tarmog‘ingizdan
chiqib ketmaydi.
dash.enableOTA() yoqilgani uchun keyingi proshivkalar brauzerdan havo orqali ketadi —
birinchi quyishdan keyin USB-kabelsiz.
Umuman nega solishtirish kerak?
Agar issiqxona, server xonasi yoki terrarium ma’lumotlarini yozayotgan bo‘lsangiz, 10% namlik farqi “normal” va “xavf” o‘rtasidagi farqdir. Bir nechta sensorni birga kuzatish sizga qaysiga ishonishni, modul siljib ketayotgan-ketmayotganini va yangi detal bir yildan beri ishlab kelayotgani bilan qanchalik farq qilishini aytib beradi. Bu — eng arzon kalibrovka tekshiruvi va chinakam yoqimli jonli dashboard.
ESP32 & ESP8266 uchun to‘liq, build-sinovdan o‘tgan manba kodi.