Hallo, ich habe mir das JOY-IT Breakout-Board CCS811 zur Messung der Luftreinheit zugelegt.
Link zum Board
Leider haperts mit dem Auslesen. Google spuckt leider nicht viel Hilfe aus.
Ich betreibe das Board mit einem Arduino nano ohne Boot Loader.
Ich habe nur ein komplettes Bascom Beispiel hier gefunden:
Gefundenes Beispielprogramm aus Japan
Dort werden aber 2 Sensoren ausgelesen und die Programmierung ist nicht wirklich übersichtlich.
Ich habe mir die Stellen rausgesucht um ein kurzes Bascom Programm zum Verständnis zu haben.
Die Ausgelesenen Daten (VOC ist für mich wichtig TVoc wäre noch besser) werden über USB Serial ausgegeben, um einfach mit Putty schauen zu können.
Kann mir jemand sagen, was ich falsch mache?
Ich bekomme seriell nur eine Zahl 65535 angezeigt.
putty.png
Hier mein Code:
Alles anzeigen
Ich habe die Twi Hardware Pins genommen, aber wie im Beispiel software i2c genutzt.
Wake wurde dauerhaft auf Masse gelegt.
diagram.png
Hier gibt es eine Arduino Libary
Link zum Board
Leider haperts mit dem Auslesen. Google spuckt leider nicht viel Hilfe aus.
Ich betreibe das Board mit einem Arduino nano ohne Boot Loader.
Ich habe nur ein komplettes Bascom Beispiel hier gefunden:
Gefundenes Beispielprogramm aus Japan
Dort werden aber 2 Sensoren ausgelesen und die Programmierung ist nicht wirklich übersichtlich.
Ich habe mir die Stellen rausgesucht um ein kurzes Bascom Programm zum Verständnis zu haben.
Die Ausgelesenen Daten (VOC ist für mich wichtig TVoc wäre noch besser) werden über USB Serial ausgegeben, um einfach mit Putty schauen zu können.
Kann mir jemand sagen, was ich falsch mache?
Ich bekomme seriell nur eine Zahl 65535 angezeigt.
putty.png
Hier mein Code:
BASCOM-Quellcode: Joyit_Sensorboard_CCS811.bas
- $Regfile="m328pdef.dat"
- $Crystal=16000000
- $hwstack=80
- $swstack=80
- $framesize=80
- $baud= 9600
- Print "com Test"
- 'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 'Serielle Schnittstelle aktivieren
- $lib "i2cV2.LBX"
- Config Scl = Portc.5 'Arduino nano A5
- Config Sda = Portc.4 'Arduino nano A4
- I2cinit
- Const Ccs811_adr = &HB4 'Die I2C-Adresse von CCS811.
- Dim Eco2 As Word '-eCO2-Wert (Äquivalent CO2) ppm.
- Dim Tvoc As Word 'TVOC-Wert (Gesamt-VOC) ppb.
- Dim I2cbuff (30) As Byte 'I2C-Sende- / Empfangspuffer.
- Dim I2clength As Byte 'Die Anzahl der empfangenen I2C-Datenbytes.
- Dim Ccs811temp1 As byte
- Waitms 30 'Wartet auf die CCS811-Startzeit (tSTART).
- 'Reset Ccs811_nwake 'Setzen Sie den [nWAKE] -Pin des CCS811 auf [L].
- Waitus 60 'Wartet auf die Startzeit (tAWAKE) von [nWAKE] = [L] von CCS811.
- I2cbuff (1) = &H20 '[HW_ID] -Register.
- I2clength = 1 'Anzahl der empfangenen I2C-Bytes.
- i2cstart
- I2cbuff (1) = &H01 '[MEAS_MODE] -Register.
- I2csend &hb4, I2cbuff (1), 2 '1-Byte-Adresse und 1-Byte-Daten über den I2C-Bus senden.
- I2cbuff(2) = &B0001_1000 ' (Abtastintervall 0: 1 Sekunde = &B0001_1000, 1:10 Sekunde=&B0010_1000, 2:60 Sekunden=&B0011_1000 )
- I2csend Ccs811_adr , I2cbuff(1) , 2 '1-Byte-Adresse und 1-Byte-Daten über den I2C-Bus senden.
- i2cstop
- '##########################################################################
- do
- print "neu"
- 'Ccs811read:
- I2cbuff (1) = &H02 '[ALG_RESULT_DATA] Register.
- I2clength = 5 'Anzahl der empfangenen I2C-Bytes.
- I2csend Ccs811_adr , I2cbuff(1) , 1
- waitus 100
- I2cstart
- I2cwbyte Ccs811temp1 + &H01
- Ccs811temp1 = 1
- While I2clength <> 1
- I2crbyte I2cbuff(ccs811temp1) , Ack
- Ccs811temp1 = Ccs811temp1 + 1
- I2clength = I2clength - 1
- Wend
- I2crbyte I2cbuff(ccs811temp1) , Nack
- ' I2creceive &hb4 + &H01,empfang
- I2cstop
- waitms 300
- Eco2 = Makeint (i2cbuff (2), I2cbuff (1)) 'Konvertiert 2-Byte-ECO2-Daten in eine Wortvariable.
- Tvoc = Makeint (i2cbuff (4), I2cbuff (3))
- waitms 1000
- Print Tvoc ;"Tvoc"
- print eco2 ;"eco2"
- loop
- '##########################################################################
Wake wurde dauerhaft auf Masse gelegt.
diagram.png
Hier gibt es eine Arduino Libary
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von mirco99 ()