Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bewegingsgevoelige circuitbesturing via Intel Curie

Componenten en benodigdheden

Arduino 101
× 1

Over dit project

Doelen

  • Schakel automatisch de lichten in (en uit) wanneer er voetstappen worden gedetecteerd
  • Synchroniseer het knipperen van de lichten met het gedetecteerde tempo van dansen in de buurt /tikken
  • Uitvoer accelerometer/gyroscoopmetingen via USB/Bluetooth voor de detectie van seismische gebeurtenissen

GitHub-opslagplaats

https://github.com/ckuzma/arduino-101-sketches

Schetsen

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 () {// We hoeven niets in de hoofdlus te plaatsen... } static void eventCallback (void) { if (CurieIMU.getInterruptStatus(CURIE_IMU_SHOCK)) { digitalWrite (LED_BUILTIN, HIGH); vertraging (50); digitalWrite (LED_BUILTIN, LAAG); } }  
  • Knippert ingebouwde LED wanneer een tik wordt gedetecteerd
  • Gebruikt om veranderingen in impulsdetectie te achterhalen

TapBeatMatch

  • Synchroniseert het knipperen van de ingebouwde LED met het tempo van tikken op het tafelblad in de buurt van de Arduino 101
  • Geïmplementeerd gewogen gemiddelde om ruis te verminderen
  • Instelbare schokdetectiedrempel

SeismicReader + Python-visualisatiescript

  • Arduino 101-kaart voert JSON-geformatteerde versnellingsmeter- en gyroscoopwaarden uit via serieel, die vervolgens worden gelezen door een aangesloten computer
  • Schreef een klein Python-script dat gegevens van het bord leest en deze op zeer eenvoudige regels in de terminal / opdrachtprompt in een grafiek zet
  • Slaat resultaten op in een CSV die in Excel kan worden geopend en in grafieken kan worden weergegeven
  • Multiplatform Python 2.x / 3.x gebruik:

Trillingsverlichting

  • Oorspronkelijk ontworpen om naderende voetstappen te detecteren en verlichting te activeren terwijl iemand in de buurt is, werd teruggeschroefd naar detectie van dubbel tikken omdat de signaal-ruisverhouding niet zuiver genoeg was voor mijn installatie
  • LED-strip die onder de instapspiegel is geplakt, gaat aan en uit wanneer er twee keer achter elkaar op de spiegel wordt geklopt

Bonus

Een gesprek met Bogdan deed me beseffen dat het heel gemakkelijk zou zijn om de Arduino-schets aan te passen om te werken met standalone accelerometer- + gyroscoopsensoren die zijn aangesloten op bijna elk Arduino-apparaat, en vervolgens CurieGraph.py te gebruiken om de gegevens te visualiseren. Aangezien het doel van het verzamelen van seismische metingen is om te bewijzen dat het mogelijk is om massaal gegevens te verzamelen zonder ingewikkelde of gespecialiseerde apparatuur, rommelde ik in mijn bureau naar de "ITG-MTU" / "GY-521" / "MPU-6050" sensorbord, en schreef er de volgende schets voor. CurieGraph.py start misschien een paar keer niet, maar meestal gaat het bij de derde poging goed.

Externe gyroscoop

#include const int MPU_addr=0x68; // I2C-adres voor ITG-MTU int ax, ay, az, temp, gx, gy, gz; void setup(){ Serial.begin(9600); Draad.begin(); Wire.beginTransmission (MPU_addr); Draad.schrijven (0x6B); Draad.schrijven(0); Wire.endTransmission (waar); } String jsonEncodeValue(String key, float keyVal){ return "\"" + key + "\":" + String(keyVal) + ""; } String assembleJson(String keysAndVals){ return "{" + keysAndVals + "}"; } void loop(){ Wire.beginTransmission(MPU_addr); Draad.schrijven (0x3B); Wire.endTransmission (false); Wire.requestFrom (MPU_addr, 14, waar); 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; // Converteer tijdelijke gegevens naar Celsius - WORDT NIET GEBRUIKT 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)); vertraging (100); }  

Code

arduino-101-schetsen
Een verzameling schetsen die speciaal zijn geschreven voor de Arduino 101, waarbij gebruik wordt gemaakt van de versnellingsmeters en gyroscopen van Intel Curie.https://github.com/ckuzma/arduino-101-sketches

Productieproces

  1. Motorbesturingscircuits
  2. Schakel Alexa Control in op je plafondventilator
  3. Atmel AT89-serie programmeren via Arduino
  4. Universele afstandsbediening met Arduino, 1Sheeld en Android
  5. Bedien muntvangers met Arduino
  6. Arduino-controlecentrum
  7. Ioed gebruiken om een ​​robotarm op afstand te bedienen
  8. Arduino met Bluetooth om een ​​LED te bedienen!
  9. Arduino-luchtbevochtigerbediening
  10. Arduino Nano:bedien 2 stappenmotoren met joystick
  11. Arduino - Stuur temperatuur naar internet via serieel