Sense Environment
Want to know your environment condition at any time? With Seeeduino Arch and Grove modules, you can quickly build a device to sense the environment. Here is one.
Hardware
Grove - OLED 128x64 is connected with Seeeduino Arch through I2C Grove connector, and Grove - Temperature & Humidity Senor Pro uses UART Grove connector(P1_14).
Code
Import programsense
Seeeduino Arch + Grove - OLED 128x64 + Grove - Temperature & Humidity Sensor Pro to sense the environment
#include "mbed.h"
#include "USBSerial.h"
#include "DHT.h"
#include "SSD1308.h"
#define LOG(...) serial.printf(__VA_ARGS__)
BusOut leds(LED1, LED2, LED3, LED4);
USBSerial serial; // USB serial to output debug message
// Grove - Temperature & Humidity Pro is connected with UART Grove of Seeeduino Arch, uses P1_14
DHT sensor(P1_14, DHT22);
// Grove - OLED 128x64 is connected with I2C Grove
I2C i2c(P0_5, P0_4); // SDA, SCL
SSD1308 oled = SSD1308(i2c, SSD1308_SA0);
int main() {
uint8_t count = 0;
char display_buf[8];
int err;
float humidity;
float last_humidity = 0;
float temperature;
float last_temperature = 0;
LOG("------- Sense -------\n");
oled.writeString(0, 0, "---- Sense ----");
oled.writeString(2, 0, "Temperature:");
oled.writeString(5, 0, "Humidity:");
while(1) {
count++;
leds = count;
err = sensor.readData();
if (err == 0) {
temperature = sensor.ReadTemperature(CELCIUS);
if (temperature != last_temperature) { // update temperature if changed
snprintf(display_buf, sizeof(display_buf), "%4.2f C", temperature);
oled.writeString(3, 0, display_buf);
last_temperature = temperature;
}
humidity = sensor.ReadHumidity();
if (humidity != last_humidity) {
snprintf(display_buf, sizeof(display_buf), "%4.2f %%", humidity);
oled.writeString(6, 0, display_buf);
last_humidity = humidity;
}
LOG("Temperature is %4.2f C \r\n",sensor.ReadTemperature(CELCIUS));
LOG("Temperature is %4.2f F \r\n",sensor.ReadTemperature(FARENHEIT));
LOG("Temperature is %4.2f K \r\n",sensor.ReadTemperature(KELVIN));
LOG("Humidity is %4.2f \r\n",sensor.ReadHumidity());
LOG("Dew point is %4.2f \r\n",sensor.CalcdewPoint(sensor.ReadTemperature(CELCIUS), sensor.ReadHumidity()));
LOG("Dew point (fast) is %4.2f \r\n",sensor.CalcdewPointFast(sensor.ReadTemperature(CELCIUS), sensor.ReadHumidity()));
} else
LOG("\r\nErr %i \n",err);
wait(2);
}
}
Please log in to post comments.
