Seite 1 von 5

Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 19.05.2022, 21:19
von bestfan
Inspiriert durch die tolle Arbeit von HMSteve habe ich den CO2 Sensor auf die Anwendung mit einem STM32 Board adaptiert. Aufgrund des relativ hohen Stromverbrauchs der NDIR-CO2-Sensoren ist einen dauerhafter Stromanschluss fast unumgänglich. In diesem Fall bietet sich auch die Verwendung von STM32 Boards an, insbesondere wenn durch zusätzliche Features (z.B. eines ePaper-Displays) die Größe des Sketches die Kapazität eines Arduino Pro Mini oder ähnlicher Boards deutlich übersteigt.
Neben dem geänderten Board habe ich noch folgende Anpassungen der Hardware/Software vorgenommen:
  • Integration in ein Standard-Gehäuse (86x86 mm)
  • Verwendung des Winsen MH-Z19 CO2 Sensors alternativ zu dem Sensirion SCD30
  • Verwendung eines Berührungssensors als Config-Button bzw. zum Ein- und Ausschalten der CO2-Ampel
  • Verwendung einer RGB LED für die CO2-Ampel
Die wesentlichen Informationen habe ich unter HB-UNI-Sen-CO2-STM32 abgelegt.
Der Sketch funktioniert sowohl für Blue Pill als auch für Maple Mini Boards. Es gibt auch für beide Boards ein entsprechendes PCB-Design. Die Auswahl der Sensoren erfolgt durch Anpassung des Codes. Bei der Verwendung des MH-Z19 CO2 Sensors empfiehlt sich der Einsatz eines BME280, wenn man neben der CO2-Messung die gleiche Funktionalität (Temperatur, Luftfeuchtigkeit) des SCD30 erreichen will. Für die CCU kann das Addon des Orignal-Projektes verwendet werden, sofern man sich nicht an der wenig aussagekräftigen Batteriespannung stört.
Ich hoffe, dass das Projekt vielen in der Community gefällt und zum Nachbau inspiriert. Viel Spaß damit!
Anmerkungen und Verbesserungsvorschläge sind natürlich ausdrücklich willkommen.

Viele Grüße

bestfan

p.s. und hier noch ein paar Bilder ...
Bild

Bild

Re: Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 19.05.2022, 22:35
von jp112sdl
Schön, dass noch neue AskSin-Projekte entstehen!

Re: Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 20.05.2022, 08:43
von papa
Sehr cool - bitte unbedingt auch in die Liste https://asksinpp.de/Projekte/ aufnehmen.

Re: Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 20.05.2022, 09:14
von HMSteve
Super Arbeit, und ein schoener ergaenzender use case (meiner steht eher rum und wird bei Bedarf von der Seite mit Spannung versorgt, Deiner haengt an der Wand und wird sinnvoller Weise von unten versorgt). Den Touch Sensor merkt ich mir mal fuer die Zukunft vor.

Weil's auf dem einen Foto beim "CO2" so aussieht, als wenn das Display stellenweise blasser ist: Wenn Du hier die gleichen Probleme mit immer blasser werdender Anzeige nach ein paar Tagen hast wie ich bei einem juengeren Display, hilft vermutlich diese Anpassung in der GxEPD lib https://github.com/ZinggJM/GxEPD/pull/82

Viele Gruesse,
Stephan

Re: Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 20.05.2022, 10:31
von bestfan
Schön, dass es Euch gefällt. Bild und md-Datei hatte ich gestern an den Webadmin geschickt. Sollte daher auch demnächst auf der Projekt-Seite erscheinen.

Das mit dem Display ist in der Tat ziemlich ärgerlich. Bei meinem ersten Sensor - damals vor zwei Jahren - hatte ich noch ein älteres Display erwischt. Bei denen, die ich danach hatte, war das dann aber immer ein mehr oder wenig lästiges Problem. Danke für den Tip, den ich zeitnah ausprobieren werde. Was mir allerdings auch aufgefallen war, dass bei den neueren Displays das Verschwimmen durch starke Lichteinstrahlung extrem beschleunigt wird. Ich bin gespannt, ob der Effekt durch die Code-Änderung reversibel ist. Ich werde berichten.

Viele Grüße

bestfan

Re: Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 20.05.2022, 20:58
von bestfan
Super, das ePaper-Display ist nach der Änderung im Code jetzt wieder gestochen scharf.
Danke Stephan für den Hinweis!

Re: Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 20.05.2022, 21:56
von HMSteve
Super, danke fuer Deine Rueckmeldung. Dann hoffe ich mal, dass mein PR bald uebernommen wird...

Re: Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 03.06.2022, 14:39
von Psi
Sorry, hab die Mail einfach übersehn :roll:

Re: Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 03.12.2022, 15:14
von Lokverführer
Hallo zusammen,

ich versuche mich gerade an einem Nachbau des Projektes mit dem MHZ19.

Ist die Bibliothek "MHZ-19" Version 1.5.4 von Jonathan Dempsey die richtige?

Ich erhalte beim Kompilieren leider diese Fehlermeldungen:

Code: Alles auswählen

Arduino: 1.8.13 (Windows 10), Board: "Generic STM32F103C series, STM32F103C8 (20k RAM. 64k Flash), STM32duino bootloader, 72Mhz (Normal), Smallest (default)"

In file included from C:\Users\marti\Documents\Arduino\HB-UNI-Sen-CO2-STM32-main\HB-UNI-Sen-CO2-STM32\HB-UNI-Sen-CO2-STM32.ino:61:0:

sketch\sensors/Sens_MHZ19.h: In member function 'void as::Sens_MHZ19::measureRaw()':

Sens_MHZ19.h:37:24: error: 'class MHZ19' has no member named 'available'

         while (!_mhz19.available())

                        ^

Sens_MHZ19.h:42:23: error: 'class MHZ19' has no member named 'available'

            if (_mhz19.available())

                       ^

Sens_MHZ19.h:47:20: error: 'class MHZ19' has no member named 'available'

         if (_mhz19.available())

                    ^

sketch\sensors/Sens_MHZ19.h: In member function 'void as::Sens_MHZ19::init(bool)':

Sens_MHZ19.h:71:20: error: 'class MHZ19' has no member named 'available'

         if (_mhz19.available() == false)

                    ^

sketch\sensors/Sens_MHZ19.h: At global scope:

Sens_MHZ19.h:135:23: error: no 'bool MHZ19::available()' member function declared in class 'MHZ19'

 bool MHZ19::available()

                       ^

exit status 1

'class MHZ19' has no member named 'available'
Vielleicht kann mir ja jemand einen Tipp geben, wie ich da weiterkomme? :idea:

Re: Vorstellung HB-UNI-Sen-CO2-STM32

Verfasst: 04.12.2022, 22:24
von bestfan
Hallo Lokverführer,
sorry, da will jemand Dein Teil nachbauen und dann so etwas. :cry:
Da hat wohl jemand noch eine kleine Änderung in die Library eingebaut und nix gesagt ...
Ich habe die 1.5.3 LIbrary verwendet, mit folgender Änderung im (MHZ19.h):
107c107,110
< /* disables calibration or sets ABCPeriod */
---
> /* ensure communication is working (included in begin())*/
> bool available();
>
> /* disables calibration or sets ABCPeriod */
Ich hoffe, dass hilft für's Erste?
Ciao
bestfan