2022年8月26日発売 書籍『あっと驚く技術力 ガジェット改造』に記事を掲載して頂きました!

【Arduino】自分だけのオリジナルArduinoシールドを作る!既存シールドにはない自分の環境で便利に使えるものが作れます

Arduinoには接続するだけで機能を拡張できる『シールド』と呼ばれる拡張ボードが多数販売されています。
モータードライバを内蔵したものやCNCで使えるもの、またジョイスティックなど多数のスイッチが付いたものなど便利に使えるArduino用のシールドは多数あります。
シールドを使えばArduinoにいろんな付加機能を簡単に追加することができるのは、Arduinoの魅力の一つでもあります!

大抵の用途では既に多数販売されているシールド基板を使えば実現することは可能なんですが、特に自分がよく使う機能のみに限定したり、さらに既存のシールドでは用途に合うものが見つからない場合などでは、もう自分でオリジナルのArduinoシールドを作るのが手っ取り早くなります。

Arduinoを使った電子工作をやっているとオリジナルのArduinoボードやシールドは、いつかは自分でも作ってみたいと思う項目の一つだと思います。

【電子工作/Arduino】オリジナルArduinoを作りたい!どんな機能を追加する?ボード構成を考えてみる。

構成や回路設計さえ出来ればユニバーサル基板などを使えば作ることはもちろん可能ですが、オリジナルシールドとなるとやはり基板製作も出来れば便利となります。

最近KiCadを使った基板製作の勉強も始めたのですが、オリジナルのプリント基板の製作は非常に楽しく実際に使ってみても便利に使うことができます。
まだまだ基板設計に関しては超初心者なので、回路規模の小さなものから設計&製作を行っている段階です。

普段Arduinoを使った電子工作をやっていてよく使うモジュールやセンサーなどいくつかありますが、毎回これをブレッドボードを使って配線するのは結構面倒な作業となる場合があります。
こういうものはArduinoに差し込むだけで使えるシールドとして作っておけば便利だと思います。

Arduinoと組み合わせてよく使う無線モジュール用にこのようなミニシールドを先日作ってみました。
簡単なシールドですが毎回面倒だった無線モジュールとの接続が簡単にでき、テスト環境で試すのに非常に便利に使えています。

既存シールドとしては販売されていないけど自分の環境で便利に使えるものを作れる、オリジナルArduinoシールドを作るっていうのはこういう事なんですね!

【Arduino】初めてのArduinoシールドの製作!無線モジュールnRF24L01用ミニシールドを作ってみました

これくらいの回路規模のものならシールド形状のユニバーサル基板を使えば自作するのは簡単です。

しかしある程度の回路規模になってくると逆にユニバーサル基板で作ると配線等が大変となる場合が多くなってくると思います。
そこで便利なのがオリジナル基板の製作です。

オリジナル基板製作と聞くだけでなんだか難しそう?基板製作費用が高そう?
なんていうイメージを私も持っていましたが・・・初オリジナル基板の製作は比較的アッサリと出来てしまいました!

【電子工作/PCB】ESP-01(ESP8266)のプログラム(スケッチ)書き込みボードを作ってみました!

オリジナル基板の製作には基板設計用CADソフト(KiCad)の知識などがもちろん必要となってきますが、上記記事のような規模の小さなものなら2-3日も練習すれば誰でもできると思います。

そして驚いたのが最近の基板製造メーカーさんの基板製作料金の安さです!
Arduinoなどのマイコンボードを使った一般的な電子工作用途で使われる基板サイズのものなら(10cm×10cm以内)、ほぼ1,000円前後の価格で作れてしまうのはほんと驚きです!

前置きが少し長くなってしまいましたが、今回はオリジナルArduinoシールド製作の話をご紹介したいと思います。

オリジナルArudinoシールドの製作!IOシールドを作ってみました

こちらが今回作ったArduino Uno用のIOシールドです。
パーツをはんだ付けして出来上がった基板だけを見るとなかなかカッコ良く仕上がったと思います。
世界に一つだけのオリジナルArduinoシールド、いいものですね!

中国の基板製造メーカーJLCPCBさんに発注して作った基板となりますが、このサイズのものなら送料を入れても1,000円ほどで作れてしまいます。(基板は5枚セットです)

今回の本題と少し離れてしまうので、JLCPCBでの基板発注の話はこちらの記事でまとめているので参考にして下さい!

