Eigenbau Luftgüte-Sensor iAQ-core P (CO2)

Begonnen von juergs, 05 November 2016, 09:47:18

Vorheriges Thema - Nächstes Thema

juergs

Hallo Zusammen,
ich möchte diesen Thread hier aufgreifen und eine Implementierung mit dem Sensor der Fa. AMS
iAQ-core P mit I2C-Schnittstelle für FHEM implementieren.

Zuerst mal die Daten:
iAQ-core_Datasheet

Dann diverse Facts:
Problem with Interfacing (AMS IAQ core P) gas sensor through I2C
Problem while using IAQ-Core Pollution sensor
I2C_clock_stretching
I2C-user_manual
ESP8266
Gegenstimmen
Hardware drumherum
i2c-pull-resistors
i2c-signals

Alternativen:
bme680 oder hier und espressif

Im Moment bin ich  auf der Suche nach der passende Anbindungsform (Wireless, ESP, CC1101, RFM) an FHEM und eine funktionierende
Zugriffs-Bibliothek.

Würde auch als Standalone-Version diese Präsentationsmöglichkeit mit einbeziehen.
Sobald die bestellten Exemplare dazu angekommen sind.

Für die VM800-Module von FTDI EVE scheiden leider wegen des höheren Preises > 70€ und Einarbeitungsaufwand aus.

Über weitere Anregungen + Vorschläge würde ich mich freuen...

Grüße,
Jürgen

juergs

#1
Prototyp-Aufbau:

  • 3V3-TS5204-CX33 Spannungsregler, 150 mA-Typ
  • R-Netzwerk 3K3-10K zur Pegelanpassung TTL an 3V3-Pegel

Details zu I2C:
Zitat
Board            I2C / TWI pins
--------------------------------------
Uno, Ethernet      A4 (SDA), A5 (SCL)
Nano                    2 (SDA),    3 (SCL)
Leonardo,Micro      2 (SDA),    3 (SCL)
Mega2560              20 (SDA), 21 (SCL)
Due                      20 (SDA), 21 (SCL), SDA1, SCL1

Arduino-Lib zum Testen über I2C von Wire

Bevor ich den Sensor anschließe, teste ich noch die Pegelanpassung durch.  ;)

ATmega32U4-Breakoutboard (Micro) von hier


juergs

#3
Thema: Levelshifter, ohne Belastung des 3V3-Teils.
Offen zeigt der Output eine starke Verfälschung der Flanke ab ca. 1.04V. (Ohne Last könnte das OK sein.)

Die 2N7002 sind in der verwendeten Schaltung  nicht  Kurzschluss-geschützt!
Ein Abrutschen mit der Meßspitze, das war's dann für den MOSFET. 

http://dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors
http://www.gammon.com.au/i2c

ZitatThe Wire library provides a convenient high-level wrapper for I²C. It has some oddities that will cause trouble if you're not aware of them.
Here are some gotchas:

Small Buffer

The Wire object's internal buffer is fixed at 32 bytes. You cannot send larger packets without modifying the library.
Asymmetric Behaviour

The write() method's behaviour is different depending on whether the class is a master or a slave. See the sections on master and slave for details.
Type Coercion

The requestFrom() method's overloads may confuse the compiler. If you get compiler errors, try coercing the parameters, for example:

const byte SlaveDeviceId = 1;
...
// Request data from slave.
Wire.beginTransmission(SlaveDeviceId);
int bytesReceived = Wire.requestFrom(SlaveDeviceId, (uint8_t)2);

No Clock Stretching

The current version of the library does not support clock stretching.
Collisions Between Multiple Masters

I'm still looking into this more, but it appears that there is no mechanism for a master to wait for for a busy bus to clear. The transmission simply fails.

Kontrovers:
No Clock Stretching

juergs

#4
Hello World!


juergs

#5
Verbesserte Version V1.2 + Arduino-Plot-Integration für Guide-to-Adruino-Serial-Plotter - Plot-Ausgabe.

