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.

オムロンの高機能なGroveセンサをElixirで使いたい!??

282 views

Published on

2019年4月21日開催されたIoTあるじゃん関西支部で,飛び込みでLT発表しました〜

高機能オムロンセンサで遊ぼう!マイコンボードろんろん会@京都(ALGYAN関西支部)
https://algyan.connpass.com/event/125061/

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

オムロンの高機能なGroveセンサをElixirで使いたい!??

  1. 1. IoTあるじゃん 関⻄ろんろん会 オムロンの⾼機能なGroveセンサを Elixirで使いたい︕︖︖ ⾼瀬 英希 takase@i.kyoto-u.ac.jp
  2. 2. SlideShare仕様に 対応するための無駄ページです P.4以降の下線と枠付き画像には ハイパーリングが付いています
  3. 3. SlideShare仕様に 対応するための無駄ページです P.4以降の下線と枠付き画像には ハイパーリングが付いています
  4. 4. ⾃⼰紹介 @takasehideki ­ 京都⼤学 情報学研究科 助教 ­ JSTさきがけ 兼任研究者 ­ SWEST プログラム委員⻑ ­ IPSJ-SIGEMB 運営幹事 ­ IEICE-RECONF 専⾨委員 ­ TOPPERSプロジェクト 特別会員 ­ ROS Japan UG ü 関⻄勉強会 主催 ü ROSConJP 2019 実⾏委員 ­ IoTあるじゃん(ALGYAN) 運営委員 ­ fukuoka.ex キャスト 4
  5. 5. オムロン⾼機能センサ 5 ラズパイ3Bのデバドラが公開されてる︕︕ https://github.com/omron-devhub/2smpb02e-grove-raspberrypi でもPython かぁ,,, とりま動かして みましょう
  6. 6. Elixirとは︖ 2012年に登場した新たな関数型⾔語 6 Erlang VM上で動作 • ⾼い並列性能を誇る • 軽量かつ頑強なプロセスモデル • 耐障害性が極めて⾼い Rubyを基にした⾔語設計 • 習得しやすく⽣産性が向上する • WebフレームワークPhoenixを持つ Ø応答性が極めて⾼い
  7. 7. Elixir “ZEN” Style • データと並列処理の流れを直感的に記述 • Enum︓ データコレクションを操作 • Flow︓ 並列処理を直接的に記述 ­ MapReduceモデル • |>︓パイプライン演算⼦ データの流れを表現 • その他の⻑所・特徴 ­ 変数のイミュータブル性 ­ 分散システム対応 7 1..1000 |> Flow.from_enumerable() |> Flow.map(&foo(& 1)) |> Flow.map(&bar(& 1)) |> Enum.to_list |> Enum.sort IoTデバイス開発にも 使えるんじゃね︖︖
  8. 8. 世界の「ElixirでIoT」 8 • HWもSWもセットでご提供!! • Erlang VMがbare metalで動く • 300MHz Cortex-M7 & 64MB Flash • On-board WLAN & Pmodコネクタ • ラズパイ等が(限定)対象 • メモリサイズ数10MB︕ • クロス開発はツラい,,, • ESP32/STM32で Elixir/Elarngが動く!! • ファームは約700KB!! • 機能実装はまだ限定的 New!!
  9. 9. とりあえずIoTデバイスやってみた 9
  10. 10. Nerves/GrovePiやってみた 1. GrovePiライブラリを調べて試してみた 2. 温湿度センサDHT11を使ってみた 3. LCD displayにデータを表⽰してみた 4. センサデータをCSVで書き出してみた 5. Phoenixページにグラフを表⽰してみた 6. 書き出したCSVデータをグラフ表⽰してみた 7. 環境センシングしながらリアルタイムで グラフ表⽰してみた︕ 10 おもろかったら starください︕︕ GitHubのディレクトリ対応︓ 1. grovepi_example/ 2. dht_sensor/ 3. home_weather_dislay_host/ 4. home_weather_csv/ 5. phx_chartjs/ 6. phx_csvchart/ 7. home_weather_phx/
  11. 11. 1. GrovePiライブラリ • Groveとは︖︓ ­ IoTのセンサ・アクチュエータが画⼀化されたモジュール ü最低でも86種類︖(@mine820さんのQiita記事調べ) ­ ⼊出⼒ピンx4のGroveコネクタで簡単に付け替えできる ­ ラズパイやArduinoなどに適合するシールドもあり → IoTシステムをお⼿軽にラピッドプロトタイピング︕ 11
  12. 12. 1. GrovePiライブラリ • nerves_grove ­ Elixirで使えるGroveライブラリ from Nerves ­ ブレッドボードで稲作の必要あり ­ 下回りは elixir_ale (Elixir Actor Library for Embedded) üラズパイ⽤のGPIOs, I2C, SPIのライブラリ üMIX_ENV=prod で動かす必要あり︖ üさらにその下は GenServer/SuperVisor ­ 2016年9⽉で開発⽌まってる,,, 12
  13. 13. 1. GrovePiライブラリ • GrovePi ­ ラズパイのGrovePi+シールドに対応したライブラリ ü⽥んぼを耕さなくていい︕ ­ examples も⽤意されていて親切︕ üalarm/ üdemo_pivotpi/ üdemo_rgblcd ühome_weather_display/ p Nervesアプリ,,, üled_fade/ 13 Qiita「ElixirでIoT#5」にて 導⼊⽅法などを解説してます!!
  14. 14. 2. 温湿度センサ • Temperature&Humidity Sensor ­ DHT11を搭載したデジタル温度湿度センサ ü40ビットのビットフィールドで取得される p 温度︓0.0~50.0℃ / 1.0℃単位 / ±2.0℃誤差 p 湿度︓20.0~90.0% / 1.0%単位 / ±5.0%誤差 ­ Elixirからの使い⽅はソース嫁 m(_ _)m ü3秒毎に値の差分があれば標準出⼒ üホスト上(nerves_runtime無し)で動くようにしてます 14
  15. 15. 論よりrun!! 〜Nerves〜 15 https://qiita.com/takasehideki/items/ b0a07455d88a1f349a6e
  16. 16. ということで今⽇やりたいコト 16 あ…ありのまま 今 起こった事を話すぜ︕ 「Elixirを書いていたら オムロンGroveセンサが使えてた」 な… 何を⾔っているのか わからねーと思うが おれも 何をされたのか わからなかった… IoTがどうにかなりそうだった… 並⾏処理がそのまま書けるとか Webアプリもさくっと作れるとか そんなチャチなもんじゃあ 断じてねえ もっと恐ろしいものの⽚鱗を 味わったぜ…

×