投稿

12月, 2023の投稿を表示しています

Node.jsでバージョンを入れ替える

Node.jsでバージョンを入れ替える Node.jsでバージョンを入れ替える nvmコマンドで全てできました。 nvm ls で現在インストールしたバージョン一覧 $ nvm ls v14.21.3 v16.20.2 v18.17.1 -> v20.10.0 "->"が付いてるのが今有効になっているバージョンになります。 nvm ls-remote 使用したいバージョンがない場合 $ nvm ls-remote v0.1.14 v0.1.15 v0.1.16 v0.1.17 v0.1.18 v0.1.19 v0.1.20 v0.1.21 v0.1.22 v0.1.23 v0.1.24     以下略 これでインストール可能なバージョンが全て出てきます。 全てなので山ほど出てきます。 nvm install で特定のバージョンインストール $ nvm install v20.10.0 $ nvm use v20.10.0 installでインストール、useで有効にします。

AmazonSAMでnode20.xを使う

AmazonSAMでnode20.xを使う AmazonSAMでnode20.xを使う 2023/11/15にNode.js 20ランタイムが Lambda で利用できるようになりました。なってました。 AmazonSAMでも利用可能なのですが、sam cli をアップデートしないと使えません。 2023/12/25現在 最新のsam cli のバージョンは 1.105.0 です。 $ sam --version SAM CLI, version 1.105.0 これ以下の場合はアップデートしましょう。 アップデート手順は以下の通りでした。 $ wget https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip $ unzip aws-sam-cli-linux-x86_64.zip -d sam-installation $ sudo ./sam-installation/install --update これでtemplate.yamlの以下の部分 Runtemi : nodejs18.x 以下のように書き換えてもOKになります。 Runtemi : nodejs20.x sam initでもnodejs20.xが出てくるようになりました。 Which runtime would you like to use? 1 - aot.dotnet7 (provided.al2) 2 - dotnet6 3 - go1.x 4 - go (provided.al2) 5 - go (provided.al2023) 6 - graalvm.java11 (provided.al2) 7 - graalvm.java17 (provided.al2) 8 - java21 9 - java17 10 - java11 11 - java8.al2 12 - java8 13 -

SSD1306でQRコード描画

イメージ
SSD1306でQRコード描画 SSD1306でQRコード描画 SSD1306 (0.96インチ 128x64 OLED LCDディスプレイ) にQRコードを描画してみます。 ESP-IDFだけでLCDに描画するのはちょっと辛いです。 なので追加コンポーネントのグラフィックライブラリ LVGL を使用します。 回路図 こんなんなります。配線するだけでOK。 プロジェクト作成 普通に新規プロジェクトを作成します。 F1キーで ESP-IDF: New Project を選択。 項目 値 プロジェクト名 QRCodeTest テンプレート template-app ESP-IDFコンポーネントを追加 main/idf_component.yml を作成し中身を以下のようにします。 idf_component.yml dependencies : idf : ">=4.4" lvgl/lvgl : "~8.3.0" esp_lvgl_port : "^1" 追加後に一度ビルドするとコンポーネントがダウンロードされます。 ダウンロードされたコンポーネントは managed_components 以下に格納されます。 コンポーネントについては ESP-IDFのコンポーネントマネージャ を参照してください。 menuconfigの設定 一度ターゲットを選択し直してください。menuconfigの項目が更新されます。 menuconfigを開くと追加したコンポーネントの設定項目が増えてます。 デフォルトから変更する点は以下です。 項目 値 Color settings - Color depth 1: 1 byte per pixel 3rd Party Libraries - QR code library ON プログラム main.cを以下のようにします。 # include <stdio.h> # include <string.h> # include "freer

ESP-IDFのFreeRTOSについて

