ブログだいちゃん

ブログだいちゃん

趣味のブログ

ブログだいちゃん

ESP32でWebRadioを作成

ラジオはあまり聞くことはないのですが、今ハマっているNodeMCU(ESP32)を使いウエブラジオを作成しようと思います。

使用パーツ

ESP Wroom32 開発ボード

VS1053 MP3モジュール(アマゾン)

2.8インチLCDタッチパネル(アマゾン)

赤外線リモコン受信モジュール(秋月電子)

赤外線リモコン(アマゾン) 

2GB程度のSDカード:MP3ファイルを入れる場合は容量に応じて増やして下さい

赤外線リモコンには受信モジュールが付属します、私の場合リモコンがありましたので受信モジュールのみ購入しております。

MP3モジュール単体ではスピーカーを鳴らすことが出来ませんアンプ付スピーカー などを使用するかオーディオアンプボード を使用しスピーカーに接続します、なおイヤホンは使用出来ます。

まずは、最小構成で鳴らしてみる

最小構成でラジオが聴けるか試します、参考にしたのはこのYouTube動画です。


最終的にはこれを目指しますが、動画の説明欄にあるGitHubへのリンクから最小の構成でウエブラジオが鳴るか確認します。

GitHubの右上「Clone or Download」からZipファイルをダウンロードし、中にある画像を参考に配線します。

ブレッドボード上にジャンパー線で配線しました、このスケッチでは再生できるのは1局だけです。

vs1053_ext.inoを開き自宅WiFiSSID及びPass を設定して書き込みます。

最小構成でのウエブラジオは出来たので、次はLCDを使用しリモコンで制御出来るように作成します。

関連記事

blogdaichan.hatenablog.com

blogdaichan.hatenablog.com

blogdaichan.hatenablog.com

blogdaichan.hatenablog.com

blogdaichan.hatenablog.com

BME280を使用し外気温を Blynk で表示する その2

前の記事で、仮組みをして表示確認出来たので外に設置します、都合良く2階の軒下に外付けのコンセントがありますのでこれを利用し電源供給して使用したいと思います。

組み込みに使ったもの

ケースは市販の綿棒が入っていたビニールケースにパーツを取付けるためのフレームを3Dプリンターで作成し取付けました、蓋を取り除き逆さにして使用します。

取付けた場所

これを外付けのコンセントがある二階の軒に吊しました。

結果は

表示させてみたところ室内より温度が高く表示されました、南向きの角で日当たりが良く熱がこもっているようです、軒から5cm位下げた所に取付けましたがもっと下げた方がよさそうです、やはり百葉箱のような環境に置かないとダメですね、曇りの日や夜などは大丈夫でしょうか?、まあ取敢えずこれで外気温が計れるようになりました。

 

Blynkについて

無料版のBlynkは2022年12月31日で終了となりました、残念ですね。

BME280を使用し外気温を Blynk で表示する

以前フルカラードットマトリックスLEDで時計を作成しました、これもBME280を使用し温度・湿度・気圧を表示させています、室内ではこれで充分ですが外気温も測定したいなと思い探していたところ、おもしろい記事(ベランダの温湿度センサーをDHT11から気圧も計れるBME280に変更した)があり参考にさせて頂きました。

BME280・ESP8266 もありますので早速作成してみることにしました、Blynk は今回が初めての使用になります。

とりあえず仮組みをしてみる

ブレッドボードにESP8266 BME280 を配置しジャンパー線で繋ぐだけですので至って簡単です、配線及びスケッチは参考にさせて頂いた所に書かれていますのでそちらをご覧下さい。

Blynkの設定

Blynkを初めて使用してみましたが、ネット上に使い方が多くアップされていますし、参考にさせて頂いた所でも設定方法が書かれていますので意外と簡単に設定できました。

自分用に変更した箇所

スマフォの画面表示サイズが大きく表示に空きがあったので不快指数をバー表示させました(T:温度 H:湿度)。

不快指数=0.81×T+0.01×H(0.99×T-14.3)+46.3

LED表示の上段を 不快指数に基づき、快適度とし3段階:寒い・快適・暑い を表示するように設定しました。

気圧は標高により変化します(500mまでは100mにつき平均11.6hPa下がる)ので自宅の標高を考慮して海抜0mに換算しています。

次は外に置くためのケースを作成して設置したいと思います。  

追 記 (2024/03/03)

  2022/12/31でBlynk legacy は終了してBlynk 2 となりました、残念でしたが Blynk Local Server を構築して使用している記事を読み、私もRaspberry Pi 3B を使用して構築しました。 Blynk legacy が使い放題になり諦めていた外部温度計も再びBlynkで表示出来るようになりました。  

関連記事

  blogdaichan.hatenablog.com

B-Robot ESP32 version 3号機 その2

