Arduino każdy zna, tak samo jak czujnik DTH11 oraz karty SD. Tym razem napotkałem się z potrzebą zapisywania temperatury oraz wilgotności w danym pomieszczeniu. A, że pod ręką miałem nasze Arduino, czemu z niego nie skorzystać. Poniższy układ odczytuje dane odnoście temperatury oraz wilgotności, a następnie zapisuje nam te dane do pliku log.csv na karcie mikroSD.
Do wykonania będą nam potrzebne następujące elementy:
– Arduino UNO (lub odpowiednik)
– układ DHT11 / DTH22
– MikroSD adapter
– płytka stykowa, przewody
– biblioteki SdFat, dth
Schemat połączeń do Arduino:
Kod Programu
//
// Copyright 2015 © by swistak
// for www.tranzystor.pl
//
#define DHTTYPE DHT11
const int chipSelect = 10;
const int DHTvcc = 6;
const int DHTdat = 5;
const int DHTgnd = 3;
const int timeRate = 5;
#include
#include
dht DHT;
double DHTtemp , DHThumid;
int DHTread;
SdFat sd;
SdFile logFile;
void setup() {
// setup IO pins to power DHT11 / DHT22 sensor
pinMode (DHTdat, INPUT_PULLUP);
pinMode (DHTvcc, OUTPUT);
pinMode (DHTgnd, OUTPUT);
digitalWrite(DHTvcc, HIGH);
digitalWrite (DHTgnd, LOW);
Serial.begin(57600);
Serial.println(„Pomiar temperatury i wilgotnosci z zapisem na karte SD”);
Serial.println(„Dane zapisywane do log.csv na karcie MicroSD”);
delay(2000);
DHTread = DHT.read11(DHTdat);
switch (DHTread) {
case DHTLIB_OK: Serial.println(„Sensor OK.”);
break;
default: Serial.println(„ERROR: Problem z sensorem nie wykryto.”);
}
if (!sd.begin(chipSelect)) {
Serial.println(„ERROR karty SD .”);
} else {
Serial.println(„Karta SD ok!”);
}
}
void loop() {
delay(timeRate * 1000);
if (!logFile.open(„log.csv”, O_RDWR | O_CREAT | O_AT_END)) {
sd.errorHalt(„Blad pliku log.csv”);
} else {
Serial.print(„zapis danych. „);
}
DHTread = DHT.read11(DHTdat);
DHTtemp = DHT.temperature;
DHThumid = DHT.humidity;
Serial.print(„Temperatura: „);
Serial.print(DHTtemp); Serial.print(„C „);
Serial.print(” Wilgotnosc: „); Serial.print(DHThumid);
Serial.println(„%”);
logFile.print(” Temperatura: „);logFile.print(DHTtemp); logFile.print(” C”); logFile.print(„,”); logFile.print(” Wilgotność : „); logFile.println(DHThumid);logFile.print(” %”); // write data
logFile.close();
}