SlideShare a Scribd company logo
自作ユニバーサルプレート&LEGO互換パーツ作成ツールの
なかみのはなし
2022/9/23 VIoTLT vol.12
いのうえ みのる
名前:井上 稔(Minoru INOUE)
出没先: コミュニティ“ゆるメカトロ”
Facebook: minoru.inoue.90
Twitter : @henjin01_Fab
半年以上LTしてないかも。。。お久しぶりです!
(ビジュアルプログラミングネタじゃないけどゆるして〜〜〜)
Protolotusって?
自作ユニバーサルプレートや自作LEGOテクニックパーツを
自作できるツール フリーソフト!
このテーブルのセルをクリックすると
ブロックが追加・変更・削除される
Githubページ
コードもバイナリも
公開!
(Windows or Mac)
- 開発言語:Python
- GUI:pyQtとOpenGL
- STL出力:numpy-stl
3Dプリンタで出力できるよ!(作品例)
なんの話をするの?
ツールを実現しているロジックの紹介をしてみます
ロジックについて考えたきっかけ
昔のツールは適当だった。動作モッサリで拡張性も微妙だった。
ブロック追加ごとに
再描写
→ブロック数が増える
と待ち時間増加
ブロックの種類が
今後も増えそう
→データ構造も考える
必要あり
差分だけ変更を加えて、各ブロックにデータをもたせる形にする必要があった
画面描写と
STL作成は
分離したい
1 2
3 0
…
…
1 2
1
2
データ構造
• ブロック値(1,2,3)
• ブロック座標(row, column)
• ハッシュ値(row+column最大値*column)
• ブロック設定(タミヤ互換 or LEGO互換)
• メッシュデータ(GLMesh)
column
row
Table:
データなし
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
(2,1)に3のブロックを置く ハッシュ値11
クリックした順に
ブロック操作が入る
キュー的にOpenGL表示データを一列に格納する形を採った
また、ハッシュ値から一意にブロックを特定できる。
…
Queue:
ブロック追加時
1 2
3 0
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
1 2
3 1
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
(2,2)に2のブロックを置く ハッシュ値12
(2,2)をクリック
0表示になっている箇所をクリックすると、
ハッシュ値と一緒にブロック操作が入る
1 2
1
2
1
ブロック変更時
1 2
3 1
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
1 3
3
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に3のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
(2,2)に2のブロックを置く ハッシュ値12
(1,2)をクリック
→ハッシュ値2探す
テーブルクリック時にハッシュに該当するブロック値を変える
(2,2)に2のブロックを置く ハッシュ値12
1 2
1
2
search!
ブロック削除時
1 2
3 1
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
(2,2)に2のブロックを置く ハッシュ値12
1 2
1
2
(1,1)に1のブロックを置く ハッシュ値1
(2,2)に2のブロックを置く ハッシュ値12
ハッシュ値11
delete!
1 2
1
…
…
0
(1,2)に2のブロックを置く ハッシュ値2
(2,1)をクリック
→ハッシュ値11探す
数字のカウントアップが一巡した(3→0)場合には
キューからブロック操作を削除する
STL出力
1 2
3 1
(1,1)に1のブロックを置く ハッシュ値1
(1,2)に2のブロックを置く ハッシュ値2
…
…
(2,1)に3のブロックを置く ハッシュ値11
(2,2)に2のブロックを置く ハッシュ値12
1 2
1
2
がクリックされたタイミングでテーブルを総なめして作成する
For二重ループで
0以外を総なめ
キュー内のデータはOpenGL表示用の
データ=STL作成では使わない
できたこと
問題としていたことはひとまずパス
ブロック
追加ごとに再描写
→待ち時間増加
ブロックの種類が
今後も増えそう
画面描写と
STL作成は
分離したい
キュー&ハッシュでデータを個別管理
操作はブロック個別になった
ブロックの描写単位でブロック情報をもたせた
ブロック値のカウントアップで定義可能
画面描写時とSTL作成時で参照するデータが
異なるため、独立性が高くなった
まとめ(かんそう)
趣味ツールとはいえ、データ構造はソフトウェアのコア
アイデアを送り出すまではスピード重視
But→送り出したあとは手早くデータ構造を見直すべき
データ構造を考えるのはダルい
But→一回決まると後工程が楽
レスポンス面の不便=ロジックとデータ構造の見直し
不便を感じたらドキュメントに起こそう
以上です!

More Related Content

Similar to 自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし

2014年の制作物報告
2014年の制作物報告2014年の制作物報告
2014年の制作物報告
uu ymd
 
HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編
Takashi Yoshinaga
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
Fujio Kojima
 
