Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Controle de circuito sensível a movimento via Intel Curie

Componentes e suprimentos

Arduino 101
× 1

Sobre este projeto





Metas

  • Ligar (e desligar) as luzes automaticamente quando passos são detectados
  • Sincronizar o piscar das luzes com o ritmo detectado de dança / batida nas proximidades
  • Leituras do acelerômetro / giroscópio de saída por USB / Bluetooth para a detecção de eventos sísmicos





GitHub Repo


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





Esboços


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 () {// Não precisamos colocar nada no loop principal ...} static void eventCallback (void) {if (CurieIMU.getInterruptStatus (CURIE_IMU_SHOCK)) {digitalWrite (LED_BUILTIN, HIGH); atraso (50); digitalWrite (LED_BUILTIN, LOW); }}  
  • Pisca o LED integrado quando um toque é detectado
  • Usado para descobrir mudanças na detecção de impulso

TapBeatMatch


  • Sincroniza o piscar do LED integrado com o ritmo da batida na superfície da mesa perto do Arduino 101
  • Média ponderada implementada para ajudar a mitigar o ruído
  • Limite ajustável de detecção de choque

SeismicReader + Script de visualização Python
  • A placa Arduino 101 emite valores de acelerômetro e giroscópio formatados em JSON em série, que são lidos por um computador conectado
  • Escreveu um pequeno script Python que lê dados do quadro e os representa graficamente em linhas muito simples no terminal / prompt de comando
  • Salva os resultados em um CSV que pode ser aberto no Excel e representado graficamente
  • Uso multiplataforma do Python 2.x / 3.x:

VibrationLighting
  • Originalmente projetado para detectar passos se aproximando e ativar a iluminação enquanto alguém está por perto, foi reduzido para detecção de toque duplo, pois a relação sinal-ruído não era limpa o suficiente para minha instalação
  • A tira de LED colada sob o espelho da entrada liga e desliga quando o espelho é batido duas vezes seguidas





Bônus


Uma conversa com Bogdan me fez perceber que seria muito fácil modificar o esboço do Arduino para funcionar com acelerômetro autônomo + sensores de giroscópio conectados a quase qualquer dispositivo Arduino e, em seguida, usar CurieGraph.py para visualizar os dados. Visto que o objetivo de coletar leituras sísmicas é provar que é possível massivamente fazer crowdsourcing sem equipamentos complicados ou especializados, vasculhei minha mesa em busca do "ITG-MTU" / "GY-521" / "MPU-6050" placa do sensor, e escreveu o seguinte Sketch para ela. CurieGraph.py pode falhar ao iniciar algumas vezes, mas geralmente ele pega corretamente na terceira tentativa.

Giroscópio Externo
  #include  const int MPU_addr =0x68; // endereço I2C para 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 + "}"; } void loop () {Wire.beginTransmission (MPU_addr); Wire.write (0x3B); Wire.endTransmission (false); Wire.requestFrom (MPU_addr, 14, verdadeiro); 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; // Converter dados temporários para celsius - NÃO ESTÁ SENDO USADO 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)); atraso (100); }  

Código

arduino-101-sketches
Uma coleção de esboços escritos especificamente para o Arduino 101, aproveitando os acelerômetros e giroscópios do Intel Curie.https://github.com/ckuzma/arduino-101-sketches

Processo de manufatura

  1. Circuitos de controle do motor
  2. Habilite o controle Alexa para o seu ventilador de teto
  3. Programação da série Atmel AT89 via Arduino
  4. Controle remoto universal usando Arduino, 1Sheeld e Android
  5. Aceitar moeda de controle com Arduino
  6. Arduino Control Center
  7. Usando IoT para controlar remotamente um braço robótico
  8. Arduino com Bluetooth para controlar um LED!
  9. Controle do umidificador Arduino
  10. Arduino Nano:Controle 2 motores de passo com joystick