ESP-IDFのFreeRTOSについて ESP-IDFのFreeRTOSについて FreeRTOS 本家の説明とESP-IDFのFreeRTOSに色々食い違いがあって「なんでだぁっ?」って思ってたんですが、当たり前の話でESP-IDFにはカスタマイズされたFreeRTOSがデフォルトで使用されていて違ってて当たり前だったんですね。 ESP-IDFのFreeRTOS の説明を読んでみれば一目瞭然でした。 例えばノーマルなFreeRTOSでは vTaskStartScheduler() を呼び出すのは必須ですが、ESP-IDFの場合は既に実行されていて、呼び出すなと書いてあります。 タスク一覧を取得するvTaskListを実行してみると以下のように返ってきます。 タスク名 状態 スタック空き main X 1 1764 4 0 IDLE R 0 1036 6 1 IDLE R 0 1232 5 0 esp_timer S 22 3576 3 0 ipc1 S 24 480 2 1 ipc0 S 24 480 1 0 R=準備完了, S=一時停止, B=ブロック, D=削除済, X=説明なし 既に幾つもタスクが実行されてますね。 ちなみに app_main() もタスクのようです上記のmainがapp_main()なのだと思われます。 vTaskListの実行方法 vTaskListも最初ビルドできなくてオロオロしましたが、menuConfigで以下をチェックすれば使えるようになります。 configGENERATE_RUN_TIME_STATS Enable display of xCoreID in vTaskList 上記の順番でチェックしないとvTaskListの方が出てきません。

FreeRTOSのスタック

イメージ
FreeRTOSのスタック FreeRTOSのスタック が、よくわからなくて困りました。 タスクを二つ作ったり、タスクの中の処理を弄ったりするとすぐにstack overflowで暴走しちゃうんです。 FreeRTOSのスタックって何をすると積まれていくのだろう。 # include <stdio.h> # include "freertos/FreeRTOS.h" # include "freertos/task.h" # include "esp_log.h" # define APP "TestRTOS" portTASK_FUNCTION ( task01 , pvParam ) { while ( 1 ) { // スタック使用量 UBaseType_t stackHighWaterMark = uxTaskGetStackHighWaterMark ( NULL ) ; ESP_LOGI ( APP , "task01 stack: %u" , stackHighWaterMark ) ; vTaskDelay ( 5000 / portTICK_PERIOD_MS ) ; // 5秒待機 } } void app_main ( void ) { uint32_t stack_size = configMINIMAL_STACK_SIZE ; ESP_LOGI ( APP , "MINIMAL_STACK_SIZE: %lu" , stack_size ) ; // スタックサイズ TaskHandle_t handle ; xTaskCreate ( task01 , "TestTask01" , configMINIMAL_STACK_SIZE * 2 , NULL , tskIDLE_PRIORITY , & handle ) ;

ESP-IDFのコンポーネントマネージャ

イメージ
ESP-IDFのコンポーネントマネージャ ESP-IDFのコンポーネントマネージャ 割とよく見かける以下の小さなディスプレイを入手したのでドライブしようと色々調べていたのですが。 その過程でESP-IDFにはnpmやbundleやMavenやGradleみたいなパッケージマネージャが存在していることがわかりました。 というか、ドキュメントをちゃんと上から読んでれば載ってるんですよね。 ESP-IDF の IDF Component Manager の項目に説明が載ってました。 使い方 mainディレクトリに idf_component.yml ファイルを作成して使いたいコンポーネントを記載します。 以下は一例です。 dependencies : idf : ">=4.4" lvgl/lvgl : "~8.3.0" esp_lvgl_port : "^1" これでビルドすると記載されたコンポーネントが managed_components フォルダにダウンロードされて使えるようになります。 特にmakefileとか修正する必要なし。 コンポーネント ESP Registry というサイトで利用可能なコンポーネントの一覧が参照できます。 ESP32だけに限定しても大量に利用可能なコンポーネントががあります。 中にはQRコードジェネレーターとかもある。正に探してた系のヤツです。 積極的に利用していきたいですね。

KiCadでシンボルを作る

イメージ
KiCadでシンボルを作る KiCadでシンボルを作る KiCadには大量の電子部品が登録されていますが、秋月電商さんなんかで販売されている以下のようなモジュールまではさすがに登録されてません。 DRV8835使用ステッピング&DCモータドライバモジュール こういう場合は自分で作ります。 シンボルエディター KiCadを起動したら以下のアイコンでシンボルエディターを起動します。 以下のような画面が出てきます。 ここで左のペインにライブラリの一覧が出てきます。 74xxとかAnalogとかLEDとか機能別にカテゴライズされてます。ただ既存ライブラリには追加できないので、新規にライブラリを作成します。 メニューの ファイル(F) - 新規ライブラリ… を選択します。 グローバルかプロジェクトかを問われますが、プロジェクト固有にしてもあんまり意味ないのでグローバルにします。 適当な場所にライブラリを作ります。 ファイル名は MyLibrary.kicad_sym でいいでしょう。 作成するとライブラリの一覧に MyLibrary が表示されます。 では部品を追加します。 追加する部品は冒頭の秋月のDRV8835モジュールです。 MyLibraryを選択した状態でツールバーの アイコンをクリックします。 以下のダイアログが出てきますのでシンボル名に「DRV8835 Module」と入力してOKします。 ライブラリにシンボルが追加されています。 これでシンボルが編集できるようになります。 ピン配置 DRV8835 Moduleの外径とピンは以下のようになっています。 シンボルもこのピン配置に合わせて作ります。 右のツールバーから以下のアイコンを選択します。 以下のダイアログが出てくるので、ピン1のVMから登録します。 VMは電源なのでエレクトリカル タイプを電源入力にします。 適当なところに配置します。 残りのピンも同じ要領で追加します。 最後に見やすく並べて以下のような感じにします。 矩形追加 シンボルの枠を追加します。 右のツールバーから矩形を選択。 以下のように囲います。 選択ツールで矩形をダブルクリックしてプロパティを変

KiCadで回路図を作る

イメージ
KiCadで回路図を作る KiCadで回路図を作る 電子工作をしてると回路図からは逃げられないようです。 Lチカまでならなんとかなりますがそれ以上になると無理です。 なので無料で使える回路図エディタ『 KiCad 』を導入します。(寄付をお願いされますが・・・万が一にも利益が出たらということで) 今のバージョンは 7.0 でした。 取り合えず上記のKiCadのサイトからWindows版をダウンロードしてインストール。 KiCadでプロジェクト作成 デスクトップに以下のアイコンがあるので起動します。 起動すると以下のウインドウが表示されます。 最新のバージョンだと日本語対応してますね。 メニューの Preferences - Set Language で日本語が選択できます。 KiCadは最初プロジェクトを作成しその中で回路図や基盤パターンの編集を行います。 メニューから ファイル(F) - 新規プロジェクト… を選択します。 適当なフォルダを開いて、ファイル名を Tutorial01 を入力、 保存(S) するとプロジェクト名のフォルダが作成されます。 プロジェクトフォルダに二つのファイルがあります。 以下は回路図。 以下はパターン図です。 パターン図の方は基盤発注したりするまで無用なので放置で。 まずは回路図の方ですね。 回路図編集 以下をクリックすると別Windowで回路図エディタが開きます。 ページ設定 アイコンをクリックします。 用紙サイズやタイトルなどを設定できます。 部品の追加 KiCadでは抵抗やコンデンサなどの部品は シンボル と呼ばれます。 デフォルトでも大量のシンボルが登録されているのですが、ESP32-DevKitCは登録されていませんでした。 この場合自分で作ることもできるのですが、既に公開されているものがありますのでそれをインポートします。 SnapMagic というサイトでKiCad用のシンボルがダウンロードできます。サインアップが必要ですが無料です。 ここで “ ESP32-DEVKITC ” を検索すれば以下のように検索できました。 Download Symbol and Footprint をクリッ