2012年08月31日

STM32F4 Discoveryと.NET Micro Frameworkを使ってC#でのマイコンソフト開発を試食!

こんにちは。
話題のRaspberry ですが、ここ半月ほどで手に入れられた方も多くおられるようで、入手!とか試した!とかそういうメールがGoogleアラートからしょっちゅう飛んできています。

当然僕のところにもそろそろ来るだろう、と思っていた矢先に以下のようなメールが届いてしまい結構ガックリしていますww
コアプロセッサが入手困難になってるんですね。Raspberry Pi以外でも結構いろいろ使われている石なのでしょうか。
RS_RaspberryPi_postpone.jpg

ところで、話変わりまして、先日からSTM32F4 Discoveryでチマチマとお遊びしているわけですが、「これ、きっと.NET Micro Framework乗るよな」と思ってました。もちろん手持ちの積み基板の富士通FM3マイコンボードを引っ張りだすのは良さそうですけど。

先日、MakeでNetduinoの展示を見させて頂いてたら、Netduino Goってボードがある事を知りました。
http://netduino.com/netduinogo/specs.htm

あれ、これ殆どプロセッサのスペックがSTM32F4 Discoveryと一緒では?と思い調べてみると、確かにファミリーのようで、STM32F4 DiscoveryのCPUよりもI/O資源とか少ないだけのもののようでした。でググると、

「.NET MicroFramework で遊ぶ2(2012/7)」って記事を見つけました。
http://moxi.jp/wiki/wiki.cgi?page=.NET+MicroFramework+%A4%C7%CD%B7%A4%D6%A3%B2(2012%2F7)

おーこれです!
というわけで、CodePlexのNETMF for STM32をお試ししてみることにしました。
https://netmf4stm32.codeplex.com/

準備するのは、
Visual C# 2010 Express Edition
http://www.microsoft.com/ja-jp/dev/express/default.aspx

.NETMF 4.2
http://netmf.codeplex.com/releases/view/52341

先のNETMF for STM32

そして、STマイクロのST-LINK Utilityです。(多分OpenOCDとかでも出来ると思うけど)

手順は簡単、ST-LINK Utilityを使用し、STM32F4 Discoveryに「TinyBooter.hex」を焼きます。で、STM32F4 DiscoveryのmicroUSB側をPCに差し込むと、USBデバイスとして認識されるので、.NET Micro Frameのツールの「MFDeploy.exe」を実行し、「ER_CONFIG.hex」と「ER_FLASH.hex」を書き込みます。

単にこれだけです。

ではひとまず、「STM32F4BASE_Discovery4.zip」をダウンロードして展開し、VS2010で開きます。あとは、USBインターフェースを選択してデバッグ開始!

サクッと動作開始します。Debug.print()はUARTを繋がずともデバッグコンソールに出ますし、かなりとっつき良い感じでした。

vcs2010_netmf.JPG

IMG_20120831_062451.jpg

ちなみに、このTinyCLRのリリースをされているMountaineer GroupのサイトにNETMF for STMの資料が上がっているので見てみますと、
http://www.mountaineer.org/netmf-for-stm32/
そもそもNetduino Goで使用されているFrameworkでもあるわけですね。

でSTM32F4のハード機能をNETMF for STMからどれだけ叩けるか?ですが、HALの解説項目読むと、既に多くのハード機能と繋がってくれているようです。USBとEthernetはまだ拡張が必要のようですが。

