TTGO T-CameraをESP-IDF & Eclipseで動かす(その2)

前回の”TTGO T-CameraをESP-IDF & Eclipseで動かす“を元にOLED(有機EL)表示と人感センサー検知を追加していきます。前回の続きでやってもいいですし、環境ができていれば新規でプロジェクトを作ってもそんなに手間はかからないと思います。

私は新規でプロジェクト名を”TTGO_Camera_v2″としてやっています。

OLEDをやる前に前回ではブラウザーでリロードするときに画像が更新されていましたが、これを連続して画像が更新されるモーションJPEGにします。前回で使った”espressif/esp32-camera“のサンプルコードにある”jpg_stream_httpd_handler()”に”jpg_httpd_handler()”から置き換えます。合わせて”httpd_uri_t camera ->.handler”を”jpg_httpd_handler”から”jpg_stream_httpd_handler”に変更します。

ブラウザーで”192.168.xx.xx/camera”などにアクセスすると連続して画像が更新されるモーションJPEGになっているのがわかります。

このモーションJPEG化は今回の記事とは直接関係ないのでお好みで。

さてそれではOLED(有機EL)に文字表示をしていきましょう!!!

OLEDドライバ/コントローラICはSSD1306を使用していてTTGO T-CameraではI2C接続しています。SSD1306のデータシートを見てやっていけば表示できるとは思いますが、面倒なのとGitHubにライブラリーがきっとあるでしょうから探してみます。

GitHubで”esp-idf ssd1306″で検索してヒットしたものの中から”https://github.com/nopnop2002/esp-idf-ssd1306“でできたので今回はこちらを使わせてもらいました。

“esp-idf-ssd1306″をexamplesフォルダー下にcloneします(componentsフォルダーに入れてそのままbuidするとエラーします)。examplesフォルダーに入れておけば新規プロジェクトを作ったとき”esp-idf-ssd1306″Templateとして選択できるようになります。

今回はこれらのコードを既存プロジェクトに追加していきます。”esp-idf-ssd1306/main”フォルダー内のファイルを”main.c”を除いてそっくり”プロジェクト名/main”にコピペ。

“main.c”に#include “ssd1306.h”を追加。

”app_main()”関数に”esp-idf-ssd1306/main/main.c”内の”app_main()”関数の内容を参考にOLEDにデータを表示するコードを追加します。

build/flashすると”TTGO_Camera_v2″、” SSD1306 128×64″の2行が表示されます。

OLED1

”esp-idf-ssd1306/main/Kconfig.projbuild”を組み込んでいるのでbuild後にsdkconfigを開くと”SSD1306 Configuration”が追加されています。設定はこのままでいいです。上記のコードもSPI Interface、128×32がないので省いています。

SSD1306 Configuration

OLEDが使えるようになったので接続しているIPアドレスを表示してみましょう。

現在、”app_main()”関数内で”example_connect()”を呼び出していますがこのソースコードは”esp-idf/examples/common_components/protocol_examples_common/connect.c”です。このソースコードを参考に以下のコードでIPアドレスが表示されます。

OLED2

最後に人感センサーです。人感センサーは33ピンがHighならOn/LowならOffです。

まずこの33ピンを入力に設定します。

これをTimerイベント発生時に判定してOLEDに表示したいと思います。

Timerイベントの設定についてはEspressif提供の文書”Event Loop Library“や使用例として”esp-idf\examples\system\esp_event\default_event_loop\main\main.c”を参照しました。

ここで登録したtimer_callback、timer_expiry_handlerをそれぞれ実装します。

timer_expiry_handlerで人感センサーを判定して表示しています。

また動作しているのがわかるように次の行の1文字を点滅させています。

これをbuild/flashすると人感センサー動作および動作確認点滅ができました。

OLED3

プロジェクト全体はGitHubにあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です