LoginSignup
0
0

More than 1 year has passed since last update.

AE-TYBLE16をArduinoIDEで使う(JLinkなしでBluetooth接続まで)

Last updated at Posted at 2023-01-15

AE-TYBLE16 とは

先日、秋月で見つけた小型Bluetoothモジュールです。
https://akizukidenshi.com/catalog/g/gK-12339/

どうやら、Nordic社のnRF51822マイコンが搭載されており、
太陽誘電独自のファームウェアが書き込まれているらしいです。

太陽誘電独自のファームウェアを用いることで、UART経由でBluetoothを使うことができ、
Arudino(atmega328P)などと接続できるBluetoothモジュールとして使用できます。
参考記事:小型 Bluetooth LE モジュール AE-TYBLE16とボタン電池でビーコンを作る

なぜArduinoIDEで開発するのか

当初は普通にArduinoと接続して遊ぼうと思ったおり、
太陽誘電のサイトに登録してUARTの詳細仕様を取得しようとしたのですが、
会員登録がうまく進まず、詳細仕様が見れないという状況に陥ってしまいました。
(会員登録フォームがどう見ても企業向けで、自分のアドレスがgmailだからはじかれた?)

仕方なく、本来想定されていないと思いますが、ArduinoIDEを使ってAE-TYBLE16を使い倒そうと思います。

参考にさせたいただいたサイト

秋月電子の BLE モジュール AE-TYBLE16 を Hack

準備

この記事で使用するもの一覧

品名 購入先 説明
AE-TYBLE16 https://akizukidenshi.com/catalog/g/gK-12339/ 今回の主役
ST-LinkV2 https://www.amazon.co.jp/gp/product/B084VMYNF7 書き込みのために必要です amazonにはほかにも色違い
USBシリアル変換器 https://akizukidenshi.com/catalog/g/gK-14745/ PCとUART接続を行うために使います。Arduinoなどで代用可。

その他、必要なもの(一般的なもの)

品名 説明
ブレッドボード 回路作成のためには必須
ジャンパ線 オス-オス メス-オス 両方必要です
はんだ付けセット はんだ、はんだごて、錫メッキ銅線
LED 今回は抵抗内蔵のLEDを使用しました
適当な抵抗 1kΩ,3.3kΩ,10kΩ の三種類あれば大丈夫でしょう
WindowsのPC おそらく皆さん1台くらい持っているでしょう。ST-Linkをつなげるために、USB-Aポートが必要です。
Androidスマホ 正しくBluetooth信号が出ているか確認するためのものです

使用するソフトウェア

名称 ダウンロード先 説明
ArduinoIDE https://www.arduino.cc/en/software 個人的な慣れの問題でv1.8.19を使用しています

作業手順

ArduinoIDEをインストール

参考手順:https://www.kkaneko.jp/tools/win/arduinoide.html

arduinoIDEにarduino-nRF5を導入

【概要】
AE-TYBLE16の内部モジュール「RF51822」のコンパイラを導入します。

【手順】

  1. ArduinoIDEで「ファイル」メニューより「環境設定」を開き、「追加のボードマネージャのURL」に
    https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json 」を追加する。
  2. ArduinoIDEで「ツール」メニューより「ボード:"Arduino Uno"(選択されているボードは異なる場合あり)」に進み
    「ボードマネージャー」を開く
  3. 「Nordic Semiconductor nRF5 Boards」のボードをインストールする。(今回はv0.7.0をインストールしました)
  4. ボード一覧に「Nordic Semiconductor nRF5 Boards」が追加されるので、その中の「Generic nRF51」を選ぶ

nRF5FlashSoftDeviceの書き込みの準備を行う

【概要】
SoftDeviceとはnRF51822マイコン向けのfirmwareのようです。
arduino-nRF5ではv130が対応しているので、このversionのものをインストールします。
【手順】

  1. https://github.com/sandeepmistry/arduino-nRF5/releases/download/tools/nRF5FlashSoftDevice.jar
    をダウンロードする。

  2. C:\Users\ユーザー名\Documents\Arduino フォルダ内に、tools\nRF5FlashSoftDevice\tool フォルダを作ります。

  3. ダウンロードしたjarファイルを、
    C:\Users\ユーザー名\Documents\Arduino\tools\nRF5FlashSoftDevice\tool\nRF5FlashSoftDevice.jar
    の場所にコピーします

  4. ArduinoIDEを再起動します。

  5. ArduinoIDEのデバイスの設定を次のようにします
    image.png

  6. 「nRF5 Flash SoftDevice」ボタンを押す
    すると、次のようなエラーが出ると思います。