Unity用ビジュアルノベルツール「宴3」開発帰還報告書
Unity用ビジュアルノベルツール「宴3」開発帰還報告書Unity用ビジュアルノベルツール「宴3」開発帰還報告書
Unity用ビジュアルノベルツール「宴3」開発帰還報告書
Ryohei Tokimura
 
ノンプログラミングで始めようHoloLensコンテンツ開発
ノンプログラミングで始めようHoloLensコンテンツ開発ノンプログラミングで始めようHoloLensコンテンツ開発
ノンプログラミングで始めようHoloLensコンテンツ開発
Takashi Yoshinaga
 
20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?
Tetsuo Mitsuda
 
おしゃべりbox♪ IoTLT vol14
おしゃべりbox♪ IoTLT vol14おしゃべりbox♪ IoTLT vol14
おしゃべりbox♪ IoTLT vol14
Masashi Fujimoto
 
ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減 ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減 Mikito Yoshiya
 
Get started with future C# .Net development with Docker
Get started with future C# .Net development with DockerGet started with future C# .Net development with Docker
Get started with future C# .Net development with Docker
Oshitari_kochi
 
Twillio deadshot made me happy
Twillio deadshot made me happyTwillio deadshot made me happy
Twillio deadshot made me happy
yusuke shibui
 
Scene操作系のエディター拡張Util2セット
Scene操作系のエディター拡張Util2セットScene操作系のエディター拡張Util2セット
Scene操作系のエディター拡張Util2セット
Takumi Hanzawa
 
IoT縛りの勉強会! IoTLT vol.18
IoT縛りの勉強会! IoTLT vol.18IoT縛りの勉強会! IoTLT vol.18
IoT縛りの勉強会! IoTLT vol.18
Seigo Tanaka
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
Kohei Kadowaki
 
Practical game development with Stingray
Practical game development with StingrayPractical game development with Stingray
Practical game development with Stingray
Naoji Taniguchi
 
Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!
UnityTechnologiesJapan002
 
TFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_MobileTFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_Mobile
yusuke shibui
 
JavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfes
JavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfesJavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfes
JavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfes
yo-to
 
Morioka As 0x06 Usagi Koyomirya
Morioka As 0x06 Usagi KoyomiryaMorioka As 0x06 Usagi Koyomirya
Morioka As 0x06 Usagi Koyomirya
兎 伊藤
 
BotKitで作るイベント駆動Bot
BotKitで作るイベント駆動BotBotKitで作るイベント駆動Bot
BotKitで作るイベント駆動Bot
Akihiko Horiuchi
 
HoloLensでSharingする方法(Bluetooth編)@TokyoHoloLensMeetup vol.6
HoloLensでSharingする方法(Bluetooth編)@TokyoHoloLensMeetup vol.6HoloLensでSharingする方法(Bluetooth編)@TokyoHoloLensMeetup vol.6
HoloLensでSharingする方法(Bluetooth編)@TokyoHoloLensMeetup vol.6
akihiro yamamoto
 

Similar to 自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし (20)

2014年の制作物報告
2014年の制作物報告2014年の制作物報告
2014年の制作物報告
 
HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
 
Unity用ビジュアルノベルツール「宴3」開発帰還報告書
Unity用ビジュアルノベルツール「宴3」開発帰還報告書Unity用ビジュアルノベルツール「宴3」開発帰還報告書
Unity用ビジュアルノベルツール「宴3」開発帰還報告書
 
ノンプログラミングで始めようHoloLensコンテンツ開発
ノンプログラミングで始めようHoloLensコンテンツ開発ノンプログラミングで始めようHoloLensコンテンツ開発
ノンプログラミングで始めようHoloLensコンテンツ開発
 
20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?
 
おしゃべりbox♪ IoTLT vol14
おしゃべりbox♪ IoTLT vol14おしゃべりbox♪ IoTLT vol14
おしゃべりbox♪ IoTLT vol14
 
ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減 ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減
 
Get started with future C# .Net development with Docker
Get started with future C# .Net development with DockerGet started with future C# .Net development with Docker
Get started with future C# .Net development with Docker
 
Twillio deadshot made me happy
Twillio deadshot made me happyTwillio deadshot made me happy
Twillio deadshot made me happy
 
Scene操作系のエディター拡張Util2セット
Scene操作系のエディター拡張Util2セットScene操作系のエディター拡張Util2セット
Scene操作系のエディター拡張Util2セット
 
IoT縛りの勉強会! IoTLT vol.18
IoT縛りの勉強会! IoTLT vol.18IoT縛りの勉強会! IoTLT vol.18
IoT縛りの勉強会! IoTLT vol.18
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
 
Practical game development with Stingray
Practical game development with StingrayPractical game development with Stingray
Practical game development with Stingray
 
Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!
 
TFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_MobileTFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_Mobile
 
JavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfes
JavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfesJavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfes
JavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfes
 
Morioka As 0x06 Usagi Koyomirya
Morioka As 0x06 Usagi KoyomiryaMorioka As 0x06 Usagi Koyomirya
Morioka As 0x06 Usagi Koyomirya
 
BotKitで作るイベント駆動Bot
BotKitで作るイベント駆動BotBotKitで作るイベント駆動Bot
BotKitで作るイベント駆動Bot
 
HoloLensでSharingする方法(Bluetooth編)@TokyoHoloLensMeetup vol.6
HoloLensでSharingする方法(Bluetooth編)@TokyoHoloLensMeetup vol.6HoloLensでSharingする方法(Bluetooth編)@TokyoHoloLensMeetup vol.6
HoloLensでSharingする方法(Bluetooth編)@TokyoHoloLensMeetup vol.6
 

More from MinoruInoue2

RPLidar C1M1からROS2の沼に入った話&プレゼントのレーザーカッターキーホルダーの裏話
RPLidar C1M1からROS2の沼に入った話&プレゼントのレーザーカッターキーホルダーの裏話RPLidar C1M1からROS2の沼に入った話&プレゼントのレーザーカッターキーホルダーの裏話
RPLidar C1M1からROS2の沼に入った話&プレゼントのレーザーカッターキーホルダーの裏話
MinoruInoue2
 
Arduino Uno R4 WifiでMQTT通信してみる enebular meetup資料
Arduino Uno R4 WifiでMQTT通信してみる enebular meetup資料Arduino Uno R4 WifiでMQTT通信してみる enebular meetup資料
Arduino Uno R4 WifiでMQTT通信してみる enebular meetup資料
MinoruInoue2
 
M5DialとESP32-BLE-Gamepadでコントローラー作ってみた
M5DialとESP32-BLE-Gamepadでコントローラー作ってみたM5DialとESP32-BLE-Gamepadでコントローラー作ってみた
M5DialとESP32-BLE-Gamepadでコントローラー作ってみた
MinoruInoue2
 
motionbitとml5jsで非接触ロボット操作!
motionbitとml5jsで非接触ロボット操作!motionbitとml5jsで非接触ロボット操作!
motionbitとml5jsで非接触ロボット操作!
MinoruInoue2
 
M5ATOM S3とShiftr.ioで 非接触温度センサの値をネットに流してみた
M5ATOM S3とShiftr.ioで 非接触温度センサの値をネットに流してみたM5ATOM S3とShiftr.ioで 非接触温度センサの値をネットに流してみた
M5ATOM S3とShiftr.ioで 非接触温度センサの値をネットに流してみた
MinoruInoue2
 
STM32H745を四足歩行させる話
STM32H745を四足歩行させる話STM32H745を四足歩行させる話
STM32H745を四足歩行させる話
MinoruInoue2
 
enebular(cloud)からeduじゃないtelloをうごかしてみたよ~改行コードには気をつけよう~
enebular(cloud)からeduじゃないtelloをうごかしてみたよ~改行コードには気をつけよう~enebular(cloud)からeduじゃないtelloをうごかしてみたよ~改行コードには気をつけよう~
enebular(cloud)からeduじゃないtelloをうごかしてみたよ~改行コードには気をつけよう~
MinoruInoue2
 
Atom motion+arduino iot cloud+node-redで非接触ボックスを作る
Atom motion+arduino iot cloud+node-redで非接触ボックスを作るAtom motion+arduino iot cloud+node-redで非接触ボックスを作る
Atom motion+arduino iot cloud+node-redで非接触ボックスを作る
MinoruInoue2
 
円滑なRumicar開発をするためのtips Rumicar Conference
円滑なRumicar開発をするためのtips Rumicar Conference円滑なRumicar開発をするためのtips Rumicar Conference
円滑なRumicar開発をするためのtips Rumicar Conference
MinoruInoue2
 
Arduino Cloud IoTとNode-RedでRumiCarを見える化する
Arduino Cloud IoTとNode-RedでRumiCarを見える化するArduino Cloud IoTとNode-RedでRumiCarを見える化する
Arduino Cloud IoTとNode-RedでRumiCarを見える化する
MinoruInoue2
 
Aliexpressで買ったエンドスコープが思いの外使えた話
Aliexpressで買ったエンドスコープが思いの外使えた話Aliexpressで買ったエンドスコープが思いの外使えた話
Aliexpressで買ったエンドスコープが思いの外使えた話
MinoruInoue2
 
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
MinoruInoue2
 
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみるMaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
MinoruInoue2
 
Simulinkを用いたtoioラジコン
Simulinkを用いたtoioラジコンSimulinkを用いたtoioラジコン
Simulinkを用いたtoioラジコン
MinoruInoue2
 
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなしM5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
MinoruInoue2
 
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
MinoruInoue2
 
