Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

.NET MicroFrameworkとC#でお手軽組込み開発

5,587 views

Published on

C#の素晴らしさを語る会@2013/10/12 発表資料

Published in: Technology
  • Be the first to comment

.NET MicroFrameworkとC#でお手軽組込み開発

  1. 1. .NET MicroFrameworkとC#で お手軽組込み開発 C#の素晴らしさを語る会 2012/10/12 @shohaga
  2. 2. 本日の内容  自己紹介  .NET MicroFrameworkって?  .NET MicroFramework対応のハードウェアについて  実際に使ってみたらこうなった  まとめ
  3. 3. 自己紹介
  4. 4. 自己紹介  芳賀です。    ネット上ではshagaと名乗ってます。 Twitterアカウントは@shohagaです。 仕事はソフトウェアの受託開発してます。   業務経験としては、Windowsを使ったFA向けソフト開発や組込みリアルタイムOSの ポーティング、ソフトウェア開発者向けのサポート、Linuxを使ったロボット制御な ど何でもやってます。 ガジェット好きです。  とりあえずデバイスとか呼ばれるものは好物です。  組込みの開発もその辺が具体化した趣味から始まってます。
  5. 5. .NET MicroFrameworkって?
  6. 6. .NET MicroFramewokって?  Microsoftが提供している組込み機器向けの小型フレームワークです。  ARMやSHなどの組込みCPUで動くことを前提にして、小さなRAMでも動きます。  .NET Frameworkのサブセットとなっているので、.NET Frameworkの経験があれば 導入もわかりやすいはずです。  これ自体がOSの機能も提供しているので、リアルタイムOSがなくても動かせるよう になっています。  オープンソースで開発されています。  netduinoや.NET Gadgeteerなどオープンハードウェアとしてリファレンスボードも あるので使いはじめるのは結構楽です。
  7. 7. .NET MicroFrameworkのいいところ(1)  VisualStudioで開発できる!  IDEとしてVisualStudioはよくできていて便利です。   PCと同じ感覚で開発ができるので、新しくIDEの使い方から勉強する必要がありません。 あくまでリファレンスボードの話ですが…  導入が簡単。VisualStudio に加えて.NET MicroFrameworkとボード向けのSDKをインストー ルするだけ。それで、ソリューション作成のウィザードまで準備されちゃいます。  ブレークポイントがそのまま使える。ICEや特別なソフトを用意しなくても、そのまますぐ に使える。  繰り返しになりますが、netduinoやGadgeteerといったリファレンスボードでは確認してますが、実 際のポーティングされた時はわかりません。
  8. 8. .NET MicroFrameworkのいいところ(2)  割込み処理の記述が簡単  組込み開発で手間がかかる割込みはイベントとして登録できる。   ライブラリ側で対応しているので、ポーティング時は注意が必要かも? PC 向けに作った処理やライーライブラリや処理が簡単に再利用できる。  PCと通信する機器を開発する場合、PC側もC#やVBで作ってしまえば、プロトコルの 共通化もお手軽に。  PCでテストした上で移殖なんてこともお手軽に!
  9. 9. .NET MicroFrameworkの 難点  所詮はサブセット。  .NET Frameworkのすべての機能が実装されている訳ではありません。  例えば、組込みではよくあるメモリを直接操作するようなunsafeなコードを書けま せん。   なので、 Ardninoのライブラリを移殖しようと思ったら頭を抱える結果になりました。 実際の開発に向いてない?  リファレンスボードを使った開発ではとても楽ちんなのですが、では実際にボード を一から作った場合、ポーティングやドライバの開発はどうするんだ?っていう問題 があります。  Ardainoはそのまま回路を作り直せば、バイナリはそのまま使える。
  10. 10. 実際に使ってみたらこうなった
  11. 11. ハードウェアについて  なるベく半田付けしないで実現  回路は売り物を利用。   I2Cモータードライバ  SPI無線コントローラー   Breakoutモジュール   FEZ Spider 電源回路 配線もブレッドボードを利用。 メカはタミヤの工作キットを組み合 わせ。
  12. 12. モータードライバー  ドライバー回路はStrawberryLinux製DRV8830  上位のCPUとI2Cで通信をして、指定された電圧をモーターに出力する。  今回は、Breakoutモジュールを使って、FEZ Spiderと通信。。  I2Cの利用は既存のライブラリを利用。
  13. 13. コントローラー  ジャンク品を購入。  技術者向けなのでマニュアルが簡略。  上位とSPI通信をし、リクエストに 対してコントローラーの状態を返答。  上下ボタンを左モーターの前後動に、 △×ボタンを右モーターの前後動に 割り当てる。
  14. 14. マルチカラーLED  Gadgeteerのモジュール。  赤、青、緑の三色を独立で点灯でき、その組合せで色を表現できる。  左右のモーターの状態を表す。  消灯なら停止。  緑なら前進。  青なら後退。
  15. 15. ブログラシング(1)  モーター制御クラス    I2Cを使うソケットとドライバのアドレスから、I2C通信オブジエクトを生成。 SetSpeedメソッドで速度を指定 コントローラー状態クラス  SPIを使うモジュールとSSに使うピンから、SPI通信オブジェクトを生成。  Updateメソッドで状態を取得、更新。  IsXXXプロパティでボタンの状態を取得。
  16. 16. プログラミング(2)  初期化処理   コントローラー状態オブジェクトを生成。   左右のモーター制御オブジェクトを生成。 コントローラー監視タイマー オブジエクトを生成。 コントローラー監視タイマー処理  コントローラーの状態を更新。  エラーなら何もしない。  ただし、エラーが連続5回発生なら停止。  上下ボタンの状態から、左のLEDとモーターの状態を更新。  △×ボタンの状態から、右のLEDとモーターの状態を更新。
  17. 17. こんなんなった
  18. 18. まとめ
  19. 19. まとめ  とりあえず、組込み開発をはじめるならばオススメ。  今は便利なモジュールが多く売っているので、回路の知識が尐なくてもなんと かできる。  業務で使うには他との比較するだけの知識が必要なので、あまりオススメはで きないかも?
  20. 20. 参考  共立電子 http://www.kyohritsu.com/  エレシヨップ http://eleshop.jp/  デジット http://digit.kyohritsu.com/  シリコンハウス http://siliconhouse.jp/  千石通商 http://www.sengoku.co.jp/  GHI https://www.ghielectronics.com/  Gadgeteer https://www.ghielectronics.com/technologies/gadgeteer  netdaino http://netduino.com/  デバイスドライバーズ http://www.devdrv.co.jp/  TINEYCLR.JP http://tinyclr.jp/

×