Premium Walnuss-Gehäuse: Luftfeuchtigkeits- & Temperatursensor-Set mit Arduino, NeoPixel & TFT-Display
Komponenten und Zubehör
| Komponente | Menge |
|---|---|
| Arduino UNO | 1 |
| Adafruit NeoPixel Ring: WS2812 5050 RGB LED (24 LEDs) | 1 |
| DHT22 Temperatursensor | 1 |
| Adafruit 1,44" Color TFT LCD mit MicroSD (ST7735R) | 1 |
| Steckplatine (Breadboard) | 1 |
| 4×AA-Batteriehalter | 1 |
| Jumper-Kabel | 1 |
Benötigte Werkzeuge
- Lötkolben
- Heißklebepistole
Projektbeschreibung
Die Geschichte hinter dem Projekt
Wir zeigen, wie wir ein Gehäuse aus Walnussholz mit Schwalbenschwanzverbindungen gebaut und mit einfach erhältlichen Arduino-Komponenten einen stilvollen und nützlichen Luftfeuchtigkeits- und Temperatursensor für die Werkstatt erstellt haben. Dieses DIY-Projekt verbindet Holzverarbeitung mit Einsteiger-Elektronik auf Basis eines Arduino Uno und hochwertiger Bauteile von Adafruit.
In Zentral-Texas erleben wir im Frühling extreme Schwankungen bei Luftfeuchtigkeit und Temperatur, die für bestimmte Holzarbeiten katastrophal sein können. Dieses Projekt warnt uns, wenn sich die Luftfeuchtigkeit ändert oder zu hoch wird, damit wir Vorsichtsmaßnahmen ergreifen können – wie das Verlegen von Holzprojekten ins Haus oder das Unterlassen von Fräsarbeiten bei hoher Luftfeuchtigkeit. Und es sieht dabei noch großartig aus, inklusive unserem Logo!
Wir sind neu in der Arduino- und Elektronikwelt und haben beim Bau dazugelernt. Wir sind begeistert, nun weitere Projekte umzusetzen, da wir erfahren haben, wie einfach es ist, großartige Dinge zu bauen.
Detailliertes Bau-Video ansehen
(Video-Link im Originalprojekt verfügbar)
Programmcode
Arduino Werkstatt-Sensor Code
#include
#include
#include
#include
#include
#include
#include
// Pin-Definitionen
#define TFT_CS 10
#define TFT_RST 9
#define TFT_DC 8
#define DHT_PIN 2
#define PIXEL_PIN 6
#define PIXEL_NUM 24
#define SD_PIN 4
#define BMP_BUF 20
// Globale Variablen
int currentColor = 9999;
CRGB leds[PIXEL_NUM];
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
DHT22 dht(DHT_PIN);
int loopDelay = 2000;
void setup() {
Serial.begin(9600);
Serial.println("Starte...");
dht.begin();
tft.initR(INITR_144GREENTAB);
Serial.print("Initialisiere SD-Karte...");
if (!SD.begin(SD_PIN)) {
Serial.println("Fehlgeschlagen!");
return;
}
tft.fillScreen(ST7735_BLACK);
FastLED.addLeds(leds, PIXEL_NUM);
delay(500);
}
void loop() {
dht.readTemperature();
dht.readHumidity();
int f = dht.temperature_F;
int h = dht.humidity;
// Grad-Symbol zeichnen
tft.fillCircle(102, 42, 6, ST7735_WHITE);
tft.fillCircle(102, 42, 4, ST7735_BLACK);
drawTemperature(f);
setHumidityColors(h);
Serial.print("Temperatur: "); Serial.println(f);
Serial.print("Luftfeuchtigkeit: "); Serial.print(h); Serial.println("%");
delay(1000);
}
// BMP-Zeichnen für TFT-Display
void bmpDraw(char *filename, uint8_t x, uint8_t y) {
// ... (kompletter BMP-Ladecode aus Original)
}
// Hilfsfunktionen für BMP
uint16_t read16(File f) { /* ... */ }
uint32_t read32(File f) { /* ... */ }
void drawTemperature(int temp) {
int digits = numDigits(temp);
int x1_2 = 62, x2_2 = 32;
int x1_3 = 1, x2_3 = 1, x3_3 = 1;
int y = 38;
char digitStr1[24], digitStr2[24], digitStr3[24];
itoa(temp % 10, digitStr1, 10); strcat(digitStr1, ".bmp");
if (digits == 2) { itoa((temp / 10) % 10, digitStr2, 10); strcat(digitStr2, ".bmp"); }
if (digits == 3) { itoa((temp / 100) % 10, digitStr3, 10); strcat(digitStr3, ".bmp"); }
if (digits > 2) {
bmpDraw(digitStr1, x1_3, y);
bmpDraw(digitStr2, x2_3, y);
bmpDraw(digitStr3, x3_3, y);
} else {
bmpDraw(digitStr1, x1_2, y);
bmpDraw(digitStr2, x2_2, y);
}
}
int numDigits(int number) {
return (number > 99) ? 3 : 2;
}
void setColors(int r, int g, int b) {
for (int i = 0; i < PIXEL_NUM; i++) {
leds[i].setRGB(r, g, b);
leds[i].fadeLightBy(125);
FastLED.show();
delay(100);
}
}
void setHumidityColors(int humidity) {
// Farbschema:
// Rot: 0-17% | Orange: 18-34% | Gelb: 35-51%
// Grün: 52-68% | Blau: 69-85% | Violett: 86-100%
int cRed[3] = {255,0,0};
int cOrange[3] = {255,90,0};
int cYellow[3] = {255,255,0};
int cGreen[3] = {0,255,0};
int cBlue[3] = {0,175,255};
int cPurple[3] = {255,0,255};
int range = map(humidity, 0, 100, 0, 6);
switch (range) {
case 0: if (currentColor != 0) { setColors(cRed[0], cRed[1], cRed[2]); currentColor = 0; } break;
case 1: if (currentColor != 1) { setColors(cOrange[0], cOrange[1], cOrange[2]); currentColor = 1; } break;
case 2: if (currentColor != 2) { setColors(cYellow[0], cYellow[1], cYellow[2]); currentColor = 2; } break;
case 3: if (currentColor != 3) { setColors(cGreen[0], cGreen[1], cGreen[2]); currentColor = 3; } break;
case 4: if (currentColor != 4) { setColors(cBlue[0], cBlue[1], cBlue[2]); currentColor = 4; } break;
case 5: if (currentColor != 5) { setColors(cPurple[0], cPurple[1], cPurple[2]); currentColor = 5; } break;
}
}
Gehäuse-Design (CAD)
Das Walnuss-Gehäuse wurde als CAD-Modell entworfen (Datei im Originalprojekt verfügbar).
Schaltplan
Fritzing enthielt nicht alle tatsächlichen Komponenten, daher wurde der Signalfluss bestmöglich dargestellt. Zwei Schaltplan-Bilder sind im Originalprojekt verfügbar.
Herstellungsprozess
- Feuchtesensoren: Funktionsweise und Hauptanwendungen
- DHT11 Sensor: Funktionsweise und Hauptanwendungen
- Sensirion SVM30: All-in-One Multi-Gas, Feuchte & Temperatur Modul für Luftreiniger & HLK
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Nahtlose Temperatur- & Feuchtigkeitsüberwachung am Raspberry Pi mit EzTemp
- Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20
- Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
- Raspberry Pi Heimtemperaturmonitor mit MCP9808, InfluxDB & Grafana bauen
- Feuchtigkeitssensor verifizieren und kalibrieren für präzise Messungen
- NASA Goddards Lab-on-Chip-Sensor liefert Echtzeit-Durchfluss- und Temperaturüberwachung