ここではArduinoでよく使う通信方式についてまとめています。細かいことは置いておいて、実践重視の内容にしました。今後内容を更新するかもしれません。

 実際に使うときは、マイコンやIC関連の回路の知識と、プログラミングの知識が必要です。基本的な使い方が分かれば、あとは大体同じように使えると思います。ご参考になれば幸いです。

▼通信方式について学ぶには、ATP3012を使ってみるのが一番いいと思います。日本語のデータシートで詳しく説明されています。

 https://akizukidenshi.com/catalog/g/gI-09973/

▼Arduino IDEの公式リファレンスはこちら。ライブラリの検索もできます。

 https://www.arduino.cc/reference/en/

マイコンで使う通信方式

 Arduino Unoでよく使うのは、UART通信I2C通信SPI通信の3つです。それぞれの通信方式に対応したピンが指定されています。

 他にもノイズに強いCAN通信RS232CRS485など様々なものがあります。Arduino Unoではシールドを換装すると使うことができます。電子部品を購入して回路を組んでもいいのですが、ややこしいのでシールドが一番楽だと思います。

▼シールドはこちら

▼CAN通信については以前の記事で使ったことがあります。

MCP2561を使ってCAN通信をする(ESP32)

はじめに  今回はMCP2561というCANトランシーバを使って、CAN通信を試してみました。 ▼こちらのMCP2561を使いました。 https://akizukidenshi.com/catalog/g/gI-124 [&he…

UART通信

 UART通信では一対一の通信になります。パソコンからArduinoにプログラムを書き込むときもUART通信です。Arduino UnoのD0、D1ピンはパソコンで書き込むときと同じピンを使っています。D0、D1ピンに他の電子部品が接続されていると書き込めないことがあるので注意してください。

 例えばArduino UnoではUART通信用のピンが一組しかありません。しかし、プログラムで擬似的に増やすことができます。

Arduino IDEでプログラムを書く場合

 Arduino IDEのシリアルモニターにデータを出力するのに頻繁に使われます。特に以下の関数はよく使います。

  • Serial.print():シリアルモニタに表示
  • Serial.println():シリアルモニタに表示して改行
  • Serial.begin():通信速度の指定

▼Arduino IDEの右上に、シリアルモニタのボタンがあります

 Arduino系のマイコンはUART端子が少ないのですが、SoftwareSerial.hを使って、擬似的にUART端子として使うことが可能です。これでプログラムを書き込む毎にピンを接続しなおさずに済みます。

▼SoftwareSerial.hに関する公式リファレンスのページ

 https://docs.arduino.cc/learn/built-in-libraries/software-serial

I2C通信

 I2C通信はSDASCLの2線だけで、複数のICと接続することができます。それぞれの信号線には、プルアップ抵抗を接続します。プルアップ抵抗の値はICや条件によってさまざまなので、データシートで確認します。

▼SDA、SCLに繋がっているのがプルアップ抵抗です

ATP3012-I2C schematic

 複数のICを接続して、すべてのICに同じ信号が伝わるというのは使いにくいです。そこで、I2C通信ではそれぞれのICにアドレスがあって、プログラムでそのアドレスにデータを送信することができます。

 I2C通信に対応したセンサーやディスプレイを使うときは、データシートや販売ページでアドレスを確認する必要があります。

Arduino IDEでプログラムを書く場合

 Wire.hを使って、プログラムを書きます。よく使うのは以下の4つです。

  • Wire.begin():通信開始
  • Wire.beginTransmission():アドレスの指定
  • Wire.write():送信するデータ
  • Wire.endTransmission():通信終了

▼以前の記事で使ったことがありますが、たったのこれだけです。

▼以前の記事

ATP3012をI2C通信で使う

はじめに  今回は音声合成LSIのATP3012を、I2C通信で使ってみました。UART通信であれば何度も使ったことがあるのですが、I2C通信で使うのはこれが初めてです。  I2C通信…

SPI通信

 SPI通信もI2C通信と同様に複数のICと通信でき、アドレスの指定もあります。

 SPI通信で用いるディスプレイをよく見かけますが、接続しないといけないピンが多いです。データシートや回路のサンプルがあって、使いやすいものを購入することをお勧めします。

▼例えばMCP23S08では、A0、A1の電圧によってアドレスを変更することができ、4つのデバイスを使い分けることができます。

 https://akizukidenshi.com/download/ds/microchip/mcp23008_mcp23s08.pdf

▼SPI通信を用いるI/O Expanderを使ったときの記事

I/O Expanderを使ってみる その1(MCP23S08-E/P)

はじめに  今回はI/O ExpanderのMCP23S08を使ってみました。  I/O Expanderを使うと、マイコンのピンを増やすことができます。SPI通信やI2C通信でI/O Expanderのピンを…

Arduino IDEでプログラムを書く場合

 SPI.hが用意されていますが、電子部品の名前で調べたらライブラリが出てくることがあります。ディスプレイやI/O Expanderは処理が複雑になるので、専用のライブラリを使うのが一番楽だと思います。サンプルプログラムも用意されています。

▼例えば、ILI9341というタッチディスプレイの場合は、Adafruitのライブラリが用意されていて使いやすいです。