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.

ALGYANマイコンボード酷評会

2018/8/18 ALGYAN 主催 マイコンボード酷評会の資料

  • Login to see the comments

ALGYANマイコンボード酷評会

  1. 1. IoTで生き残れ! プロフェッショナルの サバイバル・ノウハウを学ぶ会 ~各社マイコンボード比較編~
  2. 2. まずはご紹介。 野口 哲也 です。 • 普段は 組み込み関連の プログラマしてます。 • ルネサス系とかSTM系とか、いろいろやる人。 でも、最近はもっぱら PSoC に現実逃避中。。。(;^ω^) @tetnoguchi ( Twitter ) https://www.facebook.com/techa.nog (facebook )
  3. 3. いろんなマイコンボードが手に入るよね! この20年くらいで、大きく変わったのは マイコン(MPU/MCU/CPU/SoCとかネーミングは別として) が、デバイス単体ではなく、 安価なボードとして入手できるようになり、 いろいろ試したり利用したり、というのがとても便利になったこと!
  4. 4. 代表作は Arduino !! なんといってもお手軽&安価で 瞬く間に普及してしまった。。。 デバイスとしては Atmel(現マイクロチップ社)の AVR + Processing という なんとも異様なものなのに、大流行り(^^♪ 生来のエンジニアじゃない人たちにも裾野を広げたという意味で 凄い転機になった! Wikipedia
  5. 5. もう一つの代表作は RaspberryPi 他方で、OSが乗るほどのリソースを持ちながら お手軽&安価で波にのる。 Debian系のLinuxがうごくのに5000円と、圧倒的に安い! これを見て産業用ARMボードの影が薄くなった。。。 本題は実はそこじゃない HDMIで単体開発も可能 Pythonなどスクリプト言語がきちんとうごく。 変なLinuxじゃない(少なくともapt使える(笑))
  6. 6. それぞれの得意分野は。。。 ハイエンド ローエンド 省電力 消費電力 大 写真 Arduino は Wikipedia KURUMIはがじぇるね Lattepandaは秋月のHPから OS で運用するのに向く ex) Linux NETMF WinIoTCore Windows
  7. 7. この混沌としたボード達。。。 1)誰がつかっているのか プログラミング初心者 中級者・プロ 2)使う目的 プロトタイピング 実用・仕事 目的に合った ボード 開発環境 をそろえているか?
  8. 8. 誰がつかっているのか プログラミング初心者 = 『プログラミング言語』についての知識と経験が少ない人 ネットに情報が多いArduinoに走りがち。 それでいいの? デバッグしよう!! 言語の記述ミスや認識不足 割り込みやマイコンの動作に対する知識不足 結果の確認方法についての経験不足
  9. 9. デバッグ手法 (プリント デバッグ) プログラム中に、データ表示プログラムを用意して、 これを 適宜よびだして、状態を確認する。  PCでは画面があるから簡単。 マイコンでは、シリアル送信など、きちんと動くものを 予め用意することが必須!  使い方にコツがある。 みたいところ、確認したいところがはっきりしていて 速度や機能的になりたつ場所においてのみ可。
  10. 10. デバッグ手法 (プリント デバッグ) 使い方にコツ 。。。? マイコンでのprintデバッグは、多くの場合シリアル通信(UART)。  通信速度に応じた『処理に必要な時間』が存在する。 たとえば9600bpsなら1バイト送信するのに約1msかかる
  11. 11. デバッグ手法 (プリント デバッグ) タイマーハンドラ(1ms) 1msごとに定期割り込みで データ処理 条件成就で、結果を UARTで、PCに送信 Webに転がっていたArduinoのサンプルではこんなのがある。。.orz 1msの割り込みのなかから、 そのまま送信処理とか、ありえない。 割り込みは、 できる限り、最短で抜けるのが鉄則 というのが理解されていない。。。
  12. 12. デバッグ手法 (ICE / デバッガ) In Circuit Emulator むかしはCPUを生で置き換えたけれど、いまは JTAG ICEや類似のオンチップ エミュレータが主流。 ここ10年くらいで激安になってきた。 設定個数に制限はあるものの、いろんなところに BreakPointを設定できる。 変数やメモリを直接Watchできる
  13. 13. マイコンの周辺デバイスもインテリジェンス • UART 昔ながらのシリアル通信 TXD  RXD RXD  TXD • SPI • I2C いろんなデバイスを扱うことが、マイコンの醍醐味! デバッガで確認しながら開発することが必須 デバッガでの開発ができるか、 それに類似の方法が与えらえるか、がポイント!
  14. 14. ~各社マイコンボード比較編~ いよいよ本題へ。。。
  15. 15. Arduinoシリーズ UnoとかMEGAとかいろいろ。 ProMiniなども。 フォームファクタが、すでにデファクトスタンダード? いろんなデバイスの利用例に事欠かない。 言語はProcessingだが、非力ゆえにCのコードであることが多い ATMEL-ICE Basicが安くなった!(秋月で11000円) Atmel Studioと組み合わせれば、デバッグ可能。 VS2017+VisualMicro有償版をつかえばICEがなくても デバッグ機能がつかえる。 Wikipedia
  16. 16. Wikipedia Arduino デジタルピン側のコネクタ部分がハーフピッチずれていて、 汎用ユニバーサル基板はつかえない。。。 ユニバーサルシールドを買えばすむけれど。。。  やるなら Arudino Nanoあたりがいいなぁ。 ICEをつかうと、SPIが占有されてしまう。 まぁ、ICEつかってまでデバッグしてる人、あまり見ないorz 割り込み処理内でdelayとかシリアル通信とか、 お作法の悪いコードに事欠かない SwitchScience
  17. 17. Arduinoシリーズ Atmel Studio 7 + Arduino IDE for Atmel Studio 7 (Nuget) t
  18. 18. Arduinoシリーズ Atmel Studio 7 + Arduino IDE for Atmel Studio 7 (Nuget) デバッグ環境が簡単に手に入る! プロジェクト名の プロパティ
  19. 19. Arduinoシリーズ FUSES (0xFD / 0xD7 / 0xFF) BODLEVEL : VCC-2.7V SPIEN : Checked EESAVE : Checked BOOTSZ : Boot Flash sizs 256 words start address = $3F00 LOW.SUT_CKSEL : Ext.Crystal Osc 8.0- MHz .... 16K CK/14 CK + 65 ms LockBit (0xCF) LOCKBIT.LB : No memory lock feastures enabled LOCKBIT.BLB0 : No lock on SPM and LPM in Application Section LOCKBIT.BLB1 : LPM and SPM prohibited in Boot Section めんどくさい!!
  20. 20. ESP8266/ESP32 Tensilicaのマイコン。 安価でありながら、Wifiがそのまま利用できる。 ESP32には、BLEも搭載。 ファームウエアを更新することで、Arduinoとして利用できる。 ESP32は、FreeRTOSの1タスクとしてArduinoが動いている? MicroPythonやAWSのサポートもある。 安価でWifiを扱えるのは最大のメリット!
  21. 21. ESP8266/EPS32 基本的にデバッガはない(VisualMicroは動くみたい) 消費電力が半端ない。 ESP8266でWIFI使うと300mAくらい! ESP32だと500mAくらい。。。 USB接続では使いたくない(つかっちゃダメ)なレベル。 Arduinoのつもりでブロッキング関数をがっつりつかうとWifiが切れた り、予期せぬ挙動になりやすい
  22. 22. GR-KURUMI がじぇっとルネサス(がじぇるね)の なんちゃってArduino 互換ボード。 絶妙なサイズ感は好感がもてる。 一定のユーザ数がいて、『かふぇるね』で質問と回答がえられる。 Webコンパイラが用意されており、開発環境の敷居が低い。 一応、IDEもどきもある。 e2studio + E1エミュレータを接続すると、ローカル開発もなんとかなる。 純正コンパイラ無償版でも64KB制限なので CS+とE1エミュレータで普通のRL78ボードとしてつかうのがオススメ! がじぇるねHPから GR-KURUMI
  23. 23. GR-KURUMI GCC(C++)での実装であり、なにかとコーディング規約が異なる。  .hのインクルードとかプロトタイプ宣言とか Arduinoライブラリがすべて動くわけでもない。IDEも専用。。。  まさしくなんちゃってArduino! e2studioでのデバッガ挙動が限りなく不安定。 しかもe2studioのバージョンアップごとの挙動がかわり、ついていけない。 ハード仕様的に拡張されている部分もあって、ハード知識のない人は、 Arduino互換という言葉にだまされてはいけない。 がじぇるねHPから GR-KURUMI CS+とE1エミュレータで普通のRL78ボードとしてつかうのがオススメ!
  24. 24. PSoC4/5 PrototypingKit PSoCシリーズの売れ筋?ボード。 PSoC5で1500円、PSoC4で600円と格安ボード。 PSoC5はKitProg(デバッガ)が添付されており、 切り離して汎用デバッガとして利用できる。(3.3Vで運用するには改造要) UDBという簡易CPLDが内蔵されており、ちょっと特殊なマイコン(SoC) PSoC Createrもよくできてる。(無料) コンパイラも、arm-gccなので、制限はない
  25. 25. PSoC4/5 PrototypingKit PSoC4 PrototypingKitの付属基板部分は、 USB-Serial/I2Cチップなので、デバッグ機能はない。 一応、Bootloaderという機能をつかって、書き込みできるけれど メモリを圧迫しており、本末転倒とはこのこと。 PSoC4もUDBが少なく、ARMのペリフェラルを使うことになる。 自由度が少ない。 アナログ周りも利用IOが制限されているので、なにかと不便。  SoCというより MCU そのものみたい。 arm-gccなのに、cしかサポートしない。(しかもデフォルトではC89…)
  26. 26. PSoC4BLE PioneerKit PioneerKitは Arduinoのシールド対応ピンボード。 切り離して汎用デバッガとして利用できる。(3.3/5Vで運用可能) デバッガ側のPSoC5の汎用IOも引き出されているので、 PSoC5ボードとしても利用できる! PSoC4BLE用はいろんなBLEを載せ替えて 開発可能。
  27. 27. PSoC4BLE PioneerKit せっかく、開発ボードとして利用できる汎用性を もっているのに、 肝心の子ボードの、2列コネクタが 通常のユニバーサル基板に刺さらないorz 半ピッチずれている!
  28. 28. STM32 Nucleo STmicroの マイコンボード。 ST-Linkというデバッガがありながら 2000円前後の格安ボード。 mbed対応。 STmicroの豊富なデバイス用のサンプルプログラムが公開されている。 IARかMDK
  29. 29. STM32 Nucleo mbedをつかうと、せっかくのデバッグ機能が。。。  しかも肝心なときにサイトが落ちてたりするとorz ローカル開発環境はいろいろある。 が、無償版だと32KB制限が。せめて64KBはほしいなぁ。  CooCox IDE(GCC)が分かりやすいのかも。 意外といろんなデバイスに対応しているし。Eclipseベース。 STマイクロの サンプルプログラムは、 タブがそろってなかったり、関数が細分化されすぎてわかりにくかったり、 #defineで命名変更してあったりと、 かなり個性的。。 SEGGERのHPから。 CooCox CoIDE
  30. 30. GR-PEACH ルネサスなのに、armという、異色のボード。(RZ) 10MBという大容量RAMを内蔵しており、 なんでもできそう。。。 mbed対応。 Microsoftの .NET MicroFramework(NETMF)で、 VS2015(2017)+C#で開発できる。 もちろん、USBだけで、デバッグも可能!
  31. 31. GR-PEACH マイコンボードとしては1万円程度となかなか高価。 OSもうごかないのに。。。。 LANコネクタ実装済みなのにMAC用ROMがなく、 MACアドレスを自前で用意しないとダメ。。。 せっかくのNETMFも、ほぼサポートがなくなって NETMFのバージョン齟齬でVSとのマッチングができなくなるとか もう、普通の開発者には、手がだせないイメージ。
  32. 32. RaspberryPi DebianLinux系のRaspbianが動作。 Arm-linuxの標準的な環境がそのままうごく。 もはやLinux系マイコンボードとしてはデファクトスタンダード。 Pythonなどスクリプト言語がきちんとうごく。 Python2.7ならVS+PTVSでリモートデバッグも可。 Pi2B+以降では、GUI版でも VSCodeのOSS版でローカル開発+デバッグも快適。 CUIでも、pudbをつかえばデバッグ可。 C/C++の場合はリモートデバッグ必須。 (eclipse+gdbリモート)
  33. 33. RaspberryPi かなりの電流大食漢。MicroUSBで供給するのは怖いレベル。 せっかくGUIで、そこそこ動く環境なのに、 pythonでさえ、まともにデバッグ環境を整えない人が多すぎ。 (IDLEとか使いたい人の気が知れない。。。)
  34. 34. DragonBoard DebianLinux系のlinaro Linuxが動作。 arm-linuxの標準的な環境がそのままうごく。 設定方法もほぼ、RaspberryPiの知見を活かせる。 オンチップでMMCを搭載しており、SDを外部ドライブとして利用できるほか、 Android機としても利用できる! Wifiを搭載している!(有線LANなし)
  35. 35. DragonBoard せっかくIOピンが引き出されているのに、 標準でつかえるのはIn/OutピンとI2Cだけ。 SPIは、カーネルをリコンパイルとか、もうやりたくないレベル。 IOも2.5Vで、電子工作でやるにはかなり敷居が高い。 しかも2mmピッチの低ハイトで、普通にはつかいにくい。。。 有線LANにはUSBドングルがいるが、USBコネクタが2こしかない。  USB-HUB必須で、結局嵩だかい。 ボード設計をバグったのか、 shutdownができない(リブートする)
  36. 36. LattePanda PC用 Windows10がうごく、異色のPC。 もはやマイコンボードとはいえないかも。 開発環境をそのまま動作させるのは厳しい性能だが PCで開発したプログラムがそのまま動かせるのは魅力的。 IO系に関しては、Arduinoがオンボード実装されているので そちらで補完というスタンス。 秋月通商のHPから
  37. 37. LattePanda 発熱が半端ない。 通電  数秒まってから  電源ON という手順を踏まないと起動できない。 つまり、通電後自動実行という、 マイコンボードでは必須の使い方がこのままでは不可  致命的!! Windowsの起動時間がとにかくかかる。 秋月通商のHPから
  38. 38. ~まとめ~
  39. 39. ボード批評会 結局、使いたい内容にあわせて好きなものをえらべばよい。  現時点ではどれを選んでも一長一短。 ただ、 PoC(Proof of Concept)= 概念実証 から、実用化に進める気があるなら 開発環境 = デバッグ環境 を整えるのが、必須。 初期の段階から、これを見込んで然るべき!
  40. 40. というわけで。。。 ~~おつかれさまでした~~ 頑張って、面白いもの、つくりましょう!

×