表示器に丸形カラーLCD利用を使用し、週間スケジュールが可能なFMラジオを製作したので紹介する。
丸形カラーLCDは、1.28インチ、240x240、ドライバーはCG9A01である。
DSPラジオICはRDA5807FP、I2Cインターフェースによるコントローラ(MCU)はSeeed Studio XIAO ESP32C3である。
XIAO ESP32C3では、Clockの設定にNTPを利用し、内蔵のWebサーバー機能で、操作/週間スケジュールの設定を行っている。
開発はArduino IDE 1.8で行った。
丸形カラーLCD以外の基本的なことは、こちらを参照のこと。
概要
丸形カラーLCDは、SPIで制御するので、I2CとSPIを同時に利用することになる。この場合、XIAO ESP32C3は入出力ピンの数が限られるので、
操作はボタンスイッチではなく、WiFi経由で行なうことになる。
CG9A01をサポートするライブラリは"TFT_eSPI.h"を利用した。
TFT_eSPIは事前に、使用するドライバとMCUに対応するための変更が必要である。ライブラリをインストールした後、「..\Arduino\libraries\TFT_eSPI」の「User_Setup.h」を編集する。
編集後のファイルが「User_Setup.h.mod」である。
- 「Section 1. Call up the right driver file and any options for it」の個所に、ディスプレイ対応のドライバの定義があるので、「#define ILI9341_DRIVER」の行をコメント化し、「#define GC9A01_DRIVER」の行を「非」コメント化する。
- 「Section 2. Define the pins that are used to interface with the display here」の個所に、各MCUごとSPIに対するピンの定義があるのでそれを変更する。まず、ESP8266のピン定義をコメント化する。
次に、XIAO_ESP32C3に対するピン定義を追加する。追加内容は、「User_Setup.h.mod」を参照のこと。
H/W構成
・Seeed Studio XIAO ESP32C3 - コントローラ
・I2C接続 RDA5807FP
・SPI接続 丸形カラーLCD表示装置(CG9A01)
・Xtal発振器(32768Hz)、コンデンサ類、オーディオジャック、配線類
左側が丸形カラーLCD、右側がXIAO ESP32CとRDA5807FPの基板。なお、BLK(バックライト制御)は接続していない。
接続
各コンポーネントの接続は以下の通り。
I2C | XIAO |
SCK | D5 |
SDA | D4 |
SPI | XIAO |
SDA | GPI10(MOSI) |
SCL | GPIO8(SCK) |
CS | GPIO3 |
DC | GPIO5 |
RES | GPIO4 |
I2Cのアドレス
RDA5807FP | 0x10 or 0x11 ライブラリで既定 |
インストール
- コードを、ZIP形式でダウンロード
- 追加のライブラリを、ZIP形式でダウンロード、ライブラリマネージャからインストールする
- RDA5807(ライブラリマネージャから検索可)
- TFT_eSPI
- TimeLib : https://github.com/PaulStoffregen/Time
- ArduinoIDEからxiao_esp32c3_cg9a01_rda5801_wifi_clock_radio.inoを開く
- 「検証・コンパイル」に成功したら、一旦、「名前を付けて保存」を行う
若干の解説
・コード中のWiFiのSSIDとPASSWORDは、利用している無線ルーターのものを指定する。
・また、stnFreq[]に受信する放送局の周波数を指定する。例えば80.4MHzの場合、8040と指定する。stnName[]には対応する放送局名を指定する。
・"Free_Fonts.h"はTFT_eSPIのサンプルよりコピーしたものである。フォントの実体はTFT_eSPIライブラリ内に存在する。
・外周を回る黄色の丸印は、秒針の替わりである。
注意事項
・利用の際は、自己責任でお楽しみください。
【追記】
PCB(ボード)の情報をextraフォルダに追加しました。
・配線図のR1からR4までは必須ではありません。無くても動作します。
・gerberデータは、PCBWAYに発注した時のものです。