Bewegungsempfindliche Schaltungssteuerung über Intel Curie
Komponenten und Verbrauchsmaterialien
| × | 1 |
Über dieses Projekt
Ziele
- Licht automatisch ein- und ausschalten, wenn Schritte erkannt werden
- Synchronisieren Sie das Blinken der Lichter mit dem erkannten Tempo des Tanzens/Tippens in der Nähe
- Beschleunigungsmesser-/Gyroskop-Messwerte über USB/Bluetooth zur Erkennung seismischer Ereignisse ausgeben
GitHub-Repository
https://github.com/ckuzma/arduino-101-sketches
Skizzen
TapFlashTest
#include "CurieIMU.h" void setup() { pinMode(LED_BUILTIN, OUTPUT); CurieIMU.begin(); CurieIMU.attachInterrupt(eventCallback); CurieIMU.setDetectionThreshold(CURIE_IMU_SHOCK, 1050); // 1.050g =1050mg CurieIMU.setDetectionDuration(CURIE_IMU_SHOCK, 75); // 75ms CurieIMU.interrupts(CURIE_IMU_SHOCK); } void loop() { // Wir müssen nichts in die Hauptschleife einfügen... } static void eventCallback(void) { if (CurieIMU.getInterruptStatus(CURIE_IMU_SHOCK)) { digitalWrite(LED_BUILTIN, HIGH); Verzögerung (50); digitalWrite (LED_BUILTIN, LOW); } }
- Blinkt die integrierte LED, wenn ein Tippen erkannt wird
- Wird verwendet, um Änderungen an der Impulserkennung herauszufinden
TapBeatMatch
- Synchronisiert das Blinken der Onboard-LED mit dem Tempo des Klopfens auf der Tischoberfläche in der Nähe des Arduino 101
- Implementierter gewichteter Durchschnitt zur Geräuschminderung
- Einstellbarer Schockerkennungsschwellenwert
SeismicReader + Python-Visualisierungsskript
- Das Arduino 101-Board gibt JSON-formatierte Beschleunigungsmesser- und Gyroskopwerte über Seriell aus, die dann von einem angeschlossenen Computer gelesen werden
- Habe ein kleines Python-Skript geschrieben, das Daten vom Board liest und sie in sehr einfachen Zeilen im Terminal / der Eingabeaufforderung grafisch darstellt
- Speichert Ergebnisse in einer CSV-Datei, die in Excel geöffnet und grafisch dargestellt werden kann
- Multiplattform-Python 2.x / 3.x-Nutzung:
Vibrationsbeleuchtung
- Ursprünglich entworfen, um sich nähernde Schritte zu erkennen und die Beleuchtung zu aktivieren, während sich jemand in der Nähe befindet, wurde sie auf die Doppeltipp-Erkennung reduziert, da das Signal-Rausch-Verhältnis für meine Installation nicht sauber genug war
- LED-Streifen, der unter dem Eingangsspiegel geklebt ist, schaltet sich ein und aus, wenn der Spiegel zweimal hintereinander angeklopft wird
Bonus
Ein Gespräch mit Bogdan hat mir klar gemacht, dass es sehr einfach wäre, die Arduino-Skizze so zu ändern, dass sie mit eigenständigen Beschleunigungssensoren + Gyroskop-Sensoren funktioniert, die an fast jedes Arduino-Gerät angeschlossen sind, und dann CurieGraph.py
. zu verwenden um die Daten zu visualisieren. Da das Ziel des Sammelns seismischer Messwerte darin besteht, zu beweisen, dass es möglich ist, Massendaten ohne komplizierte oder spezielle Ausrüstung massiv zu sammeln, kramte ich in meinem Schreibtisch nach der "ITG-MTU" / "GY-521" / "MPU-6050". Sensorplatine und schrieb dafür den folgenden Sketch. CurieGraph.py kann ein paar Mal nicht gestartet werden, aber normalerweise wird es beim dritten Versuch richtig angezeigt.
Externes Gyroskop
#include const int MPU_addr=0x68; // I2C-Adresse für ITG-MTU 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); } String jsonEncodeValue(String key, float keyVal){ return "\"" + key + "\":" + String(keyVal) + ""; } String AssembleJson(String keysAndVals){ return "{" + keysAndVals + "}"; aufrechtzuerhalten. Void Schleife () { 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(); // temp =temp/340,00 + 36,53; // Konvertieren von temporären Daten in Celsius - NICHT VERWENDET String keyVals =jsonEncodeValue("ax", ax) + ","; keyVals +=jsonEncodeValue("ay", ay) + ","; keyVals +=jsonEncodeValue("az", az) + ","; keyVals +=jsonEncodeValue("gx", gx) + ","; keyVals +=jsonEncodeValue("gy", gy) + ","; keyVals +=jsonEncodeValue("gz", gz); Serial.println (assembleJson (keyVals)); Verzögerung (100); }
Code
arduino-101-skizzen
Eine Sammlung von Skizzen, die speziell für den Arduino 101 geschrieben wurden und die Beschleunigungsmesser und Gyroskope von Intel Curie nutzen.https://github.com/ckuzma/arduino-101-sketchesHerstellungsprozess
- Motorsteuerkreise
- Aktivieren Sie die Alexa-Steuerung für Ihren Deckenventilator
- Programmieren der Atmel AT89-Serie über Arduino
- Universelle Fernbedienung mit Arduino, 1Sheeld und Android
- Münzprüfer mit Arduino steuern
- Arduino-Kontrollzentrum
- Einsatz des IoT zur Fernsteuerung eines Roboterarms
- Arduino mit Bluetooth zur Steuerung einer LED!
- Arduino-Befeuchtersteuerung
- Arduino Nano:Steuerung von 2 Schrittmotoren mit Joystick