Project_OKI’s diary

エンジニアの勉強ブログ

ObnizでDFplayer動作(UART通信)

​​​ObnizとjQuaryでLED点灯/消灯

・目次

 

 1.目的  

・obnizeを使用して、DFplayerとUART通信を行う。

・obnizを使用して、LEDのON/OFFを行う。

 

2.動作説明

・起動時に、LEDがONし、1秒wait、LEDがOFFする。 

・その後UART通信を行い、フォルダ01のファイル001を再生する。

・ボタンを表示:

 ・ボタン1:クリックするとLEDをON/OFFする。

  (今後、ソレノイドを使用する予定の為、名前はソレノイドになっている。)

 ・ボタン2:クリックすると、DFplayer内の次の曲を再生する。

 

3.使用機器

個数 部品名 型番
1 USBケーブル(obniz付属品) ​​USBtypeC
1 obniz ​​obniz Board 1Y 
1 ブレッドボード・ジャンパーワイヤ(オス-オス) B094ML2RLP
1 ブレッドボード LEOBROJP043
1 発光ダイオード(LED) LEOBROJP043
1 抵抗(100Ω程度) B077N1BV3Y

 

 回路とは別にmicroSD及びmicroSDを書き込むPCや変換が必要

  microSDマイクロsdカード 32GB SDカード マイクロSDカード 高速Class10 UHS-I U3 

  変換:SDカードリーダー USB メモリーカードリーダー

 これを使用し、PCにmicroSDを接続し、再生する音楽ファイルを書き込む。

 32GBまでのマイクロSDに対応している。

 

4.ピン接続

obniz DFplayer
pin0 UART_TX pin2 UART_RX
pin1 UART_RX pin3 UART_TX
pin2 GND GND
  LED接続
pin4 sole_out 長い足側 LEDアノード
pin3 sole_gnd 短い足側 LEDカソード

 

5.接続回路図(DFplayerとobnizの接続部分)

 

6.プログラム作成

・プログラムはindex.htmlとmain.jsファイルを作成する。

cssファイル(style.css)も作成しインクルードしているが、特に何も記載していない。

HTML側(index.html)

<!-- 
 日付:2022/11/19
 目的:obnizを使用し、ソレノイドとDFplayerを操作するプログラム
 概要:obnizを使用し下記動作をするプログラム
    ・起動時にソレノイドをON
    ・1秒wait
    ・ソレノイドをOFF
    ・DFplayerに次の曲を再生する指示をUART通信で送る。
    ・ボタンにより、ソレノイドのON/OFF,次の曲の再生
 -->

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <!-- タブタイトル -->
    <title>お休みなさい</title>
    <!-- ファイルのインクルード -->
    <!-- CSSの設定 -->
    <link rel="stylesheet" href="style.css" />

    <!-- Bootstrapを使用 -->
    <link
      rel="stylesheet"
  href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
    />

    <!-- JQuaryを使用 -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

    <!-- obnizを使用 -->
    <script
      src="https://unpkg.com/obniz@3.x/obniz.js"
      crossorigin="anonymous"
    ></script>
  </head>

  <body>
    <div id="obniz-debug"></div>
    <button class="btn btn-primary" id="button1">
      ボタン1(ソレノイドON/OFF)
    </button>
    <button class="btn btn-primary" id="button2">
      ボタン2(次の音楽を再生)
    </button>

    <!-- main.js(javascript)ファイルの読み込み -->
    <script type="text/javascript" src="./main.js"></script>
  </body>
</html>

 

javascript側(main.js)

///javascriptプログラム
///ファイル名:main.js
/*
    機能:
     obniz動作
     ボタンのクリック動作
      ・ソレノイドON/OFF
      ・音楽再生
 使用ピン:
 ・pin0:UART_TX
 ・pin1:UART_RX
 ・pin2:UART_GND
 ・pin3:ソレノイド_GND
 ・pin4:ソレノイド_3.3V
*/

//obniz ID入力
var obniz = new Obniz("OBNIZ_ID_HERE");

///obniz動作処理開始
obniz.onconnect = async function(){
    //デバック確認:コンソールにobniz開始を表示
    console.log("obniz開始");
    //変数宣言
    let solenoidf;  //solenoid ON/OFF監視フラグ
    solenoidf = false; //ソレノイド状態フラグ

    //定数宣言
    const WAITSEC = 1000; //1秒wait
    //UART通信コマンド
    //Start(0x7E),VER,Len,CMD,Feedback,para1,para2,$O(End bit:0xEF)
    //checksumは除く。
    
    //UART通信用:次の曲を再生
    let data_send  = [0x7E,0xFF,0x06,0x01,0x00,0x00,0x00,0xEF];
    //UART通信用:ファイル001を再生
    //let data_send2 = [0x7E,0xFF,0x06,0x03,0x00,0x00,0x01,0xEF];
//UART通信用:フォルダ01のファイル001を再生 let data_send2 = [0x7E,0xFF,0x06,0x0F,0x00,0x01,0x01,0xEF]; console.log(data_send); //ソレノイド出力宣言 var sole = obniz.wired("Solenoid",{gnd:3,signal:4}); //UART宣言 var uart = obniz.getFreeUart(); ///ボーレート9600でUART通信開始, pin0:tx,pin1:rx,pin2:gnd obniz.uart0.start({tx:0,rx:1,gnd:2,baud:9600}); //obniz.uart0.start({tx:7,rx:6,gnd:2,baud:9600}); //起動時動作処理 sole.on(); //ソレノイドON solenoidf = true; await obniz.wait(WAITSEC); //1000ms wait sole.off(); //ソレノイドOFF solenoidf = false; //UARTコマンド送信:フォルダ01のファイル001を再生 obniz.uart0.send(data_send2); //コマンド送信 //ボタン1クリック処理 $("#button1").click(function(){ if(solenoidf == false){ //ソレノイドOFF時 //ソレノイドON処理 sole.on(); solenoidf = true;
      }else{ //ソレノイドON時 //ソレノイドOFF処理 sole.off(); solenoidf = false; } }); //ボタン2クリック処理 $("#button2").click(function(){ //UARTコマンド送信:次の曲を再生する。 obniz.uart0.send(data_send); //コマンド送信 console.log("uartコマンド送信"); //コンソールにuartコマンド送信を表示 }); }

 

5.プログラム説明

・インクルード及びボタンの作成について 

 →参照:jQuary、javascript学習_1

 

・obnizの動作について

 →参照:ObnizとjQuaryでLED点灯/消灯

 

・let solenoidf; //solenoid ON/OFF監視フラグ

 →LEDON/OFFを管理する用の変数を作成

 →trueの時:LEDがONの状態

 →falseの時:LEDがOFFの状態

  を示す。

 

const WAITSEC = 1000; //1秒wait

 →wait用定数を設定

 →waitを複数使う場合、wait時間を一斉に変える時など定数として設定しておくと楽

 

・let data_send = [0x7E,0xFF,0x06,0x01,0x00,0x00,0x00,0xEF];

 let data_send2 = [0x7E,0xFF,0x06,0x0F,0x00,0x01,0x01,0xEF];

 →DFplayerにUART通信で送るコマンド

 →コマンドの説明は、DFplayerの説明に記載(予定)

 →データシート参照

  →data_sendは、次の曲を再生する。

 →data_send2は、フォルダ01のファイル001を再生する。

 

・var sole = obniz.wired("Solenoid",{gnd:3,signal:4});

 →pin3をGND、pin4を信号出力に設定

 →参照:Solenoid | JS Parts Library | obniz

 

・ var uart = obniz.getFreeUart();

 →空いているUART通信ポートを検索

・obniz.uart0.start({tx:0,rx:1,gnd:2,baud:9600});

 →設定した内容でUART通信を開始する。

 →設定内容

  pin0をUART_TX

  pin1をUART_RX

  pin2をGND

  ボーレート9600

  でUART通信を開始。

 →参照:UART - obniz Docs

 

・sole.on(); //ソレノイドON

 →ソレノイドをONに設定する。

 →関数の参照:obniz/index.js at master · obniz/obniz · GitHub

 

・await obniz.wait(WAITSEC); //1000ms wait

 →1000ms待つ。

 →参照:Wait and Repeat - obniz Docs

 

・ obniz.uart0.send(data_send2); //コマンド送信

 →上記で設定したコマンド(配列:data_send2)を送信する。

 

・ $("#button1").click(function(){

 →id:button1をクリックした時処理する。

 →参照:ObnizとjQuaryでLED点灯/消灯

 

関連記事

DFplayer関連:
 
HTML,Javascript関連: