ArduinoでBluetooth通信するまで、その2

www.101010.fun

前回の続き、Bluefruit LE UART Friendを使ってArduinoでBluetooth通信を試みた。

Bluetooth経由でArduinoから文字を受け取ることに成功した!

半田付け

まずは、Bluefruitの半田付け。

f:id:araemonz:20181120095631j:plain

ピンを数カ所やるだけなので、物足りない半田付け作業だ。

配線

トライアンドエラーでやっていくうちに、配線はこうなった。

Bluefruit Arduino
DFU 未接続
GND GND
RTS 未接続
VIN 5V
RXI DIGITAL 9
TXO DIGITAL 10
CTS DIGITAL 11
MOD 未接続

また、スイッチはUART側にしておく。

アプリ

スマホからBluefruitに接続する専用のアプリがあるのでインストールする。

Adafruit Bluefruit LE Connect

Adafruit Bluefruit LE Connect

Adafruit Industries無料posted withアプリーチ

Arduinoにプログラムを書き込まなくても電源を入れれば、Bluefruitとは接続できる。

f:id:araemonz:20181120101723j:plain

Arduino IDE

今度はArduinoのIDE側の設定をしていく。

Bluefruit LE UART Friendの情報はこちら。

https://learn.adafruit.com/introducing-the-adafruit-bluefruit-le-uart-friend/introduction

英語の情報できついが、なんとかやっていく。

サンプルコード(Adafruit_BluefruitLE_nRF51)をダウンロードする。

https://learn.adafruit.com/introducing-the-adafruit-bluefruit-le-uart-friend/software

解凍したらフォルダ名をAdafruit_BluefruitLE_nRF51にしてArduinoのライブラリフォルダに取り入れる。

場所はDocuments -> Arduino -> librariesになっていると思う。

これでArduino IDEのスケッチ例の中にAdafruit_BluefruitLE_nRF51のサンプルコードがはいった。

プログラミング

サンプルコードをコピペして改造していく。

いらなそうなものは削って見やすくすると仕組みが分かってくる。

こちらは「debug」という文字を1秒間に一回、アプリへ送信するだけのプログラムだ。

#include <Arduino.h>
#include <SPI.h>
#include "Adafruit_BLE.h"
#include "Adafruit_BluefruitLE_SPI.h"
#include "Adafruit_BluefruitLE_UART.h"


#if SOFTWARE_SERIAL_AVAILABLE
  #include <SoftwareSerial.h>
#endif

// Arduino UNOの場合この設定でうまくいった
//
#define BLUEFRUIT_SWUART_RXD_PIN       9    // Required for software serial!
#define BLUEFRUIT_SWUART_TXD_PIN       10   // Required for software serial!
#define BLUEFRUIT_UART_CTS_PIN         11   // Required for software serial!
#define BLUEFRUIT_UART_RTS_PIN         -1    // Optional, set to -1 if unused
#define BLUEFRUIT_UART_MODE_PIN        -1    // Set to -1 if unused
#define VERBOSE_MODE                   true  // If set to 'true' enables debug output

SoftwareSerial bluefruitSS = SoftwareSerial(BLUEFRUIT_SWUART_TXD_PIN, BLUEFRUIT_SWUART_RXD_PIN);

Adafruit_BluefruitLE_UART ble(bluefruitSS, BLUEFRUIT_UART_MODE_PIN,
                      BLUEFRUIT_UART_CTS_PIN, BLUEFRUIT_UART_RTS_PIN);



void error(const __FlashStringHelper*err) {
  Serial.println(err);
  while (1);
}


void setup(void)
{
  while (!Serial); // required for Flora & Micro
  delay(500);


  Serial.begin(9600);

  if ( !ble.begin(VERBOSE_MODE) )
  {
    error(F("Couldn't find Bluefruit, make sure it's in CoMmanD mode & check wiring?"));
  }
  Serial.println( F("OK!") );

}

void loop(void)
{
  delay(1000);
  ble.write("debug\n");
}

結果を見てみよう!

接続成功!⚡️


Success! Connecting Arduino and smartphone with Bluetooth.