ちなみに実機との接続ですが、MacOSX上のVMware Fusionで動作しているWin7 64ビット版では接続に失敗ばかりしていました(VC#では「配置エラー」とか)。
WinXP 32ビット版ではあっさり認識されました。接続系のエラーに悩まされる場合、他のPC環境を試してみる価値はあるかもしれません。

STM32マイコン徹底入門 (TECH I Processor)
川内 康雄
CQ出版
売り上げランキング: 10103




Netduino(Arduinoピンコンパチ.NETマイコンボード)
Secret Labs LLC
売り上げランキング: 67924



posted by いしいっち at 07:17| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2012年08月21日

カメラ付き&WiFi制御Android制御対応ラジコン AndyVisionWi-Fi作ってみた

久々のAndyくんいじりです。Andyってのは、Bluetooth経由で制御できるAndroid端末用のラジコンの事です。

先日、盆休みに実家に数日帰省していたので、昼間は出かけたりしてましたが、夜はもくもくとハンダ付けしたりして遊んでました。その時に作っていたものです。
実家ではする事があまりなくて、集中できるんですよね。。。

春先にGoodLuckBuyで購入したCMOSカメラ(ちょっと部品配置が違うような気がするものの、トラ技で取り上げられていたカメラと同等の模様)を買ったもので、お試し的に制御を実装してみました。XBee Wi-Fiも買ったものの、メキシコにも持っていったのですがずっと使わずに転がっていたので使用することにして、Wi-Fi接続+カメラ搭載Andyを作ってみました。現在はTransparentモードなのであまり細かい制御は出来ません。

IMG_20120821_003837.jpg

カメラはサーボで方向が変わるように、と思いましたが、ラジコン台車に乗せたので特にその必要性は無くなりました。
カメラとの接続部分の図。。ぐにゃぐにゃのポリウレタン線です。かっこ良く並行直角で配線できたら良いんですけど。。。
IMG_20120821_003855.jpg

XBee Wi-Fiを使用しているので、AndroidのWi-Fiで接続します。
Android側のアプリを起動すると、ラジコン上のカメラのプレビュー画が出て、フレームレートは高くないものの逐次更新します。
カメラ画はSurfaceView、操作部はViewで書きましたー。
AndyVisionWiFi_SS.png

実は作って、動かして、遊んでて結構楽しめました^^;
Wi-Fiということもあり、結構遠隔操作も出来るというのもありまして、違う部屋の探検とか。。。^^;

で、楽しいのでもう少し深くやっていこうと思いまして、今後の目標は・・・
・バラックをもうちょっとマシな感じに(外観の見た目の向上)
・XBee Wi-Fiとの接続をUART→SPI化(カメラフレームレートの向上)
・カメラアクセスをマイコンの外部バスI/F経由にする(カメラフレームレートの向上)
・XBee Wi-Fiとの接続をAPIモードで(UDPホールパンチングのNAT超えを実装)
・NFC経由で接続情報をAndroid端末に上げるように(接続を簡便に)
とかを考えています。近いうちに出来たらいいなぁ。

ソースとかは整理してます。githubにアップしたいなーと思ってます。
(でも毎回、gitのガイドのサイトを見ないとろくに使用できない^^;)



XBee WiFi / ワイヤアンテナ型
スイッチサイエンス
売り上げランキング: 158198

posted by いしいっち at 01:08| Comment(2) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2012年08月12日

夏休みの工作 〜Androidに接続して温度と湿度がわかるアイテムを作ってみる

お子様でもお手軽に出来る夏休みの工作でAndroid端末と繋がる機器を作ろう!

-----

どこにでも売っている、何の変哲も無いフリスク・スペアミント味。
P1120126resized.jpg

なんとなく裏側を見てみると、まぁ、普通にフリスク。

P1120133resized.jpg

・・・しかし開けてみると・・・チャキーーーン!!
P1120134resized.jpg
なんか出てきた。

そして反対側をみると、チャキーーーン!!
P1120136resized.jpg
なんか出ていた。

なんだかわかんないけど、たまたま、ツイート画面を出して「暑いよ〜」と書いてただけのAndroid端末に突っ込んでみた。

P1120138resized.jpg

Screenshot_2012-08-12-19-02-51.png

お、ツイートしやすい形で、温度と湿度の文字列が、愛用するTweetDeckの入力枠内に表示された!!ツイートしちゃおう。定量的で伝わりやすいネ!

っていう、工作です。

ニッパーとホットボンド使って、30分くらいで出来ます。^^;

---
以前@ksksue氏に教えてもらったGroveの温湿度センサー(http://www.switch-science.com/products/detail.php?product_id=818)をばらしたセンサー単体と、スイッチサイエンスの「ATmega32U4搭載マイコンボード」(http://www.switch-science.com/products/detail.php?product_id=865)、USBコネクタをフリスクに入れたものです。Android端末のUSBホストポートと接続されるようになっているので、Android端末から電源をもらい、測定したデータをUSB HID Keyboard相当の動作でAndroid側に返します。USB On-the-Go対応のAndroid端末を使用します。とはいえ、USBホストポートがついている端末なら何でもきっと動くでしょう。例えば、W-ZERO3[es]とか。USBホスト対応のアプリを作っていたので、ネタを探していて、これを作ったというわけです。

USB端子は、100均のマイクロUSBコネクタをぶった切って使用しました。単にコネクタをぶった切って接続するだけでは、Android のUSB OTGポートは「デバイス」としてしか振舞わないので、ホストになってもらう為、USBのIDピンを接地しちゃいます。(普通のケーブルのままでは、IDピンは無接続)

というわけで、メリメリメリとニッパーでコネクタを無理矢理開けていきます。
IMG_20120812_092659_r.jpg

で、IDピンに線をつないだ様子です。
IMG_20120812_092724_r.jpg
この茶色の線を接地すればAndroid側はホストに、無接続にすればデバイスになります。

しかし今回は、Android端末はホストになってくれさえすれば良いので、そのままGNDピンとつないじゃいます。
IMG_20120812_094141_r.jpg
これで、Android端末がホストの通信をできるようになります。もちろん、Android側が5V電源を出力してくれます。

最初、PICのUSBデバイスポートを使用して作ろうと思ってました。AndroidアプリでUSB Host APIを叩いて独自の通信手順でにて連携するものを作ろうと思っていたので、USB HIDは考えてませんでした。専用のツイッタークライアントに文字を埋め込むアプリを作っていたのですが、、、先に紹介しましたATmega32U4ボードが積み基板になってましたので、方針を変えてPICではなく、このボードにすることにしたんです。

そしたら、このボードですとライブラリでUSB HIDはめちゃめちゃ簡単なんですが、汎用USB通信するのにファームに仕込んで行くのがとっても面倒に見えて、やっぱり面倒なのでひとまずHIDにしちゃいました^^;
その内、独自の通信にして、専用アプリと繋がるようにしたいです。
(その時、もしかしたらPICにしちゃうかもしれませんが)なお、HIDキーボードで日本語入力ON状態になってしまう場合、文字がローマ字として解釈されると変な入力結果となってしまいます。

中身はこんなかんじ。

P1120139resized.jpg

ファームは、ここに上げときますのでよかったらどーぞ。
(公開するほど、大したものではありませんが...)



usb dac 内蔵小型 パソコンスピーカー(25W+25W) KS-1HQM
株式会社クリプトン
売り上げランキング: 7322

ラベル:ATmega32u4 GROVE android
posted by いしいっち at 20:13| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする