見出し画像

T-SIM7080G-S3でADS1115とI2C通信


T-SIM7080G-S3ではIO22ピンが無い

アナログ計測をする要件が出来たので、最近使いに使いまくっているT-SIM7080G-S3を利用しようと思い立ちました。
ESP32では、I2C通信で通常利用するピンはIO21, IO22となるようです。
なので、ネット上の情報からI2C通信を行おうとすると、このIO21, 22ピンの利用が前提となります。

ではT-SIM7080G-S3でI2C通信を行おうとすると…
何とIO22がありません!

赤枠がIO21で、IO22は出ていない

今回はADコンバータのADS1115とT-SIM7080G-S3をつなげようと思って作業を行っているのですが、困りました。
今回は試行錯誤の記録となります。

まず、ADS1115をESP32で利用するにあたっては下のページの情報を参考にしました。

また、上記ページからリンクをたどって、利用するADS1X15ライブラリは上記のものを利用します。

コード自体はこのような感じにしました。
SDA_PINとSCL_PINを定義する事でカスタムピン番号でI2C通信が出来ました。

#include <Arduino.h>
#include "Wire.h"
#include "ADS1X15.h"

#define SDA_PIN 48
#define SCL_PIN 47

TwoWire I2C = TwoWire(0);
ADS1115 ADS(0x48, &I2C);

void setup(void)
{
  I2C.begin(SDA_PIN, SCL_PIN);
  ADS.begin();
}

void loop(void)
{
  ADS.setGain(0);
  int16_t val_0 = ADS.readADC(0);
  int16_t val_1 = ADS.readADC(1);
  int16_t val_2 = ADS.readADC(2);
  int16_t val_3 = ADS.readADC(3);

  float f = ADS.toVoltage(1); // voltage factor
  Serial.println(f, 8);

  Serial.print("\tAnalog0: ");
  Serial.print(val_0);
  Serial.print('\t');
  Serial.println(val_0 * f, 3);
  Serial.print("\tAnalog1: ");
  Serial.print(val_1);
  Serial.print('\t');
  Serial.println(val_1 * f, 3);
  Serial.print("\tAnalog2: ");
  Serial.print(val_2);
  Serial.print('\t');
  Serial.println(val_2 * f, 3);
  Serial.print("\tAnalog3: ");
  Serial.print(val_3);
  Serial.print('\t');
  Serial.println(val_3 * f, 3);
  Serial.println();

 Serial.println("loop...");
  delay(5000);
}


I2CでIOピン番号を指定する場合は制限に注意する事

I2Cを利用する際に、ソフトウェア上で利用するピンを指定できると描きましたが、ピン番号は他の機能との兼ね合いで色々と制限があります。

私は当初、IO1とIO2ピンを利用して通信しようとしましたが、以下のエラーが起こってしまいました。

[E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263

どうもIO1ピンがUARTのTxに使っているらしいです。親機PCとシリアル通信でデバッグを行っていたりすると、このピンは使えなません。
大体PCに繋いでデバッグした方が効率が良いと思うので、実質IO1ピンは使えない、と思った方が良いでしょう。

0.00018751
        Analog0: 759    0.142
        Analog1: 4829   0.905
        Analog2: 4834   0.906
        Analog3: 4835   0.907

loop...
0.00018751
        Analog0: 1402   0.263
        Analog1: 4831   0.906
        Analog2: 4837   0.907
        Analog3: 4835   0.907

loop...

何だかんだでADS1115が利用できるようになりました!

まとめ

T-SIM7080G-S3はESP32標準で利用するI2Cピン番号が外部に出ていないので、利用する際はカスタムピン番号を使いましょう。
その際に、ピン番号の制限に注意してください。

ADコンバータのADS1115も低コストですし、T-SIM7080G-S3と組み合わせる事でアナログ計測までお手軽にできるサービスが作れそうです。

と言う訳で、T-SIM7080G-S3の情報をまとめるべくnoteのマガジンを作りました!

私が共同代表を務めているGREEN OFFSHOREでは農業向けのIoTサービスを展開しています。
そちらにも様々な情報を展開しているので、ぜひ上記リンクをクリックしてみて下さい。

この記事が気に入ったらサポートをしてみませんか?