【電子工作】はじめての基板製作!JLCPCBさんに基板を発注してみました。ユーザー登録・データ納品・基板到着までの一連の流れをご紹介!

基板を組み上げ実際にArduinoと接続して動かしてみましたが、動作に関しては問題ないようです。
ひとまず安心しましたが・・・所々改善が必要な箇所も見えてきました。

これからオリジナルのArduinoシールドを作ってみようとお考えの方は、参考にして頂ければと思います。

どんなシールド?

まず簡単にこのIOシールドについてですが、Arduino側のIO(入出力端子)を取り出して使いやすくするといった単純な構成のもとなっています。

ArduinoのIO端子にはデジタル入出力端子やアナログ入力端子があります。
これら端子はセンサーやスイッチなど他のデバイスを接続する用途で主に使われますが、接続しやすいように5V/GND端子を個別で取れるようにしています。

例えばサーボモーターの接続ではこのように差し込むだけで使えます。
ブレッドボードを使い電源を別途配線するのは何気に毎回面倒ですからね!

特に5V電源回路をArduinoとは別系統で作っているわけではないので複数台のサーボモーター駆動には向きませんが、テストレベルでSG90などのミニサーボを動かすには重宝し、また他の何かしらのデバイスに接続する場合も信号線とは別に電源ラインも確保出来るので便利となります。

同様にI2Cデバイスを接続できる端子を2系統、SPIとUARTは1系統用意しています。
また、5V/3.3V/GND端子も複数取れるようにしています。

あとは無線モジュール接続用端子も用意しています。
HC-05(HC-06)などのBluetoothモジュールを差し込むだけで使うことが出来ます。(TX/RXラインはソフトウェアシリアルでD2/D3に接続します)

Arduinoを使いBluetooth通信をやってみる!HC-05/HC-06 Bluetoothモジュールの使い方!

またnRF24L01無線モジュール接続用端子も用意しています。(CEはD9/CESはD10に接続しています)
私の用途ではよく使うモジュールとなり、製作物を無線操作で動かすコントローラー的な用途でよく使っている無線モジュールです。

安定動作させるためにArduino側の3.3V端子は使わず、3.3Vレギュレーターを使いArduinoの5V端子から電源供給をおこなっています。

【電子工作】無線モジュールnRF24L01を使いArduino間で無線通信をやってみる!

あとはリセットスイッチ/通電確認用LED/オンボードLED(D13) といった構成となるシールドです。

普段Arduinoを使っていてブレッドボードを使った配線が面倒だと思っていた部分やよく使う無線モジュールとの接続を簡単に出来るように考えたシールドとなります。

回路構成は非常に簡単なのでArduinoシールド用ユニバーサル基板を使って製作することももちろん可能ですが、全IO端子を引き出しているのでその配線は結構大変となりそうですね。

動作確認も問題ないようです!

自分の環境でよく使う機能を考えて作ったシールドなので、Arduinoを使った電子工作でこれから使っていこうと考えています。

おそらく使っていくと、電源ラインの強化の話やWi-Fiモジュールなども使えれば・・・なんてことも出てくるかと思います。

Arduinoシールドを今回実際に作ってみてその製作方法も雰囲気つかめてきたので、改良バージョンや全く別のシールドになるかは分かりませんが今後の製作に活かせそうです。

改善点&Arduinoシールドを作る時の注意点

製作したこのIOシールドですが、動作自体は問題なかったのでとりあえずは一安心です!
そして今後シールドや基板製作をする際の改善点もいくつか見えてきました。

まずこちらはKiCad側の設計段階のミスです。
基板到着時に配線パターンのチェックをしたのですが、1ヶ所おかしなパターンを発見しました!
この部分ですね!

配線を変更した時の古い回路パターンが残っていた感じでしょうかね。
一応SCLのラインでは繋がっているので動作には問題はないようです。

インスタで海外の方から『今まで見た中で最も馬鹿な失敗だ!』なんて事を言われましたが、まさにその通りです!
回路的には繋がっているのでKiCadのDRCチェックでエラーが出なかったので全く気付かなかったのですが・・・このようなチェックも含め次回に活かしたいと思います。

そしてもう1ヶ所の改善点です。
これはこれからArduinoシールドを作られる方には参考になるかと思います。

Arduinoシールドを作る場合、Fusion360などのCADソフトを使い基板の外形データとしてDXFファイルをKiCad側にインポートして使うことが出来ます。
任意の形状のシールドを作りたい場合で便利な方法だと思います。

