- 必要な材料
- Bluetoothモジュール(HC-05)
- STM32USARTポート
- 回路図と接続
- STM32F103C8のプログラミング
- BluetoothモジュールをAndroidフォンに接続する手順
今日の世界ではBluetoothが非常に人気があり、携帯電話、ラップトップ、自動車のインフォテインメントシステムなどのほぼすべてのデバイスがワイヤレス通信にBluetoothを使用しています。Bluetoothは、データを転送するだけでなく、別のBluetoothデバイスをワイヤレスで制御するためにも使用されます。たとえば、Bluetoothヘッドセットを使用すると、携帯電話からワイヤレスで曲を聴いたり、カーオーディオシステムを使用して携帯電話から曲を再生したりできます。
Bluetoothは、2.4GHzの周波数で動作するワイヤレステクノロジーです。通常のBluetooth信号は半径10メートルの範囲にあります。Bluetoothは、通信範囲が制限されている場合、組み込みプロジェクトで最も一般的に使用されるワイヤレステクノロジです。Bluetoothは、低消費電力と低コストの運用という利点を追加しました。これは通常、Bluetoothアプリケーションを使用してマイクロコントローラーとスマートフォンを接続するために使用されます。
BluetoothモジュールとArduino、8051、PICなどの他のマイクロコントローラーとのインターフェースを見てきました。このチュートリアルでは、HC-05 BluetoothモジュールをSTM32F103C8とインターフェースし、Androidモバイルを使用してLEDをオン/オフします。
必要な材料
- STM32F103C8
- Bluetoothモジュール(HC-05)
- 導いた
- Androidモバイル
- ブレッドボード
- 接続線
ソフトウェア:
- Bluetoothターミナル(Androidアプリケーション)
Bluetoothモジュール(HC-05)
これは主に組み込みプロジェクトでBluetoothモジュールに使用されます。範囲100m未満のシリアル通信を使用し、5V(最低3.3V)で動作するシリアルBluetoothモジュールです。2つのマイクロコントローラーをワイヤレスで接続したり、携帯電話やラップトップに接続したりするために使用できます。多くのAndroidアプリケーションが利用可能であるため、ワイヤレスBluetooth制御プロジェクトの作成に非常に役立ちます。
USART通信を使用し、USART通信プロトコルを備えたマイクロコントローラーとインターフェースできます。
アンテナが内蔵されています。ATコマンドモードで変更できるマスター/スレーブ構成があり、PC(MASTER)からスレーブ(任意のMCU)など、1つのデバイスのみがデータ(マスターからスレーブ)を送信する必要がある場合に役立ちます。マスターは他のデバイスに接続でき、スレーブはマスター以外の他の接続に接続しません。
動作モード
それは持っている2つのコマンドモード&データモードATモード。
Bluetoothの電源を入れると、デフォルトのデータモードになります。このモードは、データ転送に使用できます。電源投入時にATコマンドモードに入るには、モジュールにあるボタンを押して、マスター/スレーブ構成などのモジュールのデフォルト設定を変更する必要があります。
Bluetoothモジュールのピン
- ENピン(ENABLE)-このピンは、データモードまたはATコマンドモードを設定するために使用されます。デフォルトでは、データモードです。電源投入時にボタンを押すと、ATコマンドモードになります。
- + 5Vピン-これはモジュールへの電源供給に使用されます
- GNDピン-これはモジュールのグランドに使用されます
- TXピン-このピンはMCUのRXピンに接続されます
- RXピン-このピンはMCUのTXピンに接続されています
- STATE-このピンはモジュールのステータスを示します。表示については以下を参照してください
LED表示
- Bluetoothモジュールの状態を示すLED(赤)インジケータがあります。
- Bluetoothモジュールがどのデバイスにも接続されていない場合、信号はローになり、赤いLEDが継続的に点滅して、モジュールがペアリングされていないことを示します。
- Bluetoothモジュールがいずれかのデバイスに接続されると、信号がHIGHになり、モジュールがペアリングされていることを示す赤いLEDが少し遅れて点滅します。
他のマイクロコントローラーを備えたBluetoothモジュールHC-05の詳細については、他のプロジェクトを確認してください。
- Arduinoを使用したBluetooth制御のおもちゃの車
- 8051を使用したBluetooth制御のホームオートメーションシステム
- RaspberryPiを使用した音声制御ライト
- ArduinoとProcessingを使用したスマートフォン制御のFMラジオ
- GセンサーとArduinoを使用した携帯電話制御のロボットカー
- BluetoothモジュールHC-06とPICマイクロコントローラーのインターフェース
STM32USARTポート
STM32F103C8(BLUE PILL)USARTシリアル通信ポートを下のピン配置画像に示します。これらは青色である(PA9-TX1、PA10- RX1、PA2-TX2、PA3- RX2、PB10-TX3、PB11-RX3)。このような通信チャネルは3つあります。
回路図と接続
BluetoothモジュールをSTM32とインターフェースするための回路接続は以下のように行われます。
STM32F103C8とBluetoothモジュール(HC-05)間の接続
- STM32F103C8のTXピン(PA9)は、BluetoothモジュールのRXピンに接続されています。
- STM32F103C8のRXピン(PA10)は、BluetoothモジュールのTXピンに接続されています。
- BluetoothモジュールのVCC(+ 5V)ピンはSTM32F103C8の5Vピンに接続されています。
- BluetoothモジュールのGNDピンはSTM32F103C8のGNDピンに接続されています。
その他の接続
- STM32(Blue Pill)の(PA0)ピンは、直列抵抗を介してLEDの正のピンに接続されています。ここで使用されているLEDは混合色です。
- LEDの別のピンはSTM32のGNDに接続されています。
STM32F103C8のプログラミング
BluetoothとSTM32のインターフェースはarduinoと同じであり、STM32でのプログラミングはArduinoIDEと同じです。Arduino IDEを使用してUSBでSTM32をプログラミングするには、このチュートリアルを参照してください。
すでに述べたように、このプロジェクトでは、(HC-05)BluetoothモジュールをSTM32F103C8とインターフェースし、AndroidスマートフォンとBluetoothターミナルAndroidアプリケーションを使用してLEDのオンとオフを切り替えます。
注: コードをSTM32F103C8にアップロードするときは、RXおよびTXピンを取り外す必要があります。
このプロジェクトの完全なコードは、このチュートリアルの最後にデモビデオとともに示されています。
このプロジェクトのコーディングはとても簡単です。同じArduinoコードを使用できますが、変更する必要があるのはピンのみです。STM32F103C8には3セットのUSARTピンがあるため、Bluetoothモジュールの接続に使用した正しいピンを指定する必要があります。
1.まず、次のように、 int データ型でそれぞれのピン番号を使用してピンに名前を付ける必要があります。
const int pinout = PA0;
2.次に、Androidモバイルからのシリアルデータを格納するための変数が必要です。データは、次のように文字または整数にすることができます
char inputdata = 0;
3.次に voidsetup()で、 ボーレート9600を指定して、STM32 BluePillとBluetoothモジュール間のシリアル通信を開始する必要があり ます 。
Serial1.begin(9600);
ここでは、HC-05をSTM32のTX1とRX1に接続したため、Serial1を使用しました。
Serial2またはSerial3も使用できますが、それに応じてピンを接続する必要があります。
4.イントロメッセージがシリアルデータとしてserial1、つまりBluetoothモジュールHC05に送信されます。このモジュールはさらに、AndroidモバイルのBluetoothターミナルアプリにデータを送信します。したがって、以下のステートメントを使用します
Serial1.print( "CIRCUIT DIGEST \ n"); Serial1.print( "BLUETOOTH WITH STM32 \ n");
5.次に、このピンに接続したため、 ピンモード(PA0) を出力として設定する必要があります。
pinMode(pinout、OUTPUT);
6.次に、 voidループ()で、 次のデータを実行してシリアルデータを読み取り、それに応じてLEDをオン/オフします。
void loop() { If(Serial1.available()> 0) { inputdata = Serial1.read(); if(inputdata == '1') { digitalWrite(pinout、HIGH); Serial1.print( "LED ON \ n"); } else if(inputdata == '0'){ digitalWrite(pinout、LOW); Serial1.print( "LEDオフ\ n"); } } }
ここでは、 if ステートメントを使用します。これらのコードは、Serial1ポートにBluetoothモジュールから受信したデータがある場合にのみ実行されるため、このステートメントが使用される理由は Serial1.available()> 0 です。それ以外の場合は、侵入しない場合は、シリアル通信を開始するまで待機します。これで、受信したデータを変数 inputdata = Serial1.read()に 格納します 。 次に、Bluetoothターミナルアプリから送信された値を確認します。したがって、値が1の場合、ステートメント digitalWrite(pinout、HIGH) によってLEDがオンになり、ピン(PA0)がHIGHに なり、値が0の場合、LEDがオフになり、(PA0)ピンがLOWになります。
BluetoothモジュールをAndroidフォンに接続する手順
ステップ1: -Arduino IDEからSTM32にコードをアップロードし、回路に電力を供給した後、モバイルからBluetoothを開きます。コードのアップロード中にRXピンとTXピンを削除することを忘れないでください
ステップ2:-利用可能なデバイスでHC-05を選択し、パスワードを1234として入力します
ステップ3:-ペアリング後、Bluetoothターミナルアプリを開き、デバイスの接続を選択し、以下に示すようにHC-05を選択します
ステップ4: -HC-05 Bluetoothモジュールに接続した後、端子1または0に値を入力して、LEDをオンまたはオフにします。LEDがオンまたはオフになっているというメッセージも表示されます。