ObnizとNode-REDでダンボール金庫システムを作った話
ObnizとNode-REDでダンボール金庫システムを作った話ObnizとNode-REDでダンボール金庫システムを作った話
ObnizとNode-REDでダンボール金庫システムを作った話
MinoruInoue2
 

More from MinoruInoue2 (17)

RPLidar C1M1からROS2の沼に入った話&プレゼントのレーザーカッターキーホルダーの裏話
RPLidar C1M1からROS2の沼に入った話&プレゼントのレーザーカッターキーホルダーの裏話RPLidar C1M1からROS2の沼に入った話&プレゼントのレーザーカッターキーホルダーの裏話
RPLidar C1M1からROS2の沼に入った話&プレゼントのレーザーカッターキーホルダーの裏話
 
Arduino Uno R4 WifiでMQTT通信してみる enebular meetup資料
Arduino Uno R4 WifiでMQTT通信してみる enebular meetup資料Arduino Uno R4 WifiでMQTT通信してみる enebular meetup資料
Arduino Uno R4 WifiでMQTT通信してみる enebular meetup資料
 
M5DialとESP32-BLE-Gamepadでコントローラー作ってみた
M5DialとESP32-BLE-Gamepadでコントローラー作ってみたM5DialとESP32-BLE-Gamepadでコントローラー作ってみた
M5DialとESP32-BLE-Gamepadでコントローラー作ってみた
 
motionbitとml5jsで非接触ロボット操作!
motionbitとml5jsで非接触ロボット操作!motionbitとml5jsで非接触ロボット操作!
motionbitとml5jsで非接触ロボット操作!
 
M5ATOM S3とShiftr.ioで 非接触温度センサの値をネットに流してみた
M5ATOM S3とShiftr.ioで 非接触温度センサの値をネットに流してみたM5ATOM S3とShiftr.ioで 非接触温度センサの値をネットに流してみた
M5ATOM S3とShiftr.ioで 非接触温度センサの値をネットに流してみた
 
STM32H745を四足歩行させる話
STM32H745を四足歩行させる話STM32H745を四足歩行させる話
STM32H745を四足歩行させる話
 
enebular(cloud)からeduじゃないtelloをうごかしてみたよ~改行コードには気をつけよう~
enebular(cloud)からeduじゃないtelloをうごかしてみたよ~改行コードには気をつけよう~enebular(cloud)からeduじゃないtelloをうごかしてみたよ~改行コードには気をつけよう~
enebular(cloud)からeduじゃないtelloをうごかしてみたよ~改行コードには気をつけよう~
 
Atom motion+arduino iot cloud+node-redで非接触ボックスを作る
Atom motion+arduino iot cloud+node-redで非接触ボックスを作るAtom motion+arduino iot cloud+node-redで非接触ボックスを作る
Atom motion+arduino iot cloud+node-redで非接触ボックスを作る
 
円滑なRumicar開発をするためのtips Rumicar Conference
円滑なRumicar開発をするためのtips Rumicar Conference円滑なRumicar開発をするためのtips Rumicar Conference
円滑なRumicar開発をするためのtips Rumicar Conference
 
Arduino Cloud IoTとNode-RedでRumiCarを見える化する
Arduino Cloud IoTとNode-RedでRumiCarを見える化するArduino Cloud IoTとNode-RedでRumiCarを見える化する
Arduino Cloud IoTとNode-RedでRumiCarを見える化する
 
Aliexpressで買ったエンドスコープが思いの外使えた話
Aliexpressで買ったエンドスコープが思いの外使えた話Aliexpressで買ったエンドスコープが思いの外使えた話
Aliexpressで買ったエンドスコープが思いの外使えた話
 
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
ユニバーサルプレートをnumpy-stlで自作する(Make DIY universal plate with numpy-stl)
 
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみるMaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
MaixduinoにObniz OSを入れて エッジAIとenebularをつなげてみる
 
Simulinkを用いたtoioラジコン
Simulinkを用いたtoioラジコンSimulinkを用いたtoioラジコン
Simulinkを用いたtoioラジコン
 
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなしM5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
M5StickVとobnizとenebularを使って死角確認ツールもどきを作ったはなし
 
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
第1回 Jetsonユーザー勉強会 AIoTをお手軽に試した話
 
ObnizとNode-REDでダンボール金庫システムを作った話
ObnizとNode-REDでダンボール金庫システムを作った話ObnizとNode-REDでダンボール金庫システムを作った話
ObnizとNode-REDでダンボール金庫システムを作った話
 

自作ユニバーサルプレート&LEGO互換パーツ作成ツールのなかみのはなし