STM32 nucleo活⽤用mbedでハイパフォーマンスフィジカルコンピューティング
⾃自⼰己紹介
•電⼦子⼯工作系の遊びが好き•マイコンの専⾨門書を出版しました•マイブームはUnityとC#とESP8266•本業はこの会社の顧問
マイコンとは
•コンピューター・電⼦子計算機•ソフトウェアを書いて⾛走らせる•PCと同じ
PCとの違い
•周辺回路の有無•周辺回路の内蔵性•サイズ•計算能⼒力•消費電⼒力•リアルタイム性•値段
ワイヤードロジックとの違い•マイコンが無くてもロジック制御はできる•炊飯器の始めちょろちょろ
•マイコンだと•複雑化したロジックに対応可能•仕様変更に強い•通信機能・接続性が⾼高い
マイコンの意味
•1980年代の「マイコン」•マイクロコンピュータ
•今の「マイコン」•マイクロコントローラ
昔のマイコン開発との違い•⾼高い•ボード•開発環境
•デバッガ•書き込みに必要•紫外線照射でROM消去
•microchipのPIC •ターニングポイント
Arduinoの登場
•安い•簡単接続•プログラマ不要
•開発環境が揃っていて無料•API簡単•シールドで拡張•全世界で利⽤用者が⼀一気に拡⼤大•情報量が多い
Arduinoとの違い
•同じ•マイコン•オープンソースベース• APIベース
mbedとは
•ARM社が提唱している開発環境•ARM系のマイコンが対応•複数社からボードが発売
Arduinoとの違い
•メリット•ピン数多い・クロック早い• Arduino uno
• ATmega328P 8bit AVR RISC 32p• Flash:32KB SRAM:2KB EEPROM:1KB• クロックスピード:16MHz
• RTOSが動く•さらに安い• ARMコア•ライブラリシェアがIDEに組み込み済み
Arduinoとの違い
•デメリット•シールドがほとんど無い•マイコン単体から⼯工作するのは難しい
Arduinoとの違い
•メリットデメリット• CとC++ •オンラインIDE• 3.3V •マスストレージ
実際にどうやるの
•リモート開発•クロスコンパイル• AndroidやiOSデバイス
•OSが動いているデバイスではない• ROMを丸ごと書き換える
準備
•mbedへのアカウント登録•ボードの登録
•デバッガのファームウェアアップデート• https://developer.mbed.org/teams/ST/wiki/Nucleo-‑Firmware
•ドライバインストール(Windowsのみ)• https://developer.mbed.org/teams/ST/wiki/ST-‑Link-‑Driver
実演
•LEDを500ms間隔でオンオフ•LEDをスイッチでオンオフ•ADC読み取り•シリアルエコーサーバー
Lチカ組み込みプログラミングにおける伝統的Hello world!
ピン配列https://developer.mbed.org/platforms/ST-‐Nucleo-‐L053R8/
オンボードLEDhttps://developer.mbed.org/platforms/ST-‐Nucleo-‐L053R8/
LEDのオンオフができるということは•⾚赤外線LEDを使ってリモコンで家電のコンロトロールができる•変換ボードを通して100Vの家電がコントロールできる
ボタン読み取りプログラマの意思とは関係無く構造体型の値が変更されている
オンボードスイッチhttps://developer.mbed.org/platforms/ST-‐Nucleo-‐L053R8/
ボタンがわかるということは•ユーザーの意思を受け取れる•ボタンも⼀一種のセンサ•フタの開閉•転倒• ⽔水銀スイッチ• ボールスイッチ
•接近• リードスイッチ
シリアル送受信シリアルクラスオブジェクトのメソッドを実行する
シリアル接続できるということは•通信できる•パソコンへの情報伝送•シリアル対応型のデバイス• 液晶・センサー
ADC読み取りシリアルクラスオブジェクトのメソッドを実行する
回路抵抗分圧で任意電圧を作ってみる
ADCが読めるということは•センサの値が読める•温度・気圧・湿度・照度・⾊色・圧⼒力・⾓角度・加速度・地磁気・ガス濃度・⾓角速度・マイク・距離・スイッチ
•ロギングできる•センサの値に応じた条件分岐ができる
PCにセンサーをつなぐベストプラクティス•ソフト開発⼯工数で考える•USBマイコン• マイコンプログラミング+シリアル操作
•USBシリアル・パラレル変換ボード• ドライバAPI操作
• Bluetoothボード/Konashi• iOSのBluetooth APIプログラミング/JS
• Raspberry Pi• Python/C/JS