X
Forum

Forum

Notifications
Clear all

CO2 senzory

323 Posts
52 Users
47 Likes
71 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: 7 years ago
Posts: 688
 

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: 4 years ago
Posts: 22
 

@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 3 months ago by Baros

   
ReplyQuote
(@zdenekp)
Eminent Member
Joined: 3 years ago
Posts: 33
 

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: 7 years ago
Posts: 688
 

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: 3 years ago
Posts: 33
 

@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
Page 22 / 22
Share: