Bolt IoTとArduino UNOでLED輝度をシームレス制御
必要な部品と用品
| Bolt IoT Bolt WiFiモジュール | ×1 |
| Arduino UNO | ×1 |
| LED(汎用) | ×6 |
| 抵抗 330Ω | ×6 |
| ハーフサイズブレッドボード | ×1 |
| オス-オス ジャンパーワイヤー | ×7 |
| USB A-Bケーブル | ×1 |
使用アプリ・オンラインサービス
- Arduino IDE
- Bolt IoT Bolt Cloud
プロジェクト概要
家庭の蛍光灯を必要以上に点けっぱなしにすると電気代がかさむ上、眩しすぎて不快なことも。指先で明るさを調整できたら便利です。このプロジェクトでは、Bolt IoTとArduinoを使い、最大6個のLEDの輝度をPWM制御でリモート操作するプロトタイプを作ります。Arduinoの6つのPWMピン(3, 5, 6, 9, 10, 11)を使用します。


Bolt IoTプラットフォーム
Bolt IoTは、デバイスの制御とデータ収集を安全に行えるプラットフォームです。機械学習アルゴリズムを数クリックでデプロイし、異常検知やセンサー値予測が可能。詳細はboltiot.comを参照。
PWM(パルス幅変調)
デジタル信号のオン/オフを高速で切り替え、オン時間(デューティサイクル)を変えることで、平均電圧を制御する技術。LEDの明るさ調整などに使われます。詳細はArduino公式チュートリアルを参照。
ハードウェア組み立て
- 全部品を用意し、LEDが正常に光るか確認
- LEDのカソードをGNDライン、アノードを330Ω抵抗経由でPWMピン(3, 5, 6, 9, 10, 11)に接続
- ArduinoのGNDをブレッドボードのGNDラインに接続
- BoltのTx→ArduinoのRx、BoltのRx→ArduinoのTxに接続
- Boltの5V→Arduinoの5V、BoltのGND→ArduinoのGNDに接続
- 注意:詳細な配線は回路図を参照

Boltのセットアップ
- cloud.boltiot.comでアカウント作成
- スマホアプリ「BoltIoT」でログインし、デバイスを追加
- デバイスIDを取得
- APIキーを有効化(CloudダッシュボードのAPIページでEnable)
- 注意:APIキーとデバイスIDは機密情報です。共有しないでください。
APIとBolt Cloud API
Bolt Cloud APIは、Boltデバイスとサードパーティシステム(モバイルアプリ、Webサーバー、Pythonプログラム等)を連携するためのインターフェースです。制御、監視、通信、ユーティリティ機能を提供。
API呼び出しの一般的な構文:
https://cloud.boltiot.com/remote/<your_api_key>/command?¶m1=...¶m2=...&deviceName=BOLTXXXXX
例:
https://cloud.boltiot.com/remote/0e17f7d8-c1a3-4692-b667-7251175f7ab6/restart?&deviceName=BOLT9161541
Arduino用コード
- boltiot-arduino-helperライブラリをGitHubからダウンロードし、Arduinoライブラリに追加
- 以下のコードをArduino Unoに書き込み(書き込み前にBoltとArduinoのTx/Rx接続を外すこと)
輝度制御用API呼び出し
- シリアル通信初期化:
https://cloud.boltiot.com/remote/<API_KEY>/serialBegin?baud=9600&deviceName=BOLT13819450 - LED点灯・輝度設定:
https://cloud.boltiot.com/remote/<API_KEY>/serialWrite?data=ON <LED番号> <PWM値>
(パラメータ間と末尾にスペース必須。例:data=ON 1 120でLED1をPWM 120に設定) - 応答取得:
https://cloud.boltiot.com/remote/<API_KEY>/serialRead?till=10&deviceName=BOLT8795377
注意:全API呼び出しでAPIキーとデバイスIDを自分のものに置き換えてください。
動作原理
ArduinoはBoltからのシリアルコマンドを継続監視。"ON"コマンド受信時、続くデータからLED番号(1-6)とPWM値を抽出。範囲チェック後、対応ピンにanalogWriteでPWM出力し、結果をシリアルで返却。これにより最大6個のLEDを個別に輝度制御可能。
スケッチ(コード)
#include <BoltIoT-Arduino-Helper.h>
int pwm_pin[] = {3, 5, 6, 9, 10, 11};
String switchOn(String *data) {
int pin = data[0].toInt();
int pwm = data[1].toInt();
if ((pin < 1) || (pin > 6)) {
return "pin number should be b/w 1 and 6";
}
pin--;
analogWrite(pwm_pin[pin], pwm);
return "Pin " + String(pin) + " was set to pwm value " + String(pwm);
}
void setup() {
pinMode(3, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT);
pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT);
boltiot.begin(Serial);
boltiot.setCommandString("ON", switchOn, 2, ' ');
}
void loop() {
boltiot.handleCommand();
}
回路図
製造プロセス
- Arduinoと1Sheeldで作る万能Androidリモコン──IR制御で家電を一括操作
- Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
- Arduino UNOで周波数とデューティサイクルを高精度測定
- スマート自動靴紐シューズ:発電機能内蔵で実用性抜群
- Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
- Arduino & MPU6050:SG90 & MG996Rサーボの精密制御
- スマートなArduino制御ロボットアームの製作:簡単DIYチュートリアル
- Arduino Nanoで作る8×8 LEDマトリックスのフリップクロック - 自作リアルタイムクロック
- Arduino Unoで8×8 LEDマトリックスを制御:ステップバイステップガイド
- Arduino NanoとRDA5807Mで作るコンパクトFMラジオ
- CNC加工:材料とコンポーネントの精密加工