SlideShare a Scribd company logo
Rustॳ৺ऀ͕ArduinoΛLνΧͯ͠Έͨ
Ѩ෦ߞೋ/2021.4.27
RustͷLTձ Shinjuku.rs #15 @ΦϯϥΠϯ
1
• ࣗ‫঺ݾ‬հ


• ຊ೔ͷςʔϚ


• Կ‫ނ‬ɺλʔήοτ͸Arduino?


• ࢼͯ͠Έͨ͜ͱ


• ‫ײ‬૝
໨࣍
2
• ໊લɿѨ෦ߞೋ(͋΂ɹ͜͏͡)


• ύʔιϧςΫϊϩδʔελοϑ‫ࣜג‬ձࣾʹॴଐɻ‫ݸ‬ਓ‫ݟ‬ղɻ


• ೿‫Ͱݣ‬ҩྍ‫ثػ‬ϝʔΧʹͯब‫ۀ‬தɻ


• ૊ࠐΈιϑτ΢ΣΞ։ൃɻ


• ‫ޠݴ‬ɿC‫ޠݴ‬


• Rustྺɿࠓ೥ͷ3݄ࠒ͔Βຊࠊ͍Εֶͯश։࢝


• ϒϩάɿhttps://k-abe.hatenablog.com/


• Twitterɿ@juraruming
ࣗ‫঺ݾ‬հ
• RustͰArduino UNO(ͱಉ͡ϚΠίϯ)ͷLνΧɺͦͷଞपล‫ػ‬ೳͷ੍‫͕ޚ‬
Ͱ͖ͨͷͰ৘ใ‫ڞ‬༗ɻ
ຊ೔ͷςʔϚ
૊ࠐΈͰRustΛࢼ͢৔߹ͷλʔήοτ‫ج‬൘ͷબ୒ࢶͷྫ


• Arduino


• ϥζύΠ


• STϚΠΫϩɹNucleoγϦʔζ ARM Cortex-MγϦʔζ


• GR-PEACH ARM Cortex-A


• micro:bit


• LEGO EV3


• GBA


• PSP


• ͦͷଞ
Կ‫ނ‬ɺλʔήοτ͸Arduino?
͍Ζ͍Ζબ୒ࢶ͕͋Δ͕ArduinoΛબΜͩཧ༝͸ɾɾɾ


• ҎલArduinoΛ࢖ͬͨ͜ͱ͕͋ͬͨɻ


• Arduino UNOͰ΋ྑ͍͚Ͳ֎෦σόΠεΛ֎෇͚͢Δख͕ؒ͋Δɾɾɾɻ


• Leafonyͱ͍͏ʮ͍Ζ͍Ζࢼͤͦ͏ͳʯ‫ج‬൘͕ͨ·ͨ·ख‫ͨͬ͋ʹݩ‬ɻ


• LeafonyɾɾɾIoTΤοδσόΠεͱͯ͠ྑ͍‫͡͡ײ‬Όͳ͍͔???খͯ͘͞
֨޷͍͍ɻαϯϓϧίʔυ΋ެ։͞Ε͍ͯͨɻ͢͜͠ͷมߋͰRustͰಈ
͔ͤͦ͏ͳ‫͡ײ‬ɻ
Կ‫ނ‬ɺλʔήοτ͸Arduino?
݁Ռɺ࣍ͷ͜ͱ͕֬ೝͰ͖·ͨ͠ɻ


■Leafony Basic KitʹͯʮόοςϦిѹಡΈऔΓʯαϯϓϧϓϩάϥϜΛ֬ೝͰ͖ͨɻ


• I2CϚελͰϥΠτɾϦʔυɻ


ɹI2CεϨʔϒͷADίϯόʔλ͔ΒϘλϯి஑ͷిѹΛಡΈग़ͤͨɻ


• γϦΞϧ௨৴(ૹ৴)


• LνΧ


• ms୯Ґͷ࣌ؒ଴ͪ(delay)


※Arduino UNOɺArduino MEGAͰ΋LνΧ֬ೝͰ͖·ͨ͠ɻ
Կ‫ނ‬ɺλʔήοτ͸Arduino?
Leafonyͱ͸?


Կ‫ނ‬ɺλʔήοτ͸Arduino?
Leafony Basic Kitͱ͸?


Կ‫ނ‬ɺλʔήοτ͸Arduino?
• ʲavr-halʳͷιʔείʔυΛར༻ͤͯ͞΋Β͍֬ೝͨ͠ɻ


ɹhttps://github.com/Rahix/avr-hal


• ࠷ॳ͸ʲThe AVR-Rust projectʳΛmacͰࢼ͕ͨ͠։ൃ‫ߏڥ؀‬ஙͰ͖ͣʹ࠳ંɻavr-
halʹҠߦͨ͠ɻ
ࢼͨ͜͠ͱ
• ʲavr-halʳ͸Լ‫ه‬ͷϋʔυ΢ΣΞΛαϙʔτɻ
ࢼͨ͜͠ͱ
ɾLeafony͸Arduino UNOͱಉ
͡ϚΠίϯatmega328pΛ࢖༻͠
͍ͯΔɻ


গ͠มߋͯ͠RustͰಈ͔ͤͳ͍
͔ͳͱࢥͬͨͷͰௐࠪͨ͠ɻ
• LeafonyͷʮόοςϦిѹಡΈऔΓʯαϯϓϧϓϩάϥϜ(Arduino IDE C
Ͱ࣮૷͞Ε͍ͯΔ)ΛRustʹॻ͖‫͑׵‬Δɻ


ɹϚΠίϯͱి‫ݯ‬ϦʔϑͷADίϯόʔλ͸I2CͰ઀ଓ͞Ε͍ͯΔɻ


ɹArduino IDE൛͸I2CͷWireϥΠϒϥϦͰ࣮૷͞Ε͍ͯΔɻ


ɹRust͸arduino_uno::I2cMasterͰI2CΛ࣮‫͢ݱ‬Δɻ


• ΫϩοΫʹґଘ͢Δॲཧ෦෼(γϦΞϧɺI2Cɺdelayؔ਺)Λ16MHz͔Β
8MHzʹมߋɻarduino UNO͸16MHz, Leafony͸8MHzͷͨΊɻ
ࢼͨ͜͠ͱ
• ݁Ռ


ɹavr-hal Arduino UNOͷαϯϓϧϓϩάϥϜΛLeafonyʹ߹Θͤͯগ͠ม
ߋͨ͠ͱ͜ΖɺLeafonyͷʮόοςϦిѹಡΈऔΓʯαϯϓϧϓϩάϥϜΛ
࣮ߦͰ͖ͨɻ
ࢼͨ͜͠ͱ
• ݁Ռ


Լਤ͸όοςϦిѹ(mV୯Ґ)ͷγϦΞϧσʔλΛද͍ࣔͯ͠Δͱ͜Ζɻ


Ϙλϯి஑ͷిѹ(໿3V)ΛಡΈग़͍ͤͯΔ໛༷ɻ
ࢼͨ͜͠ͱ
• ϒϩάʹগ͠ৄ͘͠ॻ͍ͨͷͰΑ͚Ε͹ࢀর͍ͩ͘͞ɻ


https://k-abe.hatenablog.com/entry/2021/04/14/125312


• ιʔείʔυ͸GitHubΛࢀরɻ


https://github.com/grace2riku/avr-hal/tree/add_leafony


ࢼͨ͜͠ͱ
• ҰԠɺRustͰArduinoͱಉ͡ϚΠίϯΛಈ͔ͤͨͷͰྑ͔ͬͨɻ


• Arduino IDEಉ༷ɺRustͷavr-halͰ΋ϚΠίϯͷϨδελΛҙࣝͤͣʹ
ϋʔυ΢ΣΞ੍‫͖ͨͰޚ‬ɻ


• Rustͷ‫ج‬ຊΛཧղͰ͖͍ͯͳ͍ͨΊɺ͓·͡ͳ͍ͷΑ͏ʹ‫͡ײ‬Δ‫ه‬ड़΋
͋Δɻ͜Ε͔ΒֶΜͰ͍͖͍ͨɻ


• RustͰArduinoɺબ୒ࢶͱͯ͠Ͳ͏Ͱ͔͢?
‫ײ‬૝
• avr-hal


https://github.com/Rahix/avr-hal


• Leafony


https://docs.leafony.com/docs/overview/


• Leafony Bacic Kit


https://docs.leafony.com/docs/products/basic/


• Leafony όοςϦిѹಡΈऔΓαϯϓϧϓϩάϥϜղઆ


https://docs.leafony.com/docs/examples/beginner/1_p/basic/read_battery/
ࢀরɾҾ༻
͝ਗ਼ௌɺ͋Γ͕ͱ͏
͍͟͝·ͨ͠ɻ
ऴΘΓ

More Related Content

More from 耕二 阿部

ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdfソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
耕二 阿部
 
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdfソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
耕二 阿部
 
20210830 rust入学式
20210830 rust入学式20210830 rust入学式
20210830 rust入学式
耕二 阿部
 
Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話
耕二 阿部
 
はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御
耕二 阿部
 
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
耕二 阿部
 
モデルベース開発勉強会
モデルベース開発勉強会モデルベース開発勉強会
モデルベース開発勉強会
耕二 阿部
 
EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料
耕二 阿部
 
AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化
耕二 阿部
 

More from 耕二 阿部 (9)

ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdfソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
 
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdfソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
 
20210830 rust入学式
20210830 rust入学式20210830 rust入学式
20210830 rust入学式
 
Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話
 
はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御
 
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
 
モデルベース開発勉強会
モデルベース開発勉強会モデルベース開発勉強会
モデルベース開発勉強会
 
EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料
 
AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化
 

Rust初心者がArduinoをLチカしてみた