組み込み(C++ / ESP32)

Web(Python)

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

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

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

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

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

ArduinoからPlatformIOに変更して、コード作成→Build→Uploadの全てをVSCodeで一元にできるようになったし、Buildの速度も体感的にはArduinoの時の2倍くらいにはなった気がする。ポートも自動で探してくれるのが良い
アプリ(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)を使用したバックトレース分析の手順を記載
組み込み(C++ / ESP32)

【PlatformIO】頭を何回か連続で撫でると最初デレから段階的に嫌がるようにする。

おしゃべり猫型ロボット「ミーア」は頭に取り付けたTTP223のタッチセンサーを介して、頭を撫でると音声を再生できる。この仕組みを利用して、何回か連続で頭を撫でると、最初は嬉しがるが、徐々に警戒し始め、撫ですぎると、嫌がってそっぽを向くという機能を実現したい。
組み込み(C++ / ESP32)

【ESP32】OTAアップデート機能を実装して、遠隔でファームウェア更新する方法

ESP32のWiFiモジュールを搭載した猫型ロボット「ミーア」の開発を進めているが、今回は製品をユーザーに提供後に新機能をリリースした際に、開発者がリモートでファームウェアの更新を行えるようにするために、OTAアップデート機能を導入する。
サーバー(Go)

【Flutter × Go × gRPC】OTAアップデート:Firmware更新をgRPCでアプリ通知

AWS s3のfirmwareディレクトリに新しいFirmwareバイナリを開発者がバージョン指定してアップロードする。各ユーザーのFirmwareのバージョンと開発者がアップロードした最新バージョンを比較し、異なる場合にFlutterアプリに「新しいFirmwareをインストール可能です」と通知する。