Bewegungsaktiviertes Beleuchtungssystem mit Intel Curie (Arduino 101)
Komponenten und Zubehör
- 1× Arduino 101 (mit Intel Curie Chipsatz, integrierter IMU: Beschleunigungsmesser + Gyroskop)
Projektziele
- Lichter automatisch ein-/ausschalten bei Erkennung von Schritten (Erschütterungen)
- Blitzfrequenz der Lichter mit dem erkannten Takt von Tanzen/Klopfen synchronisieren
- Beschleunigungs- und Gyroskopdaten über USB/Bluetooth für seismische Erkennung ausgeben
GitHub-Repository
github.com/ckuzma/arduino-101-sketches – Sammlung aller Sketches.
Enthaltene Sketches
1. TapFlashTest
Einfacher Test: Die Onboard-LED blinkt kurz, wenn ein Schlag/Schritt (Shock) erkannt wird. Dient zur Kalibrierung der Erkennungsschwellen.
#include "CurieIMU.h"
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
CurieIMU.begin();
CurieIMU.attachInterrupt(eventCallback);
CurieIMU.setDetectionThreshold(CURIE_IMU_SHOCK, 1050); // 1,050 g = 1050 mg
CurieIMU.setDetectionDuration(CURIE_IMU_SHOCK, 75); // 75 ms
CurieIMU.interrupts(CURIE_IMU_SHOCK);
}
void loop() { }
static void eventCallback(void) {
if (CurieIMU.getInterruptStatus(CURIE_IMU_SHOCK)) {
digitalWrite(LED_BUILTIN, HIGH);
delay(50);
digitalWrite(LED_BUILTIN, LOW);
}
}
2. TapBeatMatch
Synchronisiert das Blinken der Onboard-LED mit dem Takt von Klopfbewegungen auf der Tischplatte. Verwendet einen gewichteten Mittelwert zur Rauschunterdrückung. Die Schock-Erkennungsschwelle ist einstellbar.

3. SeismicReader + Python-Visualisierung
Der Arduino 101 sendet JSON-formatierte Beschleunigungs- und Gyroskopdaten über die serielle Schnittstelle. Ein Python-Skript (CurieGraph.py) liest diese Daten, stellt sie im Terminal grafisch dar und speichert sie als CSV für Excel.


Das Python-Skript läuft unter Python 2.x und 3.x, plattformunabhängig.
4. VibrationLighting
Ursprünglich für Fußschritt-Erkennung zur Lichtsteuerung konzipiert. Wegen unzureichendem Signal-Rausch-Verhältnis auf Doppelklopfer-Erkennung reduziert. Ein LED-Strip unter einem Flurspiegel schaltet bei doppeltem Klopfen ein/aus.


Bonus: Externe Sensoren (MPU-6050 / GY-521) an jedem Arduino
Um das Ziel der crowdsourceten Erdbebenerkennung ohne Spezialhardware zu erreichen, wurde ein Sketch für den weit verbreiteten MPU-6050 (I2C-Adresse 0x68) geschrieben, der dieselbe JSON-Ausgabe erzeugt und mit CurieGraph.py visualisiert werden kann.

#include <Wire.h>
const int MPU_addr = 0x68;
int ax, ay, az, temp, gx, gy, gz;
void setup() {
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B); Wire.write(0); Wire.endTransmission(true); // Wake up
}
String jsonEncodeValue(String key, float val) {
return "\"" + key + "\":" + String(val);
}
String assembleJson(String kv) { return "{" + kv + "}"; }
void loop() {
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B); Wire.endTransmission(false);
Wire.requestFrom(MPU_addr, 14, true);
ax = Wire.read()<<8 | Wire.read();
ay = Wire.read()<<8 | Wire.read();
az = Wire.read()<<8 | Wire.read();
temp = Wire.read()<<8 | Wire.read();
gx = Wire.read()<<8 | Wire.read();
gy = Wire.read()<<8 | Wire.read();
gz = Wire.read()<<8 | Wire.read();
String kv = jsonEncodeValue("ax", ax) + ",";
kv += jsonEncodeValue("ay", ay) + ",";
kv += jsonEncodeValue("az", az) + ",";
kv += jsonEncodeValue("gx", gx) + ",";
kv += jsonEncodeValue("gy", gy) + ",";
kv += jsonEncodeValue("gz", gz);
Serial.println(assembleJson(kv));
delay(100);
}
Hinweis: CurieGraph.py startet gelegentlich erst beim 2.–3. Versuch zuverlässig.
Herstellungsprozess
- Fortgeschrittene Motorkontrollschaltungen: Selbsthaltung, Stopp und Zeitverzögerung
- Deckenventilator per Alexa steuern – Schritt-für-Schritt-Anleitung
- ATmel AT89-Serie mühelos mit Arduino Uno programmieren – Schritt-für-Schritt-Anleitung
- Universelle Android-Fernbedienung mit Arduino, 1Sheeld & IR-Steuerung
- Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
- Arduino Power Control Center: N-FET, P-FET, Relais & RTC Kit
- Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Zwei Schrittmotoren mit Arduino Nano & Joystick steuern – Einfaches Tutorial