MiMic RemoteMCU for mbed. This program provides MCU control API over REST API. It can control MCU from Javascript,PHP or any HTTP rest client directly. And, The application has self development environment.

Dependencies:   libMiMic mbed-rtos mbed NySDFileSystem

English

This is MiMic project product.

Recently modern browser is very useful. If we write small HTML code, we can draw graphics, play music. And more, we can use a lot of libraries. For example, physics engine and WebGL and .

However, the browser is clumsy for things of outside computer. For example, it can not control switching of LED and read sensor value easily.

If you can control the device outside of the computer like writing a Web page HTML, it is very convenient.

MiMicRemoteMCU enables to control directly mbed(LPC1768/LPC4088/LPCXpresso1769) by browser application .

Feature 

This is the features of MiMicRemoteMCU to experience for the user.

MiMicRemoteMCU has builtin web content in on-chip memory and some WebAPI. Browser can access contents through internal web server. The web server can handle 4 connections in parallel. Average transport speed is 1.6Mbps.

/media/uploads/nyatla/function_block.png

Browser(User interface) centralized system

From the perspective of the web browser, MiMicRemoteMCU is a standard web server. There is a Web browser is the center of the system.

By designing the browser center system, you can easily implement cooperation with multi-media system or external Web services. And, You can take advantage of all online resources that you can access from the browser. It was difficult in the standalone microcomputer legacy applications design.

/media/uploads/nyatla/fig3.png

Getting started

See more information here(Japanese).

This is old documentation(English).

日本語

新しいAPIを搭載したmbedJSをリリースしました。mbedJSのご利用をご検討ください。

Import programmbedJS

This is a Json-RPC/2.0 server with websocket and httpd. You can control mbed(s) by Javascript, processing, Java. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088

このアプリケーションはMiMic project を使った製品です。

最近のブラウザって便利ですよね。HTMLをちょこっと書けば、絵を描いたり音楽を再生したり、OpenGLやら物理演算やらなんでも出来てしまいます。

でもコンピュータの外の事、例えばその辺にあるLEDを点滅させたいとかちょっとセンサの値を読み出したいとか。そういったものには途端に不器用になります。

Webページを書くような感覚でコンピュータの外にあるデバイスを操作できれば便利だと思いませんか?

MiMicRemoteMCUをインストールしたmbed(LPCXpresso1769)を使えば、コンピュータの外にあるデバイスを、ブラウザから直接扱うことができます。

/media/uploads/nyatla/mimicrmcu1.4.png

機能

MiMicRemoteMCUの機能を紹介します。対外的な機能はMiMicRemoteMCUのROMContentsに収録されており、内蔵Webサーバを通じてWebブラウザから提供します。このWebサーバは最大4接続までのコネクションを、平均1.6Mbpsで提供することができます。

/media/uploads/nyatla/function_block.png

MiMicのアプリケーション開発

MiMicRemoteMCUはブラウザ中心のフィジカルコンピューティングを実装することに適しています。ブラウザ中心のシステムを設計することで、従来のマイコン単体アプリケーションでは難しかった外部Webサービスやマルチメディアシステムとの連携を容易に実装できます。さらにブラウザからアクセスできる全ての場所にあるオンラインリソースを活用することが出来ます。

/media/uploads/nyatla/fig3.png

導入方法

こちらの記事をご覧ください。

