還暦ラジオに魅せられて作製してみる
- 2024/11/24 15:03
- カテゴリー:ラジオ
YouTubeで「還暦ラジオ」を観て気に入ってしまい,SI4732が1つ残っているので同様なラジオを作製することにした
ボード(T-Display)
ディスプレイ付きのESP32である「TTGO T-Display」「Lilygo T-Display S3」を利用したラジオは他でも紹介されている
先ずはボードを安価に手に入れるためAliexpressにて「TTGO T-Display」(16MB)を¥1,525で購入
到着はしばらく掛かると思っていたら1Wで届いたので早速環境整備と動作確認
ケース入りでピンヘッダーとバッテリ用のミニPHコネクタが付属
ボードは非常にコンパクトで薄い
技適がないので申請前の在庫品だと思われる(なので安価だったようだ),無線通信(WiFi,Bluetooth)は使用しないので問題なし
初期プログラムが書き込まれていて,USB(このボードはTypeC)を接続して電源投入すると画面がカラーで数回変わり最後に文字が表示されるので動作確認できるようだ
arduinoIDEの設定
ESP32をarduinoIDEで使えるようにしているので簡単に利用できた
ボードはESP32>TTGO LoRa32-OLEDを選択
Flash Frequency を40MHzに変更
USBを接続するとボード名が表示,サンプルとして「GetChipID.ino」を書き込んで実行
書き込み時はなんらかの操作は必要はなく自動で書き込みモードになるようだ
ラジオの実装
回路図,ソフトウェアは以下で公開されている
Ralph Xavier Github: https://github.com/ralphxavier/SI4735
(ソフトウェア)
ATS-20/25の開発で環境は整っていたので追加で行ったのは以下
- Battery18650Statsライブラリのセットアップ(https://github.com/danilopinotti/Battery18650Stats)
- ledc関数の変更のため,ソース(Si473x_Rotary_Encoder_Interface_V4.1.ino)修正
ledcSetup(), ledcAttachPin()は無くなったためコメントアウト2行(行削除で構わない)
他(以下の3関数)は修正する必要なし(使用しているのはledcWrite()のみ)
bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);
bool ledcAttachChannel(uint8_t pin, uint32_t freq, uint8_t resolution, int8_t channel);
bool ledcWrite(uint8_t pin, uint32_t duty);
- eSPIライブラリでディスプレイを指定する
TFT_eSPI/User_Setup_Select.hを修正
//#include <User_Setup.h> // Default setup is root library folder
・・・
#include <User_Setups/Setup25_TTGO_T_Display.h> // Setup file for ESP32 and TTGO T-Display ST7789V SPI bus TFT
コンパイルし書き込んで実行すると
接続してないので正常にエラー表示された
(ハードウェア)
必要パーツを準備してブレッドボードで試行
結線が少ないのもあってか,あっさり動作した(アンテナが短く音は良くない)
ロータリーエンコーダーの方向が逆だったので接続を変更
前回購入したロータリーエンコーダーの結線図の記録が無かったので記載しておく
後は基盤に実装してケースを作製するのだが,今回はいかにコンパクトにできるかとなる
(追加:2024.11.25)
左側をUSBにしたいので画面表示を上下反転できないかソースを観ると
//tft.setRotation(0); // Rotate 0
//tft.setRotation(1); // Rotate 90
//tft.setRotation(2); // Rotate 180
//tft.setRotation(3); // Rotate 270
とあるので,Rotate 180を選択すれば良いかと思ったら,先に
#ifdef IhaveTDisplayTFT
tft.setRotation(1);
#endif
があり,現状がRotate 90なのでRotate 270を指定(tft.setRotation(3);にする)