Controle de circuito sensível a movimento via Intel Curie
Componentes e suprimentos
| × | 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-sketchesProcesso de manufatura
- Circuitos de controle do motor
- Habilite o controle Alexa para o seu ventilador de teto
- Programação da série Atmel AT89 via Arduino
- Controle remoto universal usando Arduino, 1Sheeld e Android
- Aceitar moeda de controle com Arduino
- Arduino Control Center
- Usando IoT para controlar remotamente um braço robótico
- Arduino com Bluetooth para controlar um LED!
- Controle do umidificador Arduino
- Arduino Nano:Controle 2 motores de passo com joystick