Arduino 101: Schrittzähler (Pedometer) mit DHT11 & LCD-Display
Benötigte Komponenten
| Komponente | Menge |
|---|---|
| Arduino 101 (Intel Curie, integrierter IMU) | 1 |
| DHT11 Temperatur- & Feuchtigkeitssensor (4 Pins) | 1 |
| Adafruit 16×2 LCD (Weiß auf Blau, HD44780) | 1 |
| 10 kΩ Potentiometer (LCD-Kontrast) | 1 |
| Jumper-Kabel | 1 Set |
| 9 V Blockbatterie + Clip | 1 |
| 3D-gedrucktes Gehäuse (STL im Projekt) | 1 |
Über dieses Projekt
Entwickelt für eine Wissenschaftsmesse („My body, my world“). Das Gerät misst:
- Schritte (via onboard 6-Achsen-IMU des Arduino 101 / CurieIMU)
- Zurückgelegte Strecke (Schrittlänge × Schritte)
- Verbrannte Kalorien (Gewicht & Größe basierte Formel)
- Umgebungstemperatur & Luftfeuchte (DHT11)
Alle Daten werden nacheinander auf dem 16×2 LCD angezeigt. Das Gehäuse wurde 3D-gedruckt, Stromversorgung über 9 V Block.
Warum ein Schrittzähler?
Bewegungsmangel ist weit verbreitet. Ein tragbares Gerät, das Schritte, Distanz, Kalorien und Umgebungsdaten anzeigt, motiviert zu mehr Aktivität und besserem Körperbewusstsein.
Code
Verwendete Bibliotheken: CurieIMU (Schrittzähler-Interrupt), DHT/DHT_U (Temperatur/Feuchte), LiquidCrystal (LCD).
Wichtige Code-Abschnitte:
- Setup: IMU initialisieren, Schrittzähler aktivieren, Interrupt-Callback registrieren (
CurieIMU.attachInterrupt(eventCallback)). - Loop: Zyklisch Anzeige aktualisieren: Schritte → Kalorien → Distanz → Temperatur → Feuchte (je 3–4 s).
- Formeln:
- Schrittlänge = 0,30 × Körpergröße (cm)
- Kalorien/km = (0,57 × Gewicht_kg × 1,6) / 0,453
- Schritte/Meile = 160000 / Schrittlänge
- Distanz (m) = Schrittlänge × Schritte / 100
- Kalorien = Schritte × (Schritte / Schritte_pro_Meile) × Kalorien_pro_km … (vereinfacht im Code)
// Kern-Setup
CurieIMU.begin();
CurieIMU.setStepDetectionMode(CURIE_IMU_STEP_MODE_NORMAL);
CurieIMU.setStepCountEnabled(true);
CurieIMU.attachInterrupt(eventCallback);
CurieIMU.interrupts(CURIE_IMU_STEP);
// Interrupt-Callback
static void eventCallback(void) {
if (CurieIMU.stepsDetected()) updateStepCount();
}
// Loop: Anzeige-Sequenz
void loop() {
// Schritte
lcd.clear(); lcd.print("Steps: "); lcd.setCursor(0,1); lcd.print(lastStepCount); delay(4000);
// Kalorien
calories_burned = lastStepCount * (lastStepCount / passos_por_milha);
lcd.clear(); lcd.print("Calories B.: "); lcd.setCursor(0,1); lcd.print(calories_burned); lcd.print(" Kcal"); delay(4000);
// Distanz
distance = (comprimento_do_passo * lastStepCount) / 100;
lcd.clear(); lcd.print("Distance: "); lcd.setCursor(0,1); lcd.print(distance); lcd.print(" Meters"); delay(4000);
// Temperatur
dht.temperature().getEvent(&event);
lcd.clear(); lcd.print("Temperature: "); lcd.setCursor(0,1); lcd.print(event.temperature); lcd.print(" C*"); delay(3000);
// Feuchte
dht.humidity().getEvent(&event);
lcd.clear(); lcd.print("Humidity: "); lcd.setCursor(0,1); lcd.print(event.relative_humidity); lcd.print("%"); delay(3000);
// Heartbeat-LED
digitalWrite(13, blinkState); blinkState = !blinkState; delay(300);
}
Schaltplan
LCD: RS→D12, EN→D10, D4→D5, D5→D4, D6→D3, D7→D2 (4-Bit-Modus). Kontrast-Poti an V0. DHT11 Data → D8. Arduino 101 via USB oder 9 V an Vin/GND.
Hinweis
Arduino 101 ist eingestellt (EOL), aber das Prinzip (IMU-Schrittzähler + Umgebungsensoren) lässt sich auf Nano 33 BLE Sense, ESP32 oder RP2040 mit externem IMU (MPU6050/ICM20649) übertragen.
Herstellungsprozess
- Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
- Arduino Iron Man bauen: Komponenten, Sensoren & Schritt-für-Schritt-Anleitung
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Funktionaler 3D-gedruckter Roboterarm mit Arduino – Schritt-für-Schritt-Anleitung
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Berührungsloses Temperatur-Überwachungstor für schnelles Screening
- PiBot: Arduino-gesteuerter Klavierroboter für präzise Musikwiedergabe
- NeoPixel-Matrix Pong auf Arduino Nano: Neon-Pong selbst bauen
- Wetterstation mit Arduino & ThingSpeak IoT (DHT11 + ESP8266)
- DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau