工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Intel Curie搭載Arduino 101によるモーションアクティブ照明システム

必要な部品と材料

部品数量
Arduino 101(Intel Curie搭載)1

プロジェクト概要

Arduino 101に内蔵されるIntel Curieモジュールの加速度センサーとジャイロスコープを活用し、複数のモーション連動照明スケッチを開発しました。

目標

GitHubリポジトリ

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

収録スケッチ

1. TapFlashTest

タップ(衝撃)検知でオンボードLEDを点滅。衝撃検知閾値の調整用。

#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可視化スクリプト

Intel Curie搭載Arduino 101によるモーションアクティブ照明システム

4. VibrationLighting

Intel Curie搭載Arduino 101によるモーションアクティブ照明システム

ボーナス:汎用化スケッチ「ExternalGyroscope」

Arduino 101専用ではなく、MPU-6050(GY-521/ITG-MTU)等の外付けI2Cセンサーを接続した任意のArduinoで動作するよう移植。CurieGraph.py でデータ可視化可能。

#include 
const int MPU_addr = 0x68; // MPU-6050 I2Cアドレス
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, 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 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));
  delay(100);
}
Intel Curie搭載Arduino 101によるモーションアクティブ照明システム

注:CurieGraph.py は起動時に数回失敗することがありますが、通常3回目以降で正常接続します。

製造プロセス

  1. Alexaでシーリングファンを音声制御:ステップバイステップガイド
  2. Arduino UnoでAtmel AT89シリーズを簡単プログラミング──ステップバイステップガイド
  3. Arduinoと1Sheeldで作る万能Androidリモコン──IR制御で家電を一括操作
  4. スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
  5. Arduino電源制御センター:N-FET/P-FET/リレー/RTC搭載キット
  6. IoTで遠隔操作する自作ロボットアーム:Arduino MKR1000とSimulink、ThingSpeak活用
  7. ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
  8. DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
  9. Arduino Nanoとジョイスティックで2軸ステッピングモーターを制御:Visuinoで簡単プログラミング
  10. Arduino UNO + WiFiシールドで温度をWebリアルタイム表示 — シリアル出力だけでグラフ化
  11. 高度なモータ制御回路:ラッチング、停止、タイムディレイ技術