O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Arduino compatible layer (with 6LoWPAN) on Contiki

2.284 visualizações

Publicada em

for osunc16kawagoe

Publicada em: Tecnologia
  • Seja o primeiro a comentar

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 ごっこもできるようになった

×