36
演磁日亜長屋ワークショップ 「使える!mbed」 2015年6月 高橋・黒川(ファブラボ北加賀屋)

「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

  • Upload
    -

  • View
    432

  • Download
    6

Embed Size (px)

Citation preview

Page 1: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

演磁日亜長屋ワークショップ「使える!mbed」

2015年6月高橋・黒川(ファブラボ北加賀屋)

Page 2: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

はじめに• このワークショップでは、初心者を対象に、

mbedって何だろう?というところから始めて、基本的な使い方を学びながら、実際にmbedを使った電子工作を体験します

• 簡単な応用例もいくつか紹介

• mbedの特徴をよく理解して有効に活用するアイディアを培う参考になれば幸いです

Page 3: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbedって何だろう?• ARM社のマイコンをプログラミングするため

のクラウド開発環境• およびプロトタイピング用の開発ボード• よく似たものとしてArduinoがある• mbedはembed(組み込み・埋め込み)を元

にした造語• ARM社の32ビットマイコンは、組込み型コン

トローラとしては最も成功したものの一つ

Page 4: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

マイコンって何だろう?• そもそもマイコンって何?という方のために• Micro Controllerの(日本特有の)略語• プログラムを書き込むことによりさまざまな

働きをさせることのできるワンチップIC• 家電など各種機器に組み込まれて使われる• CPUコア、メモリ、タイマー、外部周辺機器

と通信するための入出力部を備える• Microchip社のPICシリーズ、Atmel社の各種

製品、サイプレス社のPSoCなどが有名• ARM社は製造を行わず、NXPなどが製造

Page 5: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

プロトタイピングって何だろう?• 製品化の前の開発段階で試作を行うこと• 初期段階ではコンピュータ上で設計した回路

を、ブレッドボードなどを使って実際に組んでみて動作確認したり構成を検討することがある

• マイコンを使う場合は開発ボードを利用すれば、必要なポートや周辺回路を手軽に使えて便利=ラピッドプロトタイピングツール

Page 6: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbedとArduinoの違い?(開発環境編)

mbed Arduino開発元 ARM/NXP Arduino, LLC動作環境 クラウド ローカル開発言語 C++ スケッチライブラリ 公開ライブラリから

直接インポート別途入手しフォルダ内に展開

利用対価 無償 無償

人気度 ちょいマイナー ポピュラー

Page 7: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

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除く)

安い(変種多数)

Page 8: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

Arduinoボードの例Arduino Uno Arduino Mini LilyPad Arduino

定番タイプ ミニサイズ ウェアラブル向け

ハードウェア設計情報のEAGLEファイルが無料で公開されており、組み立て済みの基板を購入することもできる他、誰でも自分の手で Arduino を組み立てることができる(オープンソースハードウェア)

Page 9: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbedボードの例mbed LPC1768 mbed LPC11U24 mbed LPC1114定番タイプ 低電圧・低消費電力型 DIP型LPC1114搭載

今回のワークショップでは、DIP型のLPC1114マイコンを搭載し、プログラムを書き込んだマイコンを取り外し単体で使用することもできるmbed LPC1114を取り上げます

Page 10: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed LPC1114のピン配置

搭載しているNXP LPC1114FN28マイコンのピン配置と同じです(28ピン)

Page 11: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed LPC1114の特徴(特長)● DIPタイプのLPC1114FN28をソケットに挿した構造● プログラム書き込み済のLPC1114を取り外して単体で使える

単体利用時は外部からの電力供給(3.3V)が必要です

Page 12: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed LPC1114の特徴(特長)● LPC1114用のライタとみなすこともできる● 変換アダプタを介して他のタイプのLPC1114にも書き

込める

● TSSOP版のLPC1114FDH28に書き込んでいるところ● ピンは3(SWCLK), 12(SWDIO), 15(TXD), 16(RXD),VDD(21), GND(22), 23(nRESET)を使用

Page 13: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

ボードをPCに接続する

USBケーブルでPCと接続すると、ドライブとして認識されます。mbed開発環境からダウンロードしたファイルをドラッグ&ドロップするだけで、ボード上のマイコン(LPC1114)にプログラムを書き込むことができます

Page 14: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使う1.ユーザ登録

mbed.orgでユーザ登録をします。自分の名前、メールアドレスの情報,mbed.org内で使うユーザ名、パスワードを入力し,規約を読んで同意した後に登録を行います。ユーザはアカウントにログインした状態で自分のコードを書いたり、そのコードやその他の情報を公開・共有できるようになります。

URL: https://mbed.org/

Page 15: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使う2.コンパイラを起動する

● 登録したアカウントでDeveloper Siteにログインします● Compilerを起動します● mbedのオンライン開発環境が表示されます● 左のペインには、インポートしたり自作したプログラム群が並びます

● 右のペインにはコードの表示部と、その下に状態表示を行う部分があります

Page 16: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使う3.ターゲットボードを登録する

● 画面右上の「mbed NXP LPC1768」の表示をクリックし、Select Platformsダイアログを開きます● ダイアログ下部のAdd Platformを押し、表示される

Platformsのページからmbed LPC1114FN28を選択● Add to your mbed compilerを押すと登録されます

Page 17: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使う4.サンプルプログラムを使ってみる-1

● Importボタンを押し、Import Wizardを起動します● Programsタブから、一番上のmbed_blinkyを選択し、