#ifdef USE_WITH_ARDU_PLOTTER
      Serial.print(predict);
      Serial.print(" ");
      Serial.println(resistance);
      Serial.print(" ");
      Serial.println(tvoc);     
      //-- ende datensatz?
      Serial.println(" ");

juergs

#6
Der Aufbau ist doch etwas "wilder" geworden.

Nun noch die Erkenntnisse über den "Output" sammeln ...  :)

Und diese Geschichte prüfen:
//--- ??? Luftguete_Test.ino:82:52: warning: left shift count >= width of type

Danach die Übertagungsart in "Funk" implementieren.

PeMue

Hallo Jürgen,

jetzt ist man mal einen Tag nicht online, und man verpasst so richtig was. Ich werde mir mal die Sache genauer durchlesen müssen  ;)

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

juergs

#8
Hallo Peter,

ja. Habe mal meine Tür geschlossen, in der Hoffnung der CO2-Gehalt steigt etwas an ...   ;)

Mein Selbstbau-Micro hat mir auch noch ein paar Überraschungen beschert, funktioniert jetzt aber
bis auf den noch fehlenden SMD-Quarz ganz gut.  :D

Man muss auch noch die drei Ausgaben predict,resistance und tvoc "interpretieren" um das Verhalten des Sensor kennenzulernen
und wie die drei Größen in Beziehung zueinander stehen .....

Dazu habe ich mal die Skalierung des Plots etwas angepasst und die Zykluszeit auf 15 Sekunden erhöht und lasse mal mitlaufen.

Dann kann ich mich noch mal in der Zwischenzeit mit dem Datenblatt befassen....  ;)

Grüße,
Jürgen

PeMue

Zitat von: juergs am 06 November 2016, 19:20:06
Habe mal meine Tür geschlossen, in der Hoffnung der CO2-Gehalt steigt etwas an ...   ;)
Am besten den Sensor Nachts ins Schlafzimmer, Fenster zu und vorher noch Zwiebelkuchen essen  ;D ;D ;D

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

juergs

#10
Zitatvorher noch Zwiebelkuchen essen

Das wäre bei uns die Flammkuchen -Variante  ;D ;D ;D

PeMue

RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

juergs

#12
Es tut sich was ...

ZitatSensing technology
MEMS metal oxide sensor
Sensing range
I²C:    450 – 2000 ppm CO2 equivalents (relative)
           125 – 600 ppb TVOC equivalents (relative)
Values above the defined sensing range are provided as well.

Aber das Datenblatt ist doch etwas dünn bezüglichg des readouts  :(

Ma_Bo

Also wenn es ein CO2 Sensor für Jeelink, FS20, WLan oder Homematic werden würde, dann melde ich mal Interesse an, falls man diese dann evtl. fertig bei dir erwerben kann.  ;D

Grüße Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

juergs

#14
Hallo Marcel,

danke für das Interesse, es liegt nur noch etwas Aufwand in der Sache, also dauert noch etwas ...   ;)

Ich kenne im Moment noch keine Sensor-seitigen Implementierungen von Protokollen (z.B. 868 mit RFM), deshalb muss ich da noch etwas nachforschen
oder noch mehr Aufwand in das Reengineeren der FHEM-Perl-Seite stecken (imho ...). 

Im Moment habe ich aber auch noch diese Möglichkeit mit dem ESP8265 (kleiner Bruder des ESP8266, $2.10 + $0.60 IPX-Folien-Antenne) im Fokus
(wäre aber WLAN, ggf. mit MySensors oder MQTT etc.) Persönlich würde ich aber gerne ein 868-Protokoll nehmen wollen. (CC1101 ...)
In 433 wäre ich quasi schon fertig, wenn die Quantifizierung des Sensor-Outputs gelingt:

Dann müsste man noch die Verfügbarkeit des Sensors prüfen, scheint gerade eine Inflation zu geben ...  ;)
Übersicht  oder Temperature-and-humidity-VOC-TVOC-CO2-formaldehyde-5in1-detection-sensor. Alternative
Alle etwa in diesem Preissegment.