リレーで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
古いようです。
このページに従って更新します。
緑色で囲われた「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を動かすための手順は、
に書かれています。ほかのボードと同様に、環境設定にある「追加のボードマネージャのURL」を追加する方法です。URLの追加が終わったら、ボードマネージャを開き、nrfで検索し、Adafruit nRF52をインストールします。
現時点のArduino IDEは1.8.11が最新版です。スケッチをコンパイルして書き込みは、ほかのボードと同じです。