aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2022-01-28 15:16:38 +0000
committerdakkar <dakkar@thenautilus.net>2022-01-28 15:16:38 +0000
commitcdd4f766759f8a8e1ea36c6524895714099d2f38 (patch)
treea6a2345093e2b7df7dc1b4f49cfb3357133e96c1
parentstart (diff)
downloadenv-sensor-cdd4f766759f8a8e1ea36c6524895714099d2f38.tar.gz
env-sensor-cdd4f766759f8a8e1ea36c6524895714099d2f38.tar.bz2
env-sensor-cdd4f766759f8a8e1ea36c6524895714099d2f38.zip
sensirion example, works
-rw-r--r--.gitmodules9
-rw-r--r--Makefile11
m---------arduino-core0
m---------arduino-i2c-scd4x0
m---------arduino-sps0
-rw-r--r--main.ino94
6 files changed, 114 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..ad61b56
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,9 @@
+[submodule "arduino-sps"]
+ path = arduino-sps
+ url = https://github.com/Sensirion/arduino-sps
+[submodule "arduino-i2c-scd4x"]
+ path = arduino-i2c-scd4x
+ url = https://github.com/Sensirion/arduino-i2c-scd4x
+[submodule "arduino-core"]
+ path = arduino-core
+ url = https://github.com/Sensirion/arduino-core
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..72d8f7e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,11 @@
+SKETCH = main.ino
+CUSTOM_LIBS = arduino-core arduino-i2c-scd4x arduino-sps
+
+UPLOAD_PORT = /dev/ttyUSB0
+# maybe board with eink?
+BOARD = ttgo-t1
+
+ESP_ROOT = $(HOME)/Arduino/hardware/espressif/esp32/
+CHIP = esp32
+
+include $(HOME)/src/makeEspArduino/makeEspArduino.mk
diff --git a/arduino-core b/arduino-core
new file mode 160000
+Subproject 38907b450c15b6920cd35123d8d6495875f56eb
diff --git a/arduino-i2c-scd4x b/arduino-i2c-scd4x
new file mode 160000
+Subproject 59aaa4d9ce9eae00865f398c31e2a38f0832d81
diff --git a/arduino-sps b/arduino-sps
new file mode 160000
+Subproject 44645f656b93bcd6842c5f2f7ef7b2911460a1b
diff --git a/main.ino b/main.ino
new file mode 100644
index 0000000..bc27deb
--- /dev/null
+++ b/main.ino
@@ -0,0 +1,94 @@
+#include <Arduino.h>
+#include <SensirionI2CScd4x.h>
+#include <Wire.h>
+
+SensirionI2CScd4x scd4x;
+
+void printUint16Hex(uint16_t value) {
+ Serial.print(value < 4096 ? "0" : "");
+ Serial.print(value < 256 ? "0" : "");
+ Serial.print(value < 16 ? "0" : "");
+ Serial.print(value, HEX);
+}
+
+void printSerialNumber(uint16_t serial0, uint16_t serial1, uint16_t serial2) {
+ Serial.print("Serial: 0x");
+ printUint16Hex(serial0);
+ printUint16Hex(serial1);
+ printUint16Hex(serial2);
+ Serial.println();
+}
+
+void setup() {
+
+ Serial.begin(115200);
+ while (!Serial) {
+ delay(100);
+ }
+
+ Wire.begin(21,22);
+
+ uint16_t error;
+ char errorMessage[256];
+
+ scd4x.begin(Wire);
+
+ // stop potentially previously started measurement
+ error = scd4x.stopPeriodicMeasurement();
+ if (error) {
+ Serial.print("Error trying to execute stopPeriodicMeasurement(): ");
+ errorToString(error, errorMessage, 256);
+ Serial.println(errorMessage);
+ }
+
+ uint16_t serial0;
+ uint16_t serial1;
+ uint16_t serial2;
+ error = scd4x.getSerialNumber(serial0, serial1, serial2);
+ if (error) {
+ Serial.print("Error trying to execute getSerialNumber(): ");
+ errorToString(error, errorMessage, 256);
+ Serial.println(errorMessage);
+ } else {
+ printSerialNumber(serial0, serial1, serial2);
+ }
+
+ // Start Measurement
+ error = scd4x.startPeriodicMeasurement();
+ if (error) {
+ Serial.print("Error trying to execute startPeriodicMeasurement(): ");
+ errorToString(error, errorMessage, 256);
+ Serial.println(errorMessage);
+ }
+
+ Serial.println("Waiting for first measurement... (5 sec)");
+}
+
+void loop() {
+ uint16_t error;
+ char errorMessage[256];
+
+ delay(5000);
+
+ // Read Measurement
+ uint16_t co2 = 0;
+ float temperature = 0.0f;
+ float humidity = 0.0f;
+ error = scd4x.readMeasurement(co2, temperature, humidity);
+ if (error) {
+ Serial.print("Error trying to execute readMeasurement(): ");
+ errorToString(error, errorMessage, 256);
+ Serial.println(errorMessage);
+ } else if (co2 == 0) {
+ Serial.println("Invalid sample detected, skipping.");
+ } else {
+ Serial.print("Co2:");
+ Serial.print(co2);
+ Serial.print("\t");
+ Serial.print("Temperature:");
+ Serial.print(temperature);
+ Serial.print("\t");
+ Serial.print("Humidity:");
+ Serial.println(humidity);
+ }
+}