Arduino 電子部品

【Arduinoで電子工作-10】ArduinoでI/Oエキスパンダー MCP23017を使う

この記事は<JLCPCB>様の提供で執筆しています。

MCP23017テスト用Arduinoシールドの作成

開発の経緯

プロジェクトの背景

電子工作の分野では、MCP23017 I/Oエクスパンダーはその多用途性と拡張性のために広く使用されています。
このチップは16チャンネルのI/Oポートを提供し、I2Cインターフェースを通じてArduinoと通信することが可能です。

これにより、限られた数のGPIOピンを持つマイクロコントローラでさえも、より多くのデバイスやセンサーを制御できるようになります。

しかし、その潜在能力を最大限に引き出すための試験をブレッドボード上で行うには、多数のLEDやスイッチなどの外部コンポーネントを使用する必要があり、
この手間と複雑さは、特に初心者にとって大きな障壁となります

これらの課題を克服し、MCP23017の利用をより手軽にするため、私は特別に設計されたArduinoシールドの開発に着手しました。

今回使用したArduinoデバイスはこちらのArduinoUNO R4 MINIMA となっています。


Amazonで購入   楽天で購入

プロジェクトの目的

このプロジェクトの主な目的は、ArduinoユーザーがMCP23017の機能を簡単かつ迅速に活用できるようにすることです。
このシールドを使用することで、ユーザーは迅速にプロトタイピングを行い、実験のセットアップ時間を大幅に短縮できるようになります。

また、I2C通信を利用してGPIOピンを節約し、Arduinoボードの機能拡張を図ることができます。

このシールドは、初心者から上級者までの幅広いユーザーにとって、MCP23017の実験を容易にし、Arduinoプロジェクトの可能性を広げるものです。

プロジェクトへのアプローチ

私たちのアプローチは、まずMCP23017の機能と特性を深く理解することから始まりました。
これには、チップが提供する16チャンネルのI/OポートとI2C通信メカニズムの研究が含まれます。

次に、MCP23017とArduinoの連携を最適化するための回路図を設計しました。
このプロセスには、機能性とユーザビリティのバランスを取るための細かい調整が必要でした。

回路図の設計が完了した後、基板の設計に取り掛かり、効率的なレイアウトと製造の容易さを考慮しました。

最終的には、JLCPCBを通じて基板の製作と部品の実装を行い、設計したシールドの実際の性能と機能性をテストしました。

MCP23017の解説

MCP23017の概要

MCP23017はMicrochip Technologyによって開発された、16チャンネルのI/Oエクスパンダーです。

ピンアサインは以下のようになっており、AとBの2グループ16chの入出力ポートを持つ構成となっています。

MCP23017 ピンアサイン

このデバイスは、I2Cインターフェースを介してマイクロコントローラと通信し、限られた数のGPIOピンを持つマイクロコントローラの入出力機能を拡張します。

主な特徴として、以下のようになっています。

  • I/Oポート: MCP23017は、8つずつAポートとBポートに分けられた合計16のI/Oポートを提供します。これにより、多数のデバイスやセンサーを制御する能力が得られる。
  • 駆動電圧: 1.8Vから5.5Vまで対応しているため、様々な電子回路で使用することができる。
  • 通信: SDAとSCLの2本の信号線を使用して通信し、A0、A1、A2ピンの組み合わせで最大8個のMCP23017のアドレス設定が可能。

また、I2Cインターフェースを使用することで、最大8個のMCP23017を接続し、合計128個のI/Oポートを利用できます。
この豊富なI/Oリソースは、複雑なプロジェクトや多くのセンサー、アクチュエーターを要するアプリケーションに理想的です。

MCP23017には、入出力の管理だけでなく、内部プルアップ抵抗の設定や割り込み出力など、多様な機能が搭載されています。
これにより、ユーザーは様々なシナリオに対応する柔軟な回路設計を行うことができます。

アプリケーションの例

MCP23017を使用したアプリケーションの例としては、以下のようなものがあげられます。

  1. ホームオートメーションシステム: MCP23017は、家庭内の照明、暖房、エアコンなど多数のデバイスを制御するためのホームオートメーションシステムに理想的です。各チャンネルを異なるデバイスに割り当て、中央制御システムからそれらを個別に操作できます。
  2. ロボット工学: ロボット工学の分野では、多くのセンサーやアクチュエーターを管理する必要があります。MCP23017を使用することで、これらのコンポーネントを効率的に制御し、ロボットの機能性を高めることができます。
  3. 教育用電子キット: 教育用の電子キットでは、MCP23017を使用して、学生がさまざまな入出力デバイスを実験できるようにすることができます。このアプローチは、電子工学の基本を学ぶ上で非常に有効です。
  4. インタラクティブアート: インタラクティブなアートインスタレーションでは、多数のセンサーとアクチュエーターが使用されることがあります。MCP23017を利用することで、これらのデバイスを集中的に管理し、芸術作品に動きや反応を加えることができます。

これらの例は、MCP23017の多様な用途と、電子工作プロジェクトにおけるその有効性を示しています。
MCP23017は、その柔軟性と拡張性により、様々な分野で有用なコンポーネントとなっています。

