リレーでON (5) Feather nRF52840 Express

 この連載では、いろいろな負荷をON/OFFするために機械式リレーを使う事例を取り上げています。用途によっては半導体リレーが便利なこともありますが、多くは機械式リレーが使われます。

 第1回で、マイコンはArduino UNOを使いました。CPUはATMega328です。ここではAdafruit Feather nRF52840 Expressを使います。CPUはnRF52840(Cortex M4F)を採用しています。形状はスリムで、USBはmicroです。Li-Po電池の充電回路とコネクタをもちます。nRF52840を組み込んだBluetoothのモジュールは技適のマークが見えます。

 nRF52840は、nRF52832よりメモリが増加したモデルです。このシリーズの前にあったnRF51xよりもメモリが増加しています。

コラムブートローダの更新

 出荷時期によって古いブートローダが搭載されているようなので、確認します。USBケーブルをPCとつなぎ、リセット・ボタンをクリックするとFTHR840BOOTドライブが見えます。この中のINFO_UF2.txtをダブルクリックで開きます。

  UF2 Bootloader 0.2.6 lib/nrfx (v1.1.0-1-g096e770) lib/tinyusb (legacy-525-ga1c59649) s140 6.1.1

 古いようです。

  Update Bootloader

このページに従って更新します。

 緑色で囲われた「Latest .zip of Feather nRF52840 bootloader and associated files」をクリックして、ダウンロードしたzipファイルを解凍します。

 0.3.0というバージョンでした。

 ダウンロードのページの三つ目にある緑に囲われた「adafruit-nrfutil.exe(for Windows)」をクリックしてダウンロードします。

 コマンドプロンプトを立ち上げます。

  cd C:\Users\ユーザ名\Downloads

  dir adafruit-nrfutil*

 ダウンロード・フォルダに存在していることを確認します。

 デバイスマネージャを立ち上げ、ボードのつながっているCOMポートを確認します。COM21でした。

 コマンドプロンプトから、

 dir feather*

 feather_nrf52840_express_bootloader-0.3.0_s140_6.1.1.zip

が存在していることを確認します。各パラメータを最新のものに変更して更新プログラムを実行します。

adafruit-nrfutil.exe --verbose dfu serial --package feather_nrf52840_express_bootloader-0.3.0_s140_6.1.1.zip --port COM21 -b 115200 --singlebank --touch 1200

 ボード上のリセット・ボタンを押します。上記の命令をコマンドプロンプト内で実行します。エラーが出ました。COM21が見つからないといっています。デバイスマネージャで確認すると、COM22に変わっていたので、修正して実行します。

 正常に終わったようです。FTHR840BOOTドライブにあるINFO_UF2.TXTの中を見ます。

UF2 Bootloader 0.3.0 lib/nrfx (v2.0.0) lib/tinyusb (legacy-1500-g23df777b) s140 6.1.1

 正常にアップデートできたようです。

利用するリレー

 第1回と同じく、秋月電子通商で入手して組み立てた、

    ドライバ内蔵リレーモジュールキット[AE-G5V-DRV] 通販コード K-13573

です。ブレッドボード上で利用するのに適しています。最大で、交流125Vac-0.5Aもしくは直流24Vdc-1Aという負荷がつなげます。低い直流電圧で利用します。

駆動のための接続

 LEDとリレー回路は、第1回のArduino UNOと同じように配線します。nRF52840の信号レベルはHighが3.3Vです。リレーのドライブ回路の入力は2V以上であれば駆動できます。

 次の図は、マイコン・ボードのI/Oです。回路図からは、D0~D4、D7、D8がどの信号なのかは不明です。

  C:\Users\ユーザ名\AppData\Local\Arduino15\packages\adafruit\hardware\nrf52\0.18.0\variants\feather_nrf52840_express

のvariant.hから、見つけてきます。

  • D0 Tx、D1 Rx、D2 NFC2、D3 LED1、D7 BUTTON1、D8 NEOPIXEL
  • D22 SDA、D23 SCL、D24 MISO、D25 MOSI、D26 SCK、D5 SS
  • A6 Vbat、A7 Aref

 接続図です。リレーの駆動は9番ピン、電源は3.3Vで使用します。

 スケッチです。上記の配線はしたままでスケッチをコンパイル、実行します。スケッチは前回と同じく9番にリレーをつなぎました。

void setup() {
pinMode(9, OUTPUT);
}

void loop() {
digitalWrite(9, LOW);
delay(3000);
digitalWrite(9, HIGH);
delay(3000);
}

 コンパイルの途中、LEDは光りませんでした。スケッチの書き込みが終わると、3秒ごとに点滅を繰り返します。リレーの動作するときのカチッという音も聞こえます。

9番以外のポートの様子

 Arduino UNOのI/Oポートは、特別な用途のピン以外では電源が入って、コンパイルが実行され、動作が開始するまでLowレベルです。特別な用途とは、UART(0、1番)です。Arduino UNOとSpresenseで調べた様子はこちらのページにあります。

void setup() {
// put your setup code here, to run once:
}

void loop() {
// put your main code here, to run repeatedly:
}

 上記の空のスケッチを書き込んだ後、テスタで電圧を測定しました。
 D0(Tx)、D1(Rx)、D5(SS)、
D6、D10、D11、D12、D13、D14、D22(SDA)、D23(SCL)、D24(MISO)、D25(MOSI)、D26(SCK)、A0~A5のピンの電圧は、0.2~0.4Vでした。

9番以外のポートの動作

 上記の各ポートにリレーをつなぎ、スケッチをそのポートに変更しながら実行しました。リレーの動作音を聞いて確認しました。上記の電圧を測定したポートのすべてが正常に動作しました。

コラム Adafruit Bluefruit nRF52 BSP (Board Support Package)

 nRF52840 ボードでArduino IDEを動かすための手順は、

  Arduino Support Setup

に書かれています。ほかのボードと同様に、環境設定にある「追加のボードマネージャのURL」を追加する方法です。URLの追加が終わったら、ボードマネージャを開き、nrfで検索し、Adafruit nRF52をインストールします。
 現時点のArduino IDEは1.8.11が最新版です。

 スケッチをコンパイルして書き込みは、ほかのボードと同じです。

前へ

リレーでON (4) Feather STM32F405 Express