T-SIM7080G-S3でADS1115とI2C通信
T-SIM7080G-S3ではIO22ピンが無い
アナログ計測をする要件が出来たので、最近使いに使いまくっているT-SIM7080G-S3を利用しようと思い立ちました。
ESP32では、I2C通信で通常利用するピンはIO21, IO22となるようです。
なので、ネット上の情報からI2C通信を行おうとすると、このIO21, 22ピンの利用が前提となります。
ではT-SIM7080G-S3でI2C通信を行おうとすると…
何と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サービスを展開しています。
そちらにも様々な情報を展開しているので、ぜひ上記リンクをクリックしてみて下さい。
この記事が気に入ったらサポートをしてみませんか?