エントリー

還暦ラジオに魅せられて作製してみる

  • 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で購入

IMG_20241121_173552.jpgIMG_20241121_173702.jpg

ケース入りでピンヘッダーとバッテリ用のミニPHコネクタが付属

IMG_20241123_162233.jpgIMG_20241123_162221.jpg

ボードは非常にコンパクトで薄い

技適がないので申請前の在庫品だと思われる(なので安価だったようだ),無線通信(WiFi,Bluetooth)は使用しないので問題なし

IMG_20241123_162349.jpg

初期プログラムが書き込まれていて,USB(このボードはTypeC)を接続して電源投入すると画面がカラーで数回変わり最後に文字が表示されるので動作確認できるようだ

arduinoIDEの設定

ESP32をarduinoIDEで使えるようにしているので簡単に利用できた

ss20241124001.png

ボードはESP32>TTGO LoRa32-OLEDを選択

ss20241124003.png

Flash Frequency を40MHzに変更

USBを接続するとボード名が表示,サンプルとして「GetChipID.ino」を書き込んで実行

書き込み時はなんらかの操作は必要はなく自動で書き込みモードになるようだ

ss20241124004.png

ss20241124005.png

ラジオの実装

回路図,ソフトウェアは以下で公開されている

Ralph Xavier Github: https://github.com/ralphxavier/SI4735

(ソフトウェア)

ATS-20/25の開発で環境は整っていたので追加で行ったのは以下

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

コンパイルし書き込んで実行すると

IMG_20241123_192212.jpg

接続してないので正常にエラー表示された

(ハードウェア)

必要パーツを準備してブレッドボードで試行

IMG_20241124_103205.jpg

結線が少ないのもあってか,あっさり動作した(アンテナが短く音は良くない)

ロータリーエンコーダーの方向が逆だったので接続を変更

IMG_20241124_130006.jpg

前回購入したロータリーエンコーダーの結線図の記録が無かったので記載しておく

IMG_20241124_125935.jpg

後は基盤に実装してケースを作製するのだが,今回はいかにコンパクトにできるかとなる

(追加: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);にする)

IMG_20241125_162416.jpg

ページ移動

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前
メールアドレス
URL
コメント
閲覧制限
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

検索

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

過去ログ

Feed