mbedを始めましょう!("Let's get started!" in Japanese)

このノートブックページは日本でのmbed普及加速を目的にまとめたものです.

This notebook page has been written in Japanese only.

"mbed"と関連のNXP LPCマイコンの総合情報はこちら >> http://www.nxp-lpc.com/
2011年2月25日,CQ出版よりmbedの入門書「マイコンと電子工作 No.5 特集 mbedで簡単ガジェット作り」が発売されました!
http://shop.cqpub.co.jp/hanbai/books/MBC/MBCZ201103.html
http://amzn.to/fLS87C
このページの本文(他ユーザからのコメントを除く)内容は,出典としてこのページのURLを明記していただけば自由にご利用いただけます.文や写真の引用/転載/改変などに制限はありません.

1. 開梱からユーザ登録まで

まず,箱を開けるところから.

...その前にインターネットに接続されたPCが必要です.できるだけ最新のWebブラウザを入れておくと良いと思います.

PCWindowsでもMacでもLinuxでも構いません.ブラウザはFirefoxSafariChromeInternetExplorerに対応しています.

さて,箱を開けると中にはまず,簡単な解説書,クイックリファレンスカード2枚,ステッカー,USBケーブルとmbed基板が入っています.

クイックリファレンスカードは便利なのでちゃんと取っておきましょう(これを書いてる私は,既にどこかに紛失してしまい毎回このページ を見に行ってます)

 

mbed基板とUSBケーブルをビニール袋から取り出し,PCにつなぎます.

PCにつなぐとmbed基板の真ん中にある青いLEDが光り,PCからは2MBUSBメモリとして認識され,「MBED」ドライブがPC上に表示されます.

もし上手くいかない場合は...

Windowsの場合,PCが認識するまで時間がかかる場合があります.そのような時には「F5」キーを押してリフレッシュさせてください.

あるいは,USBのコネクタがしっかり差し込まれていないかもしれません.

 

表示された「MBED」ドライブを開きます.するとその中には「MBED.HTM」と名付けられたファイルが入っています.

このファイルには,そのmbedのシリアル番号とmbedwebページへのリンク情報が入っています.これをダブルクリックするとブラウザのウィンドウが開き,mbedのログイン・ページが表示されます.

(「MBED.HTM」ファイルは消してしまっても問題ありません.mbed基板に電源を入れ直すと また現れます.)

 

 

新しくmbedを始めるには,ユーザ登録が必要です.このページの右側,チップの絵のある方の「Signup」 をクリックしてユーザ登録ページに進みます.

 

ユーザ登録にはメールアドレス,mbedサイトでつかうユーザ名(ログイン名),パスワード,他のユーザから見られることになる名前を入力します.

最後に「terms and condition」をよく読み,それに同意出来る場合は「I agree ...」にチェックを入れ,「Signup」ボタンを押すと次のページが表示されます.


これで準備ができました.

2. ユーザ登録が完了すると,いよいよコードを動かせます.


まずは動作チェックとして「HelloWorld.bin」を動かしてみましょう.
mbedには文字表示部がないので,基板上のLEDをチカチカさせるプログラムになります.

ページ内のmbed基板の画像の下にある「HelloWorld.bin」をクリックしましょう.

そうすると,webブラウザはファイル(HelloWorld_LPC1768.bin)をダウンロードし始めます.
ダウンロードしたファイルは何処に置いても構いません.このファイルがmbed基板で実行するプログラムです.

ダウンロードが完了したら,ファイルを「MBED」ドライブ内にコピーしましょう.

コピーが完了したら,いよいよ実行です.

mbed基板真ん中にあるボタン(リセット・ボタン)を押すと,基板に4個並んだLEDのうちの1個(最も左のもの)が点滅します.

3. 自分のプログラムを作る!


いよいよ自分のプログラムを書いてみましょう.
mbedのページにはいろんなリンクが張られていますが,右上の方に「Compiler」というリンクがあります.見えなければ適宜ウィンドウの幅を広げたり,横方向にスクロールしてみてください.

