エントリー

タグ「ESP32」の検索結果は以下のとおりです。

ページ移動

  • ページ
  • 1
  • 前のページ
  • 次のページ

ATS-25を作製する

ATS-25はタッチパネルカラー液晶で見栄えは良いが¥10k弱~¥30kと高価

またDSPがSI4732なので同じDSPのATS-20を所有してることもあり特に欲しいとは思わなかったのだけどソフトウェアが改良され機能と液晶表示に魅力を感じるようになってきた

オープンハード・ソフトウェア(ソフトウェアは一部ライセンスが必要な物もある)なので,これはもう作製するしかないと2024年の初頭に思い立ち部品調達を開始(ちなみに自作されてる方は多い・・・ので安心)

部品調達

国内で価格面や手に入り難いのもありAliexpressで購入したのだが,少々問題もあり再購入を繰り返し何とか春節前に揃った(実はまだ1件闘争中)

価格は税と送料込みで記載

  • SI4732:¥619/個
  • SOP16表面実装基板:¥27/個(¥277/10個)

IMG_20240212_130534.jpgIMG_20240212_130629.jpg

  • 32.768kHz(水晶発振子):¥22/個(¥220/10個)

手持ちもあるが発振不良もあるので念のため購入

  • ESP32開発ボード:¥503 もう1つは¥642(Type-C)
  • ESP32開発ボードアダプタ:¥370/個

IMG_20240212_125946.jpgIMG_20240212_125857.jpg

コンパクトな30pin版,L1なので安価なのか

アダプタの方は間違えて購入してしまったのだけど結果は役に立った

  • TFTタッチパネル(2.8インチ):¥1,440

IMG_20240212_130350.jpg

  • ロータリエンコードモジュール:¥61.5(¥615/10個)

IMG_20240212_125803.jpg

SWのプルアップは(この製品の場合)基板裏にショートパターンがある

  • バッテリ:¥550

IMG_20240213_150643.jpgIMG_20240213_151621.jpg

何年か前に購入した100均の¥500モバイルバッテリで3.7V4000mAhのリポ

充電回路はそのまま利用(ノイズ対策が必要か),出力はリポから直接三端子レギュレーターで3.3Vに降圧して使う

※)主回路はデジタルだが入力はアナログなのでノイズ元となるDCDCは極力使用しないようにする方針

  • その他:もろもろあるが後で再計算予定

ここまでで約¥3k(一台分)

ブレッドボードに組む

回路は「IU4ALH」さんの「SI4732_Radio as at PI4RAZ」から,変更もあるので回路図を作ろうとしたけど面倒だったのでイメージで修正

(最終版)

pict20240215_01.png

SI4732を実装基板に載せる

IMG_20240212_133747.jpg

注)半田付けを,左)気にしないでブリッジさせて吸取線使用,右)ブリッジさせないようピン毎に慎重に付けた,ので結果が異なる

TFTタッチパネルを3.3V用にする

IMG_20240213_173212.jpg

本来は各部品のチェックすべきだけど問題あったらやればいいやと思い組んでみた

IMG_20240215_173236.jpg

一発目:ソフトウェア「SI4735-Radio-ESP32-Touchscreen-Arduino-master.zip」を転送して電源ON・・・駄目でした(甘くない)

配線を再確認したが問題なし

TFTタッチパネルの確認

うんともすんともいわない液晶画面がまず怪しいので確認

サンプルプログラムで確認するがまったく反応しない,SPIのピン指定ミスとかだと思うのだけど解決しない

こちらの記事でやってることに間違いはないことを確認したが動作しないので不良品かと思っていたところ,もしかして「SI4735-Radio-ESP32-Touchscreen-Arduino-master.zip」をコンパイルするにあたりReadme通り編集した「TFT_eSPI」に問題があるのでは・・・と

結果「TFT_eSPI」を再インストールしたらサンプルプログラムは動作

IMG_20240215_153858.jpg

これでTFTタッチパネルは正常であることが確認できた

でも本筋は動作しない

SI4732の確認

画面表示までいかないので「SI4732」の問題かと考え2個目に付け替えてみたが同じ

液晶は関係ないので「PU2CLR」ライブラリの「SI4732」サンプルプログラムを導入してチップの動作確認する