Committer:
nyatla
Date:
Sat Apr 27 13:32:30 2013 +0000
Revision:
7:8cbfa0625c51
Parent:
5:227d20070da4
Child:
8:67cfd3a3b8b1
Add LocalFileSystemLink(SD/LocalFile)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 4:00b4e7596014 1 #include "mbed.h"
nyatla 5:227d20070da4 2 #include "SDFileSystem.h"
nyatla 1:82b8312c78a1 3 #include "mimic.h"
nyatla 1:82b8312c78a1 4 #include "fsdata.h"
nyatla 1:82b8312c78a1 5
nyatla 1:82b8312c78a1 6 /**
nyatla 3:335512e81ba9 7 * local filesystem support.
nyatla 3:335512e81ba9 8 */
nyatla 3:335512e81ba9 9 LocalFileSystem lf("local");
nyatla 7:8cbfa0625c51 10 SDFileSystem sd(p5, p6, p7, p8,"sd");
nyatla 5:227d20070da4 11
nyatla 5:227d20070da4 12 DigitalOut led1(LED1);
nyatla 5:227d20070da4 13 DigitalOut led3(LED3);
nyatla 5:227d20070da4 14 DigitalOut led4(LED4);
nyatla 3:335512e81ba9 15
nyatla 3:335512e81ba9 16 /**
nyatla 1:82b8312c78a1 17 * MiMic RemoteMCU httpd.<br/>
nyatla 1:82b8312c78a1 18 * <p>Service list</p>
nyatla 1:82b8312c78a1 19 * <pre>
nyatla 1:82b8312c78a1 20 * /rom/ - romfs
nyatla 1:82b8312c78a1 21 * /setup/ - MiMic configulation REST API.
nyatla 1:82b8312c78a1 22 * /local/ - mbed LocalFileSystem
nyatla 1:82b8312c78a1 23 * /mvm/ - MiMicVM REST API
nyatla 1:82b8312c78a1 24 * </pre>
nyatla 1:82b8312c78a1 25 */
nyatla 1:82b8312c78a1 26 class MiMicRemoteMcu:public MiMic::Httpd
nyatla 1:82b8312c78a1 27 {
nyatla 1:82b8312c78a1 28 private:
nyatla 1:82b8312c78a1 29 ModRomFiles modromfs; //ROM file module
nyatla 1:82b8312c78a1 30 ModMiMicSetting mimicsetting; //mimic setting API
nyatla 1:82b8312c78a1 31 ModRemoteMcu remotemcu; // remotemcu API
nyatla 3:335512e81ba9 32 ModLocalFileSystem modlocal; //basic URL parser
nyatla 5:227d20070da4 33 ModLocalFileSystem modsd; //basic URL parser
nyatla 3:335512e81ba9 34
nyatla 1:82b8312c78a1 35 public:
nyatla 1:82b8312c78a1 36 MiMicRemoteMcu():Httpd(80)
nyatla 1:82b8312c78a1 37 {
nyatla 7:8cbfa0625c51 38 this->modromfs.setParam("rom",RMCU_FSDATA,20);
nyatla 3:335512e81ba9 39 this->mimicsetting.setParam("setup");
nyatla 3:335512e81ba9 40 this->remotemcu.setParam("mvm");
nyatla 3:335512e81ba9 41 this->modlocal.setParam("local");
nyatla 5:227d20070da4 42 this->modsd.setParam("sd");
nyatla 1:82b8312c78a1 43 }
nyatla 1:82b8312c78a1 44 virtual void onRequest(HttpdConnection& i_connection)
nyatla 1:82b8312c78a1 45 {
nyatla 1:82b8312c78a1 46 //try to ModRomFS module.
nyatla 1:82b8312c78a1 47 if(this->modromfs.execute(i_connection)){
nyatla 1:82b8312c78a1 48 return;
nyatla 1:82b8312c78a1 49 }
nyatla 1:82b8312c78a1 50 //try to ModMiMicSetting module.
nyatla 1:82b8312c78a1 51 if(this->mimicsetting.execute(i_connection)){
nyatla 1:82b8312c78a1 52 return;
nyatla 1:82b8312c78a1 53 }
nyatla 1:82b8312c78a1 54 //try to ModRemoteMcu module.
nyatla 1:82b8312c78a1 55 if(this->remotemcu.execute(i_connection)){
nyatla 1:82b8312c78a1 56 return;
nyatla 1:82b8312c78a1 57 }
nyatla 3:335512e81ba9 58 //try to ModLocalFileSystem
nyatla 3:335512e81ba9 59 if(this->modlocal.execute(i_connection)){
nyatla 3:335512e81ba9 60 return;
nyatla 3:335512e81ba9 61 }
nyatla 5:227d20070da4 62 //try to ModLocalFileSystem(SD)
nyatla 5:227d20070da4 63 if(this->modsd.execute(i_connection)){
nyatla 5:227d20070da4 64 return;
nyatla 5:227d20070da4 65 }
nyatla 3:335512e81ba9 66
nyatla 1:82b8312c78a1 67 //Otherwise, Send the redirect response to /rom/index.html
nyatla 1:82b8312c78a1 68 i_connection.sendHeader(301,
nyatla 1:82b8312c78a1 69 "text/html",
nyatla 5:227d20070da4 70 "Status: 302:Moved Temporarily\r\n"
nyatla 4:00b4e7596014 71 "Location: /rom/index.html\r\n");
nyatla 1:82b8312c78a1 72 return;
nyatla 1:82b8312c78a1 73 }
nyatla 1:82b8312c78a1 74 };
nyatla 5:227d20070da4 75
nyatla 1:82b8312c78a1 76 int main()
nyatla 1:82b8312c78a1 77 {
nyatla 5:227d20070da4 78 {DigitalOut led(LED1);led=0;}
nyatla 5:227d20070da4 79 {DigitalOut led(LED2);led=0;}
nyatla 5:227d20070da4 80 {DigitalOut led(LED3);led=0;}
nyatla 5:227d20070da4 81 {DigitalOut led(LED4);led=0;}
nyatla 5:227d20070da4 82
nyatla 4:00b4e7596014 83 NetConfig cfg; //create network configulation with onchip-setting.
nyatla 4:00b4e7596014 84 cfg.loadFromFile("/local/mimic.cfg"); //try to override setting by local file.
nyatla 4:00b4e7596014 85 Net net(cfg); //create a net instance
nyatla 1:82b8312c78a1 86 MiMicRemoteMcu httpd; //create a httpd instance.
nyatla 1:82b8312c78a1 87 httpd.loop(); //start httpd loop.
nyatla 1:82b8312c78a1 88 return 0;
nyatla 1:82b8312c78a1 89 }