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
98
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
30
【連続講座2】デザインパターンを学び、ソフトウェア設計に生かそう(Builder・Strategy・Composite)
kabe
0
26
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton)
kabe
0
36
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー)
kabe
0
69
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
kabe
0
340
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則
kabe
0
580
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則
kabe
0
360
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた
kabe
0
76
テストからより良い組込みソフトウェア開発を考える
kabe
0
120
Other Decks in Programming
See All in Programming
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
210
JAWS Days 2025のインフラ
komakichi
1
130
Datadog Workflow Automation で圧倒的価値提供
showwin
1
290
自力でTTSモデルを作った話
zgock999
0
120
React 19アップデートのために必要なこと
uhyo
8
1.6k
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
1.1k
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
8
1.5k
color-scheme: light dark; を完全に理解する
uhyo
7
500
データベースのオペレーターであるCloudNativePGがStatefulSetを使わない理由に迫る
nnaka2992
0
250
GoとPHPのインターフェイスの違い
shimabox
2
210
Lambdaの監視、できてますか?Datadogを用いてLambdaを見守ろう
nealle
2
560
仕様変更に耐えるための"今の"DRY原則を考える
mkmk884
9
3.2k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
Designing for Performance
lara
605
68k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Code Review Best Practice
trishagee
67
18k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
A Tale of Four Properties
chriscoyier
158
23k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
440
RailsConf 2023
tenderlove
29
1k
Transcript
2021.10.24 ύʔιϧςΫϊϩδʔελοϑגࣜձࣾ Ѩ෦ߞೋ koji.abe@persol.co.jp RustͷHAL(avr-hal)ͰLeafonyΛಈ͔ͨ݅͠ TOPPERS։ൃऀձٞ2021
• ࣗݾհ • ͓͢Δ͜ͱ • ༻ޠઆ໌ • ։ൃڥ • ۩ମత࡞ۀ
• ݁Ռ • ՝ ࣍
• ໊લɿѨ෦ɹߞೋ(͋ɹ͜͏͡) • ύʔιϧςΫϊϩδʔελοϑגࣜձࣾɹϝʔϧɿkoji.abe@persol.co.jp • ҩྍػث։ൃɻ • ࠐΈιϑτΣΞ։ൃɻ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͕Ͱ͍ͯΔ͕ແࢹ͍ͯ͠ΔͷͰରԠɻ ՝
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ ऴΘΓ