C++

開発・デザイン

【ESP32】ハードウェアトリガーでファームウェアを初期化する方法

ESP32でTTP223タッチセンサーによるハードウェアトリガーを用いたファームウェア初期化の手順を記載。PlatformIOとTFT_eSPIを活用して、セーフモードでのディスプレイを利用した状態表示やOTAアップデートの実行方法について記載。
開発・デザイン

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

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

【ESP32】スリープモード(Deep / Light sleep)選択基準。消費電力の最適化と実装

ESP32は高度な省電力機能を備えており、その中心となるのがスリープモード。主にDeep-sleep modeとLight-sleep modeの2つのスリープモードがある。特筆すべきは、Light-sleep modeとDeep-sleep modeで消費電力がアクティブモートの時と比較すると、ほとんど誤差みたいな差であること。
開発・デザイン

【ESP32 × Flutter】Wi-Fiスキャン結果をBLEでチャンク分割送信する方法

ESP32とFlutter(flutter_blue_plus)を利用してWi-Fiスキャンの結果をBLEを通じてスマートフォンに分割送信する方法を記載。BLEのNotify機能を使用して、大きなデータを小さなパケットに分け、受信したデータを再構成する。
開発・デザイン

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

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

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

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

【ESP32】OTAアップデート:MQTTとAWS IoTデバイスシャドウを利用したファームウェア更新

ユーザーがアップデートを受け入れると、アプリがサーバーにAPIリクエストを送信し、サーバーがAWS IoTのデバイスシャドウに変更を反映させる。デバイスはMQTTを通じてこの変更を検知し、ファームウェアのダウンロードとアップグレードを実行する。
開発・デザイン

【ST7735】TFT LCDの描画問題解決ガイド:Green Tabの設定方法

ST7735 TFT LCDディスプレイで遭遇した描画問題とその解決策について記載。ST7735ディスプレイは同じ基本チップを使用しながらも、異なるメーカーや生産バッチによって、細かな仕様の違いがあるため、"Green Tab"、"Red Tab"、"Black Tab" など多くのバリエーションが存在する。
開発・デザイン

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

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

【C++】ポインタと参照の違い・値渡しと参照渡し・関数ポインタ・スマートポインター

ポインタはアドレス(メモリ空間上の位置)を格納する変数。変数宣言を行う際に、変数用のメモリが確保され、メモリ空間上に配置される。しかし、変数宣言直後はポインタには不定値が格納されており、どこを指しているか分からない状態。変数名の前に `&` 記号をつけることで、その変数のアドレスを取得できる。