Import!ボタンを押します● ダイアログが表示されます。Import As:はProgramを選択、Updateにはチェックを入れます

● mbed_blinkyプログラムがインポートされ、左ペインと右ペインに表示されます

● main.cppをクリックすると、プログラムコードが表示されます

Page 18: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使う5.サンプルプログラムを使ってみる-2

● プログラムの一部を、ボードに合わせて書き換えます● 具体的には、myled(LED1)をmyled(dp6)に書き換え● dp6ピンがDigitalOutクラス用にアサインされます

Page 19: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使う6.プログラムをコンパイルする

● Compileボタンを押すと、プログラムがコンパイルされてバイナリファイルが生成されます

● 表示されるダイアログで、保存を選択● ダウンロードフォルダにファイルが保存されます

Page 20: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使う7.プログラムをマイコンに書き込む

● ダウンロードしたファイルをMBEDドライブにドラッグ&ドロップします

● バイナリファイルがマイコンに書き込まれます● ボードのリセットボタンを押すとプログラムが起動します

Page 21: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使うmbed_blinkyの実体配線図

● 赤のLEDの長い方の脚(+)をdp6に、短い方の脚(-)をGND(8番目のピン)に接続

Page 22: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

いろいろなクラスを使ってみる1.BusOutクラス

● サンプルプログラムをインポートし、ボードに合わせて一部を書き換えます

● BusOutクラスを用いれば、複数のLEDやピンをまとめることができます

● インスタンスledsは、4つのピンをまとめた4ビットの出力となります。ここに値を代入すると、その2進値が各ピンに接続したLEDに表示されます

Page 23: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使うBusOut_sampleの実体配線図

● 各色のLEDの長い方の脚(+)をdp4,6,9,10に、短い方の脚(-)をGNDに接続

Page 24: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

いろいろなクラスを使ってみる2.DigitalInクラス

● DigitalInクラスを使い,宣言したピンを入力にします● そのピンにマイコン内蔵のプルアップ抵抗を接続します● ループ内では,ピンから読んだ信号を反転して、LEDの状態に反映させます

● ボタンが押された時にLOWが入力されるので、それを反転してLEDに出力させれば、ボタン押下げ時にLEDが点灯します

Page 25: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使うDigitalIn_sampleの実体配線図

● 赤色のLEDの長い方の脚(+)をdp6に、短い方の脚(-)をGNDに接続

● タクトスイッチの一方の脚をdp10に、他方をGNDに接続

Page 26: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

いろいろなクラスを使ってみる3.AnalogInクラス

● AnalogInクラスのインスタンスからは0Vを0.0,3.3Vを1.0とした正規化された値を読むことができます

● アナログピンには0V〜3.3Vまでの電圧を入力できます● LPC1114ではアナログピンは4つあります● このサンプルでは、AnalogInのインスタンスaiから読んできた値に15.0を掛けて4ビットの0〜15の値に変換し、4個のLEDで状態を確認できるようにしてあります

Page 27: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使うAnalogIn_sampleの実体配線図

● 各色のLEDの長い方の脚(+)をdp4,6,9,10に、短い方の脚(-)をGNDに接続

● 可変抵抗の中央の脚をdp13に、両端の脚をVIN(21番目のピン)、GND(22番目のピン)に、ジャンパーコードを介して接続

Page 28: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

いろいろなクラスを使ってみる4.Serialクラス

● Serialクラスのインスタンスを作成し,そのメンバ関数として用意されているprintfを使うとシリアルへの出力が可能です

● stdio.hで宣言されている入出力用の関数が揃っているので、シリアルの入出力を簡単に使うことができます

Page 29: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使うSerial_sampleの実体配線図

● 配線はAnalogIn_sampleと同じです

Page 30: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

PCでmbedのシリアル出力を見るには● Windowsマシンでmbedのシリアル出力を見るには,mbedのシリアルドライバが必要です

● ターミナルソフトも必要です。なければダウンロードしてインストールしてください

● Macではドライバのインストールは必要ありません● ターミナルソフトも、コマンドラインから「screen」コマンドが使えます

Page 31: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

いろいろなクラスを使ってみる5.Servoクラス

● Servoクラスのインスタンスを作成します● AnalogInのインスタンスaiの値によって、サーボの回転角を制御することができます

Page 32: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbed開発環境を使うServo_sampleの実体配線図

● 可変抵抗の中央の脚をdp13に、両端の脚をVIN(21番目のピン)、GND(22番目のピン)に、ジャンパーコードを介して接続

● サーボの信号線(白)をdp1、+(赤)をVIN、黒をGNDに接続

Page 33: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbedの応用例フリスク/ミンティア工作

● フリスクやミンティアなどのケース内に電子回路を組み込み● 扱いやすいDIP版LPC1114とボタン電池で手軽に作成

センサーなどを組み合わせ、インタラクティブな携帯機器を開発可能

Page 34: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbedの応用例ネギ

Page 35: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

mbedの応用例電動羽ばたき飛行機

● サーボダイレクトドライブで翼を羽ばたかせて飛行● 羽ばたき周期や羽ばたき角をLPC1114でコントロール

軽量化のためTSSOP版LPC1114を使用(飛行重量10g)

Page 36: 「使える!mbed」ワークショップ at ファブラボ北加賀屋 説明資料

参考にさせていただいたページ● 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