SunGlass-BOT:光量に合わせて自動でレンズを開閉するスマートサングラス
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino Pro Mini (5V 16MHz) | 1 | 本番用。書き込み時はUno経由 |
| Arduino Uno | 1 | Pro Mini書き込み用 (ATmega328P取り外し) |
| マイクロサーボ (MG996R等、小型なら何でも可) | 1 | レンズ開閉駆動 |
| CdSセル (光依存抵抗・LDR) | 1 | 光センサー |
| 10kΩ 抵抗 | 1 | 分圧回路用 |
| サングラス (安価なものでOK) | 1組 | レンズ取り外し用 |
必要な工具・ソフトウェア
- はんだごて
- グルーガン
- Arduino IDE
- USB-シリアル変換アダプター (またはArduino Unoで代用)
プロジェクト概要
周囲の明るさを検知し、自動で遮光レンズを開閉するサングラス型ロボットです。明るい屋外ではレンズを下ろして目を保護し、室内など暗い場所ではレンズを上げて視界を確保します。HackSpace Magazineで「TOP PROJECT」に選出された作品です。
掲載号はこちら
原理:分圧回路で光量を数値化
LDRと10kΩ抵抗で分圧回路を作り、Arduinoのアナログピン(A0)で電圧を読み取ります。
- 強い光 (屋外) :LDR抵抗値↓ → アナログ値 **100未満**
- 室内光 :アナログ値 **500〜600前後**
- 暗闇 :アナログ値 **1023付近**
閾値を100として、それより低ければサーボを動かしてレンズを閉じ、高ければ開きます。
回路図


ブレッドボードで動作確認後、Pro Miniにはんだ付けして小型化。LDRは光が当たる位置に配置するよう注意。電源は5V 1Aのモバイルバッテリー等で駆動可能。
Pro Miniへの書き込み方法
Pro MiniにはUSB端子がないため、Arduino UnoのATmega328Pチップを取り外し、以下のように接続して書き込みます:
| Uno側 | Pro Mini側 |
|---|---|
| 5V | VCC |
| GND | GND |
| TX | TX |
| RX | RX |
| RESET | RST |
ツール→ボードで「Arduino Pro Mini (5V 16MHz)」を選択して書き込み。
スケッチ
// SunGlass-BOT by ashraf minhaj
#include
Servo sglass; // サーボオブジェクト
int ldr = A0; // LDR接続ピン
int value = 0; // 読み取り値
void setup() {
Serial.begin(9600);
sglass.attach(9); // サーボ制御ピン
}
void loop() {
value = analogRead(ldr);
Serial.println(value);
delay(100);
if (value < 100) { // 明るい → レンズ閉じる
sglass.write(155);
delay(100);
} else { // 暗い → レンズ開く
sglass.write(80);
delay(100);
}
}
閾値(100)とサーボ角度(155/80)は環境に合わせて調整してください。
コードリポジトリ:GitHub
サングラスへの取り付け
- サングラスのレンズを強く押して取り外す
- レンズを硬めのワイヤーに接着し、フレーム状にする
- サーボホーンにこのフレームを接着
- サーボ本体をサングラステンプル(ツル)部分に固定

完成!

電源を入れて外に出れば、光量に合わせてレンズが自動開閉する様子が楽しめます。見た目は少し奇抜ですが、機能的にはバッチリ動作します!
製造プロセス