Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
kerch1
Digitale Techniken
Commits
9e567cd5
Commit
9e567cd5
authored
Dec 23, 2021
by
Andreas Pack
Browse files
Delete Datalogger_AP.ino
parent
3d29e14a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Datalogger_AP.ino
deleted
100644 → 0
View file @
3d29e14a
#include "RTClib.h"; // For clock module
#include "Wire.h"; // For communication with clock & T,h sensor via I2C communication
#include "Adafruit_Si7021.h"; // For the T and h sensor
Adafruit_Si7021
sensor
=
Adafruit_Si7021
();
#include "SPI.h"; // Library for SPI bus
#include "SD.h"; // Library for SD card module
RTC_DS1307
rtc
;
int
year
;
int
month
;
int
day
;
int
hour
;
int
minute
;
int
second
;
int
lightIntensity
;
float
relativeHumidity
;
float
temperature
;
int
ppmCO2
;
String
filename
;
const
int
chipSelect
=
10
;
// Variable as read only, when declared as constant
// CO2-Messung mit Sensor Typ MHZ19B
// Messwerterfassung durch PWM-Signal
// Quelle: https://www.blikk.it
// Implement this code into your code and write the CO2 concentration into the file on the SD card
// The sensor signal (pulse width modulation) is coming into PIN 7
const
int
pwmpin
=
7
;
// The measurement range is (0-5000 ppm CO2)
const
int
range
=
5000
;
int
photozellePin
=
0
;
// Setup
void
setup
()
{
// Set PIN7 on input
pinMode
(
pwmpin
,
INPUT
);
rtc
.
adjust
(
DateTime
(
F
(
__DATE__
),
F
(
__TIME__
)));
// Start serial communication
Serial
.
begin
(
9600
);
Serial
.
println
(
""
);
Serial
.
println
(
"Weather station"
);
while
(
!
Serial
)
{
// Waits for the serial port to be ready
}
if
(
!
SD
.
begin
(
chipSelect
)
)
{
Serial
.
println
(
"SD card missing or defect."
);
return
;
}
Serial
.
println
(
"SD card correctly initialized."
);
// Start clock
rtc
.
begin
();
rtc
.
adjust
(
DateTime
(
F
(
__DATE__
),
F
(
__TIME__
)));
// Start T and h sensor module
sensor
.
begin
();
// Write the header line into the CSV
// Create the filename
DateTime
now
=
rtc
.
now
();
year
=
now
.
year
();
month
=
now
.
month
();
day
=
now
.
day
();
hour
=
now
.
hour
();
minute
=
now
.
minute
();
second
=
now
.
second
();
if
(
month
<
10
)
{
filename
+=
"0"
;
}
filename
+=
month
;
if
(
day
<
10
)
{
filename
+=
"0"
;
}
filename
+=
day
;
if
(
hour
<
10
)
{
filename
+=
"0"
;
}
filename
+=
hour
;
if
(
minute
<
10
)
{
filename
+=
"0"
;
}
filename
+=
minute
;
filename
+=
".txt"
;
Serial
.
print
(
"Filename: "
);
Serial
.
println
(
filename
);
// filename = "hallo.txt";
// Now write the header
File
datafile
=
SD
.
open
(
filename
,
FILE_WRITE
);
if
(
datafile
)
{
Serial
.
println
(
"Header written."
);
datafile
.
println
(
"dateTime,lightIntensity,temperature,relativeHumidity,ppmCO2"
);
}
datafile
.
close
();
}
// The main program
void
loop
()
{
lightIntensity
=
analogRead
(
photozellePin
);
// Get the signal from the phototransistor
temperature
=
sensor
.
readTemperature
();
relativeHumidity
=
sensor
.
readHumidity
();
// Measure the CO2 concentration width with the function shown below the loop function
ppmCO2
=
readCO2PWM
();
DateTime
now
=
rtc
.
now
();
year
=
now
.
year
();
month
=
now
.
month
();
day
=
now
.
day
();
hour
=
now
.
hour
();
minute
=
now
.
minute
();
second
=
now
.
second
();
// Print date and time to serial port
Serial
.
print
(
year
,
DEC
);
Serial
.
print
(
"-"
);
if
(
month
<
10
)
{
Serial
.
print
(
"0"
);
}
Serial
.
print
(
month
,
DEC
);
Serial
.
print
(
"-"
);
if
(
day
<
10
)
{
Serial
.
print
(
"0"
);
}
Serial
.
print
(
day
,
DEC
);
Serial
.
print
(
" "
);
if
(
hour
<
10
)
{
Serial
.
print
(
"0"
);
}
Serial
.
print
(
hour
,
DEC
);
Serial
.
print
(
":"
);
if
(
minute
<
10
)
{
Serial
.
print
(
"0"
);
}
Serial
.
print
(
minute
,
DEC
);
Serial
.
print
(
":"
);
if
(
second
<
10
)
{
Serial
.
print
(
"0"
);
}
Serial
.
print
(
second
,
DEC
);
Serial
.
print
(
","
);
Serial
.
print
(
lightIntensity
);
Serial
.
print
(
","
);
Serial
.
print
(
temperature
,
2
);
Serial
.
print
(
","
);
Serial
.
print
(
relativeHumidity
,
2
);
Serial
.
print
(
","
);
Serial
.
println
(
ppmCO2
);
// Now write things onto the SD card
File
datafile
=
SD
.
open
(
filename
,
FILE_WRITE
);
if
(
datafile
)
// Check if the file exists
{
Serial
.
println
(
"Writing to file."
);
datafile
.
print
(
year
,
DEC
);
datafile
.
print
(
"-"
);
if
(
month
<
10
)
{
datafile
.
print
(
"0"
);
}
datafile
.
print
(
month
,
DEC
);
datafile
.
print
(
"-"
);
if
(
day
<
10
)
{
datafile
.
print
(
"0"
);
}
datafile
.
print
(
day
,
DEC
);
datafile
.
print
(
" "
);
if
(
hour
<
10
)
{
datafile
.
print
(
"0"
);
}
datafile
.
print
(
hour
,
DEC
);
datafile
.
print
(
":"
);
if
(
minute
<
10
)
{
datafile
.
print
(
"0"
);
}
datafile
.
print
(
minute
,
DEC
);
datafile
.
print
(
":"
);
if
(
second
<
10
)
{
datafile
.
print
(
"0"
);
}
datafile
.
print
(
second
,
DEC
);
datafile
.
print
(
","
);
datafile
.
print
(
lightIntensity
);
datafile
.
print
(
","
);
datafile
.
print
(
temperature
,
2
);
datafile
.
print
(
","
);
datafile
.
print
(
relativeHumidity
,
2
);
datafile
.
print
(
","
);
datafile
.
println
(
ppmCO2
);
}
datafile
.
close
();
delay
(
100
);
}
// This function reads the PWM signal width on PIN7
int
readCO2PWM
()
{
unsigned
long
th
;
// This is the width of the PWM signal in microseconds, maximum length is 1004 ms = 1004000 us
int
ppm_pwm
=
0
;
float
pulsepercent
;
// Wait for the measurement value
do
{
th
=
pulseIn
(
pwmpin
,
HIGH
,
2500000
)
/
1000
;
// Gives the witdh in milliseconds (division by 1000)
// Pulse length in %
float
pulsepercent
=
th
/
1004.0
;
// CO2 concentration in ppm
ppm_pwm
=
range
*
pulsepercent
;
}
while
(
th
==
0
);
// Return the measured value to the main loop
return
ppm_pwm
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment