コンパクトな5階建て Arduino駆動ミニエレベーター
必要なコンポーネントと用品
| パーツ | 数量 |
|---|---|
| Arduino Mega 2560 | 1 |
必要な工具
- ジグソー
アプリとオンラインサービス
- Arduino IDE
プロジェクト概要
高さ3フィート(約90cm)の実動する5階建てエレベーターです。多くの労力を注ぎました。
早速仕組みを解説します!
- コード
- 配線図(近日公開)
着想
ArduinoとIoTで遊び始めて数年ですが、ほとんどのプロジェクトはシンプルなものばかり。もっと「実用的」なものを作りたいと考えていました。昨夏、サンフランシスコ湾エリアの「Project Ember」というサマーキャンプに参加し、子供たちが電動工具で大型木造構造物を設計・建設するのを見て、物理的な工作とArduinoを融合させようと思いつきました。
アプローチ
最大の課題はモーターと階層検出方式。本物のエレベーターは大型ACモーターと各階のセンサーを使いますが、小型化すると配線が大変で感度・位置合わせの懸念があります。ステッピングモーターなら精密位置決めが可能ですが、現在位置と目標位置を正確に知る必要があります。
幸い、以前の「高機能カレンダー」プロジェクトでステッピングモーターの制御と、位置をEEPROM(不揮発性メモリ)に保存する手法を確立済みでした。これを応用すれば、各階にセンサーを設置せず、ステッピングモーターのステップ数を数えるだけで位置管理が可能です。
もう一つの懸念は呼び出しボタン。ランプ付きの瞬間接点スイッチが必要ですが、ランプとスイッチを独立制御できるものが必要です。eBayで適切なものを見つけました。
材料
- ランプ独立制御可能なボタン(eBay購入、写真参照)
- Arduino Mega 2560(GPIOピン数が多いため。正規品推奨)
- 8×8 LEDマトリックス(矢印表示用)
- 7セグメントディスプレイ(階数表示用)
- ステッピングモーターとドライバーボード(Elegoo 5個セット購入、1個使用)
- Mega 2560用プロトシールド(ヘッダーは取り外し済み)
- ねじ端子台(10×2)×4
- 糸巻きスプール
- ファイバーボードと3/4インチ角モールディング(シャフトとカゴ用)
- アルミアングルブラケット(モーター固定用)
- 各種ネジ
- ホース(スプール内のブッシュ用)
- 丈夫なナイロン糸(凧糸使用)
上記はホームセンター等で調達可能です。
組み立て
シャフトとカゴはファイバーボードとモールディングで補強して作成。シャフトは36インチ×8インチのファイバーボード3枚で側面と背面を作り(前面は開放)、4本のモールディングでネジ止め。天板と底板でスクエアを保ちます。
カゴも同様の構造で、シャフト幅いっぱいですが前後のモールディングの間を走行する形状。天井にアイフックを取り付け、糸で吊り下げます。
シャフト底板はテスト完了まで取り付けないでください(カゴの出し入れのため)。
モーターはシャフト最上部に設置。糸巻きスプールをモーター軸に固定しますが、モーター軸はDカット(平らな面)があるのに対しスプールの穴は丸いため、スプールにタップを切ってネジでDカット面に固定。スプールの穴と軸の隙間には短いゴムホースをブッシュとして挿入します。
モーターをアルミアングルに固定し、シャフト天板にネジ止め。スプールの反対側もアルミアングルにネジを通して支え、カゴの重みでスプールが外れないようにしています。
ボタンパネルもファイバーボードで作成。左側に呼び出しボタン(上向き緑、下向き赤、最上階は赤のみ、最下階は緑のみ)、右側にカゴ内パネル(LEDマトリックス、7セグ、5階分のボタン用穴)を配置。
ねじ端子台を4個取り付け(呼び出しパネル側2個、カゴ内パネル側2個)。
配線
配線は大量になるため、プロトシールドを使用し、直接ハンダ付けして信頼性を確保。抵抗(7セグ用)などもシールド上に実装できます。
パネルとArduinoをハードワイヤリングすると修正が困難なため、すべての配線に着脱可能な端子を用意。ねじ端子台でパネル側とArduino側を接続し、7セグとLEDマトリックスは片側をクイックディスコネクトピンにしています。
ボタンパネル用ハーネスは圧着式メススペード端子で自作。各ボタンはスイッチ用とランプ用で別々のGNDが必要なため、GNDはデイジーチェーンでまとめ、信号線(スイッチ・ランプ各1本)のみねじ端子台へ。ソリッドワイヤー(シールド側)とストランドワイヤー(ボタン側)の接続もねじ端子台で行っています。
プログラミング
コードは何度も改訂しました。最も複雑なのは「エレベーターがどこへ向かうか」のロジック(例:2階にいて、カゴ内から3階、外から4階降り、1階上がりの呼び出しがある場合、どこへ行くか)。また、ステッピングモーター移動中は loop() がブロックされるため、移動中にボタンが押された場合に対応するには、少しずつ動かしてボタンチェックを挟む必要があります。
Arduinoスケッチは こちら からダウンロード可能です。
必要なライブラリ:
- LEDControlMS
- SevenSeg
アップロード手順:ボード選択(Mega 2560)、ポート選択(Macなら/dev/cu.usbmodemxxxx、WindowsならCOMx)、アップロード。自己テスト(呼び出しボタン順次点灯→カゴ内ボタン→7セグ巡回→マトリックス矢印表示)が実行され、最後にEEPROMに保存された前回の階数が表示されます。
テストとキャリブレーション
ステッピングモーターが各階で正確に停止するため、一度だけ手動で位置を教える必要があります(EEPROMに保存され、電源オフ後も保持)。
- 右パネルの最上階・最下階ボタンを同時に長押し → マトリックスに「C」(キャリブレーション)表示。
- その2ボタンでカゴを手動移動し、7セグに表示される階に合わせたら中央ボタンを押す。
- 全5階で繰り返し、完了するとマトリックスが消灯。
今後の展開
- レーザーカッターでパーツを再作成し、構造の精度向上(手持ちジグソーでは切り口が不揃いで摩擦問題の原因)。モーターマウント改良、より高速なモーター導入。
- 到着チャイム/ベルの追加(実物エレベーターのように)。
ご意見・ご提案はコメント欄へどうぞ!
バージョン履歴
Google Driveリンクは自動的に最新版に更新されます。
Version 2: 現在階からの外部呼び出しでソフトウェアがハングするバグを修正(リセットボタン押下が必要だった問題)。
コード関連リンク
- Arduino LED Matrix Library
- SevenSeg library
- Arduino Sketch: Gist
製造プロセス
- エレベーター:設計、歴史、未来の革新
- Arduino Mini ボスバトルゲーム:レトロ風LCDゲームプロジェクト
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
- Arduino Pro MiniとDS1302 RTCで作る高精度7セグメント時計