たったの60秒でmbedコンパイラを紹介する動画(http://mbed.org/blog/entry/138/)が 公開(2010年5月21日)されています.こちらも参考にどうぞ.

これをクリックするとmbedのオンライン開発環境が表示されます.
左はしの部分には自分の作ったプログラム達が並ぶことになります.
右側にはコードの表示部とその下に状態表示を行う部分があります.


それではプログラムを作ります.
ウィンドウ左上にある「New」ボタンをクリックしてください.そうするとこの新しいプログラムに名前をつけてくださいと言われます.名前は自由につけられますが,残念ながら日本語の名前はつけられません.

ここでは適当に「program0」という名前をつけました.「OK」ボタンを押します.

すると左側の部分に新しいプログラムができます.さっきつけた名前のプログラムです.
この中には「main.cpp」という名のソース・ファイルと「mbed」というライブラリが入っています.

「main.cpp」をクリックするとその中身が表示されます(下の画面の例ではフォントの表示を大きくしています).

これが先ほど実行させたHelloWorldプログラムです.このコードをコンパイルしたものを,実行させていました.
さて...いよいよコンパイル...いや,その前に一箇所だけ書き換えておきましょう.
mbedの基板では先ほどのプログラムがまだ動いており,LEDがチカチカしてると思います.
今回コンパイルするプログラムはこれと全く同じものなので,新しいのが動いたのかどうかが分かりません.
ソースコード3行目には「DigitalOut myled(LED1)」と書かれています.この「LED1」を他のLEDを光らせるように書き換えます.基板に4個並んだLEDは「LED1〜LED4」の名前が与えられているのでそのうちのどれかを使ってください.
ここの例では「LED4」としました.

さて,コンパイルを行います.画面上の方に並んだボタンの中に「Compile」があるのでそれをクリック.そうすると,先ほどのコードはwebサーバ側でコンパイル,リンクされ実行コードが作られます.
完了すると右下枠内に「Success!」が表示され,webブラウザがファイルをダウンロードするように言ってきます.
このファイルを,さっきと同じようにMBEDの中に保存すれば,あとはmbed基板上のリセットボタンが押されるのを待つだけとなります.

ではmbed基板上のリセットボタンを押してみましょう.(mbed内部では [1] リセットがかかり,[2] 保存されたデータがLPC1768チップのフラッシュにコピーされ [3] 実行が開始されます.)

ちなみに...今後このようにして色々なプログラムがたくさん作られ,一度に複数のファイルがMBEDに保存された場合にはどうなるのでしょうか?
mbedはリセットボタンが押されると,自分の中の最も新しく保存されたファイル(タイムスタンプの最も新しいもの)を実行するように作られています.

4. プログラムを少し改造してみる

先ほどのLEDの自動点滅プログラムを少し改造してみましょう.
(ここの例は,mbedのプログラミングを紹介するwebページ(http://mbed.org/handbook/Programming)に掲載されているものをベースにしています.)
コードは以下のようなものでした.

#include "mbed.h"

DigitalOut myled(LED4);

int main() {
    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

これにアナログ入力を加えます.
pin20に入ってくる電圧によってLEDの点灯状態を変化させます.

#include "mbed.h"

AnalogIn myinput(p20);
DigitalOut myled(LED4);

int main() {
    while(1) {
        if( myinput > 0.5 ) {
            myled = 1;
        } else {
            myled = 0;
        }
    }
}

これをコンパイルして実行してみます.
(半導体屋の観点からは,あまりおすすめ出来る方法ではありませんが)pin20を指で触ってみましょう.触れている間,LEDが点灯します.

myledに1や0を代入することでLEDの制御が行えましたが,今度は入力を試してみています.
pin20のアナログ入力として定義されたmyinputからは,代入をを行うとその時のpin20の電圧に応じて0から1.0までの値が得られるようになっています(0=0V〜1.0=3.3V).ここではmyledの値が0.5(つまり1.65V以上)の時にLEDを点灯するプログラムになっています.

5. 次は?

ここまでで基本編は終わりです.ここからはHandbookCookbookページを見ながら探求をされるのがよいとおもいます.

6. おまけ

おまけ編 (http://mbed.org/users/nxpfan/notebook/lets_get_started_jp_omake/)を用意しました.アナログ入力をファイルに記録して,表計算ソフトでグラフを書いてみます.


22 comments

25 May 2010

凄く丁寧な解説ありがとうございました。

凄く参考になりました。

アナログ入力まで迷わずに出来ました。

そう言っていただけるととても励みになります.ありがとうございます.

この続編も企画中です.またこのほか解説にはこのようなページも存在しています.

http://mbed.org/users/okano/notebook/langja-personal-memo-usb%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E5%85%A5%E5%87%BA%E5%8A%9B/

11 Aug 2010

届いてから本サイトを見て5分でここのチュートリアルが終わりました。

わかり易い解説ありがとうございます。それにしても面白い仕組みですね。電子工作系って環境構築がしんどいってイメージがありましたが、

完全に払拭されました。Macで何も考えずに使えるのが幸せっす。

ありがとうございます.コメントを頂けて,この上なくうれしいです!<br>このページを長々と書いたのですが,実作業は確かに,あっという間に済んでしまいます.逆にちょっと呆気ないです.

Macはprintfなどを使ったターミナル入出力に,別のドライバやソフトを入れなくてすむので便利です.
(二つ上のコメント(2010/05/25のNXP fanのもの)にシリアルについてのリンクもあるのでご覧ください)

03 Feb 2011
初歩的な質問です. MBEDにとっての標準入出力はどれになるのですか. つまり,printfやscanfはどこへ出力,あるいはどこから入力することになるのでしょう. お教え下さい..
03 Feb 2011 . Edited: 03 Feb 2011
mbedのUSBはストレージだけでなく「仮想シリアルポート」としての機能も有しています.PC上のターミナルをprintfやscanfの入出力対象として使えます. 次のURLを参考にしていただけるかと思います
http://mbed.org/users/okano/notebook/langja-personal-memo-usb%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E5%85%A5%E5%87%BA%E5%8A%9B/
30 Mar 2011

ソフトを書き換えた後にリセットボタンを押して新しいプログラムをリロードしますが、これをプログラムから実行する方法をご存知の方がいらっしゃいましたら、コメント願います。 「仮想シリアルポート」を使用して作業していますが、TerminalからのコマンドでRestartする方法を探してます。

 

30 Mar 2011 . Edited: 30 Mar 2011
ソフトウェア内だけでmbed全体をリセットする方法は不明ですが,pin4のリセットピンを自分で叩くという方法も考えられます. あらかじめpin4(/Rest)とpin5を接続しておき,下のコードを実行すると約5秒後にリセットがかかります. http://mbed.org/users/okano/programs/_sample_self_reset/louraw
30 Mar 2011 . Edited: 30 Mar 2011
(erased)
30 Mar 2011

コメントありがとうございました。 なるほど "nR"がリセットでポートで叩けば良いということでした。 ソースまでアップして頂き、ありがとうございました。

今、フォーラムで検索したら以下の方法が見つかりました。 

http://mbed.org/forum/mbed/topic/318/?page=1#comment-1609

「仮想シリアルポート」からは"ALT+B"で、プログラムからは"mbed_reset();"でリセット出来ます。 両方試しましたが、うまくいきました。

30 Mar 2011
了解です.仮想ポートやプログラムからリセットの方法があるのは知りませんでした(私が見た限りでは見つけられませんでした).ありがとうございます.
12 Aug 2011 . Edited: 12 Aug 2011

こんにちは。

mBEDは、技術の進化を実感できるインパクトのある製品(プロトタイピングツール?)でした。

いろいろと試した後、マルチタスクOS(mBos)をいれて、SPIインターフェースをつかった多チャンネル・データアクイジッション基板の簡易デバッグツール

を作ってみましたが、制約無くCやC++でプログラムが記述できるので、非常に楽でした。また、開発環境をPCにインストールしなくても良く、またPC

と基板があれば、クラウドで作業がどこでも続行できるのは(開発ツールへの不満はあるにしても)とても新鮮で、ある意味感動しました。

一つ質問なのですが(どこかで回答を見たような気がするのですが、確認できなかったので)、mBedのクラウドの環境で作ったコードを、そのままプロセッサ

本体だけをのせたカスタム基板で実行させる事は可能でしょうか(むろん、USBストレージとしてコードを格納できないので、プロセッサ内部に書き込むとして)。

mBedのDIP40の各ピンと同じようにI/Oの配線を引き出して、同じようにクロックをつけたLPC1768本体の基板をつくったとしての話です。JTAGのプログラマ等

を含んだ開発環境で、mBedのコードや実行モジュールをロードしてできるかぎりそのまま(なくなった機能は当然使用しないとして)、再利用したいという趣旨です。

プロトタイプツールとすると、可能だと思うのですが可否の情報が見つかりません。

 

13 Aug 2011

自己レスになりましたが、複数情報が見つかりました。

http://mbed.org/users/chris/notebook/prototype-to-hardware/

ISP の場合は、このリンクが参考になりました。JTAGとあわせて試してみる予定です。

mBed内にランタイムのコードが含まれているのかと思いましたが、USBインターフェースのチップがコンパイラの作ったコードをそのままプロセッサ

に書き込んでいるようです。このあたり、notebook の最初の目次に一章設けて整理して情報が提供されていると良いと思います。

 

15 Aug 2011 . Edited: 15 Aug 2011

返事が遅くなってしまいました.スミマセン
その通り,http://mbed.org/users/chris/notebook/prototype-to-hardware/が最も良い情報だと思います.
この他,NXPのLPCXpressoを用いてmbedコードを実行する例が次のページに用意されています
http://mbed.org/users/nxpfan/notebook/mbed-led-blink-code-on-lpcxpresso-lpc1768/#japanese

情報の提示方法についても提案いただきありがとうございます.このnoteページは初めての方向けなので,提供の仕方を考えてみます.

11 Mar 2014
ありがとうございます。 分かりやすい説明のおかげでスムーズにテストプログラムを走らせるところまで行きました。 助かりました。 テストプログラムを順次実行して行ってみて,ちょっと引っかかったのは, テストプログラムの PCにprintfとかで通信を行う際,Windowsだとドライバのインストールが 必要なのですね。 http://www.eleki-jack.com/arm/2010/08/-mbed1.html 後は順調です。いろいろ遊べそう。
24 Dec 2014
はじめまして、mbed初心者です。 購入して暫く眠っていた「mbed LPC1768」を使いはじめたのですが、 「MBED」ドライブへのbinファイルの書込みで苦労しています。 具体的には、下記の様な不具合が頻繁に発生するのでが、ファーム ウェアを最新版にアップデートしても完全に問題が解消されません。 どなたか同じ様な経験をされたユーザで、解決方法をご存じでしたら 教えてください。 【不具合】  (1)アプリ実行中に新しいバージョンのアプリや別のアプリのbin    ファイルを「MBED」ドライブにドロップ(書込み)できない。  (2)「MBED」ドライブ内のファイルが削除できない。  (3)「MBED」ドライブをSDフォーマットできない。
26 Jul 2015
ありがとうございます。 こちらの手順にしたがって Lチカを確認できました。 当方、母艦PC は Ubuntu 15.04 です。 MBED.HTM で飛んだ先では、HelloWorld.bin をダウンロードできるリンクは見つけられませんでした。 そこで、目立つ場所にあった "Import Program" をクリックしてみると、オンライン開発環境が起動しました。 少し面食らいましたが、こちらの解説で Compile で bin を生成して、ダウンロードされたファイルを mbed に書き込めばよいと分かり、そのとおりに実行することができました。 アナログ入力 Pin20 は指で触れても反応しませんでした。 そこで、ブレッドボードを使い、VOUT に 1KΩの抵抗をはさんでプルアップしたら所望の動作になりました。 LPC1768 の基盤は秋月で購入しました。 これには、B4サイズの日本語のスタートアップガイドが入っていました。 そのガイドは両面あって、片側が LPC1768 セットアップガイド、反対側が LPC1114、LPC1343 のもののようです。 その反対側では、LPCXpresso IDE をダウンロードして、アクティベートするように記載されています。 これが LPC1768 にも当てはまるのかと思って IDEを入れてみたのですが、用意されている Example を実行しようとしたところ、エミュレータが見当たらないという状況で先へ進めなくなりました。 LPCXpresso IDE が LPC1768 で使えるかどうかはよく分かりませんが、特に困らない限りはオンライン開発環境だけで進めようと思います。 電子工作は今回でまだ2回目で、初回は2年前の LPC1114 でした。 久しぶりの再チャレンジで、今回は「Interface 2015年8月号」に掲載されていたカメラモジュールOV7670 + FIFO を接続する予定です。 余談が長くなりました。 いろいろとお世話になることもあるかもしれませんが、よろしくお願いします。
25 Mar 2016
勝純一さんの「mbed電子工作レシピ」の本を購入し、mbedにて、Lチカを始めました。 所が、思わぬところで、つまずいてしまい、途方にくれています。 何方か、ご存じの方、ご教授お願いします。 作業は、順調に進み、下記の所まで来ましたが、ここで失敗しました。 「完了すると右下枠内に「Success!」が表示され,webブラウザがファイルをダウンロードするように言ってきます. このファイルを,さっきと同じようにMBEDの中に保存すれば,あとはmbed基板上のリセットボタンが押されるのを待つだけとなります.」 コンパイル成功後、binファイルをダウンロードするときに、「名前を付けて保存」等の矢印押しボタンがあると思いますが、 ここで、連続ダウンロードするを選んでしまし、それ以降、何時でも、実行ファイルの連続ダウンロードをしてしまいます。 これの解除方法が分かりません。 どのように、設定すれば、元に戻せるのでしょうか? よろしくお願い致します。
16 Jan 2017
毎回初歩的な質問で申し訳ありません。 DigitalOut a[]={p5,p6,p7};と、p5とp6とp7を出力に設定し、 a[0]=0,a[1]=0,a[2]=0、a[0]=1,a[1]=0,a[2]=0、a[0]=0,a[1]=1,a[2]=0、a[0]=1,a[1]=1,a[2]=0、a[0]=0,a[1]=0,a[2]=1、~ と出力の状態を変えていきたいのですが、for(i = 0; i < 8; i++)を使って記載するとしたらどのように記載すれば良いのか 教えていただけませんでしょうか。
18 Mar 2017
初心者です OSはWin8.1、MPUはSTM32F401Nucleo-64でmbedをを使用しています。 何回かLチカ、温度プログラム等のサンプルプログラムをコンパイルビルドして binファイルを作成し、NODE_F401RE(Gドライブ)へコピーをしSTM32F401Nucleo-64に 書き込みを行ってましたが、SDカードのプログラムを試行錯誤しているうちに、binファイル はできるのですが、NODE_F401RE(Gドライブ)へコピーをすると ”NODE_F401RE"に十分な領域がない と停止してしまいます。詳細情報をクリックしても変化は見られません NODE_F401RE(Gドライブ)をフォーマットすればよいと記してありましたがウィンドウズでは フォーマットできませんでした と帰ってきます 一応ドライブの中身は手動にて消去しましたがやはりフォーマットは出来ませんでした なにかインストールできる良い方法は無いでしょうか 
17 Dec 2017
"「Signup」ボタンを押すと次のページが表示されます." とありますが 説明と異なる画面が出てきます。この説明は古いので最新WEBページとは ちがいますか。それとも私の操作が間違っていますか。
05 Mar 2018
このページのおかげでmbed使用のチュートリアルが終わりました。 初心者なのですごく参考になりました。 分かりやすい説明ありがとうございます。 これからいろいろ作っていきたいと思います。

You need to log in to post a comment