Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Система управления светом на Intel Curie (Arduino 101) с детекцией движений

Компоненты

О проекте

Проект исследует возможности встроенного в Intel Curie 6-осевого IMU (акселерометр + гироскоп) для трёх задач:

  1. Автоматическое включение света при обнаружении шагов/вибраций (детекция ударов/шока).
  2. Синхронизация мигания со стуком/танцем — определение темпа и мигание в такт.
  3. Вывод сырых данных IMU (JSON) по Serial/Bluetooth для сейсмического мониторинга / краудсорсинга данных.

Все скетчи доступны в репозитории: github.com/ckuzma/arduino-101-sketches

Основные скетчи

1. TapFlashTest — базовая детекция удара

Мигает встроенным LED (pin 13) при обнаружении удара по плате.

#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() {}
static void eventCallback(void) {
  if (CurieIMU.getInterruptStatus(CURIE_IMU_SHOCK)) {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(50);
    digitalWrite(LED_BUILTIN, LOW);
  }
}

2. TapBeatMatch — синхронизация с темпом

Анализирует интервалы между ударами, считает взвешенное среднее (для подавления шума) и мигает LED в такт. Порог чувствительности настраиваем.

Система управления светом на Intel Curie (Arduino 101) с детекцией движений

3. SeismicReader + Python-визуализация

Arduino 101 стримит JSON с акселерометра/гироскопа в Serial. Python-скрипт (CurieGraph.py) читает порт, рисует графики в терминале и сохраняет CSV для Excel.

Система управления светом на Intel Curie (Arduino 101) с детекцией движений

Поддержка Python 2.x / 3.x, кроссплатформенный.

4. VibrationLighting — практическое применение

Изначально задумывалось для детекции шагов у входной двери и включения ленты. Из-за шума упростили до «двойного стука» по зеркалу — включает/выключает LED-ленту под зеркалом.

Система управления светом на Intel Curie (Arduino 101) с детекцией движений

Бонус: работа с внешним MPU-6050 (GY-521) на любом Arduino

Скетч ExternalGyroscope читает MPU-6050 по I2C и выдает тот же JSON-формат, совместимый с CurieGraph.py. Демонстрирует, как дешевые сенсоры + любой Arduino могут участвовать в краудсорсинге сейсмических данных.

#include <Wire.h>
const int MPU_addr = 0x68;
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); // wake up
}

String jsonEncodeValue(String key, float val) {
  return "\"" + key + "\":" + String(val);
}
String assembleJson(String kv) { return "{" + kv + "}"; }

void loop() {
  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();

  String kv = jsonEncodeValue("ax", ax) + ",";
  kv += jsonEncodeValue("ay", ay) + ",";
  kv += jsonEncodeValue("az", az) + ",";
  kv += jsonEncodeValue("gx", gx) + ",";
  kv += jsonEncodeValue("gy", gy) + ",";
  kv += jsonEncodeValue("gz", gz);
  Serial.println(assembleJson(kv));
  delay(100);
}
Система управления светом на Intel Curie (Arduino 101) с детекцией движений

Примечание: CurieGraph.py может не запуститься с первого раза — обычно заработает к 3-й попытке.

Производственный процесс

  1. Продвинутые схемы управления двигателями: защёлкивание, стоп и задержка времени
  2. Управление потолочным вентилятором через Alexa: пошаговое руководство
  3. Легкая прошивка микроконтроллеров Atmel AT89 с помощью Arduino Uno — пошаговое руководство
  4. Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
  5. Умная копилка: управление монетоприёмником на Arduino Nano
  6. Arduino Power Control Center: N-FET, P-FET, реле и RTC
  7. Удаленное IoT-управление самодельной манипулятором
  8. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  9. DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
  10. Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)