「バーサライター」タグアーカイブ

球体POVつくってみた -球体POV製作への道 その10-

先日、スリップリングを用いて姿勢制御モジュールとPOVの融合による新たな表現を検証いたしました。

姿勢制御装置とバーサライタの融合 ーリアクションホイールへの道50ー

 

ここでは姿勢制御POVの機構をそのまま流用して、長年の夢であった球体POVを作ってみました。
およそ6年かかった”球体POV製作への道”ついに完結です!

LEDテープ比較 Neopixel vs Dotstar -球体POV製作への道 その7-

 

 

筐体製作

6年前とは異なり、現在の私には良いブラシレスモータと素晴らしい3Dプリンタがございます。

直径10cmのリングを3Dプリントし、

 

SPI LEDテープ (41セル) をリングに貼り付けて、姿勢制御POVのホイールの代わりに固定しました。

 

簡単に球体POVが完成してしまいました。テクノロジーの進歩を感じずにはいられません。

構成

 

球体POV動作確認

まずはリングのみを載せて回転させてみました。
3Dプリントしたリング自体は軽いので問題なく高速回転できています。

 

リングの片側にLED (21セル) を付けて動作確認
ブラシレスモータのエンコーダ出力 (1周 100パルス) でLEDの色を変えて表示を確認しました。

問題なく1周100分割でRGBY 4色で点灯できました。

 

リングのもう一方に20セルのLEDを貼り付けます。他方のLEDの間にセルが配置されるように貼り付けました。

合計で41セルのLEDとなりましたが無事に1周100分割でRGBY 4色で点灯できました。
回転速度は約1400rpmです。24V ブラシレスモータはさすがに速いです。

 

LEDセルを増やしたことで表示密度も向上いたしました。

 

全白で表示させてLEDの位置による光の違いの有無の確認を実施しました。

LEDの場所 極に近いほど経路長が短くなるので 明るさに違いが出るかと思いましたが、 それほど差はありませんでした。
正面から見ると発光方向が傾くのでいい感じに 均等になっているのかもしれません。

表示画の経路長輝度補正の必要はいらないと判断しました。

 

動作

アスペクト比 2:1の地球の絵を表示してみました。
 Equirectangular-projection.jpg 

画像を100×47の画像に縮小し、各ピクセルの色を検出しLED用のファイルに変換し表示させました。

LEDセルは41ですがリング下部の接続部にはLEDがないので縦47ピクセルとしました。

それほど画素数は多くないですが、なかなかきれいに表示されました!

 

おわりに

ここでは前回に製作した姿勢制御POVを流用して、長年の夢であった球体POVを製作しました。

約6年前に球体POV製作への道を立ち上げて頓挫しておりましたが
この間に3Dプリンタを入手しハンディーバーサライタや姿勢制御モジュールを製作し、
技能の向上と良い部品とのめぐりあわせがあり この度容易に完成させることができました。

いろんな絵を表示させてみたいのですが なかなか球体を展開した画像を用意するのは難しいものですね。
画像生成方法も検討しないといけません。

 

追記

2022/3/13 絵の表示について

球体POVを製作されている やまたい@ものつくり さんから
球体中央は画像修正しなくてもいい感じに絵が表示できるというアドバイスをいただきました。

 

試しにうまい棒のアイツで試してみました。
以下のように真ん中に顔を配置してアスペクト比2:1の画像にして表示してみました。

 

なかなかいい感じ♪

 

小学館のアイツも同様に表示

 

本当に極端な加工なしでも絵だしできますね。
色々表示させて楽しみたいと思います。

姿勢制御装置とバーサライタの融合2 ーリアクションホイールへの道51ー

前回は 1軸 姿勢制御モジュール SHISEIGYO-1のホイールにLEDをつけてバーサライタ動作させてみました。

姿勢制御装置とバーサライタの融合 ーリアクションホイールへの道50ー

 

姿勢制御モジュールのホイールはバランス状況によって正転・逆転及び回転スピードが変わるので、安定した画の表示は出来ませんでした。

 

 

スリップリング

前回はホイールにLEDと制御用のマイコン(Adafruit Trinket M0)と回転検出用フォトリフレクタを載せてワイヤレスチャージモジュールで無線電源給電しました。

ここでは画の表示にホイールを駆動するブラシレスモータのエンコーダ出力を使用したいと考えました。
エンコーダによる回転検出値でLEDの点灯パターンを制御すればホイールの正転・逆転及び回転スピードが変わっても表示する画に影響はありません。
しかし問題はどのようにエンコーダ出力値をLED制御に反映させるかです。

そこで遂にスリップリングに手を出してしまいました。

 

スリップリングは回転部に電源線や信号線を接続できるコネクタです。

 

ここでは4線のスリップリングを用いて回転部のSPI入力LEDと接続します。

 

SHISEIGYO-1 POV 構築

購入したスリップリングをSHISEIGYO-1のモータに通したかったのですが、シャフトが短く埋もれてしまいました。。

 

マウントハブと平行ピンでシャフトを延長してスリップリングとフライホイールを固定しました。

 

凄く仰々しくなってしまいました。。

完成

スリップリングの回転部用の配線に11セルのLEDを接続し、他方の配線をSHISEIGYO-1のコントローラであるATOM Matrixに接続します。

 

ATOM Matrix (デュアルコア) で姿勢制御しつつモータエンコーダ出力(1周100分解能)に基づいてSPI LEDを制御します。

 

動作

まずはホイール1周を4分割して4色で発光
エンコーダで回転位置を検出してホイール速度や正転・逆転に依存しない表示を確認。

倒立動作も問題なく出来ています。

 

アニメーション表示

LEDのセル数が少なく回転速度も一定ではなくそれほど早くないので、きれいな表示は出来ていませんがスリップリングの使用によってかつてない表現が実現できました。

 

おわりに

ここでは初めてのスリップリング体験を堪能し、姿勢制御モジュールとPOVの融合による新たな表現を検証いたしました。

今後はスリップリングを用いたガチPOVの製作も検討したいなと考えております。

それではまた。

姿勢制御装置とバーサライタの融合 ーリアクションホイールへの道50ー

姿勢制御モジュールのホイールにLEDを付けてバーサライタにしてみてはどうだろう。

思いついてしまったので どうなるかは考えずに作り上げることだけを考えて手を動かした。
ちょうど祝日 天皇誕生日。俺なりの祝いの儀式だ。

 

 

とにかく作る

1軸 姿勢制御モジュール SHISEIGYO-1のホイールにLEDをつけてバーサライタ動作させます。

回転部への給電はハンディバーサライタ PovRanianの機構をそのまま利用してワイヤレスチャージモジュールを使用します。

 

ワイヤレスチャージモジュール送信側をSHISEIGYO-1の筐体に固定。
電源は5V DCDC出力に接続しました。

 

ホイールにLEDやワイヤレスチャージモジュールの受信部を固定する治具を3Dプリントいたしました。

マイコンはAdafruit Trinket M0 を使用しました。

 

SPI入力のLEDを11セル前面に固定。
更にホイールに固定後に回転を検出するフォトリフレクタセンサも固定します。

 

ホイールを固定して完成!

筐体に貼ったマスキングテープの白マーカをフォトリフレクタで検出します。

 

動作

 

プログラム的にはフォトリフレクタセンサで回転時間を検出して、1周の時間を4分割してLEDを赤、緑、青、黄で光らせます。

姿勢制御モジュールの場合は回転速度常時変化するのでマーカ1個で回転検出するPovRanian形式だときれいな絵を出すのが難しいです。

ブラシレスモータのエンコーダ出力を利用できれば回転速度や正転・逆転に関係なく絵が出せそうですが無線では厳しいと思います。

いつかスリップリングを使用した有線でのバーサライタ動作も試してみたいです。

ダーターでデバイスがもらえた電子工作コンテスト

電子工作系のコンテストは事前にサンプルをくれたり、参加賞をいただけるものが多いです。
こういった施策は応募者にとって大変うれしいですよね。

私はダーターでデバイスがもらえるコンテストが大好きです。なぜならダーターだがら。
ここではこれまで実際にデバイスをゲットできたコンテストをまとめます。

 

みんなのラズパイコンテスト2018

 

サンプルとして事前に オムロン 環境センサ 2JCIE-BL01 をいただきました。

 

2JCIE-BL01をコントローラにしたラジコンで投稿しました。

オムロン環境センサ と ラズパイ で ラジコンカー − GOBERNABLES de Pi −

 

Make It Better with Sony

Spresenseを用いた作品を募集したhacksterのコンテスト です。

 

事前にアイディア投稿でSpresenseをいただきました。

 

Spresenseでバーサライタを製作して投稿しました。

Leafonyプレゼントキャンペーン

elchikaに電子工作に関するノウハウや作り方の記事を投稿するだけでLeafony がいただけたキャンペーンです。

 

Leafony をもろた -Basic Kit で基本動作確認ー

 

M5Stack Japan Creativity Contest 2020

参加者全員に金色のATOM Liteがプレゼントされるキャンペーンでした。

 

 

ATOM Matrixを用いた1軸 姿勢制御モジュール SHISEIGYO-1を投稿しました。

ハードウェア作品投稿キャンペーン

elchikaにハードウェア作品の記事を投稿し、投稿が認められると豪華賞品を選択してプレゼントしていただけるキャンペーントでした。

 

景品としてM5Stack 3点セットを選択いたしました。

 

星形の倒立振子を製作して投稿しました。

obniz IoT コンテスト 2021

2021/5/31 まで投稿受付しているobniz Boardを用いた作品のコンテストです。

 

事前のアイディア投稿でobniz Board 1Yをいただきました。

 

スマート牛乳残量計を作製し投稿しました。

toioの「Do!コン」

ロボットトイ toio用ビジュアルプログラミングのtoio Doを用いた作品を募集しているコンテストです。

 

アイディア投稿の1次審査に通ると以下のモニター機材をもらえます。

toio本体セット(モニター専用 toio機材)
・ビジュアルプログラミングマット
toioムック本

 

2021/4/18現在 機材はまだ届いていませんが、着次第遊びたおしてオモシロ作品を投稿したいと思います。

2021/4/22に届きました!!うれしー!

Raspberry Pi Pico バーサライタで PIO を考えるーRaspberry Pi Picoへの道8ー

前回は狭ピッチLEDバーを用いてバーサライタを製作しました。

Raspberry Pi Pico バーサライタ解像度向上 (C/マルチコア) ーRaspberry Pi Picoへの道7ー

 

LEDを2本 Raspberry Pi Pico の2つのSPI出力でそれぞれ制御しました。
その際にシングルコアでの制御とデュアルコア制御で性能が変わらないという不可解な結果を得ました。

ここではこの件について深堀りします。

 

 

仮説

前回は2本のSPI入力LEDバーをPIOを用いて制御しました。
その際にPIOブロックの2つのステートマシン(sm)を用いました。
具体的にはpio0のsm0で64セル、sm1で63セルのLEDを制御しました。

この時シングルコアでLEDを制御した場合とデュアルコアにしてcore0で64セル、core1で63セル駆動した場合で バーサライタの表示分解能に差は生じませんでした。
デュアルコアによる並列処理で分解能が2倍近く向上すると予想していたのですが、全く改善はなかったのです。

そこでステートマシンを分けた時点で並列処理がなされているのではないかという仮説を思い立ちました。
シングルコアでも2本のLEDをPIOで異なるステートマシンで制御していたので既に並列処理されているためデュアルコアにしても性能向上がなかったのではないかと考えたのです。

 

仮説の確認

ステートマシンが並列処理されていることを立証するため、以前製作したバーサライタで動作確認します。

このバーサライタは5mm角LEDテープ24セルを1本用いております。
この時 1周 1000分割を達成し非常に驚きました。

このバーサライタに更にLED 24セルを追加しても別のステートマシンで制御すれば分解能は変わらないはずです。

バーサライタ製作

LEDテープを追加します。
 

 

LEDの台の両サイドに割りばしを接着して幅を拡張します。

 

 

完成!
2本のLEDはそれぞれ異なるSPI端子(SPI0, SPI1)で制御します。

動作

仮説通りLED追加しても1000分割達成できました。

追加したLEDはPIOの別ステートマシンで並列処理されていると言えます。

 

おわりに

前回と今回の実験でPIOのステートマシンによる処理が並列に実行されていることがわかりました。

Raspberry Pi Pico にステートマシンは8個搭載されているのでPIO機能によってGPIOを8並列処理できることになります。

これは凄いですね。
PIOの応用によってさまざまな高速処理が実行できそうです。
夢が広がります!

それでは次の道でお会いしましょう!

 

追記

Adafruit 公式ブログ (2021/2/26)

Adafruit公式ブログにて紹介していただきました!

 

ラズパイ 公式マガジン (2021/3/25)

Raspberry Pi 公式マガジン The MagPi に掲載していただきました!

以下で無料でダウンロードできます。

Raspberry Pi Pico バーサライタ解像度向上 (C/マルチコア) ーRaspberry Pi Picoへの道7ー

前回はRaspberry Pi Pico を用いてバーサライタを製作しました。

Raspberry Pi Pico でバーサライタ製作 (C/C++) ーRaspberry Pi Picoへの道6ー

ここでは、表示映像の解像度向上のためにSPI複数出力とデュアルコア動作を検証しましたので報告します。

 

 

SPI複数出力

Raspberry Pi Pico にはハードウェアSPI端子が2個あります (SPI0, SPI1)。

 

この2つのSPI端子でそれぞれLEDテープを制御してみました。

 

Cコード

PIO

SPI入力LEDをPIOなる機能で点灯制御しているのですが、2本制御の際はステートマシンなるモノを分けて使用するとよいようです。

PIOブロックは2個内蔵 (pio0, pio1)され、それぞれにステートマシン4個搭載されています (sm0~3)。

 
ここではpio0のsm0でSPI0を、sm1でSPI1を制御して2本のLEDを点灯しました。
 

狭ピッチバーサライタ

以前製作した狭ピッチのLEDバーサライタをRaspberry Pi Picoで制御してみます。

APA102-2020の再考 - バーサライタへの応用 –

このLEDはリフレッシュレートが低いためRGBそれぞれをフル輝度で使用しなくてはならず8色しか出力できませんが
2mm角のLEDが狭ピッチで配置されていますので解像度向上実験にはもってこいです。

構成

2つのSPI出力でLEDを64セル, 63セルずつ制御します。

 

 

動作

先ほどと同様に2個のSPI出力で制御し、回転速度470rpmで回してみたところ、計127個のLEDを1周 240分割で表示できました。

 

ESP32のデュアルコア制御でも200分割が限界でしたので、やはりRaspberry Pi Pico の高速IOは素晴らしいです。

 

デュアルコア制御

Raspberry Pi PicoはCortex-M0+を2個搭載しています。
更なる高解像表示を目指してデュアルコア制御を試します。

Cコード

core0で回転速度計測とSPI0のLED制御し、
core1でSPI1のLED制御しています。

 

しかし、

デュアルコアでの1周の分割数の向上は確認できませんでした。。。
core1でのLED点灯制御は確実にできていると思うのですが。

core1の動かし方に何か問題があるのでしょうか?

参考

 

画像表示

浮世絵を表示してみました。
シングルでもデュアルでも1周240分割以上にすると表示がおかしくなります。

シングルコア

 

デュアルコア

 

 

おわりに

ここではRaspberry Pi Picoを用いて狭ピッチLEDバーサライタを製作しました。
高解像表示を目指しましたがデュアルコアによる向上は達成されませんでした。

しかしLED 127個で1周 240分割は過去最大の分解能ですので、ひとまず嬉しいです。

 

デュアルコアはについては引き続き勉強します。なにか間違ってるかもしれません。

それでは次の道でお会いしましょう!

 

追記

回転検出部を別コア化(2021/2/17)

以下のブログでPIOで別ステートマシンでのLED制御がすでに並列処理されているために、
デュアルコアによる表示解像度の向上がなかったことがわかりました。

Raspberry Pi Pico バーサライタで PIO を考えるーRaspberry Pi Picoへの道8ー

そこでステートマシンでの並列処理については理解できたので、LED制御と回転計測をデュアルコアで試してみました。

以下のようにcore0で回転計測、core1でPIOのステートマシン2個でLED(64セル、63セル)を制御してみます。

 

結果としましては大きな分解能向上はありませんでした。
1周 240分解能がギリギリ260分割できそうになるくらいの変化でした。

 

ステートマシンが完全に並列処理できていて、回転が470rpm、SPI信号が30MHzの場合、理論分解能値はだいたい
 30MHz ÷ (32bit × 64セル + 64bit) × 60sec ÷ 470rpm = 1813分割
ですので、SPIクロックが遅すぎることはないようです。

まだまだデータ転送方法など工夫次第で高解像度化できそうですが、とにかくPIOは素晴らしいということがわかりました。

立体 バーサライタ – 3D POV Display –

これまで私は様々なバーサライタ(POV ディスプレイ)を製作してきました。

そうした中で何となく平面のバーサライタを立体的に積み上げて立体表示できるのではと考えておりました。
なんかめんどくさそうだし、費用もかかるだろうと思考実験の枠組みから出ないまま時は過ぎたのですが
この度良い機会に恵まれました。

M5Stack社のクリスマスにちなんだ電子工作コンテストが開催されたのです。

これは思考実験から飛び出す絶好のチャンスと考え製作しコンテストに参加させていただきました。

ここでは改めて母国語で報告させていただきます。

 

立体 バーサライタの構成

バーサライタの構成はこれまで製作してきたバーサライタと同じ構成です。
回転部に制御マイコン ATOM Liteを搭載し回転検出用のフォトリフレクタ QTR-1AとSPI入力LEDテープを接続しています。

LEDテープは5列を10段の計50セル接続しています。回転部への給電にはワイヤレスチャージモジュールを用いて無線で実施します。

部品

  • マイコン ATOM Lite

     
  • フォトリフレクタ QTR-1A

      
  • SPI入力 LEDテープ APA102   ピッチ:144セル/1m

     
  • ワイヤレスチャージモジュール

     
  • マブチモーター RS-540SH

 

筐体

筐体は3Dプリンタで作製いたしました。
回転部は土台とLED搭載部の2パーツで構成されます。

 

回転部の土台にATOM Liteとフォトリフレクタ、ワイヤレスチャージモジュールの受信側を搭載し、
マブチモーター RS-540SHに差し込みます。

 

LEDは5列、10段をらせん状に配置して視野角の低減を図っています。

 

動作

丸が上下する簡単な動作で試しました。

 

Arduinoコード

SPI入力LEDのライブラリとして以下を使用しました。
 https://github.com/adafruit/Adafruit_DotStar

格段の1周の分解能は20としました。

 

表示例

クリスマスツリー

キューブ

時計

鏡餅

 

おわりに

製作にとりかかるまでは実現は難しいと想像していましたが、比較的簡単にできてしまいました。
筐体を3Dプリンタで自由自在に作れるようになったことが大きいです。

もっとLEDを増やせばリアルな映像も空中に表示可能だと思います。

コンテストではグランプリを受賞することはかないませんでしたが、参加賞をいただきました。

3つの製品から選択できましたので、私は M5Stack用カード型キーボードユニット 
をいただきました。

沢山のスイッチが配置されているので今後有効活用できそうです♪

Raspberry Pi Pico でバーサライタ製作 (C/C++) ーRaspberry Pi Picoへの道6ー

前回はフォトリフレクタによる割り込みでLED制御を試しました。

SPI入力LEDを堪能 (C/C++) ーRaspberry Pi Picoへの道5ー

今回はついにRaspberry Pi Pico でバーサライタを製作しました。

 

 

バーサライタ構成

構成はこれまで製作してきたハンディーバーサライタ PovRanianと同様です。

バーサライタ装置の製法

 

モータを安定化電源(1V)で給電して回転部を回します。回転部には24セルのLEDのほかに回転を検出するフォトリフレクタとRaspberry Pi Picoが載っており、給電にはワイヤレスチャージモジュールを使用しています。

フォトリフレクタとRaspberry Pi Pico間にはチャタ防止にフィルタとシュミットトリガを挿入しています。

部品

 

 

バーサライタ分解能

Raspberry Pi Pico によるバーサライタができましたので、1周の分割数をどれほど大きくできるか試してみます。
これによりRaspberry Pi Pico の実力を測れるのではないかと考えました。

Cコード

フォトリフレクタで1周の時間を計測し、その時間を変数Divで分割して色分け(RGBYの4色)してLEDを点灯させるプログラムをです。

 

4分割

まずは Div = 4で動作確認しました。

400分割

Div = 400 まで増加させても問題なく点灯動作を確認できました。
SPIのクロックSERIAL_FREQ は30MHzとしました。これ以上大きくするとLED表示が正常に実施されませんでした。

Raspberry Pi PicoのIO は非常に高速に動作できるのだと実感できました。

 

画像表示

このままRGBYの4色で分割数上げてもよくわからなくなってきたのでアニメ画を表示してみます。

回転速度 960rpmで1周1000分割でも余裕でアニメ表示ができました!!

回転方向の分解能が大きくてもLEDが24セルですので少し寂しいですね 🙄 

 

性能指数

これまでいろいろなマイコンでバーサライタを製作してきましたので、独自の性能指数を設けております。

性能指数 [hPOV(ヘクトポブ)] = LED数 × 回転数 × 一周の分解能 ÷ 100

現状 Raspberry Pi Picoの性能指数は
 LED 24個 × 回転速度 960rpm × 1000分解能 ÷ 100 = 230,400 hPOV
となりました。

以下が過去のその他マイコンの実績値ですので、Raspberry Pi Picoの性能がうかがい知れます。

  • Teensy 4.0:LED 64個 × 回転速度 530rpm × 200分解能 ÷ 100 = 67,840 hPOV
  • ESP32(デュアルコア):LED 58個 × 回転速度 730rpm × 220分解能 ÷ 100 = 93,148 hPOV
  • SPRESENSE(3コア):LED 57個 × 回転速度 730rpm × 400分解能 ÷ 100 = 166,440 hPOV

 

おわりに

Raspberry Pi Pico によって信じられないほど回転方向の分解能の高いバーサライタ動作を確認することができました。

今後はLEDのセル数を増やすべくSPIの複数出力やマルチコア動作を検討したいと思います。

それでは次の道でお会いしましょう!

NeoPixel でバーサライタ検討

以前、M5Stack ATOM Matrix で ハンディーバーサライタを製作を楽しんだのですが、LED25個のマトリクスの1列分である5個のLEDしか使用しておらずもったいないなと感じておりました。

回転計を自作

この”もったいなさみ”を解消するべく今回はLED5個から25個に拡張してバーサライタ製作いたしました。

いわゆるNeoPixel系のLEDでのガチのバーサライタ製作は初めてですので、丁寧に段階を踏んで進めます。

 

 

リフレッシュレート

バーサライタはLEDを高速回転で残像を残して絵を投影しますので、
LEDのリフレッシュレートは非常に重要なファクターなります。

以前各種フルカラーLEDのリフレッシュレートを測定しております。

回転計を自作

 
ここではM5Stack ATOM Matrix搭載のLED WS2812B-2020のリフレッシュレートを測定いたしました。

ATOM Matrixを分解してLEDマトリクス基板を取り出しました。
もう後戻りできません。。。。

リフレッシュレート測定方法

LED1個を全白で点灯させて電源-LED間の10Ω抵抗の電圧降下をオシロ(ADALM2000)で測定しリフレッシュレートを測定します。

測定結果

  • 輝度100%

    リフレッシュレート:1.93kHz

     

  • 輝度50%

    リフレッシュレート:1.96kHz

データシートのとおりリフレッシュレートは約2kHzでした。
意外と早いですね。輝度はデューティで制御されておりました。

データシート信じて進めればいいだろとお思いかもしれませんが、
NeoPixel系の製品は何が本物でコピーかがわからないほど製品が存在し
モノによって性能が異なるので念のため測定いたしました。

 

バーサライタの構築

リフレッシュレート的にはバーサライタとして使用するには十分であると判断いたしましたので製作を進めます。

LED加工

ATOM MatrixのLEDマトリクス基板をぶった切って、バー状にしました。
(こっちのほうがよっぽどもったいないわ!)

 4mmピッチ 25セルのLEDバーが仕上がりました!

 
WS2812B-2020

構成

制御には分解した残りのATOM Matrix基板 (ESP32-PICO)を用いており、
構成はほぼ以前のM5Stack ATOM Matrixを用いたハンディーバーサライタPOV1-ATOMと同じ構成です。

LEDを外に出してデータ線をD22に接続しました。
モータの電源は回転速度調整のため外部の安定化電源に接続しました。

 

 

[オモテ]

[ウラ]

 

動作

バーサライタ動作を検証します。

1周分解能調査

まずは1周する間にLED表示変更できる分解能を調査しました。

モータの回転数を目視で残像が残るギリギリの1秒当たり約10回転(600rpm)に設定し、LEDの色を赤→緑→青→黄で変えて表示させました。

LED点灯のライブラリはFastLEDを使用しています。

1周40分解能が限界値となりました。

 

検証

NeoPixelの書き込みプロトコルは以下の通りです。

LED 25セル書き込む時間は 1.25u × 24 × 25 + 50u = 約0.8 msec  となります。

600rpmで回転させると1周にかかる時間は 0.1 sec ですので、

理論上の分解能は 0.1 / 0.8m = 125 なります。
実際にはマイコンの演算時間なども含まれますので実測は40になりました。

NeoPixelの書き込みプロトコルの性質上、SPI入力のLED使用時のように200分解能以上の達成は不可能であるといえます
(今回のようにシリーズにLEDをつなぐ場合)。

あとリフレッシュレート的にも2kHz (0.5msec)なので600rpm 200分解能は厳しいです。

アニメーション表示

ピッチが狭いので比較的見やすいですが、やはり1周の分解能をあげれない点が厳しいです。

結果 実にもったいない。。。

 

おわりに

狭ピッチでリフレッシュレート4kHz以上で
SPI入力の
LEDバーが欲しい!!

Seeeduino XIAOを使ってみた

Seeeduino XIAOという実に可愛いマイコンを購入しました。
安くて小さくて高性能でしたので紹介させてください。

 

 

Seeeduino XIAO

CPU:Arm Cortex-M0+ 32ビット 48 MHz(SAMD21G18)
ストレージ:256 KB Flash、32 KB SRAM
SPI, I2C、UART(Serial1)などのI/Fも充実しております。

回路図:https://files.seeedstudio.com/wiki/Seeeduino-XIAO/res/Seeeduino-XIAO-v1.0-SCH-191112.pdf

 
Arduino IDEでコーディングする際の設定は以下が参考になります。
 https://wiki.seeedstudio.com/Seeeduino-XIAO/#getting-started

 
注)

PCとXIAOをUSB-Cケーブルで接続した際にXIAOが認識されない場合があります。
その際には以下のように基板上のリセットパッドとその隣のGNDパッドを2回ちょんちょんとショートしてください。

 

MIDI Library

CPUがArmのSAMD21ってことは。。。

 

そうだね!MIDIライブラリ使えるね!

以下のMIDIライブラリを試してみました!
 https://www.arduino.cc/en/Reference/MIDIUSB

 

サンプルコードMIDIUSB_read.ino を参考にして
DAWからのMIDI信号Note ONとNote OFFでLED(D13)をON/OFFしているだけです。

これでMIDIで動く面白いなにかしらとかオリジナルコントローラが作れますね!

 

PovRanian

ハンディバーサライタPovRanianはマイコンにAdafruit Trinket M0を使用しており、
Adafruit Trinket M0のCPUもSAMD21です。

ハンディ バーサライタ PovRanian の製法

 

この度、XIAOをPovRanianに導入してしてみました。
XIAOに変更することでコストが下がり、コネクタがUSB-Cなのでモダンになります。

XIAOで割り込み動作やSPI入力LEDも問題なく使用できました。

動作

しっかり動いています!

 

おわりに

もう無線使わない工作は全て Seeeduino XIAOでいける気がします。

小さいし、それでいてピンや機能も充実してるし何より安い!

Seeedのブログでも作例として紹介いただきました!!

追記

Seeed 公式動画(2020/5/16)

Seeed社の公式動画にXIAOの作例として紹介いただきました!

Maker Faire Kyoto Online に参加しました

Make Advent Calendar 2020 |2日目

新型コロナの影響を受けて開催中止となったMaker Faire Kyotoが、
Twiter上のオンラインでの作品発表会を実施することとなりました。

「Maker Faire Kyoto Online」開催概要|5月2日(土)11:00-16:00まで誰でも参加できるTwitterを使った作品発表を開催します! #MFKyoto2020

 

Twitterにてハッシュタグ「#MFKyoto2020」「#作品発表」をつけて投稿するだけで誰でも参加可能とのことで素晴らしい機会なので参加させていただきました。

以下のようにタイムテーブルが設けられておりました。

 

折角なので過去作と合わせて新作(大したもんじゃないが)も出展しようとおもい作業しながら参加させていただき
非常にエキサイティングな経験ができました。

以下に出展させていただいた品を記載します。

 

 

「デザイン」「クラフト」「アート」カテゴリー

「FOOD」カテゴリー

「ロボティクス」カテゴリー

 

「エレクトロニクス」カテゴリー

ここで新作をドロップさせていただきました。

 

以前作ったPOV1-ATOMにさらにM5ATOM Matrixを追加してLEDの数を増やしただけですがね。

フルカラーLEDのリフレッシュレート

 
カテゴリーの投稿時間に間に合わせるために少し焦りながら製作しました。
スリリングでいい経験となりました。

 

「ミュージック」カテゴリー

 

感想

メチャクチャ楽しかったです。完全に良い休日になりました。
北海道在住の私が京都のイベントに参加するのは非常に敷居が高くほぼ不可能な訳で。

実際に出展を予定されていた方々には残念で物足りないものだったかもしれないのですが、
出展経験のない私にとっては大きな刺激となりました。

Twitter上でメイカーさんの製作物を楽しむというのは普段と変わりないのですが、
密度と熱量が明らかに違っており 時間でカテゴリーが分かれていたことも体験をエキサイティングに加速していたように感じます。
製作しながら参加していたからかもしれませんね。

出展作品が多すぎて見きれないとこもなんだかリアルな感覚ですが、
オンラインだと後からゆっくり見れるのもいいですよね。
フォロワーさんがリツイートした他の作品も口コミ感覚で入ってくるので堪能できました。

Maker Faireは世界各地で実施されており、地域ごとの特色があろうかと思うのですがオンラインというのも大きな特色が出るので今後も機会が設けられることを強く望みます。

M5Stack ATOM Matrix で ハンディーバーサライタを製作 ~ POV1-ATOM ~

前回はM5Stack ATOM Matrixを用い、モータ速度を手動で制御して残像表示するバーサライタを構築しました。

回転計を自作

しかし、手動でのモータ速度調整では残像を安定して定位置に表示できませんでした。

そこでここではセンサで回転を検出して描画する手法を試しました。
構成的にはSPI入力LEDテープを使用しているハンディーバーサライタ PovRanianとほぼ同じです。

 

 

構成

回転部にM5Stack ATOM Matrixとフォトリフレクタを搭載し、
ワイヤレスチャージモジュールを使って回転部への給電します。

部品

 

POV1-ATOM

取っ手部はPovRanianを流用しました。
取っ手部の白いマーカをフォトリフレクタで回転のたびに検出して回転時間を計測します。

回転部はFusion360でデザインし3Dプリントで作成しました。

デザインの際に ししかわさん が作製したM5Stack ATOM Matrixの3Dモデルを使用させていただきました。
非常に助かりました。ありがとうございます!

 

本当に3Dプリンタは便利!人生が変わりました。
デザイン通りに出力完了。

 

 

回転部にはワイヤレスチャージモジュールの受信側も搭載します。

フォトリフレクタ

フォトリフレクタがマーカで遮られるたびに割り込み動作で回転時間を測定する方法を採用しております。
しかしESP32にてフォトリフレクタの出力で割り込みをかけると、以下のようにチャタリングでまともに動きません。

 

そのためシュミットトリガインバータを挿入してチャタリングを除去しました。

 

シュミットトリガインバータ TC7W14FU のパッケージが0.65mmピッチSSOP8でしたので2.54mmピッチ変換基板に実装して使用しています。

Arduinoコード

フォトリフレクタによる割り込みで回転時間を計測して、1周の回転時間を32分割して絵を表示しています。

表示画像データ

表示画像データgraphics.hは前回同様にExcelで生成しました。

 

動作

やはりセンサできちんと回転を検出すると絵が安定していいですね♪

ちょっとLEDがNeoPixelのためか回転速度が上げられなかったので
デュアルコアで制御などまだまだ検討の余地はございますね。

ものづくりの道にゴール無し。

M5Stack ATOM Matrixでバーサライタ ~ POV1-ATOM ~

前回はM5Stack ATOM Matrixを購入してバーサライタを実現するまでの過程を報告させていただきました。

回転計を自作

ここではバーサライタの構成や表示データ生成についてもう少し詳しく記載いたします。

 

 

構成

LiPoバッテリ(5Vピンに印可)でM5Stack ATOM Matrixを駆動しモータで回します。
モータはPWMコントローラで回転速度を調整します。

 

部品

  • M5Stack ATOM Matrix

     
  • LiPoバッテリ 3.7V 400mAh

  • マブチモーター RS-540SH

     
  • PWMコントローラ

POV1-ATOM

固定具は3Dプリンタで作成しました。

 

 

表示画像データ

M5Stack ATOM MatrixのLED5個をRGBYの4色で順番に発光させて、モータ速度調整しつつ回転させたところ
1周48分割で表示が可能であることが確認できました。

Pythonで画像データ生成

PovRanianと同様に表示したい画像を取り込んで、極座標変換するPythonコードを使用してみました。

半径方向のLEDが5個しかないので抜けが多く、画像からの変換では美しい表示が難しかったです。
まぁそもそも元画像がよくないのですが。。。

Excelで画像データ生成

原点に返ってExcelでドット画のようにお絵描きして、極座標変換してデータを生成する手法を試しました。

半径方向を6分割としております。M5Stack ATOM MatrixのLEDは5個使用しますので冒頭のデータ(真ん中の画)は使用しません。

 

Excelでの変換方法は以下の通りです。

 

以下が生成された表示画像データです。

 

参考

 

Arduinoコード

生成した表示画像データをもとにLEDを点灯させます。
ループで次々表示を切り替えています。

動作

所望の表示を得ることができました。

画像データを複数用意してアニメーションも可能です。

 

しかし手動によるモータ速度調整でのバーサライタ表示はカッコ悪いので、
次回はセンサ追加してもう少しスタイリッシュなPOV1を目指したいです。

 

M5Stack ATOM Matrix で バーサライタを実現するまでの過程

M5Stack ATOM MatrixM5Stack ATOM Lite を購入いたしましてバーサライタ(POV Display)を実現するまでの過程を紹介させていただきます。

 

 

M5Stack ATOM

M5Stack ATOM は以前から発売されており非常にコンパクトで可愛いので気になっておりました。
この度、技適版が2020/4/10に 国内販売されるとのことで早速購入させていただきました。

特にM5Stack ATOM Matrixは25セルのLEDマトリクスが搭載されておりますので、バーサライタできる!と速攻でポチりました。

俺がやらなきゃ誰がやるってんだ (オイラは POV大好き少年だよーーー!)

技適

早速国内販売版のM5Stack ATOMの到着の報告がTwitterのタイムラインに流れてきました。

すると技適シールが貼られていない個体も少数あるとの報告もございました。

 

ほどなくして購入先のスイッチサイエンスからも”ATOM Matrix 技適表示不備のご案内”という商品交換案内メールも来ました。

“表示のない製品が届いたお客様におかれましては、違法行為となる可能性がございますので決して電源を投入されないようお願いいたします。”
と非常に恐ろしい内容のメールです。この時点で私の家にはまだ商品は届いておらずドキドキして到着を待ちました。

到着

Come on… Come on… YES!

家のATOMは技適シール問題ございませんでしたε-(´∀`*)ホッ

 

 

基本動作の確認

M5Stack ATOM Matrixでのバーサライタ実現に向けて基本動作の確認を実施しました。
Arduino IDEを使用してプログラミングいたしました。

ATOM用のArduinoライブラリは以下
 https://github.com/m5stack/M5Atom

LED点灯

M5Stack ATOM Matrixには WS2812B-2020 が使用されております。
データピンはGPIO27です。
ATOM用のArduinoライブラリM5Atom.hでも点灯用関数はございますが、まずは実績あるNeopixel用のライブラリで点灯を確認いたしました。

尚、M5Atom.hライブラリ以外での点灯時は輝度に十分お気を付けください。
LEDが25個も載ってますのでsetBrightness[0-255]などで制限しないとマックスで1A以上流れます。

以下はいずれもsetBrightness(20)で実験しています。

 

FastLEDライブラリ

M5Atom.hでも採用されているFastLEDライブラリで点灯を確認してみました。
 https://github.com/FastLED/FastLED

問題なく点灯とLEDの配置順の確認ができました。

 

Adafruit NeoPixelライブラリ

Adafruit_NeoPixelライブラリも確認してみました。
サンプルコード strandtest.ino を書き込んでみました。

コチラも問題ありませんでした。
ESP32でNeopixelを点灯させるとESP32のタイミングエラーによる点灯不具合があったりするのですが。なんで問題なく点灯するんだろ?
まぁOK!

 

追記(20/4/21)

やはりAdafruit_NeoPixelライブラリだとESP32同様に点灯不具合ありました。

電源

M5Stack ATOMはバッテリが内蔵されておりません。
USB-Cケーブルの接続で当然 給電され起動するのですが、バーサライタでぶん回すに際してケーブルつけっぱなしにもできないので給電方法検証しました。

 

上記2種の方法共に問題なく給電できました。

正確で安全な給電方法を実施するには内部回路の把握が必要ですので回路が知りたいところです。

公式によるとまもなく公開されるとのことです。楽しみ♪

参考

バーサライタ検討

さて基本的な動作を確認できましたので本題のバーサライタの実現に向け動きたいと思います。

LED点灯

まず3Dプリンタで固定具を作ってぶん回してみました。
FastLEDライブラリでLED5個を赤→緑→青→黄とループで切り替えるだけです。

すんなりうまいこと表示できましたw
Neopixelでのバーサライタは初めてでしたが WS2812B-2020 のリフレッシュレートは2kHzとのことでバーサライタへの使用も問題ないようです。 

LiPoバッテリで電源供給(5Vに印可)しています。

 

ちなみにM5Atom.hを使用してM5.dis.drawpixでの点灯も試してみました。

どうもM5.dis.drawpixでは点灯までに時間を要するらしくきれいな表示ができませんでした。。。
あと赤と緑の点灯が逆になってます(多分バグ)。

バーサライタとしてはFastLEDライブラリを直に使用するほうが良さそうです。

回転検出

回転を正確に検出することで安定した画像を表示することができます。
出来ればATOMに外部センサを追加したくないので(かわいらしさがそこなわれるため)内蔵の慣性センサ MPU6886 で回転検出できないかテストしてみました。

まずはM5Atom.hのMPU6886ライブラリのgetAhrsDataで姿勢角を使おうと思ったのですがオフセットが大きいためか値が安定していませんでした。

どうもジャイロのオフセットが大きいようでずーっと値がドリフトします。
校正すればよいのでしょうがやり方がわからないので、ここでは加速度センサの値を使って検証してみました。

回転しながらの加速度センサの値を検証しました。
MPU6886ライブラリのgetAccelDataでx, y, z軸の加速度を取得してUDPで送信して観測しました。

UDP送信は以下のサンプルコードを参考にしました。
 WiFiUDPClient.ino

x, y軸(平面方向)の加速度値は回転による遠心力の影響で使い物になりませんでしたが、回転時のZ軸の加速度値をプロットしてみました。

何となく上下に波打ってるので回転を検出できそうですね。
早速 Z軸の加速度の値の上下を検出して1周する時刻を導出してRGBYを4分割表示してみました。

ダメですね。。。やかり加速度のみで回転検出はムリがありそうです。

ちなみにM5Atom.hで慣性センサを使用しているのですが、M5Atom.hとFastLEDライブラリが競合してしまうようで、ここでは泣く泣くM5.dis.drawpixでLED点灯しています。

ということで慣性センサによる回転検出はあきらめました。

以下の項目を今後の課題とさせてください。

今後の課題

  • MPU6886の校正方法の学習
  • MPU6886による姿勢角取得高速化
  • M5Atom.hとFastLEDライブラリの共存
     

バーサライタ動作

慣性センサによる回転検出は一旦あきらめまして、モータ速度をマニュアル調整して表示させる方法で動かしてみました。

ドラえもん

 

マリオ

 

1周48分割で表示させています。まぁまぁできてるのではないでしょうか。

長くなりましたので、表示するためのプログラムコードや表示データの生成方法などは別段で報告させていただきます。

追記

バーサライタ完成 (2020/4/23)

M5Stack ATOM Matrix で ハンディーバーサライタを製作 ~ POV1-ATOM ~

贅沢なる2個使い (2020/5/3)

Maker Faire Kyoto Online にて発表しました。

LED直列25個使い (2020/6/10)

ATOM MatrixのLEDマトリクスの1列(5個)しか使っておらず、もったいないので
ぶったぎって1列25個のLEDバーにしてバーサライタを楽しみました。

NeoPixel でバーサライタ検討

PovRanian の筐体を3Dプリンタにて

昨年末に購入した3DプリンタでPovRanian の筐体を作ってみました!
今までは木とか金具で構成していたので。。。

 

 

回転部

今回は満を持してFusion360で設計することといたしました!

マイコンやフォトリフレクタの3Dモデルも販売元から提供されており設計の助けとなりました♪

 

 
めちゃくちゃ試行錯誤して製作を進めました。。。

 

うまいこと中に詰め込み配線

 
回転部完成!

 
黒フィラメントでシックに仕上げました。

乾電池

電池もスマートに内蔵したいと考え電極を購入し、電池ボックスの設計も実施いたしました。

これまた試行錯誤して、なんとか電極を固定し単三電池をピッタリ入れるボックスが作製できました。

 

取っ手部

試作機1号

電池を持ち部分に収納する形で製作してみました。
DCモータもネジ穴を設けてきっちり固定します。

 
乾電池4本を並列に配置しましたので取っ手が太くなり過ぎました。。。

試作機2号

電池を2直列2並列に配置するようにして取っ手を細く持ちやすくしました。

 
また電源スイッチにラッチスイッチを採用しました。

試作機3号

各種微調整し、電池の極性を明示するためにケースには文字を入れてみました。

 

 

モータ収納部が円形のためか出力の際にベッドから離れて反ってしまうことがありました。

 
これはモデルを下敷き(ブリムというらしい)の上に出力することで解決しました。
意外にもブリムは簡単に取り外しできました。

 

おわりに

正月休みのほぼすべてとその後も仕事終わりに深夜まで夢中になって、筐体設計を頑張りました。

ツールの使い方から学習し、さらには形状によって変わりゆく3Dプリンタの出力具合いに悩み 試行錯誤を繰り返しメチャクチャ時間を使いました。

そのぶん木や金具を組み合わせていたのとは比べ物にならないほどに狂おしい新生PovRanianが爆誕しました。

引き続き3Dプリンタで色々なものを製作してゆきたいです!

 

レシピ販売

ShopでPovRanianの製作レシピの販売を開始しました。

レシピは 全22ページ 税込み¥500です。
筐体3Dモデルとサンプルコードは以下リンクで無料でダウンロードできますのでデータだけでもDLしてみてください。

PovRanian の製作レシピ

 

ハンディバーサライタ PovRanianの表示映像生成フォームの仕組み

Arduino Advent Calendar 2019 | 22日目

今年は念願のHomeMadeGarbageのオフィシャルショップを開店することができ、ハンディバーサライタPovRanian (ポブラニアン)を出品いたしました。
画像や図形をフルカラーで表示することができます。

 

PovRanianを販売するに際して一番の障壁が表示画像の更新でした。Arduino等の環境をお客様に用意していただき、表示データを生成してもらうのは現実的ではありません。

そこでウェブ上で表示映像データを生成しPovRanianにドラッグ&ドロップするだけの仕組みを構築しました。

ハンディ バーサライタ PovRanian の表示映像フォーム使用方法

色々検討してやっとできた表示映像生成フォームですので紹介させてください。
 

 

仕組み検討

バーサライタPovRanianをご購入いただいたのちに自由に表示映像をカスタマイズしてもらうべく、PovRanianに搭載するマイコンに表示データを書き込む手法を色々検討しました。

手法1: Arduino IDE

バーサライタのArduinoコードについては公開しておりますので、おのおのカスタマイズいたたくことも可能なのですが、Arduino IDEや各種ライブラリをダウンロード、インストールする必要があり現実的ではないので却下!

“キング・オブ・ダークネス” EVIL の魔法陣を自作

手法2: CircuitPython

Adafruitが提唱するCircuitPythonも検討しました。
AdafruitのCircuitPython対応マイコンであれば.pyファイルをドラッグ&ドロップするだけで買い込みが可能です。

CircuitPythonをつかってみた

 

しかし、処理が遅く割り込みもサポートしていないためバーサライタには向かないので断念しました。。。

手法3: uf2ファイル

MakeCode MakerでAdafruit SAMD21系マイコンのプログラミングを試したときに、コーディング後にuf2ファイルというものを生成しマイコンにドラッグ&ドロップで書き込んだことを思い出しました。

コードのバイナリをuf2ファイル化する手法も公開されておりましたのでPovRanianのデータ更新にはuf2ファイルを使用することにいたしました。

Microsoft MakeCode で ビジュアルプログラミング

uf2ファイルとは

Microsoftがマイコンフラッシュ向けに開発したファイル形式とのことです。

 

uf2ファイルはAdafruitのSAMD21(M0)やSAMD51(M4)系のボードでも利用可能です。
PovRanianは Adafruit Trinket M0 を利用しています。

プログラムのバイナリでuf2ファイルを生成するpythonコードも公開されております。
M0系のマイコン用の場合の変換は以下のように実行します。

uf2conv.py -c -o test.uf2 test.bin

 

PovRanian表示映像フォーム

PovRanian 表示映像フォームは以下
 http://homemadegarbage.0t0.jp/PovRanian/

表示映像フォーム構成概要

PovRanian 表示映像フォームは自宅のラズパイサーバで構築されています。
フォームの入力内容から表示データを生成しコンパイル・ファイル変換を実施してuf2ファイルを返します。

フォームの入力を受けて表示画像データgraphics.hを生成します。

graphics.hとPovRanian用のArduinoコードをマージしてarduino-cliで.inoファイルをコンパイルしてバイナリファイルcode.binを生成します。
コマンドでArduinoコードをコンパイルできるarduino-cliは以下で公開されています。
 https://github.com/arduino/arduino-cli

arduino-cliでのコンパイルは以下のように実行します。

arduino-cli compile --fqbn adafruit:samd:adafruit_trinket_m0 [コードのフォルダ指定] 

code.binをさきほど紹介した uf2conv.py でuf2ファイルに変換してダウンロードファイルとして返します。

uf2ファイル生成

PovRanian 表示映像フォームにて1つ以上の映像の設定ができるとコード生成ボタンがアクティブにまります。

“コード生成”をクリックするとファイルの作成が開始し、しばらく待つと
PovRanian.uf2ファイルがダウンロードされます。

uf2ファイルのPovRanianへの書き込み

PovRanianに搭載されているマイコン(Adafruit Trinket M0)のマイクロUSB端子とPCを接続します。

 
USBケープルを接続するとLEDが点灯します。リセットボタンをダブルクリックしてLEDが緑色になるとPCにTRINKETBOOTディスクとして認識され表示されます。

 
 
 
 
TRINKETBOOTディスクに先ほど生成したPovRanian.uf2ファイルをドラッグ&ドロップします。
認識されるとすぐにTRINKETBOOTディスクは閉じます。
 
以上でインストール終了です(簡単!!)。
 
あとはPovRanianの電源を入れて映像をお楽しみください♪
 
 

おわりに

以上でPovRanianの表示映像のカスタマイズが容易に実行できるようになり、販売開始することができました。

 

来年は文字出力などフォームのバージョンアップも目指します。

2019年 Node-RED利用履歴

Node-RED Advent Calendar 2019| 10日目

今年もNode-REDを堪能させていただきました。ノードを置いて線でつなげるだけで直感的にいろんな応用ができるので非常に助かっております。

2019年にNode-REDを用いて実施したことを紹介させていただきます。

 

 

バーサライタへUDP画像送信

自作のバーサライタ装置 に表示したい画像をUDP転送する際にNode-REDを利用しました。

node-red-dashboardのbutton nodeでボタンUIを表示します。

button nodeで選択された画像をpythonで変換してUDP転送しています。

 

ESP32でバーサライタ 高分解能化

Node-REDで簡単にUI設計できました♪
 

おしゃべりコンシェルジュ

ラズベリーパイZeroにサーボモータやスピーカをつけて自由におしゃべりできるようにしました。目覚ましや歯磨きの時間などを発話で教えてくれます。

発話にはAquesTalkを使用しています。

webから発話文章を受けたり、定期発話をさせます。発話中のサーボモーター制御もNode-REDで実施しました。

 

AquesTalk と Node-RED と ラズパイで おしゃべりティラノくん作製

 

Alexa連携

スマートスピーカAmazon Echoとの連携もNode-REDで手軽にできました。
Node-RED Alexa Home Skill Bridge を利用すると、まさにブリッジとなってAmazon Echoへの発話とNode-REDの各種パレットをつないでくれます。

Amazon Echoへの発話応答をNode-RED Alexa Home Skill Bridgeを介して ラズパイZero W上のNode-REDに返して、BLEで信号を送りロボットカーを制御してみました。

 

 
コーディングなしでここまでできてしまうのもNode-REDの大きな魅力です♪

micro:Maqueen を使ってみた

 

ハエトリソウ捕食監視システム

ハエトリソウをラズパイカメラで監視して捕食の瞬間を動画におさめるシステムをNode-REDを利用して構築しました。

 

シェルやバッチでpythonやffmpegなどを起動しています。Node-REDの拡張性は非常に高いです。

ハエトリソウ捕食監視システム

 

お母ちゃんNode-REDデビュー

Web屋さんのお母ちゃんも先日 Node-REDデビューしました。簡単に通信やウェブページを構築できることに非常に感動していましたよ。

 

pHセンサを味見 ーエッジAI活用への道 7ー

2019年 Arduino IDEを用いて製作したもの

Arduino Advent Calendar 2019 | 2日目

もう12月。早すぎやしないか?

今年も色々工作を楽しんできましたが、Arduino IDEを使用して制作したものを振り返ってみたいと思います。

この振り返りが次へのモーティブ増進や脳内検閲の緩和に繋がることを期待して。

 

 
 

バーサライタ -POV ディスプレイ-

今年はバーサライタの制作に一番力を入れたかもしれません。LEDテープを高速で回転させて絵を残像で表示させます。
持ち運べて電池で動くバーサライタを目指して製作いたしました。

基本構成

単三電池 1本でモータを回し、単三電池3本をワイヤレスチャージャーを介して回転部に給電します。
回転部にはフォトリフレクタとSPI入力のフルカラーLEDと制御用マイコンが載っております。
フォトリフレクタで回転(1周にかかる時間)を検出します。

PovRanian の筐体を3Dプリンタにて

マイコンは色々試しましたが、全てArduino IDEでプログラミングしました。

ESP32

ESP32はハードウェアSPI出力が2つあり、デュアルコアマイコンですので、高解像度で高速な処理が可能となりました。

ESP32でバーサライタ 高分解能化

SPRESENSE

SPRESENSEも拡張ボードでハードウェアSPI出力が2つとなる上に、なんと6コアのマイコンですので高解像度の表示が実現できました。

以下ではArduino IDEでSPRESENSEのマルチコアプログラミング(3コア)を実施してバーサライタを製作しました。

回転計を自作

 

Teensy 4.0 

Teensy 4.0はなんと動作周波数 600MHzの高速マイコンです。しかもSPI出力が3つもあります。

以下ではTeensy 4.0でバーサライタを製作しております。残念ながら複数のSPI出力の使用は実現できませんでしたが高速動作のおかげで高解像出力が実現できました。

APA102-2020の再考 - バーサライタへの応用 –

 

CircuitPython

Adafruitが提唱するCircuitPythonでバーサライタを検証いたしましたが、CircuitPythonは高速動作の実現が難しく、割り込み動作もサポートしていないので、バーサライタにはやはりArduino IDEがリーズナブルであると感じます。

CircuitPythonをつかってみた

 

ESP32 + Blynkでモノをコントロール

ESP32のWiFiやBLEの無線機能を用いてラジコンを製作もしました。
Blynkというアプリでスマホをコントローラにしています。

Blynkにはスイッチやジョイススティックなどのウィジットをスマホ上に自由に配置してデータの送受信などが気軽にできます。Arduinoライブラリは以下で公開されており大変充実しています。

https://github.com/blynkkk/blynk-library

サーボ制御

Redbear DuoでDotstarを制御 -球体POV製作への道 その5-

 

モータ制御

ニセ COZMO (コズモ) を製作 それすなわち CASMO (カスモ)

 

エッジAIを堪能

最近話題のエッジAIもArduino IDEで堪能しました。

以下ではSipeed社のMaixduinoというボードを使用しました。

Sipeed Maixduino を Arduino IDE で味見 ーエッジAI活用への道 4ー

 

音声認識の認識や学習もサンプルコードで簡単にできてしまいました。すごい!!

 

おわりに

今年もArduino IDEで気軽に様々なマイコンや応用を楽しませていただきました。やはり多くの人に愛されライブラリやサンプルコードが充実しているので非常に使いやすいです。

これからもよろしくお願いいたします Arduino IDEよ

 

Blynk で ESP32 と ESP8266 同時制御 -球体POV製作への道 その9-

またもや前回から大幅に時間があいてしまった。。。
そういう訳で球体POV(Persistence of Vision) 製作の時間です。
残像で映像を生成する装置です。
回転部と固定部を無線で情報やり取りしてみたいという発想です。はい。

前回は改めて制御マイコンから見直してWiFiBLEを搭載したESP32の検討をしてみました。
ESP32WiFiでスマホと通信、BLEで他のBLE搭載マイコンと通信するPOV装置をと思ったのですが、ESP32Arduino IDE向けBLEライブラリが今のところイケてないので。。。

方針変更!

ESP32ESP8266WiFi介してスマホアプリBlynkで直接制御してマイコン間の直接通信はしない方向に転換しました。
BLEを使用しないのにESP32を採用した理由はESP8266はアナログ入力ピンが1個しかなく、しかも1V以上印加できないため。。。。

Blynkで複数のマイコンを制御する際は以下の記事で紹介したBridge機能を使用します。

Blynkを用いたデバイス間通信 – Bridge Widget –

ここでは基本構成・動作の確認を実施しました!

構成

Blynkアプリで以下を実施

    • ESP32ボードに接続されたLEDの色を制御
    • ESP8266に接続されたデジタルポテンショメータを制御しモータ回転スピードを変える
    • モータに羽をつけてESP32ボードに接続されたフォトリフレクタで回転数計算してBlynk側に送信
フォトリフレクタでモータの羽の通過をセンシング

部品

  • BLE、WiFiマイコンESP32開発ボード ESP32-DevKitC
    ESP32の設定など詳細は以下の記事を参照ください
     https://homemadegarbage.com/pov-sphere08


     
  • LEDテープ Dotstar
    高速リフレッシュレート(PWMの周期)19.2kHzでPOV向き!詳細は以下!
     https://homemadegarbage.com/pov-sphere07

     
  • フォトリフレクタ QTR-1A
    モータに羽をつけてフォトリフレクタで回転数を測定。
    Arduino用ライブラリは以下。
     https://github.com/pololu/qtr-sensors-arduino

     
  • WiFiマイコンESP8266開発ボード ESPr Developer
    ESPr DeveloperをArduino IDEで開発する方法は以下のとおり
     http://trac.switch-science.com/wiki/esp_dev_arduino_ide

     
  • デジタルポテンショメータ MCP4131
    SPI信号で抵抗値(0~10kohm)を制御出来る。Arduinoコードは以下を参考にしました。
     http://www.learningaboutelectronics.com/Articles/MCP4131-digital-potentiometer-circuit.php

     
  • PWMコントローラ
    モータへ供給する電圧を制御する付属の可変抵抗をデジタルポテンショメータに差し替え

Blynk設定

Bridge機能を使用するためBlynkアプリを2つ作成しAUTH TOKENを2個取得します。ESP32用のアプリはウェジットを配置し、ESP8266用のアプリはAUTH TOKEN取得のみで特に何もしません。

以下はESP32用のアプリの設定です。

新規プロジェクトを作成します。HARDWRE MODELはESP32 Dev Boardを選択。CONNECTION TYPEはWiFiを選択。AUTH TOKENはArduinoコード生成時に使用します(メールで送信されます)。

モータスピード設定用のSliderウェジット、モータ回転数表示用のLabeled Valueウェジット、LEDカラー制御用のzeRGBaウィジェットを配置

モータスピード設定用のSliderウェジットです。最小値0、最大値3としました。
SEND ON RELEASEはOFFにして随時データ送信できるようにします。
ここではヴァーチャルピンV1に出力するようにしました。この値をBridge機能でESP8266側に送ります。

モータ回転数表示用のLabeled Valueウェジットです。ヴァーチャルピンV3で値を受けて単位[rpm]をつけて表示します。

zeRGBaウィジットでLEDの色を設定できるようにします。
OUTPUTはMERGEを選択。それぞれ最小値0、最大値255とします。
SEND ON RELEASEはOFFにして随時データ送信できるようにします。
ここではヴァーチャルピンV2に出力するようにしました。

Arduino IDEコード

BlynkのArduino用 最新ライブラリは以下にあります。
 https://github.com/blynkkk/blynk-library

ESP32用コード

[スケッチの例] -> [Blynk] -> [Boards_WiFi] -> [ESP32_WiFi]を参考にコード生成しました。

ESP8266用コード

[スケッチの例] -> [Blynk] -> [Boards_WiFi] -> [ESP8266_Standslone]を参考にコード生成しました。

動作

 

#blynk で #esp8266 と #esp32 制御

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

これでなんとか基本構成が実現できました。あとは球体POVをどう構築するか。。。。
乞うご期待。。。。

震えて待て!

010010100000010100101111010111101010001
卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍卍

ESP32 & BLINK で Dotstar制御 -球体POV製作への道 その8-

随分前に球体POVを自作しようと思い立ってちょこちょこ検討してたのですが、ほっといてる間に世の中のPOVは空を飛んでましたwww


https://ipod.item-get.com/2017/04/ntt_1.php

ここでやろうと思っていたのは以下のような構成でした。

回転部と制御部を無線にしてWiFiとBLEで回転数や表示画像をコントロールしようと思っていたのですが。。。結局モータや固定具などハード関連で頓挫しておりました。。。(;´д`)トホホ…

時が経ち心機一転的な意味も込めて再度通信デバイス選定から考え直して、本日より球体POVづくり再開します!空は飛ばんヤツで!

まずは回転部の要となるBLEとWiFi通信できるデバイスをRedBear DuoからトレンディなESP32にしようと思います。

ここではESP32でLEDテープをWiFi介してスマホでコントロールすることを実現します。

構成

部品

ESP32-DevKitC

ここではArduino IDEでESP32のプログラミングを行います。Arduino IDEでの開発用ソースがインストール方法と共に以下にアップされています
 https://github.com/espressif/arduino-esp32

Macの場合は以下の記事が参考になります。

ピン配置

Dotstar

Dotstarはリフレッシュレートが早く(19.2 KHz)、POVに最適なLEDテープです。

DotstarのArduino用ライブラリは以下にあります
 https://github.com/adafruit/Adafruit_DotStar

Dotstarについての詳細や一般的なLEDテープNeopixelとの比較は以下を参照ください。

Redbear DuoでDotstarを制御 -球体POV製作への道 その5-

LEDテープ比較 Neopixel vs Dotstar -球体POV製作への道 その7-

Blynk設定

スマホとESP32ボードはスマホアプリのBlynkを用いてWiFi通信させます。

新規プロジェクトを作成します。HARDWRE MODELはESP32 Dev Boardを選択。CONNECTION TYPEはWiFiを選択。AUTH TOKENはArduinoコード生成時に使用します(メールで送信されます)。

zeRGBaウィジェットを配置

zeRGBaウィジットでLEDの色を設定できるようにします。
OUTPUTはMERGEを選択。それぞれ最小値0、最大値255とします。
SEND ON RELEASEはOFFにして随時データ送信できるようにします。
ここではヴァーチャルピンV0に出力するようにしました。

Arduino IDEコード

[スケッチの例] -> [Blynk] -> [Boards_WiFi]-> [ESP32_WiFi]を参考にコード生成しました。

動作

 

#ESP32 & #blynk で LEDテープ #Dotstar コントロール

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

いい感じ!

次回は本格再開目指して更にBLE通信も同時にできるようにしたいと思います!
なんとか6月中には実現したい。。たぶん。。。