Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Contrôle de circuit sensible aux mouvements via Intel Curie

Composants et fournitures

Arduino 101
× 1

À propos de ce projet

Objectifs

  • Allumez (et éteignez) automatiquement les lumières lorsque des pas sont détectés
  • Synchronisez le clignotement des lumières avec le tempo détecté des danses/tapotements à proximité
  • Sortie des lectures d'accéléromètre/gyroscope via USB/Bluetooth pour la détection d'événements sismiques

Dépôt GitHub

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

Croquis

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() { // Nous n'avons pas besoin de mettre quoi que ce soit dans la boucle principale... } static void eventCallback(void) { if (CurieIMU.getInterruptStatus(CURIE_IMU_SHOCK)) { digitalWrite(LED_BUILTIN, HIGH); retard (50); digitalWrite(LED_BUILTIN, BAS); } }  
  • La LED intégrée clignote lorsqu'un robinet est détecté
  • Utilisé pour comprendre les changements apportés à la détection d'impulsions

TapBeatMatch

  • Synchronise le clignotement de la LED intégrée au tempo du tapotement sur la surface de la table près de l'Arduino 101
  • Moyenne pondérée mise en œuvre pour aider à atténuer le bruit
  • Seuil de détection de choc réglable

Lecteur sismique + Script de visualisation Python

  • La carte Arduino 101 génère des valeurs d'accéléromètre et de gyroscope au format JSON via Serial, qui sont ensuite lues par un ordinateur connecté
  • Écrit un petit script Python qui lit les données du tableau et les représente graphiquement sur des lignes très simples dans le terminal/l'invite de commande
  • Enregistre les résultats dans un fichier CSV qui peut être ouvert dans Excel et représenté graphiquement
  • Utilisation multiplateforme de Python 2.x/3.x :

Éclairage par vibration

  • Conçu à l'origine pour détecter les pas qui s'approchent et activer l'éclairage lorsque quelqu'un se trouve à proximité, a été réduit à la détection par double appui car le rapport signal/bruit n'était pas assez propre pour mon installation
  • La bande LED collée sous le miroir de l'entrée s'allume et s'éteint lorsque le miroir est frappé deux fois de suite

Bonus

Une conversation avec Bogdan m'a fait comprendre qu'il serait très facile de modifier le croquis Arduino pour qu'il fonctionne avec des capteurs accéléromètres + gyroscopes autonomes connectés à presque tous les appareils Arduino, puis utiliser CurieGraph.py pour visualiser les données. Considérant que le but de la collecte de lectures sismiques est de prouver qu'il est possible de générer massivement des données sans équipement compliqué ou spécialisé, j'ai fouillé dans mon bureau pour le "ITG-MTU" / "GY-521" / "MPU-6050" carte de capteur, et a écrit le croquis suivant pour cela. CurieGraph.py peut échouer à démarrer plusieurs fois, mais en général, il s'enclenche correctement à la troisième tentative.

Gyroscope externe

#include const int MPU_addr=0x68 ; // Adresse I2C pour ITG-MTU int ax, ay, az, temp, gx, gy, gz ; void setup(){ Serial.begin(9600); Fil.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 + "}" ; } boucle vide(){ Wire.beginTransmission(MPU_addr); Wire.write(0x3B); Wire.endTransmission(false); Wire.requestFrom(MPU_addr, 14, true); hache =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; // Convertir les données temporaires en celsius - NE PAS ÊTRE UTILISÉ String keyVals =jsonEncodeValue("ax", ax) + ","; keyVals +=jsonEncodeValue("ay", oui) + ","; keyVals +=jsonEncodeValue("az", az) + ","; keyVals +=jsonEncodeValue("gx", gx) + ","; keyVals +=jsonEncodeValue("gy", gy) + ","; keyVals +=jsonEncodeValue("gz", gz); Serial.println(assembleJson(keyVals)); retard (100); }  

Code

arduino-101-croquis
Une collection de croquis écrits spécifiquement pour l'Arduino 101, tirant parti des accéléromètres et des gyroscopes d'Intel Curie.https://github.com/ckuzma/arduino-101-sketches

Processus de fabrication

  1. Circuits de commande de moteur
  2. Activez le contrôle Alexa sur votre ventilateur de plafond
  3. Programmation de la série Atmel AT89 via Arduino
  4. Télécommande universelle utilisant Arduino, 1Sheeld et Android
  5. Contrôler l'accepteur de pièces avec Arduino
  6. Centre de contrôle Arduino
  7. Utiliser l'IoT pour contrôler à distance un bras robotique
  8. Arduino avec Bluetooth pour contrôler une LED !
  9. Contrôle de l'humidificateur Arduino