RustでTiny2040をLチカしてみる
Tiny2040を入手したので、最近ハマっているRustでLチカをしてみる。
Hal クレート
まずは、rp-halクレートがGitリポジトリにあるのでクローンしてくる。
git clone https://github.com/rp-rs/rp-hal
ビルドと書き込み
ビルドから書き込みだけど、組込みRust本で使用していたUF2ブートローダーをつかって
ファームウェアを書き込む cargo hf2
コマンドが使えなさそう。
hf2は内部的にHIDを使っていそうだが、Tiny2040がHIDとしてでてこない。
(RP2040がHIDデバイスとして使ったりできるようにしているからかな?)
ということで、バイナリからuf2ファイルに変換してストレージにコピーする方法をとる。 まずは使うCargoサブコマンド一式インストール。
cargo install uf2conv cargo-binutils
Lチカのソースコードはexampleディレクトリにあるので今回はそれを書き込んでやる。
ビルド
cargo objcopy --example blink --release -- -O binary blink.bin
UF2へ変換
uf2conv blink.bin --base 0x10000000 --family 0xe48bff56 --output blink.uf2
あとは出来上がったUF2ファイルをコピーする。無事動いた。
tiny2040をRustでLチカ pic.twitter.com/2L3LJCsXai
— げんしゅう (@gensyu_) 2021年6月9日
タスクランナーcargo-make
の導入
でも、hf2サブコマンドに慣れてしまったのでわざわざコマンド打つのも面倒だから、なんかいいものはないかと調べてみると
cargo-make
というタスクランナーを発見。
ワークスペースのディレクトリにMakefile.toml
を置き、タスクを記述してやることで色々できるっぽい。
Pythonとかコマンドなども動かせるので便利そう。
一旦下記にようにしてうまく動いたので満足。
[tasks.buildbin] command = "cargo" args = ["objcopy", "--example", "blinky", "--release", "--", "-O", "binary", "firmware.bin"] [tasks.convuf2] command = "uf2conv" args = ["firmware.bin", "--base", "0x10000000", "--family", "0xe48bff56", "--output", "firmware.uf2"] [tasks.flashuf2] command = "cp" args = ["./firmware.uf2", "/[RPTINYのドライブ]/"] [tasks.rp2040build] dependencies = [ "buildbin", "convuf2", "flashuf2", ]
ADALM2000を買った
USBオシロ的なSomethingが欲しくなったので購入。
アップデートなどいろいろあったもののサクッと使えた。ソフトウェアがかっこいいけどちょっと難あり。
ここらへんは結構アップデートもあるっぽい?
機能としては下記でかなり豊富
・オシロスコープ
・ファンクションジェネレータ(ソフトウェア上ではシグナルジェネレータ)
・スペクトルアナライザ
・ネットワークアナライザ
・ロジックアナライザ
・パターンジェネレータ(時系列的なデジタル信号を出力できるClock、UARTなど)
・デジタルIO(I/Oピンのそれぞれの入出力の状態の監視や出力)
・テスター
・電圧源
ちなみに、Open Source Hardwareで回路図なども公開されており、
学習用途を銘打っているが結構使えるしろものみたい。
これを使って、回路の勉強をし直してみようかな。
Maker Faire Tokyo 2019行ってきた
MFTに行ってきたので、その時撮った写真をまとめておく。
B01-02 達磨スピーカー
達磨の目玉にスピーカー入れちゃったもの。非常にめでたい。
I03-09 立体表示ディスプレイ
写真だと微妙だけど、2Dディスプレイを振動させ残像で立体に富士山が見られる装置。 ケース、GUIが洗練されておりかっこいい!!
S08-05 M5Stack
M5StickVはまだ手に入れれていない…。早くゲットしないと。
H01-07 自宅で粒子加速器を自作する
一体何者なの…。
I14-04 光の陶芸「micRokuro」
光ファイバーが回転して手持ち花火みたいでキレイ、手で形を変えれるのも面白い!
I10-11 ISS TRACKER(3d)
国際宇宙ステーション(ISS)の位置を地球儀を使って表示。地球儀での表示はかっこよかった。あと青く光るISSが良い。
I10-10 M5Reflow
市販のトースタの前面パネルを取り替えることでリフロー炉へ変身できちゃう。M5StackでUIもいい感じに作ってあってかわいい。
I10-06機械式ディスプレイ大集合
パタパタと変わっていく様とその音が好き。
I02-01 「サボる時計」
時刻を表示しなければならないという人からのストレスから開放された時計。気分が乗れば表示してくれる。
内部ではちゃんと正確な時刻を刻んでいるのでこれは時計だ。
機械学習のための教師用画像データ生成&認識システム
抵抗のカラーコードを画像認識で読みたいから、まずはその教師用データ作成用の装置。楽するために苦労するを体現している。
とっても完成度も面白さもあったMFT2019でした。
NT金沢に3年ぶりに行ってみた
作ってみた=正義
会場に着き、ジメッとした蒸し暑さの中いろんなものの展示があって「あぁ、NT金沢に来たんだなぁ」と感じた。
3年前は研究でやってた光を使った給電手法の具体化として、 赤外のLEDを手半田で200個並べたLEDアレイに直流安定化電源と太陽電池とスマホを使って光給電をやる展示をしていた。*1
このとき先生とお世話係の方が知り合いだったこともあって、半ば強引に参加したんだけど、
そのときNT金沢は「なんか作ってやってみた」に優しいと感じていたが、
今年も 作ってみたは正義 の名の下に、個人の想いが詰まった作品がたくさん並んでいて、とても刺激や感動を頂いた。
もうひとつ驚いたのは展示数で僕が展示したときは70くらいだったけど、年々増えているらしく今年は135まで増えており、
ほぼ倍となっていたのでプレゼンを聞いていたので全然回りきれなかった。
これまでのNT〇〇とこれから
NT金沢の最初のトークセッションとして平成NT振り返りをやっていて、そこでNTの成り立ちなどを教えていただいたのだが、
NTのTが高槻のTだったことには驚いた。
あと、NTはいろんな地域で行われるようになり、それぞれの個性があり細分化されて行っているらしい(行政と絡めたり地域の特性を活かしたり)。あとNT"俺んち"をやりたいひともいるらしい。
NT金沢は会場が駅前であるので一般の人が多く通るなかで個性的な展示物が並ぶ異様な光景と、
普段からTwitterなどでみる作品を実際に見れたり、全くしらない展示物に触れたりそのカオスを十分に楽しんだ週末だった。
展示されていた皆さん、お世話係の皆様、楽しい時間をありがとうございました。
来年はなにか出せるといいな。
(電源剥き出し、ユニバーサル基板むき出し、太陽電池とUSB直結のいろいろ残念な構成)
ハードウェアハッカーを読んでみた
Twitterで見かけ、Amazonで予約購入してた「ハードウェアハッカー」が届いたので読んでみた。
- 作者: アンドリュー“バニー"ファン,山形浩生,高須正和
- 出版社/メーカー: 技術評論社
- 発売日: 2018/10/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
僕にとってこの本の文章構成は初めてでちょっと読みにくかったけれど、 それは「本書のダイジェストと読みどころ」を流し読みしてしまったせいなので、 ここはちゃんと読んでおけばよかった。
実体験を通した実際のハードウェアハック、モノの量産Howto、複数のスタートアップ経験、 また知的財産についての考え方などが書かれており、それぞれとてもおもしろかった。
訳書がでなければ出会わなかった本だと思うので、翻訳出版してくださった方々大変ありがとうございました。
以下、感想というかメモを残しておこうと思う。
「ハードウェアはそもそもオープンだった」
実物を見れば寸法もわかるし、顕微鏡さえあれば回路図も起こせてしまうし、 昔はハードウェアの回路図もついてきたという話。
僕も昔は粗大ごみに捨てられた家電製品をもらって解体したりしてたことを思い出した。 今は粗大ごみから家電製品をもらってくることはできないけど、ハードが安くなっているし、またこういう「分解」をしてみようかと思った。
オープンソースとハードウェアとコミュニティ
知的財産権を守りつつフェアユースの考え方を駆使してリバースエンジニアリングによるハックを行ったことが書かれている。
技術やイノベーションの観点からみると、ムーアの法則が限界になってきて技術をオープンにして組み合わせやすくすることは大切だと思う。 そういったアイデア・技術がコミュニティ上で集合知として使われていくことがハードウェアイノベーションにつながっていくと感じた。
僕はまだ技術のコミュニティにちゃんと参加したことはないから、まずはMake:とかNTとかから参加してみようと思う。