前回の記事ででハード面の作成を行いましたので、続いてソフトウエアのインストールを行い完成させます。

スケッチの書込み

B-Robot forum で投稿されている ghmartin77 の記事にGithub へのリンクがありますのでZip ファイルをダウンロードします、また不具合などの対処もフォーラム内で議論されていますので最後まで目を通して下さい。

書込みには Arduino IDE を使用しますので使用したことがある方が対象です、使用方法はネット上に山ほどありますのでここでは省きます。

ESP32のライブラリが必要です。

また、Arduino IDEのバージョンがVer1.8.7ではコンパイル時にエラーが出ましたのでベーター版のVer1.9.0を使用しました。

まずGithubからダウンロードしたZipファイルを解凍し、出来たフォルダーの中の「BRobotEvo2ESP32」フォルダーをArduinoで使用するフォルダー(通常ドキュメント内のAruduinoフォルダー)に移動します、フォルダー内にファイルが14個ありますが「BRobotEvo2ESP32.ino」は中身はメッセージだけなので削除し、「ESP32SelfbalancingBot.CPP」ファイルを「ESP32SelfbalancingBot.ino」にリネームします。

その他、フォーラムに書かれている不具合箇所の修正などがありますが、どのファイルを修正したのか覚えておりませんので、この3号機用に修正したファイルをまとめてZipファイルにしたのでアップしておきます。

B-Robot_ESP32_ZIP_file

スケッチを書き込む前に不要動作防止のため、サーボコネクターと電池は外しておきます。

ステッパーモータードライバーの電流値調整

書込みが無事終了したらステッパーモータードライバーの電流値を調整します、まずサーボ、左右のステッパーモーターのコネクターを外した状態で電流値を測定しますこのロボットの場合150mA程度流れています。

いったん電源を落とし片方のステッパーモーターを接続し電源を入れステッパーモーターが動作したときの電流値を250mA程度にドライバーモジュール上のボリュームで調整します、もう片方も同様に調整します。

この電流値で私の場合ちょうど良い感じでしたが、個体差があるかもしれないので実際に動作させてみて調整した方がよいでしょう、調整が済んだら全てのコネクターを接続し寝かせた状態で電源を入れます、暫くすると車輪が少し動きます、動きが止まったら車体をゆっくり持ち上げると立ち上がります。

スマートフォンでのコントロール

jjrobotsAndroid 及び iOS 用にアプリを公開しています、私はAndroidスマフォを使用していますのでGoogle Play よりアプリをインストールしました。

B-Robotの電源を入れるとスマフォのWiFi設定一覧に「Bbot」が表示されますので選択しパスワード「12345678」を入力して接続します。

アプリを立ち上げ「B-ROBOT EVO2」を選択してコントロールします。

サーボは右側のボタンで操作、設定画面ではPIDの調整がスマフォから行えます。

※注意点

ロボットを立たせている時にスマフォを接続すると、一瞬動作がストップしロボットが倒れますので、ロボットを倒した状態でスマフォをWiFi接続し、スマフォでコントロール出来るようにしてからロボットを立たせます。

動 画

関連記事

blogdaichan.hatenablog.com

B-Robot ESP32 version 3号機

この所セルフバランシングロボットばかり作っているような感じですが、また作りました。。。(^_^;)

前回の改良版としてフレームの見直しとサーボの追加、ステッパーモーターを一般的なNEMA14に変更しました。

このセルフバランシングロボットはjjrobotsオープンソースを公開しているBROBOT EVOを参考にしています、B-Robot forum に掲載されています「ghmartin77」さんの記事が大変参考になりました感謝です。   

 

3Dプリンターで作成したフレーム

フレームはPLAフィラメントを使用しています、サーボ取付けやステッパーモーターの仕様変更により以前のものとは多少変更がありますが、大きさはほぼ同じです。   展開図と組み上がりのイメージです。  

  サーボに取付けるハンマーです、B-Robotが倒れたときの起き上がりにも使用します。

  STLファイルが必要な方は以下からダウンロードして下さい。   STL_ZIP_File

主要パーツ

ステッパモーター・サーボ以外は、以前作成したB-Robotと殆ど変りはありませんのでそちらを参照して下さい、以下主要パーツのリンクを張っておきます。   ESP32-DevKitC ESP-WROOM-32開発ボード

ジャイロ:MPU6050

ステッパーモーターNEMA14

ステッパーモータードライバー:DRV8825

サーボ:MG90S

スイッチ:丸型スイッチ(アマゾン)

回路図

サーボを追加した回路図です。

基盤作成

ユニバーサル基板は70mm×50mmを使用します。

ESP32及びDRV8825用のピンヘッダー メスとステッパーモーター用及びサーボ用のピンヘッダーは画像のような配置になりました、短いピンヘッダー メスはMPU6050用でESP32の下に配置しています、5Vのレギュレータは結構熱くなりますのでヒートシンクを取付けています、その右側は電源及びスイッチ用のブロックコネクターです。

MPU6050はジンバルコントローラーに付属のものを流用しています、市販のMPU6050はピン数が異なります、また取付け方向に注意が必要です。

  画像の手前が前進方向です、このMPU6050の場合はこの方向になりました、市販のMPU6050の場合は下の画像のようになります。

↓ 矢印の方向が前進

基盤の仕上がりです、しかしよく見たらLED用の抵抗1KΩ×2個を忘れてました、基盤の空いているところに取付け配線しました、ESP32だと部品数が少なくて済み配線も楽ですね。

組み立て

フレームの展開図を見れば分かると思います、基板用のプレートに基盤を2mmのタップネジで取付けます、ステッピングモーターは8mm×3mmのネジで固定します。

基板用プレートと側面フレームなどは3mmのタップを切りナイロンネジで固定します(タップがない場合は3mmのタップネジでもOK)

ホイールはOリングを取付けて、3mmのタップを切りイモネジでシャフトに固定します、サーボはSG90の場合裏側から2mmのタップネジで固定、MG90Sの場合表側からサーボを差し込みタップネジで固定します、スイッチは押し込みます。

電池は画像のようにベルクロでフレームに固定します、ちなみにコネクターは左側から、サーボ・左モーター/右モーターの順になります(車体の後ろから見た状態)

フレームカバーは0.5mmの塩ビ板を83mm×160mmにカットしたものをフレームの溝にはめ込みます、シールのプリント用紙にイラストを印刷し貼り付けました。

次回はソフトウエア-のインストールです。

関連記事

blogdaichan.hatenablog.com

記事がHACKADAYに取り上げられた

10月のログを見ていたらアクセスが異常に多い日がありました、アクセスが集中した記事はこの記事です。

ログを見ると最初にHACKADAYからのアクセスがあり、その後世界中からアクセスが集中していました、HACKADAYと言う名前からハッカーからの不正アクセスなのかと焦りましたが、アクセスしてみると私の記事が紹介されていました。

HACKADAYは、エンジニア愛好家のためのニュースメディア兼コミュニティサイトだそうで、内容も興味をそそるおもしろい記事がアップされています。

いやはや、拙い記事を紹介して頂き恐縮しています。

B-Robotをバージョンアップ(EVO2化)する

以前作成したB-Robotはバージョンが古いタイプで、スマートフォンでコントロール出来るもののテレメトリー関連の不具合で電圧の表示などが出来ませんでした。

B-robotの最新バージョン(EVO2)では色々改善され、安定度も増しているようなのでバージョンアップしてみました。

バージョンアップはソフトウエアのみ

ハードウエアは変更ありませんので前のをそのまま使います、作成方法は前の記事を参照して下さい。

f:id:blogdaichan:20190103123127j:plain

まず、GithubからB-ROBOT_EVO2-master.zipファイルをダウンロードします。 解凍したファイルの中のArduino→BROBOT_EVO2フォルダ内のファイルを使用するので、このBROBOT_EVO2フォルダをArduinoで使用しているフォルダ(通常ドキュメント内のArduinoフォルダ)に移動します。

Arduinoを立ち上げ、BROBOT_EVO2タブを開き反転箇所のように変更します「 pinMode(9, OUTPUT); // STEP MOTOR 2 PORTB,5

f:id:blogdaichan:20190103123142j:plain

次にControlタブを開き反転箇所の中の2箇所を「SET(PORTB, 5); // STEP MOTOR 2」「CLR(PORTB, 5);」に書き換えます。

f:id:blogdaichan:20190103123139j:plain

最後に電池残量表示箇所の変更をします、Servosタブを開き反転箇所のように変更します、3S Lipoの場合13.5でちょうど良かったので。 17行目:#define BATT_VOLT_FACTOR 13.5 // 8

f:id:blogdaichan:20190103123134j:plain

77行目~の2箇所:analogRead(3)  電池電圧測定にA3端子を使用するため(5)→(3)に変更。

f:id:blogdaichan:20190103123131j:plain

ファイルを修正したら、Arduino ProMicro にスケッチを書き込んで終了です、ただArduino Ver1.8.7ではコンパイルエラーが出て書込み出来なかったので、ベーター版のVer1.9にてコンパイルしています。

B-Robot の状態表示(電池残量表示の左側)、電池残量表示もスマートフォンに表示されました、電池残量は測定器で55パーセントでしたのでスマートフォンの残量表示もほぼ合っています、安定度は多少良くなった程度であまり変化はありませんでした。

f:id:blogdaichan:20190103123124j:plain

関連記事

blogdaichan.hatenablog.com