X
Forum

Forum

Notifications
Clear all

CO2 senzory

328 Posts
53 Users
48 Reactions
76.1 K Views
(@baros)
Estimable Member
Joined: 7 years ago
Posts: 90
 

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? 

 

Spoiler
kód čtení hodnot ze sensorů
#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)
  • Bzučák: MLT-8530, rezonanční frekvence: 2700 Hz

 

image

 

https://botland.cz/lora-lorawan/23262-sensecap-indicator-d1pro-tvocs-co2-senzor-teploty-a-vlhkosti-lora-seeedstudio-114993071.html


   
Aleq reacted
ReplyQuote
l.adamek
(@l-adamek)
Prominent Member
Joined: 8 years ago
Posts: 702
 

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.


   
ReplyQuote
(@vladoksk)
Eminent Member
Joined: 5 years ago
Posts: 24
 

@l-adamek hľadal som a dako slabo :/ nemohol by si sem hodiť vlakno ? Aj mňa to celkom zaujíma, vďaka


   
ReplyQuote
(@baros)
Estimable Member
Joined: 7 years ago
Posts: 90
 

@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?

 

This post was modified 9 months ago by Baros

   
ReplyQuote
(@zdenekp)
Eminent Member
Joined: 4 years ago
Posts: 38
 

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.

 


   
Georgio reacted
ReplyQuote
l.adamek
(@l-adamek)
Prominent Member
Joined: 8 years ago
Posts: 702
 

Hodim to na github a poslu sem zakladni info. Dejte mi par dni, jsem ted mimo svuj komp.


   
ReplyQuote
(@baros)
Estimable Member
Joined: 7 years ago
Posts: 90
 

Tak moje SCD30 je definitivně mrtvý, nekomunikuje a ani neprovádí měření.


   
ReplyQuote
(@zdenekp)
Eminent Member
Joined: 4 years ago
Posts: 38
 

@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


   
ReplyQuote
(@zdenekp)
Eminent Member
Joined: 4 years ago
Posts: 38
 

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.

image

Nicmene velikostne je to docela rozdil

image

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.


   
Vladiczek reacted
ReplyQuote
(@ansuz)
Active Member
Joined: 8 months ago
Posts: 17
 

@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)

image
image

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í.


   
ReplyQuote
(@zdenekp)
Eminent Member
Joined: 4 years ago
Posts: 38
 

@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. 

This post was modified 1 month ago 2 times by ZdenekP

   
ReplyQuote
(@ansuz)
Active Member
Joined: 8 months ago
Posts: 17
 

@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.


   
ReplyQuote
msk
 msk
(@dusanmsk)
Member
Joined: 8 years ago
Posts: 1911
 

Namiesto wemosu pouzi olimex esp32 poe a mas to na jeden kabel aj s napajanim.


   
ReplyQuote
Page 22 / 22
Share: