方言を話すおしゃべり猫型ロボット『ミーア』をリリースしました(こちらをクリック)

組み込み(C++ / ESP32)

ミーア

【ESP32自作基板】配線エラーによるスピーカー音割れ・再生されない原因の調査(拡大鏡・オシロスコープ)

クラスDアンプのICパッケージをTQFNからWLPに変更したところ、25個のうち4個がスピーカー周りで下記不良品だった。音割れ・音声が再生されない原因調査をする。アプリでまず音量を下げて音割れが解消されるか検証。次に拡大鏡を使って、配線不備がないか目視確認
ミーア

【ESP32自作基板】表面実装エラーを起こさないように、電源ノイズ対策を加味した回路に修正

MAX98357 自体は、ESP32 WROOM 32Eの25,26,22ピンとつなぐ必要がある。I2S信号(BCLK、LRCLK、DIN)の配線は短く保つことで、信号の劣化やクロストークのリスクを低減できるので、ESP32の25, 26ピンにできるだけ近接させる。電源周辺の回路で電源ノイズ削減のためにデカップリングコンデンサの最適化を試みる。
組み込み(C++ / ESP32)

【ESP32】Arduino IDEからPlatform IOへ移行方法

ArduinoからPlatformIOに変更して、コード作成→Build→Uploadの全てをVSCodeで一元にできるようになったし、Buildの速度も体感的にはArduinoの時の2倍くらいにはなった気がする。ポートも自動で探してくれるのが良い
アプリ(Flutter)

【ESP32】Deep SleepモードとTimer Wake Up機能の実装

はじめに 方言を話すおしゃべり猫型ロボット『ミーア』を開発中。 ベータ版をリリースした後、実際に使っていただいた複数のユーザから 「ミーアの目のディスプレイを自動でオフにする機能が欲しい」 との要望が来たので、今回は本機能の実装を記載。 詳...
Web(Python)

【オブジェクト指向でなぜつくるのか?】OOP, クラス, 型付け, 継承, ポリモーフィズム, パッケージ, 例外, ガベージコレクション, コンパイラ, インタプリタ, 中間コード, メモリ領域

2022年に購入して積読だった「オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識」を最近読んだので、まとめ記載。プログラミング言語の歴史の部分が、とてもわかりやすかった。OOPでは新しく3つの要素(クラス・ポリモーフィズム・継承)を導入した。
組み込み(C++ / ESP32)

【ESP32】LittleFSとSqlite3を使用してデータを呼び出す

プロトタイプ段階でESP32ボードで開発中であり、DB:sqlite3、ファイルシステム:LittleFSを使うことに決定。esp32にアップロードしたいデータ自体は、スケッチファイルと同階層にdataフォルダを用意して、その中に配置する必要がある。
アプリ(Flutter)

【ESP32】Wi-Fi接続を直接入力ではなく、候補リストから選べるようにする。

現状のミーアはESP32とアプリの接続を、まずはBluetoothで接続した後に、Wi-Fi の接続をアプリから BLE 経由で行っている。ただ、Wi-Fi接続のSSIDとパスワードを直書きする仕様になっていて、これだと、ユーザーからするととても面倒なため、接続可能なWi-Fiを探索して選べる形式に変更したい。
アプリ(Flutter)

【ESP32 × Flutter】Wi-Fiのセキュリティと信号強度に応じたアイコン表示とESP32接続

Wi-Fiの信号強度(RSSI:Received Signal Strength Indicator)とセキュリティ情報は、ESP32でWi-Fiネットワークをスキャンする際に取得できる。ESP32のWi-Fi暗号化方式の番号は、通常は整数(int型)で扱われる。
サーバー(Go)

【Flutter × ESP32】AWS Device Shadow・MQTT経由でおやすみモードの時間設定を同期

FlutterアプリとESP32デバイスを連携させ、AWS Device ShadowとMQTTを利用しておやすみモードの時間設定を同期する方法について解説。デバイスシャドウのdesiredセクションが更新されると、その情報はMQTTメッセージとしてESP32デバイスに通知される。
組み込み(C++ / ESP32)

【ESP32】gaddr2lineを活用したバックトレース分析

ESP32を使ってネコ型おしゃべりロボットを開発中だが、デバイスを初回起動した時に下記エラーが発生するようになった。ESP32のクラッシュ問題を解決するために、gaddr2lineツール(Linuxではaddr2line)を使用したバックトレース分析の手順を記載