何でも良さそうなのだけど「AM_FM_TOUCH_SERIAL_MONITOR」を使用したところヘルプ画面が出ただけで止まる

前後にdebug printを挿入して確認したところ「SI4732」の初期化で止まっていることが判明しI2Cアドレスが取得できていないことが判った

チップ周りに水晶以外の追加は無いので,水晶を交換したり電源のパスコンを調整したりしたが駄目

どうしようもなく更にAitendoの「SI4732モジュール」の回路図を参考にして元回路になくI2Cに関係のあるRST部分にパーツを追加したが駄目

・・・

大嵌りしていたところ10ピンSENBの配線に気付く

Aitendoの「SI4732モジュール」ではGNDに接続されてる!!

pict20240215_02.png

GNDに接続し直しても破壊されることはないのでやってみると動作しましたよ!

「SI4732」の版数で異なる?のか?(上の回路図は修正済 )

注)SENBはI2Cアドレス指定でH or L接続にて2つ選択できる,拙者の個体ではGnd接続でのみ動作したがライブラリでアドレスを自動判定していないのか?

サンプルプログラムで受信確認もできたので「SI4732」も良し(2個とも正常)

ソフトウェア

ようやくこれで動作するかと思いきや結局「SI4735-Radio-ESP32-Touchscreen-Arduino-master.zip」は動作せず「SI4735_2.8_TFT_SI5351_V.5.2b_Dark.zip」を試す

どうやら「TFT_eSPI」がキーらしく対応するバージョンでないと正常に動作しないようだ

YouTube「jashiチャンネル」さんの情報で「SI4735_2.8_TFT_SI5351_V.5.2b_Dark.zip」について対応する「TFT_eSPI」の情報がある

コンパイルエラーは最新の物でも発生しない(warningは出る)が動作はしない

ダウンロードした「TFT_eSPI_2.8inch.zip」は,ライブラリを削除(ライブラリのTFT_eSPIフォルダーの削除でも良い)した後,IDEでZIP登録(メニュ「スケッチ」>「ライブラリをインクルード」>「ZIP形式のライブラリをインストール...」を実行)しなければコンパイルエラーとなるので注意

IMG_20240216_150740.jpg

とりあえず,ようやく動作したのでAM,FMの受信確認

IMG_20240216_163403.jpg

なぜかATS-20より音が良好に感じるのは気のせいか

暫くFM受信で聴いていたら

IMG_20240216_162745.jpg

ディスプレイセーバーモードに移行するのね,素晴らしい!

明日から基板化とケース作りとなる

 

ESP32-CAMの利用方法を模索

ESP32-CAMを動作させたのだけど,3セット(Amazon)もあるので利用できないか考えるため調べてみた

IMG_20230731_115244.jpg

ハードウェア
  • 既にモジュール化されているので大きな変更はできない
  • 接続I/Oはカメラ,microSDスロット,高輝度LEDである
  • CPUはESP32SでEPS32と同じと考えてよく,おそらくI2CとSPIには不具合があるかと思われる
  • GPIOはあるが全て使用済なので利用は困難でSPIに接続されている4ピンをSPI未使用にする(microSDは不可となる)ことでOUTPUTピンとして利用できそう
  • モジュールから高輝度LED以外は取り外すことは困難
ソフトウェア

モジュール構成からカメラ機能を主とした利用形態しかなく追加できるI/Oもかなり限定されそうだ

カメラ機能が主なので元となるスケッチはサンプルのCameraWebServerが優秀で良いためプログラムを調べてみるとHTML(camera_index.h)がgzip形式になっていることが判る

HTMLソースが編集できないと画面の変更追加ができないのでネットで情報を得てみると最終的にgzip形式に変換する方法は判った

しかしわざわざgzip形式にすることもないのでそのまま編集できるように改造

①まずはサンプルを動作させてブラウザでHTMLソースを退避しヘッダーファイル(index_ov2640.h等,以下のように)にする

const uint8_t index_ov2640_html[] = R"=====(<!doctype html>
<html>
<head>
<meta charset="utf-8">


(省略)

</body>
</html>)=====";

size_t index_ov2640_html_len = sizeof(index_ov2640_html)-1;

橙色部分が前後に追加したテキスト

index_ov2640なのはスケッチで使用されているESP32-CAMのカメラタイプ名だから

②app_httpd.cppのcamera_index.hを外しindex_ov2640.hを使用

③同じくapp_httpd.cppのesp_err_t index_handler()を編集

(旧)
static esp_err_t index_handler(httpd_req_t *req)
{
httpd_resp_set_type(req, "text/html");
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
sensor_t *s = esp_camera_sensor_get();
if (s != NULL) {
if (s->id.PID == OV3660_PID) {
return httpd_resp_send(req, (const char *)index_ov3660_html_gz, index_ov3660_html_gz_len);
} else if (s->id.PID == OV5640_PID) {
return httpd_resp_send(req, (const char *)index_ov5640_html_gz, index_ov5640_html_gz_len);
} else {
return httpd_resp_send(req, (const char *)index_ov2640_html_gz, index_ov2640_html_gz_len);
}
} else {
log_e("Camera sensor not found");
return httpd_resp_send_500(req);
}
}

(新)
static esp_err_t index_handler(httpd_req_t *req)
{
httpd_resp_set_type(req, "text/html");
httpd_resp_set_hdr(req, "Content-Encoding", "identity");
sensor_t *s = esp_camera_sensor_get();
if (s != NULL && s->id.PID == OV2640_PID) {
return httpd_resp_send(req, (const char *)index_ov2640_html, index_ov2640_html_len);
}
log_e("Camera sensor not found");
return httpd_resp_send_500(req);
}

汎用ではないのでESP32-CAMのindex_ov2640_htmlだけとなる

まずはUI部の対策のみ施した

ESP32のIDE設定記録

ESP32の設定を記録していなかったので追加

IoT Exprewss

トラ技が考案したWi-FI ArduinoボードでESP32モジュールをArduinoのPinで使える

IMG_20230731_115607.jpg

追加のボードマネジャーはURL指定

SS20230803_001.png

ボードはESP32>ESP32 Dev Moduleとなる

SS20230803_002.png

USBポートの設定のみで他はデフォルトで問題なし

SS20230803_003.png

その他

  • プログラム書き込み時は①Reset+BootボタンON>②Reset OFF>③Boot OFF>④書き込み>⑤Resetで実行
  • ボードのLEDはIO2(PIN2)に接続
ESP32-CAM

ESP32SにカメラとSDスロットがセットになっているボード

IMG_20230731_115332.jpg

プログラム書き込み用のシリアルは付いてないのでFTDIなどを繋ぐ

参考:https://www.circuitschools.com/how-to-program-upload-the-code-to-esp32-cam-using-arduino-or-programmer/

IMG_20230731_133509.jpg

ボードはESP Wrover Moduleとなる

SS20230803_011.png

  • Flash Frequency: “80MHz”
  • Flash Mode: “Q10”
  • Partition Scheme: “Huge APP (3MB No OTA/1 MB SPIFFS)”
  • Core Debug Level: “None”
  • Upload Speed: “921600”

Upload Speedは921600bpsが早くて良い

スケッチサンプルからESP32>Camera>CameraWebServerを読み込んでカメラをテスト

SS20230803_012.png

スケッチのカメラモジュールをCAMERA_MODEL_AI_THINKERに,WiFiのssid,passwordを設定

#define CAMERA_MODEL_AI_THINKER // Has PSRAM

const char* ssid = "******";
const char* password = "******";

コンパイルして書き込み

SS20230803_013.png

解像度を上げてもヌルヌル動作する

SS20230803_014.png

温度管理を追加し3Dプリンタ用のカメラとして使いたいところだが,I2Cが省かれているのでSPIを使うとIO-Pinが不足するので考え中

ピン配置

https://lastminuteengineers.com/esp32-cam-pinout-reference/

https://randomnerdtutorials.com/esp32-cam-ai-thinker-pinout/

(追加)

  • GPIO12~GPIO15の4PinはμSDがSPIで使用している
GPIO12: MISO
GPIO13: MOSI
GPIO14: CLK
GPIO15: CS(microSD Used)
  • SPIで追加デバイスは他のピンは全て使用されているのでCSピンが割り当てられないので困難(GPIO4のLEDを外す方法はある)
  • SPIを使わなければGPIO12~GPIO15を通常I/Oピンとして使用は可能なようだ

ページ移動

  • 前のページ
  • 次のページ
  • ページ
  • 1

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed