Weitere ähnliche Inhalte
Ähnlich wie Arduino compatible layer (with 6LoWPAN) on Contiki (20)
Kürzlich hochgeladen (11)
Arduino compatible layer (with 6LoWPAN) on Contiki
- 3. 3
Recent works
●
KiCad で雑に基板を作るチュートリアル
http://www.slideshare.net/soburi/kicad-53622272
●
TWE-Lite を ArduinoIDE で使う
http://qiita.com/soburi/items/0b0aa3d0c4332a5e7a4c
●
TWE-Lite を ArduinoIDE で使って IPv6(6LoWPAN) で通信する。
http://qiita.com/soburi/items/b07c314d33ef71a10001
●
ScratchX から WebSocket 経由で eject してみる。
http://qiita.com/soburi/items/ea12671f973d24e512b0
●
ScratchX と ESP8266 を WebSocket でつないで遊んでみる。
http://qiita.com/soburi/items/ec0a39e4c6f3b9de4de4
大好評!
It’s new!
It’s new!
ウケなかった!
それなり
一番労力かけたネタが一番ウケなくて残念な感じなので、
ボヤキ宣伝しにきました
- 5. 5
Contiki
● 最近流行りの軽量 OS
● TI とか Atmel とか Contribute してる
● TWE-Lite(JN5164) も対応している
● プロトスレッドの仕組みでスタックレスの
マルチタスク処理ができる ( 後述 )
- 6. 6
Protothreads
static
PT_THREAD(example(struct pt *pt))
{
PT_BEGIN(pt);
while(1) {
PT_WAIT_UNTIL(pt,
counter == 1000);
printf("Threshold reachedn");
counter = 0;
}
PT_END(pt);
}
static
char example(struct pt *pt)
{
switch(pt->lc) { case 0:
while(1) {
pt->lc = 12; case 12:
if(!(counter == 1000)) return 0;
printf("Threshold reachedn");
counter = 0;
}
} pt->lc = 0; return 2;
}
● 行番号を状態変数としてステートマシンを作るワンダフルなマクロ群
● プロセス毎にコールスタック要らないから確かにローコスト
● NICE JOKE.
- 7.
Coroutine
● Contiki には Multithreading API(Coroutine) がある。
● Protothreads でマルチタスクできるから
誰も実装していない!
● レジスタ・スタックの退避復元処理を書けば動く
● TWE-Lite の CPU の仕様が公開されてないから、
disassemble 見ながら Hack! した (F**k!)
● とりあえず動くようになった!
- 8.
Arduino Compatible API
● Coroutine があると Contiki 上に Arduino 互換
API を実装できる
(Protothreads の文法に従わなくて済む )
● OS ベースで動くので API でブロッキング動作
してる裏で仕事ができる
Arduino API から
ネットワークプロトコルスタックが使える !
- 9. 9
6LoWPAN
● IPv6 を低電力低帯域ネットに無理矢理通す仕様
● Contiki は大手マイコンベンダがコミットしていて
実質 6LoWPAN の Reference Implement
● Arduino の API から使えるようにできた!
● TCP/IP なので API もほぼ既存と共通にできた!
● Arduino でも Industries 4.0 っぽい感じに!
● UDP のペイロード 33byte しかないけどな!
- 10. 10
Conclusion
● Arduino 互換レイヤを Contiki 上に構築できた
● Contiki based Arduino 、まだ色々遊べそう
● TWE-Lite のアレな SDK 使わずに
Arduino ライクに作れるし
6LoWPAN で IoT ごっこもできるようになった