-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBME680CO2.ino
More file actions
114 lines (100 loc) · 3.71 KB
/
BME680CO2.ino
File metadata and controls
114 lines (100 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//Code developed by Diego Malpica, as Environmental Sensor for space habitats
#include <TFT_eSPI.h>
#include "seeed_bme680.h"
#include <SPI.h>
#include <Seeed_FS.h>
#include "SD/Seeed_SD.h"
#include "CO2Sensor.h"
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10
#define IIC_ADDR uint8_t(0x76)
CO2Sensor co2Sensor(A0, 0.99, 100);
Seeed_BME680 bme680(IIC_ADDR); /* IIC PROTOCOL */
//Seeed_BME680 bme680; /* SPI PROTOCOL */
//Seeed_BME680 bme680(BME_CS, BME_MOSI, BME_MISO, BME_SCK);/*SPI PROTOCOL*/
TFT_eSPI tft;
// Stock font and GFXFF reference handle
TFT_eSprite spr = TFT_eSprite(&tft); // Sprite
File myFile;
void setup() {
// put your setup code here, to run once:
tft.begin();
tft.setRotation(3);
spr.createSprite(tft.width(),tft.height());
Serial.begin(115200);
// while (!Serial);
// Serial.println("Serial start!!!");
// delay(100);
co2Sensor.calibrate();
while (!bme680.init()) {
//Serial.println("bme680 init failed ! can't find device!");
delay(10000);
}
SD.begin(SDCARD_SS_PIN, SDCARD_SPI);
myFile = SD.open("Envir.csv", FILE_WRITE);
}
void loop() {
// put your main code here, to run repeatedly:
int val;
spr.fillSprite(TFT_BLACK);
spr.setFreeFont(&FreeSansBoldOblique18pt7b);
spr.setTextColor(TFT_RED);
spr.drawString("SpaceAnalog", 60 - 15, 10 , 1);// Print the test text in the custom font
for(int8_t line_index = 0;line_index < 5 ; line_index++)
{
spr.drawLine(0, 50 + line_index, tft.width(), 50 + line_index, TFT_GREEN);
}
spr.setFreeFont(&FreeSansBoldOblique9pt7b); // Select the font
// BME680 sensor
if (bme680.read_sensor_data()) {
Serial.println("Failed to perform reading :(");
return;
}
spr.setTextColor(TFT_WHITE);
spr.drawString("Temp:", 60 - 24, 100 -24 , 1);// Print the test text in the custom font
spr.drawRoundRect(60 - 24,100,80,40,5,TFT_WHITE);
spr.setTextColor(TFT_WHITE);
spr.drawNumber(bme680.sensor_result_value.temperature,60 - 20,100+10,1);
spr.setTextColor(TFT_GREEN);
spr.drawString("C", 60 + 12, 100+8, 1);
int co2 = co2Sensor.read();
// Baro
spr.setTextColor(TFT_WHITE);
spr.drawString("Barometer:", 230 -24 , 100 - 24 , 1);// Print the test text in the custom font
spr.drawRoundRect(230 - 24,100,100,40,5,TFT_WHITE);
spr.setTextColor(TFT_WHITE);
spr.drawNumber((bme680.sensor_result_value.pressure / 1000)*7.5006168,230 - 20,100+10,1);
spr.setTextColor(TFT_GREEN);
spr.drawString("mmHg", 230 + 12, 100+8, 1);
// HR%
spr.setTextColor(TFT_WHITE);
spr.drawString("HR%:", 60 - 24, 180 -24 , 1);// Print the test text in the custom font
spr.drawRoundRect(60 - 24,180,80,40,5,TFT_WHITE);
spr.setTextColor(TFT_WHITE);
spr.drawNumber(bme680.sensor_result_value.humidity,60 - 20,180+10,1);
spr.setTextColor(TFT_GREEN);
spr.drawString("%", 60 + 12, 180+8, 1);
SD.begin(SDCARD_SS_PIN, SDCARD_SPI);
myFile = SD.open("Envir.csv", FILE_APPEND);
myFile.print((bme680.sensor_result_value.pressure / 1000)*7.5006168);
myFile.print(",");
myFile.print(bme680.sensor_result_value.temperature);
myFile.print(",");
myFile.print(bme680.sensor_result_value.humidity);
myFile.print(",");
myFile.print(co2);
myFile.println(",");
myFile.close();
//CO Sensor
spr.setTextColor(TFT_WHITE);
spr.drawString("CO2:", 230 - 24, 180 -24 , 1);// Print the test text in the custom font
spr.drawRoundRect(230 - 24,180,112,40,5,TFT_WHITE);
spr.setTextColor(TFT_WHITE);
spr.drawNumber(co2,230 - 20,180+10,1);
spr.setTextColor(TFT_GREEN);
spr.drawString("ppm", 230 + 12, 180+8, 1);
spr.pushSprite(0, 0);
delay(10000);
}