マイコン

Spresense ArduinoでAudioClassを使わずにマイクとスピーカ

Spresense ArduinoのAudioClassは便利で高機能ですが、多大なメモリを消費します。詳しくはこちらの記事↓ そこで、AudioClass を使わず、デバイスファイルをioctlで直接叩く方法を試しました。SDKのサンプルコードのdirect_audio_throughが使えそうだったの…

SPRESENSEのメモリ使用について調査

SPRESENSEのArduino環境でマルチコアのプログラムを作成していたところ、メモリ不足でサブコアを起動できない、という事態が発生しました。具体的には、MP.begin(subid) が -12 (= ENOMEM) を返します。ENOMEM とは Out of Memory つまりメモリ不足です。SPR…

SPRESENSE版ウェイクワード検出を改良

【2026/04/07 追記あり】AIスタックチャンのウェイクワード登録/検出処理 (WakeWord.cpp) をSPRESENSEマイコンに移植したやつですが、さらに改良しました。前回の記事↓ 改善点 (1) マルチコア対応 音声のデジタル信号処理をサブコアで実行するようにしました。ただ…

AIスタックチャンのウェイクワード検出をSPRESENSEに移植

AIスタックチャンのウェイクワード登録/検出処理 (WakeWord.cpp) をSPRESENSEマイコンに移植しました。 ハードウェア SPRESENSE拡張ボードのMIC Aチャンネルにエレクトレットコンデンサーマイクを接続。負荷抵抗 2.2kΩでバイアスします。詳細は下記ドキュメントを参…

ARMのCMSIS-DSPライブラリで実数FFT

前回の記事のつづき ESP32ではesp_dspライブラリが利用できるが、ARMではCMSIS-DSPライブラリが利用できる。 使い方 #include <arm_math.h> arm_rfft_fast_instance_f32 S; arm_status status = arm_rfft_fast_init_f32(&S, nfft); arm_rfft_fast_f32(&S, data, data, 0)</arm_math.h>…

AIスタックチャンのWakeWord.cppを解読 (2)

前回の続きです。 simplevox::VadEngine デフォルトの設定は下記の通り サンプルレート = 16000 Hz フレーム時間 = 10 msec フレーム長 = フレーム時間 × サンプルレート = 160 サンプル VADモード = レベル0 (レベル0~4, 高いほど判定が厳しい) hangbefore…

AIスタックチャンのWakeWord.cppを解読

AIスタックチャンのウェイクワード検出のソースである WakeWord.cpp をざっくり解読します。 コメントにある通り、ややこしいです。 仕様・用語 サンプルレート: 16000Hz VAD : 音声アクティビティ検出 (人が話していることを検出) MFCC : メル周波数ケプストラム係…

メモ:スタックチャンに関するまとめ (2)

以前にもまとめましたが、自分でも整理できてなかったので別の切り口でまとめ直します。 Special Thanks to ししかわ@meganetaaan さん : スタックチャンの原作者 robo8080 さん : AIスタックチャンの作者 タカオ@mongonta555 さん : タカオ版スタックチャンの作者 秋田純一 先生 …

センスチャン基板のSDカードまわりの不具合対応

センスチャンとは? SPRESENSEマイコンを搭載したスタックチャン派生のロボットです。 センスチャン基板とは? センスチャン専用に設計した、SPRESENSEの拡張ボードです。 → 詳細はコチラ SDカードまわりの不具合 センスチャン基板にはSDカードまわりに不具合がありました。 症状 電源オン時…

PlatformIO環境の不要なファイルを削除

まずどれだけの不要なファイルがあるかを確認 下記コマンドを実行する。 pio system prune --dry-runすると不要なファイルの容量が見積もられる。 Dry run mode (do not prune, only show data that will be removed) Prune cached data: ...(中略)... Space…

未整理メモ:EEZ Studio

↓「M5Dialを使った卵孵化器」という作品の記事ですが、EEZ Studioを使ったUI開発の解説が詳しい。

SPRESENSEの電源系統

注意:この記事にはやや不明な点があります。ご利用は自己責任でお願いします。 概要 SPRESENSEのメインボード+拡張ボードの電源系統はややこしい。 公式ドキュメントの電源系統図と回路図をもとに、概略を以下に示す。 5V … 主電源。給電方法は、(1) メイ…

メモ:LovyanGFXとM5GFXとM5Unified

(1) ライブラリの関係 LovyanGFX らびやん氏が開発したグラフィックライブラリ。 多様なディスプレイをサポート。 ESP32以外のマイコンもサポート。(つまりM5Stack専用ではない) 高速描画、日本語フォント対応、スプライト機能などが特長。 M5GFX M5Stack公…

とつぜんPlatformIOでのビルドができなくなった

問題 PlatformIOで、以前ビルドできていたM5AtomS3のプロジェクトを開いてビルドしようとすると、Configuring project がいつまでたっても完了せず、「replacement-product-list-manager.h no such file or directory」のようなエラーメッセージが表示される…

メモ:SPRESENSEのアナログ入力、内部プルアップ

アナログ入力 analogRead(pin) で指定できるピンは A0 ~ A5 A0 ~ A5はデジタルピンとしては使用不可 analogReadMap(pin, min, max)でAD値を任意の範囲にマップ化 (独自拡張) デフォルトでは 0~1023 analogReference()はサポートされず。 拡張ボードのアナ…

BLEでパワポのスライドショーを操作

やりたいこと BLEデバイスでPowerPointのスライドショーを操作したい。OSはWindows限定でよい。単に操作するだけならBLE HIDデバイスでキー入力(F5, ESC, ←, →など)を送ればよいが、同時にスライドショーの状態(実行中か、総スライド数、現在のスライド番号…

ラズピコWからパワポを操作

やりたいこと Pythonでパワポのスライドショーを操作 - 滴了庵日録 で作成したPythonのWebアプリサーバに対して、Raspberry Pi Pico WからアクセスしてPowerPointを操作する。 開発環境 PlatformIOのArduinoフレームワークを使用する。platformio.iniは以下…

メモ:RP2350-Touch-AMOLED-1.8

製品ページ RP2350-Touch-AMOLED-1.8 - Waveshare RP2350-Touch-AMOLED-1.8 - Waveshare Wiki RP2350搭載 1.8インチ AMOLED タッチスクリーン開発ボード | スイッチサイエンス 仕様 RP2350マイコン搭載 (Raspberry Pi Pico 2相当、Flashは16MB) 1.8インチ 36…

XIAO RP2040でST7789 LCDに日本語を表示 (LovyanGFX使用)

やりたいこと XIAO RP2040でST7789 LCDに日本語文字列を表示させる 開発環境はPlatformIOのArduinoフレームワーク (C++) LovyanGFXライブラリを使用する。 → Adafruit_GFX と efont を使用する場合は こちら 使用するLCDモジュール Waveshare 1.69inch LCD D…

XIAO RP2040でST7789 LCDに日本語を表示

やりたいこと XIAO RP2040でST7789 LCDに日本語文字列を表示させる 開発環境はPlatformIOのArduinoフレームワーク (C++) Adafruit GFXライブラリとefontを使用する → LovyanGFX を使用する場合は こちら 使用するLCDモジュール Waveshare 1.69inch LCD Displ…

PlatformIOでRaspberry Pi Pico 2W

PlatformIOで Raspberry Pi Pico 2W を Arduinoフレームワークで開発するには、非公式の野良プラットフォームを導入する必要がある。 手順 PlatformIOの「PIO Home」→「Platforms」→「Advanced Installation」で以下のGitHub URLを入力する。 https://github…

M5Stack Basicに1.3Mバイト超のファームを書き込む

開発環境 IDE : PlatformIO フレームワーク : Arduino (Arduino IDE でも同様と思われるが未確認) 問題 ファームウェアのサイズが1.3Mバイトを超えるとエラーになる。 原因 現行品のM5Stack Basicは 16MバイトのFlashメモリを搭載しているが、初期のバージョ…

M5Stack BasicでGPIO12を使う場合の注意

問題 起動時にGPIO12がHighだと、以下のようなエラーメッセージが出て起動しない。 rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT) invalid header: 0xffffffff invalid header: 0xffffffff 原因 ESP32はデフォルト設定では、Flashメモリの電…

心拍センサと姿勢センサを搭載したヘッドバンドの開発

概要 心拍センサと姿勢センサを搭載したヘッドバンドを製作します。心拍および姿勢を計測し、BLEでデータを送信します。 主なコンポーネント BLEマイコン Seeed Studio XIAO nRF52840 心拍センサ (緑色LEDとフォトセンサを搭載したモジュール基板) 6軸IMUセ…

PlatformIOでXIAOの開発

platformio.ini の書き方についてメモ。例えば、Seeed nRF52 mbed-enabled Boards の XIAO nRF52840 であれば下記のようにする。 [env:seeed_xiao_nrf52840] platform = https://github.com/Seeed-Studio/platform-seeedboards.git board = seeed-xiao-mbed-…

うわっ…PCA9685の内蔵クロックの精度、低すぎ…?

PWMサーボの制御のために、16chのPWM出力IC PCA9685を使用した。使いやすい基板が Adafruit や 秋月から出ており、Arduino用ライブラリも Adafruit から提供されている。 PCA9685搭載16チャネル PWM/サーボ ドライバー (I2C接続) — スイッチサイエンス I2C接…

M5Dialで名札

M5Dialを名札にして、SNSのアイコンや名前、QRコードなどをダイヤルで切り替え表示させます。M5Dialを名札にしてSNSのアイコンとQRコードを表示させるの、イベント用に良さげ。#M5Stack pic.twitter.com/US5OBtR2Z6— 西村 備山 (@lipoyang) 2024年12月24日 …

メモ:M5Capsule関連

ボード選択とライブラリ ボード:M5StampS3 ライブラリ:M5Unified (+ EspEasyUtils もあったほうが便利) 書き込めない BTN0を押しながらリセットボタンを押して離すとダウンロードモードになる。 BTN0が分かりにくいがラベルの上から押す。 Serial (USBシリ…

M5Stack / ESP32とゲームコントローラの接続いろいろ

M5StackなどのESP32系のマイコンボードに種々のゲームコントローラを接続する方法についてまとめる。 開発環境 ゲームコントローラの分類 2.4GHz特小無線 (USBドングル使用) PlayStation4 コントローラ PlayStation3 コントローラ PlayStation5 コントローラ…

メモ:PlayStation 3/4/5のコントローラをESP32に接続

システム要件 PlayStation 3/4/5のコントローラはBluetooth Classicで通信するので、ESP32シリーズでは無印ESP32のみ利用可能。ESP32-C3やESP32-S3では利用できない。 開発環境は Arduino とする。 ESP32のBluetoothのMACアドレスを調べる ESP32で下記のスケ…