ArduinoDueを備えたPOVシリンダー
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 |
必要なツールとマシン
> |
| |||
| ||||
| ||||
| ||||
|
アプリとオンラインサービス
> |
| |||
| ||||
| ||||
|
このプロジェクトについて
はじめに
これは私の最初のArduinoプロジェクトです。私の作品は、視覚現象の持続性を生み出したいくつかのメーカープロジェクトに触発されました[2、3、4]。
視覚の持続性 (POV)は、人間の心の中で複数の個別の画像が1つの画像に溶け込み、映画やアニメーション映画の運動知覚の説明であると考えられている目の錯覚を指します[1]。
プロジェクト[2、3、4]は、ディスクリートLEDとディスクリートシフトレジスタを使用して、POVグローブディスプレイを実装します。代わりに、私のデバイスは回転シリンダーと既製のRGBLEDストリップをPOVディスプレイとして使用しています。
私のPOVシリンダーの主な機能は次のとおりです。
- POV(視覚の持続性)表示
- 回転する円柱にアニメーションGIF画像を表示します
- GIF画像はArduinoのRAMまたはFlashに保存されます
- Bluetoothを介したPCとの通信
技術概要
- シリンダーの直径:200 mm
- シリンダーの高さ:200 mm
- シリンダーの材質:発泡スチロール
- シリンダー重量:420 g
- LPD8806に基づく4つのRGBLEDストリップ
- 画面サイズ151x40ピクセル
- ArduinoDueに基づく
- HC06Bluetoothモジュールが含まれています
- PCからBluetooth経由で制御
機械的構造
機械的構造を下の図に示します。
<図>このデバイスは、シャーシとローターで構成されています。シャーシは、3本のネジ棒で接続された2枚の円形合板ディスクで構成されています。ディスク間の距離は120mmです。真ん中には2つのボールベアリングとシャフトがあります。シャフトにもネジ棒が使用されています。シャフトは、2つのクラウンギアと歯付きベルトを介して電気モーターによって駆動されます。回転速度は最大1300RPM(22 Hz)です。
ローターは、2つの発泡スチロールシリンダーと2つの円形アルミニウムディスクで構成されています。発泡スチロールのシリンダーは下部ディスクに接着されています。上のディスクは取り外すことができます。ローターをシャフトに取り付けるために使用されます。
<図>電子機器はローターの上部にあります。次の部分が含まれています:
- Arduinoデュエボード
- ArduinoDueボード用の自作シールド
- 電源(PS)ボード
- HC-06Bluetoothモジュール
電源(7.5V)は、スライド接点と接点リングを介して電源ボードに供給されます。
合計40個のRBGLEDを備えた4つのLEDストリップが使用されます。それらはケーブルでArduinoシールドに接続されています。
<図>下の図に示すように、4つのLEDストライプが配置されています。 4つのシフトされたLEDストライプを使用することにより、LED間のY軸の距離が4で除算されます。X軸の距離はSWによって処理されます。 SWは、40個のLEDすべてを1回転あたり151回更新します。図面のグリッドは、表示されているピクセルに対応しています。
<図>
電子回路
電子回路は、添付のPDF回路図に示されています。
LM317電圧レギュレータを備えた電源ボードがあります。入力電圧は7.5ボルト、出力電圧は4.6ボルトです。電圧レギュレータは、ArduinoDueボードとLEDストリップを供給します。
Arduino用の自作シールドもあります。 LEDストリップへのコネクタケーブルとIR受信機用の回路が含まれています。 IRレシーバーは、ローターの位置を検出するために使用されます。 Arduinoのタイマー/割り込み入力に接続されています。
STRIP0からSTRIP3という名前の4つのLEDストリップがあります。各ストリップには、5つのLPD8806LEDドライバーと10のRBGLEDがあります。 STRIP0はUSART0に接続され、STRIP1はUSART1に接続されます。両方のUSARTはSPIモードで動作しています。 STRIP2とSTRIP3は直列に接続されており、ArduinoのSPIインターフェースによって駆動されます。
PCとの通信には、HC-06BluetoothモジュールがUSART3に接続されています。 Bluetoothモジュールは、Arduinoボードが提供する3.3ボルトで供給されます。
Arduinoソフトウェア
Arduinoソフトウェアはメインプログラム( mpc.ino )で構成されています )および次のライブラリ:
- bt -Bluetoothモジュール用のドライバーSW
- LDP8806 -LEDストリップ用のドライバーSW
- MemoryFree -使用可能な空きRAMメモリを検出する機能
- mpcgif -RAMまたはフラッシュメモリにあるGIFファイルの再生
- 写真 -Flashに保存されている内部GIF画像
- トレース -SWデバッグ用の関数
LEDストリップへの画像の定期的な出力は、割り込み駆動で行われます。 2つのトグルフレームバッファがあります。各フレームバッファは、40 x151ピクセルの1つの画像を保持します。各ピクセルは1バイトのカラーパレットインデックスです。一方のフレームバッファは割り込みとDMAを介してLEDストリップに出力されますが、もう一方のフレームバッファはメインプログラムによって準備されます(たとえば、GIF画像をデコードする機能によって)。フレームバッファの切り替えは、フレーム割り込みルーチンによって行われます。
IRセンサーによってトリガーされる1回転ごとに1つのフレーム割り込みがあります。フレーム割り込みルーチンは、(ハードウェアタイマーを介して)進化速度を測定し、ハードウェアタイマーを使用して定期的な列割り込み(列ごとに1つ、つまり1回転あたり150の割り込み)をプログラムします。カラム割り込みルーチンは、現在のカラムをLEDストリップに出力します。パフォーマンス上の理由から、出力は完全に並列で動作する3つのDMAチャネルを介して行われます。
完全なArduinoソースコードはgithubで入手できます。
PC制御プログラム
PC制御プログラム( pccp )は、C ++で記述されたコマンドラインツールです。 Cygwinで実行され、Bluetooth経由でArduinoと通信します。 pccp 次の1文字のコマンドでPOVシリンダーを制御できます。
- 0-7 -画面を色(黒、赤、黄、緑、シアン、青、紫、白)で塗りつぶします
- t -三角形の曲線を描きます(テスト画像として)
- s -表示された画像の回転を有効または無効にします
- r -単一の行を描画します
- c -単一の列を描画します
- y -フラッシュメモリに保存されている内部GIF画像を再生します
- f -BT経由でPCから外部GIFファイルをダウンロード
- x -ダウンロードした外部GIFファイルを再生します
pccp グラフィカルユーザーインターフェイスへのインターフェイスも提供します。さらに、現在の回転速度(Hzおよびµs)とフレームカウンター値が表示されます。
完全なソースコードはgithubで入手できます。
グラフィカルユーザーインターフェイス
グラフィカルユーザーインターフェイスはユニバーサルWindowsアプリです。 POVシリンダーで表示するGIFファイルを選択できます。このアプリは、「MicrosoftWindowsユニバーサルサンプル」[5]のFilePickerアプリから派生しています。
完全なソースコードはgithubで入手できます。
<図>
参考資料
[1] https://en.wikipedia.org/wiki/Persistence_of_vision
[2] RGB LED GLOBE-POV-40 x 200
[3] POVグローブディスプレイRGB
[4] POV Globe Display RGB-プロジェクトの説明(ドイツ語)
[5] https://github.com/Microsoft/Windows-universal-samples
コード
POVシリンダーのArduinoソースコード
https://github.com/hanoba/povc-arduinoPOVシリンダーのPC制御プログラム
これは、Cygwinhttps://github.com/hanoba/povc-pccpで実行されているC ++コマンドラインプログラムです。POVシリンダーのグラフィカルユーザーインターフェイス
これはWindowsユニバーサルアプリですhttps://github.com/hanoba/povc-win-app 回路図
これは概略図です。製造プロセス