またKiCad側にデフォルトで用意されているテンプレートを使えばArduinoと同じ形状の基板データが使えるので、これを使ってシールド基板を作る事もできます。

今回は後者となるKiCadのテンプレートを使って基板を製作したのですが、Arduinoと干渉する部分が出てきました。

Arduino Unoには古いUSB規格となるType-B端子が使われています。
シールド基板をArduinoと結合するとシールド基板の底面はこのUSB端子の上部に接触する設計となっています。
つまりUSB端子の上にパーツを配置していると、はんだ付けしたパーツの足が干渉してしまいます。(コンデンサの足がUSB端子と干渉し少し基板が浮いています)

Arduinoシールドはよく使っていますが、この点は今まで気付きませんでした。(DCジャック部分も同様です)

最近のArduino Uno互換機ではUSB端子がmicroUSBやType-C端子となっているものもあり、これら互換機を使う場合には問題になりませんが、本家Arduino UnoなどType-B端子が使われたボードの場合はシールド製作で注意が必要ですね!

手持ちのシールドをいくつか見てみると、やはりこの部分にパーツがこないように設計されていたり、この部分をカットして基板設計しているものが多いようです!
これに関しては次回シールドを設計する際に活かせそうです。

そして上記回路パターンの不備部分を修正した基板データ(ガーバーファイル)をダウンロード出来るようにしました。

私のように基板製作をこれから始めてみようとお考えの方の参考になればと思います。
あと基板設計にお詳しい方はデータを参照し、アドバイスなど頂ければありがたいです!

今後、機能追加や修正等を行ったバージョンを作ることがあれば更新も行おうと考えています。

製作に必要なパーツ一覧

一応製作に必要なパーツ一覧をまとめておきます。

シールド用ピンソケット

今回Arduinoシールド用のロング足タイプのピンソケットを使いました。
6ピン(1本)/8ピン(2本)/10ピン(1本)が必要となります。

Arduino Uno形状にカットされているシールド用の基板も販売されているので、これとセットで使うと自作シールドの製作が出来ますね!

ピンヘッダー

電源ラインの5Vや3.3Vラインは赤色ピンヘッダー、GNDラインは黒色、IO端子は黄色など色分けをしておけば使う時も分かりやすく便利だと思います。

I2Cのラインは緑色、SPIは青色などそんなイメージでいつもArduinoを使っているので今回も複数の色のピンヘッダーを使ってシールドを作りました。
結果的にすごく見た目だけはカラフルでかっこいいシールド基板になったと思います。

AMS1117(3.3V)降圧レギュレータ

nRF24L01無線モジュールの駆動電源はArduinoの5VラインからAMS1117レギュレーターを通して3.3Vに降圧して使っています。(10μFと100μFの電解コンデンサも必要です)

Arduinoの3.3Vから直で取るより動作は安定するかと思います。

その他(抵抗/LED/タクトスイッチ)

通電確認用LEDとオンボードLED(D13)、そしてLEDの電流制限用抵抗(470Ωのものを使いました)も必要となります。

またリセットスイッチには5mm角のタクトスイッチを使っています。
あと4×2のピンソケットも1本必要となります。(無線モジュール固定用)

以上が全パーツとなります。
汎用性があるパーツばかりなので入手はしやすいと思います。

最後に!

普段Arduinoを使っていてよく接続するモジュールや欲しい機能などで既存シールドで対応出来ない場合は、オリジナルシールドとして自作すれば便利となります。
自分が欲しい機能に限定して自作するわけなので当然といえば当然なんですが・・・。

今回製作したIOシールドはArduino Unoで使う事を前提としているので、ArduinoのICSP端子と接続できるピンソケットを基板裏に取り付けることはしていません。
そのためArduino Megaなどに取り付けるとSPI端子が取れず無線モジュールを使う事もできませんが、私の用途ではMegaにシールドを取り付けて使う用途はほぼないのでカットしました。

そしてArduino形状にカットされたユニバーサル基板が販売されているので、アイデアがあれば自作シールドの製作をする事は比較的簡単に出来ると思います。

また最近の基板製造メーカーさん(ほぼ中国メーカーです)では非常に安価な価格でプリント基板を作ることが出来ます。
自分で基板設計ができオリジナルArduinoボードやシールドなどが作れるとArduinoを使った電子工作の幅も広がり、そして楽しくなってきますね!

コメントを残す