Downloading 'https://www.nordicsemi.com/-/media/Software-and-other-downloads/SoftDevices/S130/s130nrf51201.zip' ...
Error while flashing SoftDevice.
java.io.IOException: Server returned HTTP response code: 403 for URL: https://www.nordicsemi.com/-/media/Software-and-other-downloads/SoftDevices/S130/s130nrf51201.zip

ArduinoIDE内からだとDLできないようなので、
ブラウザでエラー内のURL(https://www.nordicsemi.com/-/media/Software-and-other-downloads/SoftDevices/S130/s130nrf51201.zip )にアクセスし、手動ダウンロードします。

  1. ダウンロードしたzipを解凍し、「s130_nrf51_2.0.1_softdevice.hex」を
    C:\Users\ユーザー名\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.7.0\cores\nRF5\SDK\components\softdevice\s130\hex
    フォルダにコピーします。
  2. 再度、「nRF5 Flash SoftDevice」を選択します。「Error while flashing SoftDevice.」というエラーが出ますが、まだデバイスをつないでいないためなので、問題ありません。

STLinkV2のドライバーをインストールする

https://www.st.com/en/development-tools/stsw-link009.html
にアクセスしてドライバーをダウンロードします。(会員登録が必要です)
ダウンロードができたら、展開し、「dpinst_amd64.exe」を実行します。

AE-TYBLE16をPCと接続し、コードを書きこむ

【AE-TYBLE16に足をつける】
そのままではブレッドボードに差せないので、錫メッキ銅線等をはんだづけして、足を生やします。
image.png

【接続回路を作成する】
以下の回路図に従って、STLink-V2と接続します。

image.png
image.png
▲書き込み回路はこんな感じ

【SoftDeviceを書き込む】
「nRF5 Flash SoftDevice」を選択し、書き込みを行います。

【Lチカを書き込む】
ArduinoIDEに以下のコードを入力し、書き込みを行います。

#define LED 4
void setup() {
  pinMode(LED,OUTPUT);
}
void loop() {
  digitalWrite(LED,HIGH);
  delay(1000);
  digitalWrite(LED,LOW);
  delay(1000);
}

無事にLEDが点滅すればOKです。

Bluetoothを使ってみる

  1. Arduino IDEで「スケッチ」メニューの「ライブラリをインクルード」「ライブラリを管理」 を開きます。
  2. BLEPeripheralで検索
  3. 表示された項目を選択し、Installを押す(今回はv0.4.0)を選択しました
  4. スケッチ例からiBeaconを選択して開きます
    image.png

このままでも書き込みは完了しますが、Bluetoothは有効になりません。
これは外部クリスタルの周波数の違いに起因するもので、レジスタの値を書き換える必要があります。
参考:AE-TYBLE16をHack

参考先に従って、
"C:\Users\ユーザー名\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.7.0\cores\nRF5\SDK\components\toolchain\system_nrf51.c"に、外部クリスタルの周波数を変更するコードを追加します。

void SystemInit(void)
{
    /* 既存コード省略 */

    /* =======ここから追加部分=========*/
    if (*(uint32_t *)0x10001008 == 0xFFFFFFFF)
    {
        NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen << NVMC_CONFIG_WEN_Pos;
        while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
        *(uint32_t *)0x10001008 = 0xFFFFFF00;
        NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren << NVMC_CONFIG_WEN_Pos;
        while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
        NVIC_SystemReset();
        while (true){}
    }
    /* =======ここまで追加部分=========*/
    SystemCoreClockUpdate();
}

この状態でArduinoIDEに戻り、書き込みを行います。

Bluetooth発信確認

Bluetoothが正しく発信されているか確認するために、Androidスマホを使います。
nRF Connect」というアプリをインストールし、SCANを開始します。
次の画像のように、UUID=[a196c876-de8c-4c47-ab5a-d7afd5ae7127]のiBeaconが見つかれば成功です。
image.png

UART接続

ArduinoIDEで以下のソースコードをコンパイルして書き込みます。

#define LED 4
void setup() {
  Serial.begin(9600);
  Serial.println("TX test");
  pinMode(LED,OUTPUT);
}
void loop() {
  if(Serial.available() > 0) { 
    int data = Serial.read();
    Serial.println(data);
    if(data=='1'){
      digitalWrite(LED,HIGH);
    }
    if(data=='0'){
      digitalWrite(LED,LOW);
    }
  } 
  delay(10);
}

USBシリアル変換器とAE-TYBLE16を接続します。
今回使っているCH-340Eは5Vレベルなので、本来は3.3Vに変換しなければなりませんが、5Vのままでも動くのでヨシ!! という考えていきます。

image.png

接続出来たらArduinoIDEのシリアルモニタを開き、
ボーレート9600bpsを選びます。
そして、「1」や「0」と入力してEnterキーを押して、
LEDが点滅することを確認しましょう。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0