7.7K Views
March 24, 24
スライド概要
try! Swift Tokyo 2024のワークショップ「Swiftでレゴを動かそう!」後半の資料です。
SwiftとLEGOとBluetooth LEが好きなプログラマ
Swiftでレゴを動かそう! Getting started with controlling LEGO using Swift Group Work Part
自己紹介 Self Introduction 大庭 慎一郎(Shinichiro Oba) ID: @ooba or @bricklife The 1st iOS App Developer at Mercari LEGO Lover
僕が書いたレゴ プログラミング本 LEGO Programming Books I Wrote
今日やること Today's Agenda Core Bluetoothの基礎を学ぶ Learning the Basics of Core Bluetooth LEGO Wireless Protocolでレゴを動かす Controlling LEGO with LEGO Wireless Protocol 自分のモデルを作って遊ぶ! Create and Play with Your Own Models!
IDE Swift Playgrounds Xcode
学習に使うプロジェクト Project for Learning https://github.com/bricklife/LEGO-CoreBluetooth-Programming-Workshop/ releases/tag/starting-point
レゴ エデュケーション SPIKE ベーシックセット LEGO Education SPIKE Essential Set
Powered by 株式会社アフレル様から無償貸与
Unbox!
ハブ Hub マイコン内蔵 Microcontroller Embedded Bluetooth LEで接続可能 Connectable via Bluetooth LE 加速度センサーやジャイロセンサーを内蔵 with Accelerometer and Gyroscope Sensors
ハブがBluetooth LEのペリフェラルになる Hub acts as a Bluetooth LE Peripheral Service "Turn Motor" Write UUID: 00001623-1212-EFDE-1623-785FEABCD123 Characteristic UUID: 00001624-1212-EFDE-1623-785FEABCD123 Notify "Detected Red" Peripheral
モーター、マトリクスライト、カラーセンサー Motor, Color Matrix Light, and Color Sensor
そのほかのパーツ Other Parts
めちゃめちゃ便利なパーツ The Most Useful Part
Core Bluetoothの世界へ Into the World of Core Bluetooth
Core Bluetoothの世界 The World of Core Bluetooth Service UUID: 00001623-1212-EFDE-1623-785FEABCD123 Write Characteristic UUID: 00001624-1212-EFDE-1623-785FEABCD123 Notify Central Peripheral
Core Bluetoothの世界 The World of Core Bluetooth CBService CBUUID: 00001623-1212-EFDE-1623-785FEABCD123 Write CBCharacteristic CBUUID: 00001624-1212-EFDE-1623-785FEABCD123 Notify CBCentralManager CBPeripheral
Write
Read
Notify
CBPeripheralとCBCharacteristicの取得方法 How to Retrieve CBPeripheral and CBCharacteristic 0. Advertising (from Peripheral) 1. Scan 2. Connect 3. Discover Service 4. Discover Characteristic
0. Advertising (from Peripheral)
1. Scan
1. Scan Response
2. Connect
2. Connect Response
3. Discover Service
3. Discover Service Response
4. Discover Characteristic
4. Discover Characteristic Response
モーターを回してみよう! Let's Turn Motor!
5. Write
モーターAのパワーを50%にするメッセージ Message to Set Motor A's Power to 50% [0x08, 0x00, 0x81, 0x00, 0x11, 0x51, 0x00, 0x32] どこが「50」かわかりますか? Where does '50' mean? パワーを「0」にしてみましょう Let's set the power to '0'
モーターAのパワーを50%にするメッセージ Message to Set Motor A's Power to 50% [0x08, 0x00, 0x81, 0x00, 0x11, 0x51, 0x00, 0x32] Port: A (0x00) Power: 50%
モーターAを360度回すメッセージ Message to Rotate Motor A by 360 degrees [0x0e, 0x00, 0x81, 0x00, 0x11, 0x0b, 0x68, 0x01, 0x00, 0x00, 0x32, 0x64, 0x7f, 0x03] 360
6. Enable Notification
6. Notify
カラーセンサーを使ってみる Try using the Color Sensor [0x0a, 0x00, 0x41, 0x01, 0x05, 0x01, 0x00, 0x00, 0x00, 0x01] Port: B (0x01) Mode: 5
!
LEGO Wireless Protocol https://lego.github.io/lego-ble-wireless-protocol-docs/
!
LWPKit https://github.com/bricklife/LWPKit/ Swift Package for LEGO Wireless Protocol Decoding and Encoding
Build Time!
LEGO Wireless Protocol対応パーツ LEGO Wireless Protocol Compatible Parts
ポートありパーツ Parts with Ports WeDo 2.0 2006 2013 2016 2017 2018 SPIKE Prime 2019 SPIKE Essential 2021 2020 2019
ポートに接続できるパーツ Parts that can be connected to Ports
ポートなし Parts without Ports 2020 2018 2021 2018 2022
LEGO Wireless Protocol対応セット LEGO Wireless Protocol Compatible Sets
Move Hub
Hub
Hub
Technic Hub
Technic Hub x2
Duplo Train
LEGO Mario
レゴ エデュケーション SPIKE ベーシック LEGO Education SPIKE Essential
Presentation Time
Thank you!