回路図の作成

このプロジェクトで設計されたMCP23017ベースのArduinoシールドでは、MCP23017の16本の入出力ピンを最大限に活用しています。
それぞれのピンにDIPスイッチとLEDが取り付けられており、これにより各ピンの状態を直接視覚的に確認できます。

以下に回路図を示しています。

シールドはArduino UNOとの互換性を有し、直接接続が可能です。
I2C通信のためのプルアップ抵抗は基板に組み込まれており、必要に応じて外部抵抗を使用するためにブリッジをカットすることができます。

MCP23017の割り込みピン(IntA、IntB)とリセットピンは外部からの入力に対応しており、ジャンパブリッジを介してArduinoのピンに接続可能です。
I2Cアドレスは3つのジャンパピンコネクタを使用して設定でき、複数のMCP23017を使う際のアドレス競合を防ぐことができます。

重要な点として、MCP23017の電源はArduinoから直接供給されるため、外部の電源は必要ありません。
この設計により、シールドはよりシンプルで使いやすくなり、追加の電源管理が不要になります。

この回路図の設計は、MCP23017の機能をフルに活用しながら、ユーザーの使い勝手を考慮した柔軟なアプローチを取っています。

プロジェクトでは、これらの特徴を最大限に活かしつつ、効率的かつ実用的なシールドの使用を目指しています。

基板の設計と製作

上記の回路図をもとに設計した基板が以下になっています。

この基板で、毎度お世話になっているJLCPCB様で基板発注を行いました

発注図面の作成、及び発注方法は過去の記事<【ESP32で電子工作-2】デジタル時計の作成(1)【プリント基板の作成】>見ていただければと思います。

基板製作と動作確認

ICと抵抗・LED・コンデンサなどの表面実装部品はJLCPCBのほうでアセンブリをしてもらいました。

同じ部品をたくさん使う場合、自分で部品を集めてはんだするよりも、手間・価格面共にコスパがいいと思います。
特にこのよう同じLEDや抵抗を複数付ける場合などはおすすめです!!

で、実際に届いた基板が以下のようなものになっております。

しっかりとICや抵抗とかは引っ付いてそうです。あいかわらずきれいに取り付けられています。

実際にスルーホール部品であるDIPスイッチ、コネクタは手はんだで実装を行いました。
最終的に完成したモノが以下のようになっています。

そして、実際の動作している動画がこちらになっております。

こちらは、すべてのポートを出力させて動かしている様子になります。

見てもらったように、すべての出力ピンに対してLEDが制御できていることがわかります。

そして以下の動画は、ArduinoとMCP23017を活用したインタラクティブな入出力デモンストレーションをご紹介しています。


まず、Arduinoの0から7のポートがランダムにデジタル信号を出力し、この信号はMCP23017のBポートに入力されます。
次に、MCP23017はBポートに入力された信号を読み取り、そのデータに基づいてAポートから出力を行います。

このプロセスにより、Aポートの出力はBポートの入力に追従する形で動作し、入力された信号を忠実に反映しています。

このデモンストレーションは、ArduinoとMCP23017を使ったデータの伝達と処理の様子を示しており、電子工作や教育用のデモンストレーション、さらには実際のプロジェクトでの入出力テストなど、多岐にわたる用途に適しています。

この動画を通じて、ArduinoとMCP23017の協働による可能性の一端をご覧いただけます。

上記の動画より今回作成した基板でMCP23017の入力と出力が正常に動いていることが確認できました!!

宣伝とかご紹介

今回使用した基板の作成・入手をするには

今回紹介した基板とLED点灯プログラムはGitHubで公開しております。

https://github.com/ramtuc/ram_prog/tree/main/ArduinoMCP23017Shield/Arduino_Schetchには今回使用した2つの点灯プログラムが入っております。

https://github.com/ramtuc/ram_prog/tree/main/ArduinoMCP23017Shield/schematicには基板データが入っておりますのでご自由にお使いください。

JLCPCBで基板を作成するときは[ 74HC595_testboard.zip ]を読み込ませることで、同様の基板が製作することができます。

また、実装サービスに使用したBOMファイル、CPLファイルも入っています。

そちらのファイルを使用することで、JLCPCB様より表面実装部品が実装済みの基板を製作することができますので、自己責任とはなりますがご利用いただけたらと思います。

Boothショップでの購入

紹介したテストボードはBoothのショップで購入できます。セット内容は以下の通りです。

表面実装部品取り付け済みMCP23017制御用Arduinoシールド基板
8chDIPスイッチ 2個
1x8ピンコネクタ&ピンソケット2個
アドレスセレクト用2x3ピンコネクタ 1個
アドレスセレクト用ジャンパピン3個
Aruduinoピン名印字済み長ピンソケット

購入サイト→ElectroRam Studio

ご検討のほど、よろしくお願い申し上げます。

今回の記事は以上となります。
それでは、良き電子工作ライフを!!
See You …

ブログランキング参加中

クリックしていただけると
ブログ更新の励みになります


電子工作ランキング
にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村

スポンサーリンク

-Arduino, 電子部品
-, , , ,