Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
yaegashi
3,514 views
Raspberry Pi + Go で IoT した話
golang.tokyo #26 https://golangtokyo.connpass.com/event/147175/
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 17
2
/ 17
3
/ 17
4
/ 17
Most read
5
/ 17
Most read
6
/ 17
7
/ 17
8
/ 17
9
/ 17
10
/ 17
11
/ 17
Most read
12
/ 17
13
/ 17
14
/ 17
15
/ 17
16
/ 17
17
/ 17
More Related Content
PDF
こわくない Git
by
Kota Saito
PDF
マイクロサービスバックエンドAPIのためのRESTとgRPC
by
disc99_
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
by
Preferred Networks
PDF
Gitはじめの一歩
by
Ayana Yokota
PDF
15分でわかるGit入門
by
to_ueda
PDF
DPDKによる高速コンテナネットワーキング
by
Tomoya Hibi
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
by
NTT DATA Technology & Innovation
PDF
DI(依存性注入)について
by
Yui Ito
こわくない Git
by
Kota Saito
マイクロサービスバックエンドAPIのためのRESTとgRPC
by
disc99_
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
by
Preferred Networks
Gitはじめの一歩
by
Ayana Yokota
15分でわかるGit入門
by
to_ueda
DPDKによる高速コンテナネットワーキング
by
Tomoya Hibi
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
by
NTT DATA Technology & Innovation
DI(依存性注入)について
by
Yui Ito
What's hot
PDF
いつやるの?Git入門 v1.1.0
by
Masakazu Matsushita
PDF
Python 3.9からの新定番zoneinfoを使いこなそう
by
Ryuji Tsutsui
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
by
日本マイクロソフト株式会社
PDF
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
by
Toru Makabe
PDF
今だからこそ知りたい Docker Compose/Swarm 入門
by
Masahito Zembutsu
PDF
WebRTC と Native とそれから、それから。
by
tnoho
PDF
雑なMySQLパフォーマンスチューニング
by
yoku0825
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
PPTX
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
by
NTT DATA Technology & Innovation
PDF
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
by
モノビット エンジン
PDF
モジュールの凝集度・結合度・インタフェース
by
Hajime Yanagawa
PDF
NextGen Server/Client Architecture - gRPC + Unity + C#
by
Yoshifumi Kawai
PPTX
Prometheus入門から運用まで徹底解説
by
貴仁 大和屋
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
by
Preferred Networks
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
PPTX
Gstreamer Basics
by
Seiji Hiraki
PDF
DockerとKubernetesをかけめぐる
by
Kohei Tokunaga
PDF
FridaによるAndroidアプリの動的解析とフッキングの基礎
by
ken_kitahara
いつやるの?Git入門 v1.1.0
by
Masakazu Matsushita
Python 3.9からの新定番zoneinfoを使いこなそう
by
Ryuji Tsutsui
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
by
日本マイクロソフト株式会社
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
by
Toru Makabe
今だからこそ知りたい Docker Compose/Swarm 入門
by
Masahito Zembutsu
WebRTC と Native とそれから、それから。
by
tnoho
雑なMySQLパフォーマンスチューニング
by
yoku0825
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
by
NTT DATA Technology & Innovation
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
by
モノビット エンジン
モジュールの凝集度・結合度・インタフェース
by
Hajime Yanagawa
NextGen Server/Client Architecture - gRPC + Unity + C#
by
Yoshifumi Kawai
Prometheus入門から運用まで徹底解説
by
貴仁 大和屋
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
by
Preferred Networks
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
Gstreamer Basics
by
Seiji Hiraki
DockerとKubernetesをかけめぐる
by
Kohei Tokunaga
FridaによるAndroidアプリの動的解析とフッキングの基礎
by
ken_kitahara
Similar to Raspberry Pi + Go で IoT した話
PDF
2023-01-26_IoTに活かそう!「UNIXという考え方」.pdf
by
Akira Tateishi
PDF
20160227 de live-scratch
by
Yoshimasa Kawano
PDF
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019
by
catmoney
PDF
OSC Tokyo 2013 Spring JRPUG
by
Hideki Aoshima
PDF
IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践
by
Kazutaka Nakamura
PDF
Modernization of Factory Automation with Elixir based systems and communities
by
Yutaka Kikuchi
PDF
Raspberry pi + piface=home electronics-security
by
Yamauchi isamu
PPTX
レベルを上げて物理で殴る 16x9
by
Knit Tiger
PDF
SIerによるSIerのためのRaspberry Pi 入門
by
catmoney
PDF
Python、Raspberry Pi、SORACOMでお手軽IoTをしましょう
by
Yuji Chino
PDF
Raspberry Pi and WebIOPi
by
hiro345
PDF
機械学習 (AI/ML) 勉強会 #2 IoT編
by
Fujio Kojima
PDF
Ras piでrt linux
by
Hideki Aoshima
PPTX
ロボットシステム学2015年第7回
by
Ryuichi Ueda
PDF
Osc2013 tokyospring
by
Masataka Tsukamoto
PDF
NetBSD/evbarm on Raspberry Pi
by
tokudahiroshi
PDF
Getting started raspberry pi osc hamamatsu
by
Masafumi Ohta
PDF
RaspberryPi Users Group Japan 20130525 by hohno
by
Hiroyuki Ohno
PDF
20191113 python raspberry_pi_gpio
by
Kioto Hirahara
PDF
20171206 d3 health_tech発表資料
by
dcubeio
2023-01-26_IoTに活かそう!「UNIXという考え方」.pdf
by
Akira Tateishi
20160227 de live-scratch
by
Yoshimasa Kawano
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019
by
catmoney
OSC Tokyo 2013 Spring JRPUG
by
Hideki Aoshima
IoT 時代に資する 「ものグラミング」教育のための 授業開発と実践
by
Kazutaka Nakamura
Modernization of Factory Automation with Elixir based systems and communities
by
Yutaka Kikuchi
Raspberry pi + piface=home electronics-security
by
Yamauchi isamu
レベルを上げて物理で殴る 16x9
by
Knit Tiger
SIerによるSIerのためのRaspberry Pi 入門
by
catmoney
Python、Raspberry Pi、SORACOMでお手軽IoTをしましょう
by
Yuji Chino
Raspberry Pi and WebIOPi
by
hiro345
機械学習 (AI/ML) 勉強会 #2 IoT編
by
Fujio Kojima
Ras piでrt linux
by
Hideki Aoshima
ロボットシステム学2015年第7回
by
Ryuichi Ueda
Osc2013 tokyospring
by
Masataka Tsukamoto
NetBSD/evbarm on Raspberry Pi
by
tokudahiroshi
Getting started raspberry pi osc hamamatsu
by
Masafumi Ohta
RaspberryPi Users Group Japan 20130525 by hohno
by
Hiroyuki Ohno
20191113 python raspberry_pi_gpio
by
Kioto Hirahara
20171206 d3 health_tech発表資料
by
dcubeio
More from yaegashi
PDF
Terraforming Windows Virtual Desktop Infrastructure on Azure
by
yaegashi
PDF
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
by
yaegashi
PDF
Customazed CLI: カスタムVMイメージ作成支援ツール
by
yaegashi
PPTX
Goで作って配布するAzureコマンドラインユーティリティ
by
yaegashi
PDF
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
by
yaegashi
PDF
msgraph: Terraform provider for Microsoft Graph
by
yaegashi
PDF
go generate 完全入門
by
yaegashi
PPTX
msgraph.go: Go言語で Microsoft Graph プログラミング
by
yaegashi
PDF
AnsibleでAzureの インフラを管理する話 + α
by
yaegashi
PDF
msgraph-sshpubkey
by
yaegashi
PDF
Microsoft Graph API Library for Go
by
yaegashi
PDF
golang binary hacks
by
yaegashi
PDF
StackExchangeで見たシステムプログラミング案件
by
yaegashi
PDF
Ansible モジュール 作成・配布・貢献
by
yaegashi
Terraforming Windows Virtual Desktop Infrastructure on Azure
by
yaegashi
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
by
yaegashi
Customazed CLI: カスタムVMイメージ作成支援ツール
by
yaegashi
Goで作って配布するAzureコマンドラインユーティリティ
by
yaegashi
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
by
yaegashi
msgraph: Terraform provider for Microsoft Graph
by
yaegashi
go generate 完全入門
by
yaegashi
msgraph.go: Go言語で Microsoft Graph プログラミング
by
yaegashi
AnsibleでAzureの インフラを管理する話 + α
by
yaegashi
msgraph-sshpubkey
by
yaegashi
Microsoft Graph API Library for Go
by
yaegashi
golang binary hacks
by
yaegashi
StackExchangeで見たシステムプログラミング案件
by
yaegashi
Ansible モジュール 作成・配布・貢献
by
yaegashi
Raspberry Pi + Go で IoT した話
1.
Raspberry Pi +
Go で IoT した話 2019-09-25 Takeshi Yaegashi golang.tokyo #26
2.
自己紹介 八重樫 剛史 Takeshi
Yaegashi ● 株式会社バンダイナムコスタジオ所属 ● Linux・Unix・OSS・低レベルなことが好きなエンジニア ● ホームページ・ブログ https://l0w.dev ● Go のお仕事 ○ Raspberry Pi を使った IoT 案件 ○ スマホゲームアプリのサーバ ● Go のお話 ○ golang.tokyo #25「golang binary hacks」 ○ Go Conference 2019 Autumn「MS Graph API Library for Go (仮)」
3.
Raspberry Pi +
Go で IoT した事例を紹介します ※ 2018年の事例です。案件について具体的なお話はできません。申しわけありません。 本日のお話 Wi-Fi Router Cloud Services Edge DevicesThings
4.
IoT エッジデバイス・組み込みシステムの開発に適した Go
言語 ● マイコン用のクロスコンパイルが驚くほど簡単 $ GOARCH=arm GOARM=6 go get ./cmd/hello ● シングルバイナリが扱いやすい ● 言語レベルの並行処理サポート: goroutine, chan ● システム構築に使えるライブラリ、パッケージの充実 ○ 様々なネットワークプロトコルのサポート ○ Linux カーネルなどのシステムプログラミング 本日のお話の背景
5.
Raspberry Pi の
GPIO・ストレージ・Wi-Fi を使ったデータ収集システム ● エッジデバイス (Raspberry Pi 0/1/2/3) ○ Wi-Fi によるインターネット接続 ○ GPIO などでイベント発生を監視、サーバに逐次送信 (MQTT) ○ サーバ接続不良時は発生イベントをMicroSDに蓄積、復旧時に再送 ○ ソフトウェアアップデートに対応 ● サーバ (AWS) ○ IoT + Lambda + DynamoDB (イベントデータ蓄積) ○ API Gateway + Lambda (デバイス登録APIなど) ○ S3 + CloudFront (アップデート配信) 事例紹介:システム概要
6.
事例紹介:エッジデバイス (Raspberry Pi)
のシステム構成 pigpiod MQTT wpa_ supplicant I/O System Event Queue (LevelDB) AWS IoT dhcpcd GPIO EthernetWi-Fi timedated timesyncd ClockMicroSD System Daemons Go Process Hardware 💡💡💡 Goroutine Library mutex chan named pipe unix socketD-Bus TLS
7.
組み込み Linux システムを
Go で動かす ● 組み込みシステム向けに改造した Raspbian stretch 上で動作 ○ 圧縮・耐障害ファイルシステム (squashfs + overlayfs) ○ 圧縮後のシステムイメージサイズは 100MB 程度 ● システムコンポーネントと仲良く ○ systemd, dhcpcd, wpa_supplicant などのデーモンを活用 ○ IPC (named pipe, unix socket, D-Bus) を利用して Go から制御 ● goroutine, chan の活用 ○ 基本はリソース専用 goroutine 割り当てと chan による相互通信・同期 ○ イベントキューは DB ライブラリ関数内部の mutex 同期を活用 事例紹介:エッジデバイスのシステム設計のポイント
8.
コンポーネント紹介:MQTT Eclipse Paho MQTT
Go client ● https://github.com/eclipse/paho.mqtt.golang ● 定番の MQTT 通信ライブラリ ● X.509 証明書によりクライアントの認証 ● QoS=1 でサーバへのデータ到達を保証
9.
コンポーネント紹介:イベントキュー LevelDB によるイベントキューの実装 ● goleveldb
- https://github.com/syndtr/goleveldb ○ LevelDB の Go による実装 ● goque - https://github.com/beeker1121/goque ○ goleveldb による stack/queue/priority queue ○ イベントキュー実装において参考にした ● DB 障害対策 ○ Micro SD に専用のパーティション・ファイルシステム (ext4) を作る ○ DB が壊れたら Recover() で修復、だめなら mkfs して初期化
10.
コンポーネント紹介:Wi-Fi 制御 wpa_supplicant /
dhcpcd ● wpasupplicant - https://github.com/dpifke/golang-wpasupplicant ○ wpa_supplicant と unix socket で通信するライブラリ ○ WPAのSSID/PSKの設定やAPスキャンなどができる ● dhcpcd - WPA 接続が確立すると自動的に IP アドレスを取得してくれる ● この他、エッジデバイスの設置と運用を支援するため、定期的にAPスキャンを行い Wi-Fi電波情報をイベントキューに入れてサーバに送信している
11.
コンポーネント紹介:システム時刻設定 systemd-timedated / systemd-timesyncd ●
システム時刻、タイムゾーン、NTP 設定は systemd により管理されている ● 基本的な NTP クライアントは systemd に内 蔵されている ● timedatectl - CLI ○ タイムゾーンや時刻設定に使用 ● godbus - https://github.com/godbus/dbus ○ D-Bus で制御することもできる $ timedatectl Local time: Wed 2019-09-25 05:03:11 JST Universal time: Tue 2019-09-24 20:03:11 UTC RTC time: n/a Time zone: Asia/Tokyo (JST, +0900) Network time on: yes NTP synchronized: yes RTC in local TZ: no $ timedatectl set-timezone Japan $ timedatectl set-ntp false $ timedatectl set-time "2019-09-25 19:00:00"
12.
コンポーネント紹介:GPIO 制御 pigpio による
GPIO 制御 ● pigpio - http://abyz.me.uk/rpi/pigpio/ ○ Raspberry Pi の GPIO を内蔵ハードで制御する C 言語のライブラリ ○ PCM/PWM クロックと GPU DMA で高速・高精度・低負荷な入出力 ○ スクリプティングエンジン搭載 ● pigpiod - pigpio デーモン ○ 名前つきパイプやソケットで別プロセスから制御 ● pigs - pigpiod のクライアント CLI ● apt-get install pigpio でインストール可能
13.
コンポーネント紹介:GPIO 制御 # GPIO
5 状態読み取り $ pigs "R 5" 0 # GPIO 4 出力モード 500ms "1" パルス出力 $ pigs "M 4 W W 4 0" $ pigs "W 4 1 MILS 500 W 4 0" # GPIO 0-3 状態変化を /dev/pigpio0 に通知 $ pigs "NO" 0 $ pigs "NB 0 0x0000000F" $ cat /dev/pigpio0 @?2$8??!@*??;??!@9DK???!@B??B??!@QWrF??! pigpio スクリプト http://abyz.me.uk/rpi/pigpio/pigs.html
14.
コンポーネント紹介:GPIO 制御 pin, err
:= os.OpenFile("/dev/pigpio", os.O_RDWR, 0) if err != nil { return err} defer pin.Close() pout, err := os.Open("/dev/pigout") if err != nil { return err } defer pout.Close() pin.Write([]byte("W 4 1 MILS 500 W 4 0")) // 3命令のスクリプトを実行 buf := make([]byte, 128) // 3命令の実行結果を取得 n, err := pout.Read(buf) if err != nil { return err } fmt.Printf("%sn", string(buf[:n])) // "0n0n0n"を表示(成功×3) Go + pigpiod:named pipe (文字列) や socket (バイナリ)で制御可能
15.
コンポーネント紹介:GPIO 制御 Go +
pigpiod:用途を選ぶが、はまれば非常に便利 ● 利点 ○ Go だけでは難しいレベルのリアルタイム I/O が可能になる ○ 全 GPIO 端子で解像度 5μs (200kHz) の入出力を実現 ○ 強力なスクリプトで様々な機能を実装可能 ■ チャタリング除去つきの入力パルス検出 ■ プロシージャによるインジケータLED自動点滅制御 ● 欠点 ○ 遅延が大きい (スクリプト制御は必ずコンテキストスイッチを伴う) ○ pigpiod の CPU 負荷が高い (3B+ で 7〜10%)
16.
コンポーネント紹介:GPIO 制御 その他の Go
I/O ライブラリの紹介 ● gobot.io - https://gobot.io ○ Raspberry Pi 以外もサポートする汎用のライブラリ ○ メモリマップ I/O による低遅延な入出力 ● periph.io - https://periph.io ○ gobot.io と同様な汎用ライブラリ ○ 徹底した高速化・最適化 ○ pigpio のような GPU DMA 入出力を pure Go で実装 ○ 開発が活発、現時点で一番おすすめできるライブラリ
17.
まとめ Raspberry Pi +
Go で IoT エッジデバイスを作った事例を紹介しました IoT や組み込みの分野で Go をもっと活用していきましょう!
Download