注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。

なぜ参加するのか?

  • 専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。

  • 学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。

  • 限定プレビュー:新製品発表や予告編に早期アクセス。

  • 特別割引:最新製品の特別割引を楽しむ。

  • フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。

👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!

レッスン47: Bluetooth信号機

このプロジェクトは、Bluetooth通信を使用して信号機(赤、黄、緑のLED)を制御することを目的としています。ユーザーはBluetoothデバイスから文字('R'、'Y'、または'G')を送信できます。Arduinoがこれらの文字のいずれかを受信すると、対応するLEDが点灯し、他の2つのLEDが消灯します。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

一式キットを購入するのが便利です。こちらのリンクをご覧ください:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

以下のリンクから別々に購入することもできます。

Component Introduction

Purchase Link

Arduino UNO R3 or R4

購入

ブレッドボード

購入

信号機モジュール

-

cpn_jdy31

-

配線

../_images/Lesson_47_Bluetooth_traffic_light_uno_bb.png

コード

アプリとBluetoothモジュールの接続

"Serial Bluetooth Terminal"というアプリを使用して、BluetoothモジュールからArduinoにメッセージを送信できます。

  1. Serial Bluetooth Terminalのインストール

    Google Playにアクセスして、シリアルBluetoothターミナル をダウンロードしてインストールします。

  2. Bluetoothの接続

    まず、スマートフォンで**Bluetooth**をオンにします。

    スマートフォンの Bluetooth設定 に移動し、 JDY-31-SPP のような名前を探します。

    それをクリックした後、ポップアップウィンドウで ペア リクエストに同意します。ペアリングコードを求められた場合は、「1234」と入力してください。

    1. Bluetoothモジュールとの通信

    Serial Bluetooth Terminalを開き、「JDY-31-SPP」に接続します。

    ../_images/00-bluetooth_serial_4_shadow.png
  1. コマンドの送信

    Serial Bluetooth Terminalアプリを使用して、Bluetooth経由でArduinoにコマンドを送信します。赤色のライトを点灯させるには「R」、黄色には「Y」、緑色には「G」を送信します。

    ../_images/16-R_shadow.png ../_images/16-Y_shadow.png ../_images/16-G_shadow.png

コード解析

  1. 初期化とBluetooth設定

    // Set up Bluetooth module communication
    #include <SoftwareSerial.h>
    const int bluetoothTx = 3;
    const int bluetoothRx = 4;
    SoftwareSerial bleSerial(bluetoothTx, bluetoothRx);
    

    まず、Bluetooth通信をサポートするためにSoftwareSerialライブラリをインクルードします。次に、BluetoothモジュールのTXおよびRXピンを定義し、Arduinoのピン3および4に割り当てます。最後に、Bluetooth通信のための``bleSerial``オブジェクトを初期化します。

  2. LEDピンの定義

    // Pin numbers for each LED
    const int rledPin = 10;  //red
    const int yledPin = 11;  //yellow
    const int gledPin = 12;  //green
    

    ここでは、LEDが接続されているArduinoのピンを定義しています。赤色LEDはピン10、黄色はピン11、緑色はピン12に接続されています。

  3. setup()関数

    void setup() {
       pinMode(rledPin, OUTPUT);
       pinMode(yledPin, OUTPUT);
       pinMode(gledPin, OUTPUT);
    
       Serial.begin(9600);
       bleSerial.begin(9600);
    }
    

    setup()``関数では、LEDピンを ``OUTPUT として設定します。また、Bluetoothモジュールおよびデフォルトのシリアル(コンピュータに接続されている)とのシリアル通信をボーレート9600で開始します。

  4. Bluetooth通信のためのメインループ

    void loop() {
       while (bleSerial.available() > 0) {
          character = bleSerial.read();
          Serial.println(character);
    
          if (character == 'R') {
             toggleLights(rledPin);
          } else if (character == 'Y') {
             toggleLights(yledPin);
          } else if (character == 'G') {
             toggleLights(gledPin);
          }
       }
    }
    

    メインの loop() 内では、Bluetoothモジュールからデータが利用可能かどうかを継続的にチェックします。データを受信した場合、その文字を読み取り、シリアルモニタに表示します。受信した文字(R、Y、またはG)に応じて、 toggleLights() 関数を使用して対応するLEDを点灯します。

  5. LED切り替え関数

    void toggleLights(int targetLight) {
       digitalWrite(rledPin, LOW);
       digitalWrite(yledPin, LOW);
       digitalWrite(gledPin, LOW);
    
       digitalWrite(targetLight, HIGH);
    }
    

    ``toggleLights()``関数は、まずすべてのLEDを消灯します。すべてが消灯していることを確認した後、指定されたターゲットLEDを点灯させます。これにより、常に1つのLEDのみが点灯するようにします。