初めての raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

42
初めての Raspberry Pi プラレールを Unityの世界の中で走らせよう

Upload: dcubeio

Post on 21-Jan-2018

916 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

初めての Raspberry Pi

プラレールをUnityの世界の中で走らせよう

Page 2: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

自己紹介

Page 3: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

島田文平

● 株式会社ビズリーチ所属

● サーバーサイドエンジニア2年目

● 学部では教育政策を専攻

● プロダクトを発表させて頂いたワンダーメイクフェスの運営元である

株式会社リタリコでインターンさせてもらってました

Page 4: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

ワンダーメイクフェスとは?

https://japan.cnet.com/article/35108811/

Page 5: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

出展ブースに混ぜて頂きました

このあたり

Page 6: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
Page 7: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
Page 8: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

はじめに

Page 9: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

はじめに

この発表は、IoT や電子工作、Raspberry Pi 等々に興味を持っているものの

まだ手を出していないエンジニアの方を対象にしています。

発表者自身大したことは出来ていないですし、情けないですがやりきれなかった部分もあります。

しかしながら、願わくばこの経験を発表することがこれから始められる方にとっての

一歩踏み出すきっかけに、もしくは最初の躓きポイントの解消に役立てば嬉しく思います。

Page 10: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

目次

Page 11: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

目次

1. 今回触れた技術の紹介

2. 実装詳細

3. 制作タイムライン

4. 反省点振り返り

5. 得られたもの

6. Tips

7. まとめ

8. 今後の展望

Page 12: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

今回触れた技術の紹介

Page 13: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

今回触れた技術の紹介

● Raspberry Pi Zero W

● Python

● Unity

● Tinkercad

● レーザーカッター

Page 14: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

Raspberry Pi Zero W

● 1GHz, Single-core CPU

● 512MB RAM

● Mini HDMI and USB On-The-Go ports

● Micro USB power

● HAT-compatible 40-pin header

● Composite video and reset headers

● CSI camera connector

● 802.11n wireless LAN

● Bluetooth 4.0

Page 15: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

今回使った箇所

● 1GHz, Single-core CPU

● 512MB RAM

● Mini HDMI and USB On-The-Go ports

● Micro USB power

● HAT-compatible 40-pin header

● Composite video and reset headers

● CSI camera connector

● 802.11n wireless LAN

● Bluetooth 4.0

Page 16: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

Python

● Websocket 通信

● モーター制御

上記2点にだけ使いました

import time

from websocket import create_connection

ws =

create_connection("ws://192.168.1.10:9999/")

While True:

ws.send("Hello, World")

time.sleep(1)

result = ws.recv()

print("Received '%s'" % result)

time.sleep(1)

ws.close()

from websocket_server import WebsocketServer

def new_client(client, server):

server.send_message_to_all("Hey all, a

new client has joined us")

def send_msg_allclient(client,

server,message):

server.send_message_to_all("Hey

all:"+message)

server = WebsocketServer(9999,

host='192.168.1.10')

server.set_fn_new_client(new_client)

server.set_fn_message_received(send_msg_allcl

ient)

server.run_forever()

Page 17: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

Unity

詳細は実働画面にて ▶ https://photos.app.goo.gl/GrZ61w3Hhpfbez2o2

Page 18: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

Tinkercad

詳細は実働画面にて ▶ https://www.tinkercad.com/#/

Page 19: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

レーザーカッター

Page 20: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

制作タイムライン

Page 21: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

制作タイムライン

9月末 ~ 10月頭● 元インターン仲間の呼びかけで企画が立ち上がる

10月半ば● 実装を行う

10月15日● 本番で発表

Page 22: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

9月末 ~ 10月頭 (企画発足)

1. 出展のお誘いを受ける2. メンバーを集める3. チャットでやんわりやりたい事を決める

このブログを参考に ▶ http://www.mana-cat.com/entry/2016/07/26/2128404. Raspberry Pi 班、レーザーカッター担当、 Unity 担当それぞれのタスク割り振り

(発表者が所属したのは Raspberry Pi 班)5. 最長2日でやり切れると見積もりを立てる6. 実装日の3日ほど前にパーツの発注手続きを始める

Page 23: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

9月末 ~ 10月頭 (企画発足)

1. 出展のお誘いを受ける2. メンバーを集める3. チャットでやんわりやりたい事を決める

このブログを参考に ▶ http://www.mana-cat.com/entry/2016/07/26/2128404. Raspberry Pi 班、レーザーカッター担当、 Unity 担当それぞれのタスク割り振り

(発表者が所属したのは Raspberry Pi 班)5. 最長2日でやり切れると見積もりを立てる6. 実装日の3日ほど前にパーツの発注手続きを始める

Page 24: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

9月末 ~ 10月頭 (企画発足)

1. 出展のお誘いを受ける2. メンバーを集める3. チャットでやんわりやりたい事を決める

このブログを参考に ▶ http://www.mana-cat.com/entry/2016/07/26/2128404. Raspberry Pi 班、レーザーカッター担当、 Unity 担当それぞれのタスク割り振り

(発表者が所属したのは Raspberry Pi 班)5. 最長2日でやり切れると見積もりを立てる6. 実装日の3日ほど前にパーツの発注手続きを始める

Page 25: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

10月半ば (実装期間)

1. 実装一日、バッファ一日の予定で走り始める

2. Amazon で発送に時間がかかり実装日に届かないパーツを秋葉原に買い出しに行く

(3時間)

3. 買い忘れていたハンダを渋谷のロフトに買い出しに行く

(2時間)

4. Raspberry Pi の設定をしてる内に日が暮れ一日では終わらない事を悟る

5. バッファ日丸一日使うもソフトの通信設定までで日が暮れ急遽発表前日にバッファ日を追加

6. あとはハードが動けば終わりだ!とハンダと格闘

回らないモーター

探せない不具合発生ポイント

気がついたらもう空にはが昇っていた...

Page 26: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

10月半ば (実装期間)

1. 実装一日、バッファ一日の予定で走り始める

2. Amazon で発送に時間がかかり実装日に届かないパーツを秋葉原に買い出しに行く

(3時間)

3. 買い忘れていたハンダを渋谷のロフトに買い出しに行く

(2時間)

4. Raspberry Pi の設定をしてる内に日が暮れ一日では終わらない事を悟る

5. バッファ日丸一日使うもソフトの通信設定までで日が暮れ急遽発表前日にバッファ日を追加

6. あとはハードが動けば終わりだ!とハンダと格闘

回らないモーター

探せない不具合発生ポイント

気がついたらもう空にはが昇っていた...

Page 27: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

10月15日 (本番当日)

● 会場の本気度と来場者数に気圧される ○ 日本科学未来館ワンフロア貸切

○ 来場者3000名以上 (弊ブースにも途切れる事無くお子さんが来てくださり休みを取るのも一苦労 )

● なぜか次々と増える仕事○ 成果物をお子さんに楽しんでもらうために来たはずが

ソニーさんの IoT プロダクトの使い方をレクチャーすることに ...??

○ 懇親会用のピザが届いているから下から取ってきて欲しい ...??

○ リタリコでのインターンの日々に戻って来たようで燃えました

● 楽しんでくれる子どもたち○ 自分が作ったオブジェクトがゲーム画面に現れるのを見て大興奮でした

○ 申し訳程度にプラレールを走らせてはいたものの

感のイイ子には連動していないと気づかれてしまいました

Page 28: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

反省点振り返り

Page 29: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

反省点振り返り

● 予想より全然時間かかる○ 全く未知の事だったので予想した倍は時間を取っても良かった

○ もう一日あればあるいは ...

● Amazon Prime では電子工作パーツは揃わない○ 遠方からの取り寄せになるものがある前提で発注スケジュールを組みたかった

○ 秋葉原の電子工作ショップのお兄さんたちに大変お世話になりました ...

● 特に慣れない所から着手すべき○ 本当に全く触った事無いハンダを行うのを最後に回してしまっていた

○ 信号の発信→受信順序等に沿うのではなく、慣れないものから順に手を付けるようにしたい

(仕事でやってることだから活かしたかった ...!!)

● 回路図を理解しないまま進めるのは危険○ ハードウェアには break point 貼れない(戒め)

○ ここの理解をする時間を最初から全体スケジュールに組み込みたかった

Page 30: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

タスク実行順序

1. OS のインストール

2. Wifi 接続設定

3. vim のインストール

4. 固定 IP アドレスの設定

5. Websocket 受信側設定

6. ハンダ付け

7. モーター制御プログラム作成

Page 31: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

理想のタスク実行順序

1. OS のインストール

2. ハンダ付け

3. モーター制御プログラム作成

4. Wifi 接続設定

5. vim のインストール

6. 固定 IP アドレスの設定

7. Websocket 受信側設定

Page 32: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

得られたもの

Page 33: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

得られたもの

● サーバーの CUI 操作への慣れ

● IoT 実装の知見

● 電子工作の楽しさ

● 子供たちの喜ぶ顔

Page 34: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

Tips

Page 35: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

Tips

● 人を巻き込んで期限と目標を設定すれば動ける○ 機会を提供してくださったリタリコさんには本当に感謝

○ 拙いプロダクトでも楽しんでくれた子どもたちにも感謝

● 既にやったことがある人がいると非常に非常に捗る○ ラズパイで遊んでたメンバーがいて助かった

○ 願わくば回路図とかハンダに慣れてる人がいたらよかったなあ

Page 36: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

まとめ

Page 37: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

まとめ

● ハード面の実装は想像以上に大変

● CUI に慣れたり IoT がなんとなく分かってきたりキャリアの肥やしになった

● 巻き込み巻き込まれて下さった皆さんに本当に感謝

● ラズパイは楽しい

Page 38: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

今後の展望

Page 39: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

今後の展望

● モーター制御をやりきれなかったので再チャレンジします

● ちゃんと回路図理解します

● 実装できたら Qiita に上げますのでお目通し頂けると嬉しいです

未完成ですが URL はこちら (2017/10/27) ▶

https://qiita.com/BumpeiShimada/items/5c566d78e2dc8f330076

Page 40: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

参考資料

Page 41: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

参考資料①

企画全体

● IoTプラレールの概要と仕組み

Unity

● UnityでWebSocketを使用する

Page 42: 初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)

Raspberry Pi: ソフト面の設定

● WebSocket通信の仕方(サーバー側)

● WebSocket通信の仕方(Webページの値更新編)

● Raspberry Piの設定【有線LAN(イーサネット)・無線LAN(WiFi)設定】

Raspberry Pi: ハード面の設定

● 【IoTプラレール 基板実装 制御系その1】 ProtoZeroおよび電源系の紹介

● 【IoTプラレール 基板実装 制御系その2】モータードライバー

参考資料②