Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RustのHAL(avr-hal)でLeafonyを動かした件
Search
k-abe
October 24, 2021
Programming
1
100
RustのHAL(avr-hal)でLeafonyを動かした件
2021/10/24 TOPPERS開発者会議 LT発表資料
k-abe
October 24, 2021
Tweet
Share
More Decks by k-abe
See All by k-abe
【連続講座3】デザインパターンを学び、ソフトウェア設計に生かそう(Facade・Observer・State)
kabe
0
54
【連続講座2】デザインパターンを学び、ソフトウェア設計に生かそう(Builder・Strategy・Composite)
kabe
0
42
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton)
kabe
0
56
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー)
kabe
0
92
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
kabe
0
400
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則
kabe
0
730
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則
kabe
0
410
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた
kabe
0
100
テストからより良い組込みソフトウェア開発を考える
kabe
0
160
Other Decks in Programming
See All in Programming
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
120
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
5
7.7k
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
190
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
780
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
600
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
270
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
2
11k
VS Code Update for GitHub Copilot
74th
2
660
Rubyでやりたい駆動開発 / Ruby driven development
chobishiba
1
740
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
150
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
12k
MCPを使ってイベントソーシングのAIコーディングを効率化する / Streamlining Event Sourcing AI Coding with MCP
tomohisa
0
120
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Writing Fast Ruby
sferik
628
62k
Fireside Chat
paigeccino
37
3.5k
Documentation Writing (for coders)
carmenintech
72
4.9k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Designing Experiences People Love
moore
142
24k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Code Reviewing Like a Champion
maltzj
524
40k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Facilitating Awesome Meetings
lara
54
6.4k
Transcript
2021.10.24 ύʔιϧςΫϊϩδʔελοϑגࣜձࣾ Ѩ෦ߞೋ
[email protected]
RustͷHAL(avr-hal)ͰLeafonyΛಈ͔ͨ݅͠ TOPPERS։ൃऀձٞ2021
• ࣗݾհ • ͓͢Δ͜ͱ • ༻ޠઆ໌ • ։ൃڥ • ۩ମత࡞ۀ
• ݁Ռ • ՝ ࣍
• ໊લɿѨ෦ɹߞೋ(͋ɹ͜͏͡) • ύʔιϧςΫϊϩδʔελοϑגࣜձࣾɹϝʔϧɿ
[email protected]
• ҩྍػث։ൃɻ • ࠐΈιϑτΣΞ։ൃɻCݴޠɺOSͳ͠(ϕΞϝλϧ)ͷ։ൃۀܦݧ͕΄ͱΜͲɻ • twitter:
@juraruming • ϒϩά: https://k-abe.hatenablog.com/ ࣗݾհ
• Leafonyͱ͍͏খܕج൘ͷCιʔεαϯϓϧΛRustʹҠ২ͨ͠ɻ ɹϋʔυΣΞґଘ෦ͷҠ২ɻHAL(avr-hal)ͰରԠ͍ͯ͠ͳ͍ϋʔ υΣΞʹରԠͤͨ͞ɻ • ಈ࡞֬ೝͰ͖֤ͨछϖϦϑΣϥϧ ɹgpioͰLνΧɺuartɺi2cɺdelay ͓͢Δ͜ͱ
1.Leafony 2.avr-hal ༻ޠઆ໌
1.Leafony ɾখܕͷج൘ɻৄͪ͘͜͠ΒΛࢀরɻ https://docs.leafony.com/docs/overview/ ɾArduino UNOͱಉ͡AVRϚΠίϯ(Atmega328P)͕ࡌ͞Ε͍ͯΔ ɾArduino UNOͱͷҧ͍ΫϩοΫ(UNO =16MHz, Leafony =
8MHz) ɾࠓճʲBasic Kitʳ͕ରɻ https://docs.leafony.com/docs/products/basic/ ༻ޠઆ໌
2, avr-hal ɾArduino͚ͷHALɻ https://github.com/Rahix/avr-hal ɾHALͷબࢶͱͯ͠avr-rustͱavr-hal͕͋ͬͨ ͕avr-halΛબ(avr-rustڥߏஙͰ͖ͣஅ೦)ɻ ɾavr-halӈਤͷ֤छArduinoγϦʔζΛαϙʔ τɻ ༻ޠઆ໌
։ൃڥ No ߲ όʔδϣϯ උߟ 1 ϗετPC MacBook macOS Big
Sur όʔδϣϯ11.6 2 λʔήοτϋʔυΣΞ Leafony Basic Kit 3 Rust ίϯύΠϥ ɾnightly-2021-01-07 ɾrustc 1.51.0-nightly avr-halͰόʔδϣϯࢦఆͷͨΊ 4 avr-hal 2021/10/15ݱࡏ࠷৽ͷ ίϛοτ: 8ad1be ίϛοτ࣌: 2021/9/17
1. ։ൃڥߏஙํ๏ 2. C⇛RustҠ২ 3. ίϯύΠϧ 4. ॻ͖ࠐΈ ※ࠓճͷιʔείʔυˣ https://github.com/grace2riku/avr-hal/tree/add_leafony_211015
۩ମత࡞ۀ
1. ։ൃڥߏஙํ๏ • avr-halͷखॱͷ௨Γ https://github.com/Rahix/avr-hal README.md -> Quickstart ※ίϯύΠϥstableͰͳ͘ɺnightlyΛ͏ͱ͜Ζ͕ҙɻ ۩ମత࡞ۀ
2, C⇛RustҠ২ • Ҡ২͢ΔCαϯϓϧιʔε͜Εɻ όοςϦిѹಡΈऔΓ https://docs.leafony.com/docs/examples/beginner/1_p/basic/read_battery/ ɹ⇛i2cͰόοςϦిѹಡΈग़͠⇛uartૹ৴⇛LEDτάϧ⇛1ඵdelayͷ܁Γฦ͠ • avr-halͷArduino UNOαϯϓϧίʔυΛϕʔεʹLeafony͚ʹվ͍ͯ͘͠ɻ
ɹexamples/arduino-uno/src/bin σΟϨΫτϦҎԼʹαϯϓϧίʔυ͕͋Δɻ • ΫϩοΫઃఆมߋɹ˞࣮ʹ՝͋Γɻ༰ޙड़ɻ ɹArduino UNO16MHz, Leafony8MHzɻ ɹarduino-hal/src/clock.rsͷpub type DefaultClock = avr_hal_generic::clock::MHz16;Λpub type DefaultClock = avr_hal_generic::clock::MHz8;ʹมߋɻ ۩ମత࡞ۀ
3, ίϯύΠϧ avr-halͷखॱͷ௨Γ https://github.com/Rahix/avr-hal README.md -> Quickstart cd examples/arduino-uno #
Build and run it on a connected board cargo run --bin uno-blink ɹ⇛͜ͷ1ίϚϯυͰίϯύΠϧɺॻ͖ࠐΈ·Ͱ࣮ߦͯ͘͠ΕΔɻʲuno-blinkʳʹίϯύΠϧ͍ͨ͠ ιʔείʔυΛࢦఆ͢Δɻ ۩ମత࡞ۀ
3, ίϯύΠϧ Leafonyͷ߹ɺʲcargo run --bin uno-blinkʳͰॻ͖ࠐΈ͕ࣦഊ͢ ΔɻίϯύΠϧɾॻ͖ࠐΈΛͦΕͧΕͷίϚϯυͰ࣮ࢪͨ͠ɻ ʲίϯύΠϧʳ cargo build
--bin battery_voltage ※battery_voltage͕ࠓճՃͨ͠ιʔείʔυͷ໊শ ۩ମత࡞ۀ
4, ॻ͖ࠐΈ ॻ͖ࠐΈ༻ͷπʔϧʲavrdudeʳΛࣄલʹΠϯετʔϧ͠ɺelfͱಉ ͡֊Ͱ࣍ͷίϚϯυ࣮ߦɻɹ avrdude -patmega328p -carduino -P/dev/cu.usbserial-AH07FVYA -b 57600
-D -U flash:w:battery_voltage.elf:e ۩ମత࡞ۀ
• ίϯύΠϧɺॻ͖ࠐΈ͕ऴΘͬͨΒλʔϛφϧͰ࣍ͷίϚϯυͰଓ͢ΔɻࠓճλʔϛφϧʹminicomΛ༻ɻ minicom -D /dev/cu.usbserial-AH07FVYA -b 57600 • ଓͰ͖Δͱ࣍ͷϝοηʔδ͕λʔϛφϧʹදࣔ͞ΕΔɻ [0]=0,
[1]=0, [2]=255, [3]=255 Batt[V] = 0 [0]=0, [1]=0, [2]=255, [3]=255 Batt[V] = 0 [0]=0, [1]=0, [2]=255, [3]=255 Batt[V] = 0 [0]=7, [1]=64, [2]=255, [3]=255 // ӈਤͷϦʔϑ(ج൘)ͷεΠονΛಈ͔͢ͱίΠϯిͷిѹΛऔಘͰ͖Δɻ Batt[V] = 2990 // ϦʔϑͷεΠονΛมԽͤ͞ΔͱόοςϦిѹ͕ಡΈग़͍ͤͯΔɻ [0]=7, [1]=80, [2]=255, [3]=255 Batt[V] = 3016 [0]=7, [1]=64, [2]=255, [3]=255 ݁Ռ
• Leafony͚ʹΫϩοΫͷมߋ(16MHz⇛8MHz)Λߦͬͨɻ ɹݱঢ়ͷରԠͩͱLeafonyҎ֎ͷArduinoͷΫϩοΫઃఆ͕1/2ʹ ͳͬͯ͠·͏ͨΊظ௨Γʹಈ͔ͳ͍ɻLeafonyͷϏϧυߏΛ Ճ͢ΕଞͷArduinoͱڞଘͰ͖Δɻ • cargo run --bin uno-blinkͷ1ίϚϯυͰॻ͖ࠐΈ·ͰΓ͍ͨɻ
• warning͕Ͱ͍ͯΔ͕ແࢹ͍ͯ͠ΔͷͰରԠɻ ՝
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ ऴΘΓ