YU2TA7KA's BLOG ~take one step at a time~

派生開発、組み込み開発周りのこと。

IT

電子計算機のデジタルとアナログの境界探求

IT

はじめに NOT回路 全体像 電流が流れる仕組み n型半導体とp型半導体 MOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor) NMOSとPMOS CMOSによるNOT回路 参考書/参考Webサイト おわりに 謝辞 はじめに 電子計算機(いわゆる今日のコンピュータ)は半導…

RaspberryPi Picoでマイク入力をオシロスコープで観測する

はじめに 環境 ピン配 ソースコード 動作確認 オシロスコープ(DSO-TC3) おわりに 参考 はじめに 組み込みRustで、マイク入力→FFT→LCD表示(周波数スペクトル)をしたいと思っている(組み込みRust本のターゲット変更版)のですが、その前段として、マイク入力の…

GitHubをレクチャーする

はじめに バージョン管理とは バージョン管理する理由 GitHubの使い方(Windows) ユーザー登録からpush(ファイル登録) 各作業の詳細(ChatGPT3.5利用) ユーザー登録する リポジトリを作成する Gitをインストールする リポジトリをCloneする hello.pyをgit add…

【組込みRust】RustでM5Stamp C3U MateからLCD表示する

はじめに 環境 サンプルコード 初期値の修正 ビルドコマンド 配線 動作確認 おわりに 気になっていること はじめに M5Stamp C3U MateにLCDを接続して、フェリス*1を表示させました。 フェリス 環境 www.yu2ta7ka-emdded.com の環境とハード/ソフト共に同じで…

高速フーリエ変換の概要とアルゴリズム

はじめに 高速フーリエ変換とは 高速フーリエ変換のアルゴリズム Step1 バタフライ演算を行う Step2 データ列(N個)をN/2個に分割する Step3 データ数が2個になるまで、Step1とStep2を繰り返す Step4 ビットリバースを行う 高速フーリエ変換の実装 なぜ高速化…

【組込みRust】RustでM5Stamp C3U MateでHello, world!する

はじめに 環境 M5Stamp C3U Mate 環境構築 WSLでのUbuntu環境構築 必要なパッケージのインストール Rustの環境構築 クレートの追加 WSLでのUSBデバイス接続の環境設定 WindowsにUSBIPD-WIN プロジェクトをインストールします LinuxにUSBIPツールとハードウェ…

対話型AIへの雑感

はじめに そういうやつの一覧 Microsoftが先行? 関わり方の方針 観測範囲のトップランナー 落合陽一氏 清水亮氏 西尾泰和氏 おわりに はじめに あまりにも高速に日々進化しているChatGPTなどの対話型AIについて、私なりにまとめます。 そういうやつの一覧 A…

WSL 開発環境の構築メモ

はじめに learn.microsoft.com を参考にWSL(Windows Subsystem for Linux) 開発環境を構築します。 WSLとは LinuxのプログラムをWindows上で実行するための仕組みです。 PowerShellの更新 WSLの前に、PowerShellを更新します。 Invoke-Expression “& { $(Inv…

離散フーリエ変換による波形データの周波数解析【No.3 離散フーリエ変換連載】

はじめに 波形データの準備 1個だけの周波数成分を含むcos波 2個の周波数成分を含むcos波の合成波 1個だけの周波数成分を含むcos波にノイズを含んだ波 DFTによる周波数解析 1個だけの周波数成分を含むcos波 2個の周波数成分を含むcos波の合成波 1個だけ…

離散フーリエ変換の実装と結果解釈【No.2 離散フーリエ変換連載】

はじめに 実装方針 実装コード サンプルデータの入力と出力 結果解釈 周波数分解能 DFTのパラメーター おわりに はじめに 前回は離散フーリエ変換(DFT)を理解するための参考情報を示し、数式を解説しました。今回は、離散フーリエ変換のpython実装と結果解釈…

高速フーリエ変換の前段である離散フーリエ変換を理解する 【No.1 離散フーリエ変換連載】

はじめに 参考情報 離散フーリエ変換とは ChatGPTによる概要 離散フーリエ変換の数式 離散フーリエ変換の解釈、読み方 O(N^2)を見つける 計算結果を考える W(DFT行列)を読む おわりに はじめに 1年前ごろにフーリエ変換について一度概観しました。高速フーリ…

【番外】離散フーリエ変換学習時のChatGPTとの対話ログ【No.4 離散フーリエ変換連載】

はじめに DFT行列の発見 コード生成 おわりに おまけ はじめに これまでに離散フーリエ変換についてまとめてきました。今回は番外として、離散フーリエ変換を扱う中でChatGPTと対話したログを示します。理解促進、コード生成に役立てることができたかなぁと…

【組込みRust】hifumiキーボードをRaspberry Pi PicoとRustで動かす

はじめに hifumiキーボードをRaspberry Pi PicoとRustで動かしました。 やったこと ピン配 PicoのIOマップとhifumiキーボードの回路図を見比べて、ピン割当をして、配線をしました。 pico ProMicro*1 I/O種別 GP18 D4 input GP19 C6 input GP12 F4 output GP…

【組込みRust】KOBA789さんの「自作キーボードって組込みRustの入門にちょうどいいらしい」動画が最高だった

はじめに 動画の概要 技術解説 トラブルシューティング 楽しい 気づき おわりに 動画内で参照していた情報 はじめに RustでキーボードFWを書く参考に「自作キーボードって組込みRustの入門にちょうどいいらしい」動画を視聴しました。いろいろなエッセンスが…

【組込みRust】組込みRustで2キーのキーボードFWを実装する(模倣)

はじめに HW 部品 配線 FW ソースコード おわりに はじめに RustでキーボードFWを実装するために、RustyKeysを参考(ほぼコピペ)にさせてもらうことにしました。ハードウェア(HW)は手持ちにあるものでやりくりするということで2キーのキーボードとして実装し…

【組込みRust】組込みRustのデバッグアダプタ環境を構築する

はじめに 手順 1. HWの準備 2. 必要なパッケージのインストール 3. デバッグアダプタ用PicoのFW更新 4. ターゲット用PicoのFW更新(Hello World) 詰まったところ デバッグアダプタ用のFWを書いていなかった 動作手順が少し複雑 おわりに 追記(2022年8月14日) …

【組込みRust】RustでRaspberry Pi PicoをLチカする

はじめに やったこと クロスビルド環境とツール準備*1 テンプレートのプロジェクト利用 ランナーの修正 プログラムの書き込み 実行結果 確認したこと おわりに はじめに 先日自作キーボードに入門しました。その次として、Raspberry Pi Pico向けにRustでキー…

自作キーボード入門~hifumiキットを通して~

はじめに 自作キーボードキットhifumi*1を組み立てて「testキーマップ」で動作させることができました。大変に良い体験だったので、やったことや思ったこと書きます。 はじめに やったこと 1. 部品の選定、発注(1時間) 2. 「ここからはじめる自作キーボード…

Windowsドライバー開発情報まとめ

タイトル コメント Windows 開発者向けドキュメント - Windows drivers | Microsoft Docs 開発情報の集積根本(root) すべてのドライバー開発者のための概念 - Windows drivers | Microsoft Docs タイトル通りなので読みましょう コード サンプルを参照 | Mic…

組込みRustの情報まとめ 2022年5月時点

はじめに 書籍 基礎から学ぶ 組込みRust 実践Rustプログラミング入門 オンラインドキュメント The Embedded Rust Book (和訳) Github Rust Embedded(英語) Github Awesome Embedded Rust(英語) はじめに 組込みRustに関連する情報がいろいろ散らばっているよ…

Screeps: Arenaのチュートリアルをやりました。Rustでのやり方が難しいです。【JavaScript】

はじめに なぜJavaScript以外でも実行できると記載されたのか チュートリアルをやりました 1. Loop and import 2. Simple move 3. First attack 4. Creeps bodies 5. Store and transfer 6. Terrain 7. Spawn creeps 8. Harvest energy 9. Construction 10. …

Unity(C言語用ユニットテストフレームワーク)の環境構築

はじめに テスト駆動開発による組み込みプログラミング ―C言語とオブジェクト指向で学ぶアジャイルな設計で組込みTDDを勉強中です。本書ではC専用テストハーネスとして、Unityが紹介されています。これの環境構築を行います。ゲームじゃないほうです。github…

フーリエ級数展開から周波数解析までの地図

はじめに フーリエ級数展開から周波数解析までの地図 必要な数学的知識 参考 参考書籍 高速フーリエ変換までの概観 実装練習 解析ごとの参考 その他参考 おわりに はじめに 昨年、基礎から学ぶ 組込みRust、Interfaceの2冊に出会いました。いずれも組込みの…

【組込みRust】no_stdで処理時間を計測する

はじめに 環境 処理時間の計測方法 1. stm32f4xx_halで提供されているタイマーで時間を計測します。 2. 設定した周期で割り込みが発生します。 3. 割り込み処理で時間計測用のカウンタをインクリメントします。 4. 計測したい処理の開始と終了でカウンタを参…

【組込みRust】RustのLチカコードを解読する

はじめに ソースコード 解読 Attributes #![deny(unsafe_code)] #![no_main] #![no_std] #[entry] Crates panic_halt cortex_m cortex_m_rt stm32f4xx_hal stm32f4xx_hal::prelude::* crate::hal::{stm32}; main() main() -> ! { loop {} } Peripheralsの取…

【組込みRust】RustでST Nucleo Board STM32F411RET6をLチカさせる

はじめに 概要 ST Nucleo Board STM32F411RET6とは 開発環境の構築 Rustのインストール Rustのクレートの追加 クロスコンパイル環境の構築 Lチカプロジェクトの構築 Lチカコードのコピペ examples/delay-blinky.rs Cargo.toml .cargo/config memory.x Lチカ…

組み込み世界への入門はRaspberry Pi Picoからが良いと思う5つの理由

はじめに ターゲットデバイスとは 1. 初期費用が安い 2. クロス開発環境が整っている 3. Pythonが使える 4. Lチカまでの丁寧な解説動画がある 5. 組み込み入門のハードウェアインターフェースが十分 注意!マイクロ usb ケーブルはデータ転送対応のものを利…

RustでJenkinsのXFDを試作してみた on Raspberry Pi3 B+

はじめに XFDとは? 作ったもの 構成 環境 概要説明 わかったこと XFDの試作にRaspberry Piは便利 Rustのcrateが優秀なことを実感 Raspberry Pi3でRustの開発はしんどい やってみたいこと リファクタリング 監視端末とフィードバックデバイスの分離 フィード…

Rustのアプリケーション開発入門~逆ポーランド記法計算機を通して~

はじめに やったこと コマンドライン引数の処理 計算ロジックの実装 ユニットテストの記述 エラーハンドリング 気づいたこと おわりに はじめに 実践Rustプログラミング入門のChapter4を写経しました。その感想です。ソースコードは下記githubにあります*1。…

組み込みシステムとは

はじめに 組み込みシステムとは 機械制御を目的とした情報システム 表記 おわりに はじめに ソフトウェアエンジニアの一つとして組み込みエンジニアという職種があります。ソフトウェアエンジニアが開発する情報システムの分類の一つと位置付けられます。プ…