Problém s kódem pro senzor CCS811

michalekuba
Příspěvky: 12
Registrován: 27 kvě 2018, 22:47
Reputation: 0

Problém s kódem pro senzor CCS811

Příspěvek od michalekuba » 27 kvě 2018, 23:08

Zdravím, komunito,

v týdnu mi dorazil CO2 senzor CCS811. Chtěl jsem jej přidat do mé již dlouho běžící meteostanice (WeMos D1 Mini, BME280, BH1750), která každých 15 minut loguje data do Google Tabulek. Vzhledem k tomu, že knihovna od Adafruitu (https://bit.ly/2IO51Xu) způsobovala u WeMosu lenivost při připojování do domácí Wi-Fi sítě, jsem se nakonec rozhodl pro knihovnu od AKstudios (https://bit.ly/2s6lSys). Nejprve jsem tedy vyzkoušel ukázkový kód z této knihovny (https://bit.ly/2s5bqHH), který jsem v surovém stavu nahrál na svůj WeMos. Vše běhalo naprosto v pořádku, CO2 i VOC se v pořádku vypisovaly a když jsem na senzor dýchnul, hodnoty se začaly hýbat. No, a nyní nastala bojová situace: zakomponuj to do svého stávajícího kódu (https://pastebin.com/L7YpTFgA). Bohužel tohle už byla ta smutnější písnička, všechny senzory, které k té meteostanici mám připojeny, jedou přes sběrnici I2C a když je všechny zapojím dohromady, začne to vyhazovat guláš, jako je na obrázku níže. Napadlo mně, že by to mohl způsobovat právě připojený senzor CCS811, tudíž jsem jej zkusil odpojit, bohužel to nepomohlo a ostatní hodnoty zůstaly stále stejně "pomatené." Neboli je jasné, že jde o softwarový problém.

Mohli byste mi prosím pomoci? Kdo to vyřeší, má u mě virtuální pivo (případně jiný nápoj). :)

Díky za pomoc, JM.
Přílohy
33377703_1080847728722175_395446615424368640_n.jpg

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: Problém s kódem pro senzor CCS811

Příspěvek od ohruska » 28 kvě 2018, 07:16

Měl jsem podobný problém.
Čidlo Si7021 mě na arduinu Uno fungovalo normálně. Chtěl jsem, ale použít WEMOS D1. Na stejnou knihovnu s I2C, ani ťuk. Až se mě podařilo najít jinou knihovnu, která fungovala. Vyzkoušel bych postupné připojování senzorů, pro zjištění s kterým je problém.
Ota

michalekuba
Příspěvky: 12
Registrován: 27 kvě 2018, 22:47
Reputation: 0

Re: Problém s kódem pro senzor CCS811

Příspěvek od michalekuba » 28 kvě 2018, 09:01

Děkuji za radu, vyzkouším. Pro CCS811 existují v podstatě jen tři knihovny: od Adafruitu - ta, jak jsem psal, způsobuje nepřipojování WeMosu k Wi-Fi, pak od SparkFunu - s ní sice ostatní senzory fungují, ale zase nefunguje CCS811 no a do třetice od AKStudios. Nejsem teď doma, ale funkčnost pouze BME280 + BH1750 je v pořádku, ještě vyzkouším BME280 + CCS811 a BH1750 + CCS811.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Problém s kódem pro senzor CCS811

Příspěvek od jankop » 28 kvě 2018, 09:53

Je potřeba si také ujasnit jednu věc. Spousta senzorů I2C má na modulu pullup rezistory. Je to povinné vybavení sběrnice. Ale tyhle rezistory by měly být jenom jedenkrát. Pokud má každý senzor rezistory, tak může dojít k přetížení výstupů a nestabilitě.

michalekuba
Příspěvky: 12
Registrován: 27 kvě 2018, 22:47
Reputation: 0

Re: Problém s kódem pro senzor CCS811

Příspěvek od michalekuba » 28 kvě 2018, 09:56

Jo, to už mi bylo vysvětleno i jinde, ale tady jde spíš o to, že i když nechám připojený třeba jen BME280 a BH1750 (CCS811 zůstane odpojený), tak i tehdy to vyhazuje guláš, neboli mám spíš pocit, že v tom dělá bordel jedna z knihoven. Ale třeba je to jinak. :?:

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Problém s kódem pro senzor CCS811

Příspěvek od jankop » 28 kvě 2018, 10:04

A adresy všech senzorů tam máš?
Nějak takhle:

Kód: Vybrat vše

Wire.begin(4, 5);  // SDA a SCL pin
bmp280.begin(0x76);   // I2C adresa
...
...
Na jakých pinech máš I2C, protože definuješ GPIO4 jako WAKE_PIN a knihovna si ho řídí? Já běžně používám GPIO4 jako SDA.

michalekuba
Příspěvky: 12
Registrován: 27 kvě 2018, 22:47
Reputation: 0

Re: Problém s kódem pro senzor CCS811

Příspěvek od michalekuba » 28 kvě 2018, 10:58

Kód je přímo v odkazu, nicméně odpovím: adresy tam nemám, neboť knihovny BME280.h a BH1750.h si to řídí automaticky (rozuměj: když dám adresu do závorky za "begin", tak při kompilaci se vyjeví chyba, že v závorce takovou věc knihovna "nezná"). WAKE pin sice ve skice je definován na GPIO4, ale pro správnou funkčnost senzoru se má připojit na GND, nikoli na GPIO4... na druhou stranu, myšlenka, že ten GPIO4 může v kódu dělat špatně ostatním senzorům, není marná, zkusím to tedy změnit. Díky za nápad!

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Problém s kódem pro senzor CCS811

Příspěvek od jankop » 28 kvě 2018, 11:02

Díval jsem se do té knihovny a ona si GPIO4 opravdu jako WAKE_PIN řídí. Pokud máš fyzicky GPIO4 jako SDA, tak to musí dělat problémy.

michalekuba
Příspěvky: 12
Registrován: 27 kvě 2018, 22:47
Reputation: 0

Re: Problém s kódem pro senzor CCS811

Příspěvek od michalekuba » 28 kvě 2018, 11:50

Jo, teď se na ten pinout WeMosu dívám. Zkusím to tedy přemístit pod nějaký čistý GPIO pin, na kterém není navěšeno milion dalších věcí...
Přílohy
esp8266-wemos-d1-mini-pinout.png

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Problém s kódem pro senzor CCS811

Příspěvek od jankop » 28 kvě 2018, 13:01

Doporučuji GPIO15, pokud ho nemáš na něco speciálního. Jeho použití je jinak trochu omezeno, protože je použit pro boot mode.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů