黒兎のblog

絢辻さんprpr

PocketduinoとNeoPixelでビジュアライザー

こんばんちは

 今年もわずかとなってまいりました.
1年過ぎるのもあっという間で,精神年齢の成長速度が年をとる速度に比べ非常に遅く困っているところです.
大人とは何なのか答えが思い浮かびません.





さて,近々販売されるというPocketduinoという基板を極秘(?)で入手いたしました.
PocketduinoはスマホのUSBコネクタに挿すことができるArduino互換基板です.
Pocketduinoの本家サイトはこちら

DSC00849
















Pocketduino

DSC00855
















表面

DSC00856
















裏面

DSC00857

















袋にもイラストが印刷されておりイケメンすぎます.


PocketduinoにはマイクロUSBのオスコネクタがついており直接端末にさせるようになっています.
基板自体のサイズもかなり小さいです.
Pocketduino側はPCと同様にシリアル通信(UART)でAndroidと通信することが可能です.
Androidとの通信のために新しく必要となる関数はありません.



Android側の基板と通信するためのプログラムですが,
この基板を製作されている@ksksueさんは以前よりAndroidとFTDIのICが
通信をおこなうためのライブラリを提供されています.
また,最近ではAndroidのアプリ内にArduinoのプログラムを埋め込んでおいて,
アプリからボタン一つでArduinoに書き込むライブラリとしてPhysicaloidなるものを提供されています.

※「アプリにArduinoのプログラムを埋め込む」というのは少々語弊があります.
 Android上でプログラムを書いたり,ソースコードをコンパイルするということではなく,
 PC上でコンパイルされた.hexファイルをあらかじめアプリ製作時に埋め込んでおくという意味です.

これは製作したAndroidアプリとArduinoのスケッチをばらばらに所有する必要が無いというだけでなく,
現在Arduinoと接続する基板を製作されている方が基板を頒布する時にも役立ちます.





さて,Androidと簡単に繋がるのなら,それは使ってみるしかありません.
実は1回もAndroidアプリを作ったことがありませんでしたので,これを機にアプリ開発もかじっておきます.w

何を作るかですが,Androidに無くてマイコン基板にあるもの,またはその逆などいろいろ考えて
今回はAndroidで再生している曲のデータにFFTかけて,その結果をPocketduinoに送信.
PocketduinoからシリアルLEDを光らせるビジュアライザーを作ることにしました.

さぁ4年前に購入して積み本となったAndroid本よ,今こそ目覚めるのだー (ズゴゴゴゴ

Pocketduino,Androidともに今回のために製作した特別なライブラリや関数はありません.
全て用意されたものを使っているだけなので初心者の方も少し勉強すれば製作できると思います.


<用意するもの>
・Android端末
・Pocketduino & シリアルLED
・(できれば)PCと通信可能なArduino基板
DSC00862

















※Arduino基板が無くても開発できますが,初心者の方はArduino基板があったほうが
開発が楽だと思います. Arduino基板はピン名が同じであれば違う基板でもプログラムに互換性が
あるはずですので,途中まではArduino基板で動作確認し,スマホと連携するときにPocketduinoに移るのが良いと思います.


手順は次の通りです.それぞれ短く記載します.
<手順>
①開発環境を整える
・JDKのインストール
・Android SDK(もしくはAndroid Studio)をインストール
黒兎はAndroid SDKを使いました.

②アプリの構成を考えながらAndroidプログラミングの基礎を学ぶ
Button, Slider, TextView,  View, MediaPlayer, Visualizerなど

いくらマイコンと通信したくても基礎がわからなければどうしようもありませんので,
まずアプリの作り方の勉強をします.
C++を書いたことある方ならコードが汚くなったとしても,ある程度短期間で目的のアプリを作れると思います.

③Physicaloidライブラリを使ってみる
Physicaloidのページにカンタンな使い方が載っています.
その手順通り行えば大丈夫です.
Physicaloidライブラリの中にサンプルプロジェクトも入っており,チュートリアル1から順に見ていくと
使い方がわかるようになっています.

④Android,Pocketduino,連携部分 それぞれのプログラムを書く.

丁寧に書くとここは長くなりますので,ちょいちょい分けて書いていきたいと思います.


長々と説明するよりまず動いてる様子を見るのが良いと思います.

無題















ひたすら音楽流れるだけですので作業用BGMにどうぞ(ぇ




AndroidからPocketduinoへプログラムを書き込んでる様子も撮影していて,
編集した動画を上げる予定でしたが,動画製作が全く進まなかったので,ビジュアライザーのデモ部分だけ上げておきます.
音楽は巷で話題のクリスマスとやらに合わせて「奇跡の鐘」を再生しています.
ちなみに,ここ数日このアプリを作っていたので黒兎には当然のごとく奇跡は起こりませんでしたorz


このアプリですが,GooglePlayで公開するかどうかはもう少し考えさせてください.
全くAndroid端末を所有していないため,いろいろな実機での動作確認ができないということと,
初めてこのアプリを開いた方が使用できるようマニュアルを製作している時間が今のところ無いというのが理由です.
そのため恥ずかしながらこのウンコードなプロジェクトをgithubにうpすることとします.
1月の頭にはあげたいと思っております.
PocketDuino用ソース
Androidアプリ用プロジェクト
AndroidSDK用のプロジェクトファイルです.
音楽ファイルは検索せずにプロジェクト埋め込みです.
/fft_test/res/raw/music.mp3 を置き換えてください.
いちをフリーのmp3ファイルにしてますが入れないほうがよかったですかね?

ちなみにこのPocketduinoは今年のコミケで頒布されるそうです.
コミックマーケットC85 PocketDuino頒布のお知らせ
Androidとマイコン基板との通信をしてみたい方,一度断念された方は是非とも購入されたらどうでしょう.



去年・今年とほとんど更新できていませんでしたが,更新のたびに来てくださった方々ありがとうございます.
来年以降もよろしくお願いします.
それでは皆様よいお年をお迎えください. 
 

ライントレーサーの作り方(1)


こんばんは

この前購入したBF592ですが,
金子システムさんのサンプルプログラムである程度動作確認が終わりました. 
サンプルプログラムを改変してライブラリも作成しています.
あとPPI(パラレルポート)の機能の確認だけとなっています.

PPI機能ですがこちらのサイトを参考にすればすぐできそうです.
SRV-1
カメラを搭載したロボットのサンプルがそのまま手に入ります.
OV9655のレジスタ値も以前OV9655を使ったときにもここを参考にしました.

ちなみにgnICE+も届きました.
DSC00836_R

















DSC00837_R



















黒兎がDSPを用いて行いたいことは画像処理なのですが,
まだBF592では外部接続メモリ機能がないですので,BF609基板が出るまでお預けです.

しかし,実際に物作っておいたほうが後々楽ですのでとりあえずBF592で作ってみます.
画像処理で話題なのはRaspberryPiやBeagleBoneBlackだと思いますが,
どのくらいの速さのロボットで搭載可能なのか勝負してみたいですね.
ここでFPGAとか言っちゃうと怖い人たちが出てくるのでFPGAと張り合うとか言えないです.

ということでライントレーサーに基板を搭載してカメラ画像だけで走りたいと思います.

さて, ライントレーサーの機体ですが,最近はメカのほうを作ってる時間がないですので,
ここはサクッとお金という魔法を使って機体を召喚したいと・・・
DSC00838_R

















DSC00839_R

















DSC00840_R

















購入→帰宅して10分 「解体ショーの始まりだ!」
DSC00841_R








 







まずプロポの受信機がいらんのじゃ~

車輪駆動用のアンプにつながってる赤色の線からバッテリーの電圧来てます.
そこだけ注意すれば2つのサーボモータがあることと何の違いもありません.
プロポを動かして,オシロでPWMの最大と最小の幅を確認したら受信機はさようなら~

DSC00842_R


















機体に載せるようにメイン基板を作ります.
DSC00844_R

















PC側ではProcessingを使ってメイン基板とシリアル通信するプログラムを作ります.
メイン基板はシリアル通信で角度,速度を受け取ってPWMに変換するプログラムを作ります.
実機につなぐ前にオシロでPWMの幅があってるか確認します.

DSC00845_R


















DSC00846_R
















オシロで確認できたら,実機につなぎます.
今はまだUSB-シリアル変換ICで通信してますが,実機を動かすときは無線がいいですよね.


DSC00848_R










 





ということでUSB-シリアル通信変換ICをbluetoothモジュールに変えます.
昔懐かしのKC21です.
これを購入したのも4年前になります.
あのころはbluetoothモジュールもあんまりなかったですが,今やいろいろあって悩みますね.
時代は変わるものです.


これで無線でラジコンのレーシングカーを動かすことができました.
先ほども言いましたようにBF592はメモリが小さいので画像処理には向いていません.
しかし,カルマンフィルタの計算ぐらいはできると思います.
I2C通信のジャイロセンサ・加速度センサも載せる予定ですので,
何かしらの信号処理はやりたいと思います.







それではなのん.

Blackfinボード購入&Lチカ

こんばんわ
お久しぶりのブログです.

実生活でインターンシップなどという兵役(教授曰く)があり,
初めて一人で5:30起きを2か月経験しました.
少なくとも働いたとしても通勤2時間はいやだというのが,
インターンを経験した感想です.小学生か!


学校のイベントでMake的な出展をしたりと
以前製作した黒mbed用のシールドも少しは進歩してるのですが,
今日は別のお話を・・・


以前から金子システムさんのDSPボードを購入しようと考えていましたが,
どうもDSPボードに走るお金がなかったのであきらめていました.
しかし,最近気づいたのですが500MHz駆動のDualコアであるADSP-BF692という
石の基板が発売されるとのこと
http://www.kaneko-sys.co.jp/shop/00020.html

うーむ,それならはじめてみようかいな
ってことでアナデバのDSP(Blackfin)のための環境を調べてみると・・・
開発環境のVisualDSP++がびっくり仰天目が飛び出る価格
http://www.analog.com/jp/evaluation/vdsp-pp-sbf/eb.html
JTAG-ICEも同様
http://www.analog.com/en/evaluation/usb-emulatorbf/eb.html
こりゃあ臓器売らなきゃ無理ですわorz

ちなみにこちらは「ATMega飛び出る」の様子
というコラを作りたかったのですが今日はめんどくさいのでやめます・・・

uClinuxなら無料で開発できるみたい
JTAG-ICEも安いのがある模様
gnICE
http://www.bluetechnix.com/rainbow2006/site/blackfin_family/__dev_tools/__gnice_jtag/409/gnice_jtag.aspx
ICEbear
http://www.section5.ch/icebear

というわけで高いお金?払わなくても開発はできそうなのでBF592ボードを購入しました.
最近の3000円ボードは格安で6000円は当たり前という感覚が染みついて来ています

DSC00830_R















本日朝届きました.


ピンヘッダ取り付けて
DSC00833_R

















まずは金子システムさんの開発環境セットアップの資料にあるように
EclipseとBlackfinのToolchainを使った方法を試してみます.
このサイト通りに進めれば問題ありません.
http://blackfin.uclinux.org/doku.php?id=toolchain:eclipse:install

金子システムさんのとこにサンプルプログラムもあります.
http://www.kaneko-sys.co.jp/support/index.html

BF592ボードへの書き込みですが,
現在DigikeyからgnICEが到着するのを待っているところで
明後日には届くと思われます.

JTAGからの書き込み以外にUARTブートを使った方法があります.
しかもGUIで書き込めるBlueBootというソフトがCuBeatSystemsさんから公開されていて,
非常に簡単です.
http://shinta-main-jp.blogspot.jp/2012/12/blackfin-blueboot-blackfin.html
http://shinta.main.jp/software/bfin-blueboot/bfin-blueboot_ja.html

Eclipseでビルドした時に生成される.ldrファイルをこのソフトで書き込めばOKです!
といきたいところだったのですが,Eclipseでビルド時に.ldrファイルが生成されないorz
Eclipseのほうにはちゃんと.ldr生成のコマンドがあるのですが,
ビルドの時にこのコマンドが実行されません.
(これだからEclipseすら使いこなせない男の人って・・・)
無題
















toolchainの中に.ldrに変換するためのbfin-elf-ldrは含まれていて,
パスもインストール時に設定されるので,EclipseプロジェクトフォルダのDebugフォルダ内で
bfin-elf-ldr -T BF592 -c ****.ldr ****
とコマンドプロンプトから実行すれば問題ありません.

どこかEclipseの設定いじればビルドの時に自動でここまでできるはずですのでいつかできるでしょう

あとはボードをUARTブートモードにして先ほどのBlueBootで書き込めばOKです.

こちらがLチカした時の様子
DSC00834_R
















Lチカって写真じゃわかんねーだろーが!!


とりあえずさくっとサンプルのプログラムを動かすことができました.

DSPと言えばstm32f4やPandaBoardの石(OMAP)にもついとりますし,
わざわざblackfinを始める理由もないのかもしれません.
しかし,この大きさのボードで400MHz動作というのは大きいですし
PPI(Parallel Peripheral Interface)というLCDやCMOSカメラをつなぐことのできる機能も魅力的です.

まだよくわかってないところは多いですのでいろいろ調べてどれがいいのか
判断しようかなと思っとります.

それではノ