HM-CC-SCD für CO Sensor

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

maxx3105
Beiträge: 72
Registriert: 19.10.2018, 16:07
Hat sich bedankt: 2 Mal

HM-CC-SCD für CO Sensor

Beitrag von maxx3105 » 14.11.2018, 11:52

Wäre es möglich mit diesem Sketch einen Co Melder zu realisieren? MQ-5 oder MQ-9 Sensoren kosten auch nicht wirklich viel.

jp112sdl
Beiträge: 3350
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 37 Mal
Danksagung erhalten: 70 Mal
Kontaktdaten:

Re: HM-CC-SCD für CO Sensor

Beitrag von jp112sdl » 14.11.2018, 17:13

Wäre es bestimmt. Mit den genannten Sensoren wäre aber kein Batteriebetrieb möglich. (Heizung und so)

VG,
Jérôme

maxx3105
Beiträge: 72
Registriert: 19.10.2018, 16:07
Hat sich bedankt: 2 Mal

Re: HM-CC-SCD für CO Sensor

Beitrag von maxx3105 » 15.11.2018, 08:30

Für den CJMCU-811 Sensor finde ich keine Angaben.

jp112sdl
Beiträge: 3350
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 37 Mal
Danksagung erhalten: 70 Mal
Kontaktdaten:

Re: HM-CC-SCD für CO Sensor

Beitrag von jp112sdl » 15.11.2018, 09:08

"CJMCU-811" bei Google eingeben.
1. 1. Ergebnis anklicken (Sparkfun) -> https://www.sparkfun.com/products/14193
2. Tab "Documents" anklicken
3. "Datasheet (CCS811)" anklicken

:wink: :lol:

Der Sensor sieht vom Stromverbrauch her schon ganz brauchbar aus.

VG,
Jérôme

maxx3105
Beiträge: 72
Registriert: 19.10.2018, 16:07
Hat sich bedankt: 2 Mal

Re: HM-CC-SCD für CO Sensor

Beitrag von maxx3105 » 15.11.2018, 11:57

Ja aber da ist einmal die rede von co2 und einmal co :?:

jp112sdl
Beiträge: 3350
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 37 Mal
Danksagung erhalten: 70 Mal
Kontaktdaten:

Re: HM-CC-SCD für CO Sensor

Beitrag von jp112sdl » 15.11.2018, 12:53

Das ist ein TVOC + CO2 Sensor. Für Luftgüte. Der misst allgemein organische Dämpfe ^^ und CO2

VG,
Jérôme

jp112sdl
Beiträge: 3350
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 37 Mal
Danksagung erhalten: 70 Mal
Kontaktdaten:

Re: HM-CC-SCD für CO Sensor

Beitrag von jp112sdl » 16.11.2018, 10:31

Kannst ja mal einen billigen Batterie-CO-Melder kaufen, zerlegen und schauen, was für ein Sensor da drin verbaut ist :)

EDIT:
Schau mal hier: https://www.digikey.com/en/maker/projec ... 28c5ca2850
Ich glaub das wäre der richtige Sensor / Ansatz.

VG,
Jérôme

maxx3105
Beiträge: 72
Registriert: 19.10.2018, 16:07
Hat sich bedankt: 2 Mal

Re: HM-CC-SCD für CO Sensor

Beitrag von maxx3105 » 20.11.2018, 18:11

Hab jetzt so einen CO Warnmelder zerlegt und diesen Sensor entdeckt.
https://euro-gasman.com/carbon-monoxide ... ensor.html

maxx3105
Beiträge: 72
Registriert: 19.10.2018, 16:07
Hat sich bedankt: 2 Mal

Re: HM-CC-SCD für CO Sensor

Beitrag von maxx3105 » 18.02.2019, 10:19

Hallo Jerome.

Beim Sketch kommt diese Fehlermeldung

HM-CC-SCD:152:46: error: 'Positions' has not been declared

Code: Alles auswählen

//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2016-10-31 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
//- -----------------------------------------------------------------------------------------------------------------------

// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER

#define CFG_STEPUP_BYTE 0x00
#define CFG_STEPUP_OFF  0x00
#define CFG_STEPUP_ON   0x01

#define CFG_BAT_LOW_BYTE 0x01
#define CFG_BAT_CRITICAL_BYTE 0x02

// define device configuration bytes
#define DEVICE_CONFIG CFG_STEPUP_OFF,22,19

// 24 0030 4D455130323134373633 80 910101

#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <LowPower.h>

#include <Register.h>
#include <ThreeState.h>

// we use a Pro Mini
// Arduino pin for the LED
// D4 == PIN 4 on Pro Mini
#define LED1_PIN 4
#define LED2_PIN 5
// Arduino pin for the config button
// B0 == PIN 8 on Pro Mini
#define CONFIG_BUTTON_PIN 8
// SENS1 SENS2
//   0    0 = normal
//   0    1 = erhöht
//   1    0 = stark erhöht
#define SENS1_PIN 14
#define SENS2_PIN 15

// number of available peers per channel
#define PEERS_PER_CHANNEL 10
#define CYCLETIME seconds2ticks(60UL * 60 * 16)

// all library classes are placed in the namespace 'as'
using namespace as;

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
    {0x13,0x56,0x34},       // Device ID
    "JPCCSCD001",           // Device Serial
    {0x00,0x56},            // Device Model
    0x10,                   // Firmware Version
    as::DeviceType::ThreeStateSensor, // Device Type
    {0x01,0x00}             // Info Bytes
};

class BatSensor : public BatterySensorUni<17,7,3000> {
  bool m_Extern;
public:
  // sense pin = A3 = 17, activation pin = D7 = 7
  BatSensor () : BatterySensorUni(), m_Extern(false) {}
  virtual ~BatSensor () {}

  void hasStepUp (bool value) {
    m_Extern = value;
    voltage();
  }

  virtual uint8_t voltage () {
    if( m_Extern == true ) {
      return BatterySensorUni<17,7,3000>::voltage();
    }
    return BatterySensor::voltage();
  }
};

/**
 * Configure the used hardware
 */
typedef AvrSPI<10,11,12,13> SPIType;
typedef Radio<SPIType,2> RadioType;
typedef DualStatusLed<LED2_PIN,LED1_PIN> LedType;
typedef AskSin<LedType,BatSensor,RadioType> BaseHal;
class Hal : public BaseHal {
public:
  void init (const HMID& id) {
    BaseHal::init(id);
    // measure battery every 1h
    battery.init(seconds2ticks(60UL*60),sysclock);
  }
} hal;

DEFREGISTER(Reg0,DREG_INTKEY,DREG_CYCLICINFOMSG,MASTERID_REGS,DREG_TRANSMITTRYMAX)
class RHSList0 : public RegList0<Reg0> {
public:
  RHSList0(uint16_t addr) : RegList0<Reg0>(addr) {}
  void defaults () {
    clear();
    cycleInfoMsg(true);
    transmitDevTryMax(6);
  }
};

DEFREGISTER(Reg1,CREG_AES_ACTIVE,CREG_MSGFORPOS,CREG_EVENTDELAYTIME,CREG_LEDONTIME,CREG_TRANSMITTRYMAX)
class RHSList1 : public RegList1<Reg1> {
public:
  RHSList1 (uint16_t addr) : RegList1<Reg1>(addr) {}
  void defaults () {
    clear();
    msgForPosA(1);
    msgForPosB(2); 
    msgForPosC(3); 
    // aesActive(false);
    // eventDelaytime(0);
    ledOntime(100);
    transmitTryMax(6);
  }
};


typedef ThreeStateChannel<Hal,RHSList0,RHSList1,DefList4,PEERS_PER_CHANNEL> ChannelType;
class RHSType : public ThreeStateDevice<Hal,ChannelType,1,RHSList0,CYCLETIME> {
public:
  typedef ThreeStateDevice<Hal,ChannelType,1,RHSList0,CYCLETIME> TSDevice;
  RHSType(const DeviceInfo& info,uint16_t addr) : TSDevice(info,addr) {}
  virtual ~RHSType () {}

  virtual void configChanged () {
    TSDevice::configChanged();
    // set battery low/critical values
    battery().low(getConfigByte(CFG_BAT_LOW_BYTE));
    battery().critical(getConfigByte(CFG_BAT_CRITICAL_BYTE));
    // set the battery mode
    if( getConfigByte(CFG_STEPUP_BYTE) == CFG_STEPUP_ON ) {
      DPRINTLN("Use StepUp");
      battery().hasStepUp(true);
    }
  }
};

RHSType sdev(devinfo,0x20);
ConfigButton<RHSType> cfgBtn(sdev);

void setup () {
  DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
  sdev.init(hal);
  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
  const uint8_t posmap[4] = {Positions::PosC,Positions::PosC,Positions::PosB,Positions::PosA};
  sdev.channel(1).init(SENS1_PIN,SENS2_PIN,posmap);
  sdev.initDone();
}

void loop() {
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
  if( worked == false && poll == false ) {
    // deep discharge protection
    // if we drop below critical battery level - switch off all and sleep forever
    if( hal.battery.critical() ) {
      // this call will never return
      hal.activity.sleepForever(hal);
    }
    // if nothing to do - go sleep
    hal.activity.savePower<Sleep<> >(hal);
  }
}

Code: Alles auswählen

Arduino: 1.8.8 (Windows 7), Board: "Arduino Pro or Pro Mini, ATmega328P (5V, 16 MHz)"

In file included from C:\Users\Markus\Documents\Arduino\libraries\AskSinPP-3\examples\HM-CC-SCD\HM-CC-SCD.ino:22:0:

C:\Users\Markus\Documents\Arduino\libraries\libraries\EnableInterrupt/EnableInterrupt.h:22:125: note: #pragma message: NOTICE: *** EnableInterrupt library version pre-0.9.6. This is not a problem. Keep calm, and carry on. ***

 #pragma message("NOTICE: *** EnableInterrupt library version pre-0.9.6. This is not a problem. Keep calm, and carry on. ***")

                                                                                                                             ^

C:\Users\Markus\Documents\Arduino\libraries\AskSinPP-3\examples\HM-CC-SCD\HM-CC-SCD.ino: In function 'void setup()':

HM-CC-SCD:152:30: error: 'Positions' has not been declared

   const uint8_t posmap[4] = {Positions::PosC,Positions::PosC,Positions::PosB,Positions::PosA};

                              ^

HM-CC-SCD:152:46: error: 'Positions' has not been declared

   const uint8_t posmap[4] = {Positions::PosC,Positions::PosC,Positions::PosB,Positions::PosA};

                                              ^

HM-CC-SCD:152:62: error: 'Positions' has not been declared

   const uint8_t posmap[4] = {Positions::PosC,Positions::PosC,Positions::PosB,Positions::PosA};

                                                              ^

HM-CC-SCD:152:78: error: 'Positions' has not been declared

   const uint8_t posmap[4] = {Positions::PosC,Positions::PosC,Positions::PosB,Positions::PosA};

                                                                              ^

exit status 1
'Positions' has not been declared

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

jp112sdl
Beiträge: 3350
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 37 Mal
Danksagung erhalten: 70 Mal
Kontaktdaten:

Re: HM-CC-SCD für CO Sensor

Beitrag von jp112sdl » 18.02.2019, 11:21

fixed

VG,
Jérôme

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“