Arduinoを使った電子工作をやっていると、いつか作ってみたいと考えるのがオリジナルのArduinoボードではないでしょうか?
世界に一つだけのオリジナルArduinoボードが作れれば楽しいだろうなぁ〜なんてことを考えながら、先日このような記事を書きました。
基板や回路構成・付加機能などいろいろと構想を考えているだけでも楽しいものです。
最近、KiCad(基板作製のCADソフト)を使った基板製作の勉強も始めたのですが、基板製作のスキルを身につければオリジナルArduinoボードの製作も現実味を帯びてきます。
・・・とは言っても簡単に出来るものでもなくCADを使い基板を設計&製作するのは初めての経験なので、まずは回路規模が小さいものから徐々にやっていこうと考えています。
そしてオリジナルArduinoボード製作もそうなんですが、オリジナルのArduinoシールドなんかも作ることが出来れば便利だと思います!
Arduinoには接続するだけで機能を拡張することが出来る「シールド」と呼ばれる拡張ボードがあります。
モータードライバを内蔵したものやCNCで使えるものなど、既に多くのArduino用シールドが販売されています。
大抵の事は販売されているシールドを使えば出来てしまうわけですが、自分が求めている機能だけが欲しいとか、さらに付加機能も追加したいなど考えると・・・もう自分でシールドを自作するしかないわけですよね!
そんな事で今回はArduino Unoに接続できる無線モジュール用のシールドを作ってみました。
目次
nRF24L01無線モジュール用Arduinoシールドの製作!
ArduinoはESPシリーズのマイコンボードなどと違い標準で無線機能が搭載されていません。
そのため、Arduinoで無線機能を使いたい場合は対応した無線モジュールを外部接続して使う必要があります。
ESP-01やESP-WROOM-02などのWi-Fiモジュールと接続したり、HC-05やHC-06などBluetoothモジュールと接続するといった感じですね。
ArduinoでWi-FiやBluetoothを使った無線通信をしたい場合、上記記事のように対応した無線モジュールをArduinoに外部接続する事により実現することが出来ます。
ちょっとしたテストなどしたい場合では、Arduinoではその接続が面倒なことからESP8266やESP32ボードを使うこともあります。
このようにArduinoで無線機能を使いたい場合、その接続が面倒になることはよくあります。
そして今回の本題、無線モジュール用のArduinoシールド製作の話です。
Arduinoに限らず他のマイコンボードでもよく使われる無線モジュールにnRF24L01があります。
技適が取得されていないモジュールなのでその使用には注意が必要ですが、マイコンを使った電子工作で便利に使える無線モジュールです。
nRF24L01に関して詳しくはこちらの記事も見て頂ければと思います。
Wi-FiやBluetoothモジュールと違いペアリングやアクセスポイントの設定など面倒な手間もなく接続も早くて使いやすい無線モジュールです。
nRF24L01モジュールを複数使い、双方向でのデータのやり取りや複数端末間のやり取りなども比較的簡単に行うことができます。
Arduinoと接続して使える無線モジュールとして非常に便利なんですが、その接続は少し面倒となります。
nRF24L01無線モジュールを使う際に面倒なところ
先述のようにnRF24L01は便利な無線モジュールなので、これまで製作してきたものでもよく使っています。
無線モジュールなのでまず思い浮かぶ使用用途としては製作物を操作する送信機・受信機といった使い方だと思います。
送信側Arduinoの操作内容をnRF24L01を使い受信側のArduinoに送信するといったものです。
電源投入時の無線接続がWi-FiやBluetoothよりも早いので、このようなコントローラー的な使い方に非常に適していると思います。
便利な無線モジュールですが、少し面倒な点もいくつかあります。
これまでこの無線モジュールを使ってきて私が毎回面倒だと感じていたのは以下2点です。
- 接続が面倒!
- Arduinoの3.3V端子では安定動作しない場合がある!
①接続が面倒!
nRF24L01はArduinoとSPI接続でデータのやり取りを行う無線モジュールとなっています。
Arduinoで使えるSPI端子はボードによって決まっています。
例えばArduino UnoではD10~D13あたりがSPIピンとして割り当てられています。
SS(D10)/MOSI(D11)/MISO(D12)/SCK(D13)といった感じですね。
これらArduino側の端子およびnRF24L01側の端子を毎回確認しながら接続するのが結構面倒となります。
ジャンパーワイヤを使い接続するわけですが、無線モジュールなのでワイヤーの接触等で無線接続が切れたり、動作が不安定になることもよく起こります。
②Arduinoの3.3V端子では安定動作しない場合がある!
次にnRF24L01の駆動電圧です。
このモジュールの駆動電圧は3.3Vとなっています。
多くのArduinoボードには[3.3V]端子が用意されているので、直接この端子を使いnRF24L01に電力供給を行うことはできます。
しかしながらArduinoの[3.3V]端子はボードにもよりますがあまり多くの電流を流すことができないようで、無線モジュールなど多くの電流を必要とする接続にはあまり適していないように感じます。
nRF24L01無線モジュールではこれまで使っていてあまり問題になったことはありませんが、Wi-FiモジュールとしてESP8266を接続する場合はこの[3.3V]端子では高い確率で動作が不安定になったりモジュール自体を駆動できないといったことはこれまで何度も経験しました。
出力電流は最大150mAほどとなっているようです。
安定動作させるためには3.3Vレギュレーターを別途用意し外部電源を使ったり、このような専用電源モジュールを使うなど場合によっては工夫する必要が出てきます。
上記電源モジュールには3.3V降圧レギュレータが内蔵されているので、Arduinoの[5V]端子から電源を取ることができ安定動作させることが出来ます。
nRF24L01は便利な無線モジュールなんですが、これまで使っていて不便に感じた上記2点を改善できるようにArduino Unoに接続できる簡単なシールドを作ってみました。
nRF24L01専用ミニシールドの製作
今回製作したシールドがこちらです!
非常に簡単な構成ですが、nRF24L01無線モジュールをArduino Unoと接続し便利に使うことができます!
Arduinoの5V端子からの電圧をAMS1117降圧モジュールを使い3.3Vに降圧してnRF24L01を駆動しています。
レギュレータ部分の回路構成は簡単なので表面実装パーツを使い作ってもよかったのですが、モジュールとして市販されている便利な小型ボードが手元にあったのでこれを使っています。
マイコンボードの駆動電圧5V→3.3V降圧で使える便利なモジュールなのでこちらの記事も参考にして頂ければと思います。
あとはArduino側のSPI端子をnRF24L01に直結しているだけの簡単なシールドとなります。
ジャンパーワイヤを使った接続よりシールド形状で固定されているので無線の動作は安定します。
この投稿をInstagramで見る
製作に必要な基板データ&パーツ一覧
回路構成は簡単なので、nRF24L01無線モジュールをよく使われる方はシールド用ユニバーサル基板をカットして製作してみるのもいいかもしれませんね!
また、今回製作したシールドの基板データ(ガーバーファイル)をダウンロード出来るようにしました。
興味ありましたらデータをダウンロードして基板発注を行い作ってみて下さい!
また、基板製作初心者なので設計データを見てアドバイスなども頂ければありがたいです。
nRF24L01シールド(Gerber)
上記ガーバーデータを使った基板発注は、JLCPCBを使えば送料込み(OCS NEP)で500円程度(基板5枚)で作ることが出来ます。
ダウンロードしたzipファイルをそのままJLCPCBのサイトにアップロードするだけです。
発注の際は以下記事を参考にして下さい!
JLCPCBでの基板発注方法に関してはこちらの記事を参考にして下さい!
製作に必要なパーツは以下となります。
製作に必要なパーツ一覧 | |
①nRF24L01無線モジュール | |
②AMS1117(3.3V)降圧モジュール | ピンヘッダーの交換が必要 |
③1×8ピン ロング足ピンソケット×1 | Arduinoシールド用 |
④1×10ピン ロング足ピンソケット×1 | Arduinoシールド用 |
⑤2×4ピンソケット×1 | 1×4でも代用可 |
最後に!
nRF24L01無線モジュールはマイコンを使った電子工作ではよく使われているのを見かける便利な無線モジュールです。
技適の取得がされていないモジュールなのでその使用には注意が必要ですが、無線モジュールを使ったArduino学習用としては最適です!
私の場合ですがArduinoとの組み合わせで使う頻度が高い無線モジュールで、毎回その接続が面倒だと感じていたことから専用のミニシールドとして基板を作ってみました。
なかなか便利です!
またnRF24L01は無線の接続が早く、用途として送信機(コントローラー)やその受信機として非常に適しているモジュールなのでこのようなArduinoコントローラーも作ってみようかと考えています。
受信側のnRF24L01に接続するマイコンボードはArduino以外にもESPシリーズなど他のマイコンボードでも動作するので、このようなコントローラーを1台作っておくと便利そうですよね!
また機会がありましたらご紹介できればと思います。
コメントを残す