Blynkを使うことで簡単にLOBDAS(LOgic Board for Digital Audio System)をスマホから操作することが可能になります。でも、そのためにはLOBDASのファームウェアを書き換える必要があります。何を変更するかというと、スマホとの通信で認証に使われるトークン(Blynkのプロジェクトを登録すると送信される)の追加です。
ここではこの変更をするためにLOBDASでのコンパイル、書き込み環境の作り方(Windows 10)を紹介します。
LOBDASのマイコンはESP32-WROOM-32 Wi-Fi + BLEモジュールですのでESP32の開発環境を整備することになります。ESP32の開発環境はいくつかありますが、簡単に構築できるArduino IDEを使いましょう。
Arduino IDEのインストール
まずはPCにArduino IDEをインストールします。
ArduinoのダウンロードページのWindows Installer, for Windows 7 and upをクリックします。
「JUST DOWNLOAD」をクリックするとインストーラがダウンロードされます。
ダウンロードしたインストーラファイルarduino-1.8.13-windows.exeを起動してインストールします。
「I Agree」をクリック。
「Next >」をクリック。
「Install」をクリックするとインストールが開始されます。
ESP32 Dev Moduleの追加
Arduino IDEのターゲットボードとしてESP32 Dev Moduleを追加します。Arduino IDEを起動し「ファイル」>「環境設定」で開く環境設定ウィンドウで「追加のボードマネージャのURL:」に以下のURLをコピペして「OK」をクリックします。
https://dl.espressif.com/dl/package_esp32_index.json
「ツール」>「ボード:”Arduino Uno”」>「ボードマネージャ…」をクリックしてあらわれるテキストボックスにesp32と入力して検索してヒットしたESP32 by Espressif Systemsをインストールします。
「ツール」>「ボード:”Arduino UNO”」>「ESP32 Arduino」>「ESP32 Dev Module」を選択します。
これで「ツール」のプルダウンメニューの項目が「ボード:”ESP32 Dev Module”」と変更されているのが確認できます。
ライブラリのインストール
LOBDASのファームウェアのコンパイルに必要となるライブラリをインストールします。LOBDASは表示装置として20 x 2キャラクタ OLEDディスプレイSO2002Aを使用しているので、このライブラリをインストールします。また、I2Cモジュール拡張用のピンソケットが用意されていて、128 x 64 画素のOLEDディスプレイSSD1306が使用できるようになっていますのでそのライブラリもインストールしておきます。そして、Blynkライブラリです。
SO2002Aライブラリのインストール
Githubから「Code」>「Download ZIP」をクリックしてSO2002A_I2C-master.zipをダウンロードします。
Arduio IDEから「スケッチ」>「ライブラリをインクルード」>「ZIP形式のライブラリをインストール…」でSO2002A_I2C-masterを選択します。
Adafruit SSD1306ライブラリのインストール
「スケッチ」>「ライブラリをインクルード」>「ライブラリを管理…」のライブラリマネージャウィンドウのテキストボックスに「SSD1306」を検索して出てくるAdafruit SSD1306ライブラリのインストールボタンをクリックします。
Adafruit GFXライブラリとAdafruit BusIOライブラリも一緒にインストールします。
Blynkライブラリのインストール
「スケッチ」>「ライブラリをインクルード」>「ライブラリを管理…」のライブラリマネージャウィンドウのテキストボックスで「blynk」と検索して出てくるBlynkライブラリの最新バージョンをインストールします。
ソースの編集
編集が必要なのはSO2002A_I2C.hとLOBDAS.inoです。
SO2002A_I2C.hの編集
C:\Users\USERNAME\Documents\Arduino\libraries\SO2002A_I2C-master\src フォルダにある SO2002A_I2C.h の #if defined ~ #endif までを /* と */ で囲み、コメントアウトします。
/* #if defined(__SAM3X8E__) // Arduino Due // confirmed board #elif defined(ARDUINO_AVR_NANO) || defined(__AVR_ATmega328P__) // Arduino Nano (New bootloader) // confirmed board #else #error "Unconfirmed Arduino Board" #error "No garantee to work, so remove this with care" #endif */
LOBDAS.inoの編集
コメントアウトされている // define BLYNK の行頭のスラッシュを削除します。そして “Your Auth Token” のYour Auth TokenをBlynkから送られてきたトークンに書き換えます。
これでコンパイル環境が整いました。Arduino IDEで スケッチ > 検証・コンパイル を選択するとコンパイルが開始されます。
ファームウェアの書き込み
ファームウェアの書き込みにはUSBシリアル変換モジュールを使います。USBシリアル変換モジュールは3.3Vに対応するものを使ってください。推奨するUSBシリアル変換モジュールは比較的手に入りやすいFDTI製のICを使用したものになります。例えばFT232RL USBシリアル変換モジュールやFT232RL USB-TTLシリアルアダプターモジュール等があります。これらのモジュールは5Vと3.3Vに対応するためのジャンパースイッチがありますので、3.3Vに設定します。
以下はFT232RL USB-TTLシリアルアダプターモジュールですがデフォルトでは5Vに設定されていますので、3.3Vに設定します。
書き込み速度、COMポートの指定
PCとUSBシリアル変換モジュールを接続します。
Arduino IDEの「ツール」>「Upload Speed:”921600″」は115200にします。そしてシリアルポートはデバイスマネージャーのポートに追加されているUSB Serial Port(COMx)のCOMxを選択します。FT232RLドライバのインストールについてはUSBシリアル変換ドライバのインストールを参照ください。
LOBDASとの接続と書き込み
USBシリアル変換モジュールのLOBDASとの接続はTXD、RXDそしてGNDの3本で行います。USBシリアル変換モジュールのGND、RXD、TXDはLOBDASのピンソケットJ1のGND(3 pin)、RXD(2 pin)、TXD(1 pin)に接続します。
書き込みはSW6を押しながらSW5を押し、その後離すことで書き込みモードになります。Arduino IDEで「スケッチ」>「マイコンボードへ書き込む」を選択すると書き込みが開始されます。書き込み終了後SW6を押すことでESP32がリセットされプログラムが開始されます。