Forum
Narazil jsem na celkem pěkné zařízení s CO2 a tVOC senzory od Sensirionu a 4" dotykovým displayem založené na ESP32S3 a RP2040.
Je to open source, možno programovat v Arduinu.
Cena 2700 Kč za verzi s LoRa (2500 Kč bez LoRa, verze D1S) mi přijde OK.
Jak z toho nejjednodušeji dostat data do Loxonu? Nejsem programátor, ale v Arduinu jsem se o něco pokoušel, dalo by se to řešit přes UDP?
#include <Arduino.h> #include <Wire.h> #include <SPI.h> #include <SD.h> #include <SensirionI2CScd4x.h> SensirionI2CScd4x scd4x; String SDDataString = ""; //The built-in sensor needs to be powered on void sensor_power_on(void) { pinMode(18, OUTPUT); digitalWrite(18, HIGH); } void sensor_scd4x_init(void) { uint16_t error; char errorMessage[256]; scd4x.begin(Wire); // stop potentially previously started measurement error = scd4x.stopPeriodicMeasurement(); if (error) { Serial.print("Error trying to execute stopPeriodicMeasurement(): "); errorToString(error, errorMessage, 256); Serial.println(errorMessage); } // Start Measurement error = scd4x.startPeriodicMeasurement(); if (error) { Serial.print("Error trying to execute startPeriodicMeasurement(): "); errorToString(error, errorMessage, 256); Serial.println(errorMessage); } } void sensor_scd4x_get(void) { uint16_t error; char errorMessage[256]; Serial.print("sensor scd4x: "); // Read Measurement uint16_t co2; float temperature; float humidity; error = scd4x.readMeasurement(co2, temperature, humidity); if (error) { Serial.print("Error trying to execute readMeasurement(): "); errorToString(error, errorMessage, 256); Serial.println(errorMessage); } else if (co2 == 0) { Serial.println("Invalid sample detected, skipping."); } else { Serial.print("Co2:"); Serial.print(co2); Serial.print("\t"); Serial.print("Temperature:"); Serial.print(temperature); Serial.print("\t"); Serial.print("Humidity:"); Serial.println(humidity); } } int cnt = 0; void setup() { Serial.begin(115200); sensor_power_on(); Wire.setSDA(20); Wire.setSCL(21); Wire.begin(); sensor_scd4x_init(); } void loop() { delay(5000); sensor_scd4x_get(); }
Specifikace SenseCAP Indicator D1Pro
- Obrazovka: 3,95", RGB kapacitní dotyková obrazovka
- Rozlišení obrazovky: 480 x 480 px
- Napájení: 5V DC, 1A
- WiFi: 802.11b/g/n, 2,4 GHz
- Bluetooth : Bluetooth 5.0 LE
- LoRa(SX1262): LoRaWAN/(G)FSK, dosah až 5 km
- Procesory:
- ESP32-S3: Xtensa® dvoujádrový 32bitový LX7, až 240 MHz
- RP2040: Dual ARM Cortex-M0+ až 133 MHz
- Flash paměť:
- ESP32S3: 8 MB
- RP2040: 2 MB
- Externí paměť: microSD karta až 32 GB (není součástí balení)
- Senzory (volitelné):
- Vestavěný CO2 (SCD41)
- Rozsah: 0 ppm až 40 000 ppm
- Přesnost: 400 ppm až 5000 ppm ± (50 ppm + 5 % čtení)
- Vestavěný TVOC (SGP40)
- Rozsah: od 1 do 500 indexových bodů VOC
- Externí čidlo teploty a vlhkosti
- Rozsah: od -40 °C do + 85 °C /± 0,3 °C; od 0 % do 100 % RH / ± 2 % RH (25 °C)
- Vestavěný CO2 (SCD41)
- Bzučák: MLT-8530, rezonanční frekvence: 2700 Hz
Jestli nepotrebujes displej, tak jsem tu nekde postoval svoje reseni nad SCD30 a wemos mini d1 (celkova cena do 1400,-) vc kodu, ktery data posila do do Loxone pres UDP.
@l-adamek hľadal som a dako slabo :/ nemohol by si sem hodiť vlakno ? Aj mňa to celkom zaujíma, vďaka
@l-adamek Display bych právě chtěl, chci mít možnost to vzít jinam.
SCD30 mám, zkoušel jsem kromě jiných i tvoje řešení, ale z čidla lezly nesmyslný hodnoty, možná jsem měl něco špatně nastavený.
Je možno zveřejnit/poslat tvůj program pro Wemos mini d1, že bych to znovu vyzkoušel?
Ahoj, níže jednoduchý kód pro venkovní kalibraci čidla a pak kód pro finální nahrání s komunikací Loxone přes UDP. Časem to asi přepisu na MQTT, ale ještě nebyl čas.
Hodim to na github a poslu sem zakladni info. Dejte mi par dni, jsem ted mimo svuj komp.
Tak moje SCD30 je definitivně mrtvý, nekomunikuje a ani neprovádí měření.
@baros a zkousel jsi i jiny Wemos? Popripade si zkontroluj spravny zapojeni. Mě se několikrát stalo, že během pájení se mi daný výstup na wemosu poškodil a nešlo s tím nic dělat. Musel jsem prostě vzít nový a opatrněji pájet, ačkliv na pohled nebylo poškození vidět. Detaily zapojení kdyžtak zde
https://www.vodnici.net/community/loxone-a-arduino/co2-senzory/paged/18/#post-29266
Ahoj, tak po delsi dobe, co provozuju 5x SCD30 jsem se rozhodl nějaký čidla dokoupit a narazil jsem na SCD40/41. Velikostně se jedná o mnohem menší čip, který je navíc levnější a poskytovana data jsou +- stejný jako SCD30. Viz graf, kde zelena krivka je stara SCD30 v zasuvce, ruzova nova SCD30 v krabicce na stole a fialova SCD40 ve stejny krabicce. Rozdily minimalni.
Nicmene velikostne je to docela rozdil
Ale ted to nepodstatnejsi u SCD30 se dal nastavit pravidelny merici interval, problem byl, kdyz jste uspali Wemos, tak nekdy jste prosvihli merici interval a pak Wemos cekal az budou data znovu dostupna.
U SCD40 sice muzete zapnout periodicke mereni stejne jako u SCD30, ale interval je bud 2s nebo 30s. Nicmene SCD40 ma moznost vypnout periodicke mereni a udelat tzv. jednorazove mereni. Takze jakmile se Wemos probudi, tak muze provest jednorazove mereni, pokud se z jednorazoveho mereni vrati nonsens, obvykle CO2 = 0, tak muzete provest hned druhe jednorazove mereni a to jiz vam vrati spravne hodnoty, zaroven muzete SCD40 uspat a nasledne probudit.
Vzhledem k tomu ze dane cidlo stoji cca 13dolaru na Ali + Wemos za 3 dolary, tak mate za 16 dolaru (cca 400Kc) CO2 cidlo, ktery meri pro domaci pouzit vice nez dobre.
Pokud by byl zajem muzu poskytnout i kod pro Arduino, ktery posila MQTT zpravy s hodnotami CO2, vlhkost, teplota a co je asi nepodstatnejsi, je mozne poslanim zpravy do konkretniho topicu dane cidlo zkalibrovat. Automaticke kalibrace jsou totiz v domacim pouziti nepouzitelne.
@zdenekp Ahoj, zkoušel si napojit, nebo kdokoliv na Modbus extension přímo? SCD30 má přímo podporu, ale nevím jestli to jde. Momentálně si s tím taky hraju. Na arduinu rozběhnu, ale na Loxonu ani v pc přes Qmod ani ťuk.
Loxon:
Baud dle dokumentace SCD30: 19200
Adresa: 97
Registr: 3
Počáteční adresa: 40 (dokumentace říká 40-41,42-43 a 44-45)
To samé přes Qmod, tam ale používám převodník ( https://www.aliexpress.com/item/1005006340391490.html?spm=a2g0o.order_list.order_list_main.17.10031802Rm5uLd) UART na RS485 a Waveshare RS485 na USB.
Zkoušel jsem i propojit za běhu VDD a SEL jak uvádí dokumentace, a taky nic.
Už mě nenapadá jak dál, možná tady kombinuju něco, co kombinovat nelze. Arduino až poslední možnost.
Pokud se vrhnu na arduino tak tam použiji TCA9548 pro zapojení více čidel. Chci mít čidla po místnostech a kombinovat s rekuperací.
@ansuz není modbus jako modbus, na to aby scd30 mohla komunikovat přímo s Loxone přes Modbus je nutný modul ttl na rs485 třeba zde
https://a.aliexpress.com/_EJ6Hz8v. Jelikož SCD komunikuje s jiným napětím než RS485, jen upozorním, že ten převodník musí být přímo u SCD30 a ne někde po 10m, TTL nemá takový dosah jako RS485. To je první problém.
Druhý problém je že SCD má pevnou modbus adresu, takže k modbus extension je možné připojit maximálně jeden senzor. Ano můžeme to hnát přes levný modbus usb konvertry na RPI, ale je to tak komplikovaný řešení, že je mnohem jednoduší připojit malej wemos k senzoru a pak si to posílat po síti, dle libosti.
Zkoušel jsem všechny možnosti a wemos s danym čidlem se po 2 letech ukázal jako nejstabilnejsi řešení. Za celou dobu ani jeden problém.
Upřímně nechápu takový odpor k arduinu. Na všechno existuje návod a dokonce i hotový programy. Pokud je problém dosah wifi, tak se k arduinu může připojit modul s ethernetem. Na ten jsou zapotřebí 2 páry z UTP, takže další 2 páry zbývají na napájení arduina a na to stačí jen jeden pár, takže druhej je jako záloha. Ale samozřejmě to pak zabírá místo ve switchi a má to dokonce 2X větší spotřebu než přes WiFi.
A jedno upozornění I2C má dosah maximálně tak 5m spíše tak 1m takže použít centrální arduino na celý dům nejde. Přirovnal bych to k tomu jako by chtěl někdo připojit pevnej disk v počítači, ale ten disk měl 10m daleko. SATA je taky dělaná tak na 1m.
Takže skutečně 1 wemos s 1 senzorem. Velikostně je to fakt zanedbatelný a cenově ani nemluvím.
@zdenekp Děkuju, proto píšu abych znovu neobjevoval kolo. Budu se řídit zkušenostma co jsi napsal a proženu to přes ten Wemos. Nejde o nechuť k arduinu, na těch mi poběží v baráku světla. Spíš o tu wifi, ještě nevím jak bude pokrytý barák, ale je to pak řešitelné AP. Obecně jsem chtěl mít všechno na kabelu, ale v těchto pár kouscích udělám výjimku :-). Wemosy jsou už objednaný.
Ještě jednou dík.
Namiesto wemosu pouzi olimex esp32 poe a mas to na jeden kabel aj s napajanim.