DSPラジオをWiFiで操作したい(3) | お父にゃんの電子工作

お父にゃんの電子工作

暇なおじさんが、電子工作(主にラジオ製作)をして勝手な感想を書く

引き続き、Arduino pro mini互換基板で作ったセンサー付きDSPラジオを、ESP32に置き換える作業を行うのである。

 

最終的には、こんな感じ↓でスマホとWi-Fiで繋いで、ラジオを操作してみたい。

 

 

前回、ハードウェアは決まったので、乗せ換えて配線をし直す。

 

ブレッドボードに部品を配置して

 

パネルへ繋いでいく

 

 

次にソフトウェアの変更

 

①I/O関連ピンの再定義

 ハードが変わって接続先が全部変わるので、再定義しなおす。

 

②analogWrite()関連

 arduino IDEにライブラリマネージャーからESP32対応のanalogWriteライブラリを探してインストールする。

 

 

 analogWrite.hをインクルード

#include <analogWrite.h>

 次に、setupでPWM周波数を1KHzに設定

 デフォルトでは5KHzだが、ちょっと遅くして1KHzにしてみる。 

  analogWriteFrequency(1000); // set frequency to 1 kHz for all pins

 あとは、同じように使えるはず。

 

 

③analogRead()関連

 基本的に同じ使い方で読めるが、arduinoでは10bitだったものが、ESP32では12bitなので、数値を10bitに変換して前に作ったプログラムに渡す。

  int il = analogRead(illuminance);
  il= il >> 2;             // 12bit data -> 10bit data

 

④タイマー割込み

  こちらの記事にならって、以下のようにした。

 

割り込み処理

void IRAM_ATTR event_f() {
  timer_event = 1;    //タイマー割込みが有ったことを示す
}

 

タイマー割込みをセット

  // タイマー割込みセット
  timer = timerBegin(0, 80, true);  // Set 80 divider for prescaler
  timerAttachInterrupt(timer, &event_f, true); //event_fを呼ぶ
  timerAlarmWrite(timer, 5000000, true);  // 5秒ごとに割り込み
  timerAlarmEnable(timer);

 

 
以上の変更を加えて早速コンパイルしてみる。
すると、analogWrite.hのライブラリ内でコンパイルエラーが発生してしまう。
むむむむ、予想外の展開ぢゃ。
 
試しに、analogWrite.hのインクルードをコメントアウトしてコンパイルする。
//#include <analogWrite.h>
すると、何事も無かったようにエラー無くコンパイルが完了した。
う~ん、良く分からないが、動かして確認するしかない。
 
 
で、ESP32にUSB-シリアル変換基板を挿してプログラムを書き込んでみる。
 
 
で、動かしてみた。
にゃんと、何事も無く動いた。
 
ラジオもちゃんと動作する
最新のArduinoの環境では、ESP32でもanalogWrite()に対応できているようだ。
と、いうことで、現在のarduino IDEではanalogWriteのライブラリはインストール不要。
 

動くかどうかわからなかった、Adafruit_NeoPixel.hを使ったカラーLED制御も全く問題なく使えた。

ここまでは、すんなりと動いてくれたのでちょっと拍子抜けした感じがする。
 
 
参考までに、現状の回路図とスケッチは以下に置いておくので、興味のある方はどうぞ。
 
 
 
「Wi-Fiに繋ぐと言ってたのは どうなったのニャ?」
 
「メリークリスマスにゃ」