Kameraauslöser

Das letzte erfolgreiche Arduino Wochenend-Projekt war ein Kameraauslöser:
Kameraauslöser

Das Steckbrett sieht so aus:
KameraAusloeser_Steckplatine

und hier der passende Code:

int focusPin = 2;
int takePin = 3;

void setup()
{
pinMode(focusPin, OUTPUT);
pinMode(takePin, OUTPUT);
Serial.begin(9600); //Start serial for output

}

void loop()
{
digitalWrite(focusPin, true);
delay(500);
digitalWrite(focusPin, false);
delay(500);
digitalWrite(takePin, true);
delay(500);
digitalWrite(takePin, false);
}

Share

Datenlogger Part 2

Nachdem der „Schimmelwächter“ so gut funktionierte, wollte ich die Daten in Echtzeit verfolgen ThinkSpeak wäre der geeignete Webdienst dafür und bei Conrad fand ich ein: „… Arduino kompatible Pretzelboard (NanoESP) mit integriertem WLAN-Modul“ und einen weiterer Sensor für Temperatur und Luftfeuchte. Fertig war das Internet of Things Projekt:

Datei 10.02.16, 15 22 55

Der Anschluß war hier einfacher das der Sensor schon den benötigten Widerstand auf der Platine hat somit ist es ein sehr aufgeräumtes Steckbrett:

Datenlogger_Web_Steckplatine

Der dazugehörige Code, damit der Akku länger nutze ich hier auch die Sleep Funktion:

Datenlogger_Web.ino

Share

Arduino erste Anwendung

Mit dem Arduino Uno R3, einem Shield mit SD Card und einen Temperatur / Luftfeuchte Sensor wurde ein „Schimmelwächter“ gebaut:

Datei 09.02.16, 15 02 02

Das Steckbrett dazu ist sehr einfach, es musste nur ein 1M Ohm Widerstand eingelötet werden und die Stromversorgung:

Datenlogger_Steckplatine

Der dazu gehörige Programmcode, der Logfile wird nur geschrieben wenn sich die neue Messung von der vorherigen unterscheidet:

#include // SD-Karten Bibliothek
#include "DHT.h" // Temperatur Sensor Bibliothek
#include // RealTime Bibliothek

RTC_DS1307 RTC; // Typ der RealTimeClock
DHT dht; // Typ des Sensors

const int chipSelect = 10; // Anschluss der SD-Karte
// Variablen definieren
int i = 0;
float h_neu = 0; // neuer Messwert
float t_neu = 0; // neuer Messwert
float h_alt = 0; // vorheriger Messwert
float t_alt = 0; // vorheriger Messwert

void setup() {
dht.setup(2); // data pin 2
Serial.begin(9600); //
RTC.begin();
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
while (1) ;
}
Serial.println("card initialized.");
//neue Datei
File dataFile = SD.open("datalog.csv", FILE_WRITE);
String dataString = "Datum Zeit;Luftfeuchte;Temperatur";
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
}
}

void loop() {

// Datum und Zeit fuer die Zeile in der Logdatei
boolean schreiben = false;
DateTime now = RTC.now();
char buffer [25] = "";
sprintf(buffer, "%02d.%02d.%04d %02d:%02d", now.day(), now.month(), now.year(), now.hour(), now.minute());
h_neu = dht.getHumidity();
t_neu = dht.getTemperature();
if (h_alt != h_neu) {
h_alt = h_neu;
schreiben = true;
Serial.println("Luftfeuchte geändert");
}
else {
Serial.println("Luftfeuchte gleich");
}
if (t_alt != t_neu) {
t_alt = t_neu;
schreiben = true;
Serial.println("Temperatur geändert: ");
}
else{
Serial.println("Temperatur gleich");
}
// String fuer die Log-Datei zusammenstellen:
String dataString = ""; // leerer String
dataString += (buffer); // Datum + Zeit
dataString += (i);
dataString += (";"); // Trenner
dataString += (h_neu); // Luftfeuchte %
dataString += (";"); // Trenner
dataString += (t_neu); // Temperatur
Serial.println(dataString);
if (schreiben == true) {
//Serial.println(" logfile schreiben");
File dataFile = SD.open("datalog.csv", FILE_WRITE);
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
}
}
delay(60000); // Zeit zwischen den Messungen 1 Sek = 1000
}

Share