* Muraqib CO2 sensor that collects and sends its data via MQTT to a server. The board of the sensor is the Wemos D1 mini and the sensor is a SCD41. ** Pinout of the board #+ATTR_HTML: :width 40% [[./pinout.png]] ** Dependencies - [[https://github.com/Sensirion/arduino-i2c-scd4x][Sensirion I²C SCD4X Arduino Library]] - [[https://github.com/knolleary/pubsubclient][PubSubClient]] - [[https://github.com/bblanchon/ArduinoJson][ArduinoJSON]] ** Configuration In the data directory, there is a JSON file that allows the configuration of multiple values: - ssid: WiFi network name - psk: WiFi password - mqtt_host: IP address of the MQTT broker - mqtt_user: username that has write access on the MQTT broker - mqtt_password: password for the user that has write access on the MQTT broker - mqtt_port: port used by the MQTT broker - mqtt_topic: channel name - device_id: unique identifier of the sensor - sleep_time: time interval between each data transmission - connection_attempts: maximum connection attemps to the network The file needs to be renamed to config.json ** Deployment The software uses the Arduino framework and the development environment of [[https://platformio.org/][PlatformIO]], which offers better tooling than the official Arduino IDE. *** Generate compilation database #+begin_src sql pio run -t compiledb #+end_src *** Upload the configuration file to the board #+begin_src shell pio run -t uploadfs #+end_src *** Compile the project #+begin_src shell pio run -t compile #+end_src *** Upload firmware #+begin_src shell pio run -t upload #+end_src