Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Arduino compatible layer (with 6LoWPAN) on Contiki

2,327 views

Published on

for osunc16kawagoe

Published in: Technology
  • Be the first to comment

Arduino compatible layer (with 6LoWPAN) on Contiki

  1. 1.   Arduino compatible layer (with 6LoWPAN) on Contiki soburi Open Source UN-Conference 2016 Kawagoe 2016/4/24
  2. 2. 2  About ● UNIX 島の老害サークルやってます – Twitter https://twitter.com/crs – GitHub https://github.com/soburi ● 夏冬の祭り以外は大して活動してません。 ● 技術書典応募してみました。
  3. 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! ウケなかった! それなり 一番労力かけたネタが一番ウケなくて残念な感じなので、 ボヤキ宣伝しにきました
  4. 4. 4  TWE-Lite ● IEEE802.15.4 が話せるマイコン ● 秋葉原のあちこちで 1500 円で売っている ● 中身は JN5164 という NXP の石だが、 ARM ではなくて OpenRISC 派生の独自アーキテクチャ (BA2) ● NXP の SDK はそこそこマトモだが、 国内流通版の SDK(APP-FW) が 色々とアレ
  5. 5. 5  Contiki ● 最近流行りの軽量 OS ● TI とか Atmel とか Contribute してる ● TWE-Lite(JN5164) も対応している ● プロトスレッドの仕組みでスタックレスの マルチタスク処理ができる ( 後述 )
  6. 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. 7.   Coroutine ● Contiki には Multithreading API(Coroutine) がある。 ● Protothreads でマルチタスクできるから 誰も実装していない! ● レジスタ・スタックの退避復元処理を書けば動く ● TWE-Lite の CPU の仕様が公開されてないから、 disassemble 見ながら Hack! した (F**k!) ● とりあえず動くようになった!
  8. 8.   Arduino Compatible API ● Coroutine があると Contiki 上に Arduino 互換 API を実装できる (Protothreads の文法に従わなくて済む ) ● OS ベースで動くので API でブロッキング動作 してる裏で仕事ができる Arduino API から ネットワークプロトコルスタックが使える !
  9. 9. 9  6LoWPAN ● IPv6 を低電力低帯域ネットに無理矢理通す仕様 ● Contiki は大手マイコンベンダがコミットしていて 実質 6LoWPAN の Reference Implement ● Arduino の API から使えるようにできた! ● TCP/IP なので API もほぼ既存と共通にできた! ● Arduino でも Industries 4.0 っぽい感じに! ● UDP のペイロード 33byte しかないけどな!
  10. 10. 10  Conclusion ● Arduino 互換レイヤを Contiki 上に構築できた ● Contiki based Arduino 、まだ色々遊べそう ● TWE-Lite のアレな SDK 使わずに Arduino ライクに作れるし 6LoWPAN で IoT ごっこもできるようになった

×