「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料
TRANSCRIPT
演磁日亜長屋ワークショップ「使える!mbed」
2015年6月高橋・黒川(ファブラボ北加賀屋)
はじめに• このワークショップでは、初心者を対象に、
mbedって何だろう?というところから始めて、基本的な使い方を学びながら、実際にmbedを使った電子工作を体験します
• 簡単な応用例もいくつか紹介
• mbedの特徴をよく理解して有効に活用するアイディアを培う参考になれば幸いです
mbedって何だろう?• ARM社のマイコンをプログラミングするため
のクラウド開発環境• およびプロトタイピング用の開発ボード• よく似たものとしてArduinoがある• mbedはembed(組み込み・埋め込み)を元
にした造語• ARM社の32ビットマイコンは、組込み型コン
トローラとしては最も成功したものの一つ
マイコンって何だろう?• そもそもマイコンって何?という方のために• Micro Controllerの(日本特有の)略語• プログラムを書き込むことによりさまざまな
働きをさせることのできるワンチップIC• 家電など各種機器に組み込まれて使われる• CPUコア、メモリ、タイマー、外部周辺機器
と通信するための入出力部を備える• Microchip社のPICシリーズ、Atmel社の各種
製品、サイプレス社のPSoCなどが有名• ARM社は製造を行わず、NXPなどが製造
プロトタイピングって何だろう?• 製品化の前の開発段階で試作を行うこと• 初期段階ではコンピュータ上で設計した回路
を、ブレッドボードなどを使って実際に組んでみて動作確認したり構成を検討することがある
• マイコンを使う場合は開発ボードを利用すれば、必要なポートや周辺回路を手軽に使えて便利=ラピッドプロトタイピングツール
mbedとArduinoの違い?(開発環境編)
mbed Arduino開発元 ARM/NXP Arduino, LLC動作環境 クラウド ローカル開発言語 C++ スケッチライブラリ 公開ライブラリから
直接インポート別途入手しフォルダ内に展開
利用対価 無償 無償
人気度 ちょいマイナー ポピュラー
mbedとArduinoの違い?(ボード編)mbed Arduino
プロセッサ ARM Cortex-M(32ビット)
Atmel ATmega(8ビット) 等
動作周波数 48-96MHz 8-16MHz駆動電圧 3.3V 5Vポート Digital I/O
Analog I/OPWM outI2C SPIなど
Digital I/OAnalog I/OPWM outなど
価格 ちょっと高い(LPC1114除く)
安い(変種多数)
Arduinoボードの例Arduino Uno Arduino Mini LilyPad Arduino
定番タイプ ミニサイズ ウェアラブル向け
ハードウェア設計情報のEAGLEファイルが無料で公開されており、組み立て済みの基板を購入することもできる他、誰でも自分の手で Arduino を組み立てることができる(オープンソースハードウェア)
mbedボードの例mbed LPC1768 mbed LPC11U24 mbed LPC1114定番タイプ 低電圧・低消費電力型 DIP型LPC1114搭載
今回のワークショップでは、DIP型のLPC1114マイコンを搭載し、プログラムを書き込んだマイコンを取り外し単体で使用することもできるmbed LPC1114を取り上げます
mbed LPC1114のピン配置
搭載しているNXP LPC1114FN28マイコンのピン配置と同じです(28ピン)
mbed LPC1114の特徴(特長)● DIPタイプのLPC1114FN28をソケットに挿した構造● プログラム書き込み済のLPC1114を取り外して単体で使える
単体利用時は外部からの電力供給(3.3V)が必要です
mbed LPC1114の特徴(特長)● LPC1114用のライタとみなすこともできる● 変換アダプタを介して他のタイプのLPC1114にも書き
込める
● TSSOP版のLPC1114FDH28に書き込んでいるところ● ピンは3(SWCLK), 12(SWDIO), 15(TXD), 16(RXD),VDD(21), GND(22), 23(nRESET)を使用
ボードをPCに接続する
USBケーブルでPCと接続すると、ドライブとして認識されます。mbed開発環境からダウンロードしたファイルをドラッグ&ドロップするだけで、ボード上のマイコン(LPC1114)にプログラムを書き込むことができます
mbed開発環境を使う1.ユーザ登録
mbed.orgでユーザ登録をします。自分の名前、メールアドレスの情報,mbed.org内で使うユーザ名、パスワードを入力し,規約を読んで同意した後に登録を行います。ユーザはアカウントにログインした状態で自分のコードを書いたり、そのコードやその他の情報を公開・共有できるようになります。
URL: https://mbed.org/
mbed開発環境を使う2.コンパイラを起動する
● 登録したアカウントでDeveloper Siteにログインします● Compilerを起動します● mbedのオンライン開発環境が表示されます● 左のペインには、インポートしたり自作したプログラム群が並びます
● 右のペインにはコードの表示部と、その下に状態表示を行う部分があります
mbed開発環境を使う3.ターゲットボードを登録する
● 画面右上の「mbed NXP LPC1768」の表示をクリックし、Select Platformsダイアログを開きます● ダイアログ下部のAdd Platformを押し、表示される
Platformsのページからmbed LPC1114FN28を選択● Add to your mbed compilerを押すと登録されます
mbed開発環境を使う4.サンプルプログラムを使ってみる-1
● Importボタンを押し、Import Wizardを起動します● Programsタブから、一番上のmbed_blinkyを選択し、
Import!ボタンを押します● ダイアログが表示されます。Import As:はProgramを選択、Updateにはチェックを入れます
● mbed_blinkyプログラムがインポートされ、左ペインと右ペインに表示されます
● main.cppをクリックすると、プログラムコードが表示されます
mbed開発環境を使う5.サンプルプログラムを使ってみる-2
● プログラムの一部を、ボードに合わせて書き換えます● 具体的には、myled(LED1)をmyled(dp6)に書き換え● dp6ピンがDigitalOutクラス用にアサインされます
mbed開発環境を使う6.プログラムをコンパイルする
● Compileボタンを押すと、プログラムがコンパイルされてバイナリファイルが生成されます
● 表示されるダイアログで、保存を選択● ダウンロードフォルダにファイルが保存されます
mbed開発環境を使う7.プログラムをマイコンに書き込む
● ダウンロードしたファイルをMBEDドライブにドラッグ&ドロップします
● バイナリファイルがマイコンに書き込まれます● ボードのリセットボタンを押すとプログラムが起動します
mbed開発環境を使うmbed_blinkyの実体配線図
● 赤のLEDの長い方の脚(+)をdp6に、短い方の脚(-)をGND(8番目のピン)に接続
いろいろなクラスを使ってみる1.BusOutクラス
● サンプルプログラムをインポートし、ボードに合わせて一部を書き換えます
● BusOutクラスを用いれば、複数のLEDやピンをまとめることができます
● インスタンスledsは、4つのピンをまとめた4ビットの出力となります。ここに値を代入すると、その2進値が各ピンに接続したLEDに表示されます
mbed開発環境を使うBusOut_sampleの実体配線図
● 各色のLEDの長い方の脚(+)をdp4,6,9,10に、短い方の脚(-)をGNDに接続
いろいろなクラスを使ってみる2.DigitalInクラス
● DigitalInクラスを使い,宣言したピンを入力にします● そのピンにマイコン内蔵のプルアップ抵抗を接続します● ループ内では,ピンから読んだ信号を反転して、LEDの状態に反映させます
● ボタンが押された時にLOWが入力されるので、それを反転してLEDに出力させれば、ボタン押下げ時にLEDが点灯します
mbed開発環境を使うDigitalIn_sampleの実体配線図
● 赤色のLEDの長い方の脚(+)をdp6に、短い方の脚(-)をGNDに接続
● タクトスイッチの一方の脚をdp10に、他方をGNDに接続
いろいろなクラスを使ってみる3.AnalogInクラス
● AnalogInクラスのインスタンスからは0Vを0.0,3.3Vを1.0とした正規化された値を読むことができます
● アナログピンには0V〜3.3Vまでの電圧を入力できます● LPC1114ではアナログピンは4つあります● このサンプルでは、AnalogInのインスタンスaiから読んできた値に15.0を掛けて4ビットの0〜15の値に変換し、4個のLEDで状態を確認できるようにしてあります
mbed開発環境を使うAnalogIn_sampleの実体配線図
● 各色のLEDの長い方の脚(+)をdp4,6,9,10に、短い方の脚(-)をGNDに接続
● 可変抵抗の中央の脚をdp13に、両端の脚をVIN(21番目のピン)、GND(22番目のピン)に、ジャンパーコードを介して接続
いろいろなクラスを使ってみる4.Serialクラス
● Serialクラスのインスタンスを作成し,そのメンバ関数として用意されているprintfを使うとシリアルへの出力が可能です
● stdio.hで宣言されている入出力用の関数が揃っているので、シリアルの入出力を簡単に使うことができます
mbed開発環境を使うSerial_sampleの実体配線図
● 配線はAnalogIn_sampleと同じです
PCでmbedのシリアル出力を見るには● Windowsマシンでmbedのシリアル出力を見るには,mbedのシリアルドライバが必要です
● ターミナルソフトも必要です。なければダウンロードしてインストールしてください
● Macではドライバのインストールは必要ありません● ターミナルソフトも、コマンドラインから「screen」コマンドが使えます
いろいろなクラスを使ってみる5.Servoクラス
● Servoクラスのインスタンスを作成します● AnalogInのインスタンスaiの値によって、サーボの回転角を制御することができます
mbed開発環境を使うServo_sampleの実体配線図
● 可変抵抗の中央の脚をdp13に、両端の脚をVIN(21番目のピン)、GND(22番目のピン)に、ジャンパーコードを介して接続
● サーボの信号線(白)をdp1、+(赤)をVIN、黒をGNDに接続
mbedの応用例フリスク/ミンティア工作
● フリスクやミンティアなどのケース内に電子回路を組み込み● 扱いやすいDIP版LPC1114とボタン電池で手軽に作成
センサーなどを組み合わせ、インタラクティブな携帯機器を開発可能
mbedの応用例ネギ
mbedの応用例電動羽ばたき飛行機
● サーボダイレクトドライブで翼を羽ばたかせて飛行● 羽ばたき周期や羽ばたき角をLPC1114でコントロール
軽量化のためTSSOP版LPC1114を使用(飛行重量10g)
参考にさせていただいたページ● LPCZone:NXP LPCマイコン情報 by NXPセミコンダクターズジャパンhttp://www.nxp-lpc.com/
● ワークショップ用リファレンスページ by Tedd OKANOhttps://developer.mbed.org/users/okano/notebook/ws/
● 「mbed」で始めるARMマイコン開発入門 by 今岡通博http://monoist.atmarkit.co.jp/mn/articles/1410/24/news016.html