Проблема с подключением 2-х датчиков GY-SHT31-D

noindex

✩✩✩✩✩✩✩
24 Сен 2022
18
0
Всем доброго дня!
Решил поэкспериментировать с разными датчиками температуры / влажности для проекта, с оказией приобрел пару GY-SHT31-D
К arduino через i2c уже подключен экран, перед покупкой датчиков читал что устройств на эту шину можно подключить достаточно много, главное чтобы адреса отличались, также нагуглил по этим датчикам возможность работы этих датчиков на 2-х адресах 0х44 и 0х45.
Приехали датчики, подключил их параллельно экрану, залил скетч
#include <Wire.h>

void setup(){
Wire.begin();

Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
}

void loop(){
byte error, address;
int nDevices;

Serial.println("Scanning...");

nDevices = 0;
for(address = 8; address < 127; address++ ){
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0){
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");

nDevices++;
}
else if (error==4) {
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(5000);
}

Запускаю и получаю

Scanning...
I2C device found at address 0x27 !
I2C device found at address 0x29 !
done
Ну в принципе нормально думаю, 0х27 это экран, 0х29 это оба датчика, т.к. манипуляций по изменению адреса не делал.
Только странно что вместо везде фигурирующего 0x44 стоит 0x29.
Начал курить даташиты и форумы по этим и схожим датчикам, сначала нашел данные что для изменения адреса на 0x45 нужно подать 5в ардуины на пин AD.
Подал - ничего не поменялось.
Дальнейшие гугления подсказали что на этот пин нужно подать землю ардуины, при этом где-то писали что через резистор 10кОм, где-то гнапрямую, т.к. на модуле резистор уже есть.
Попробовал и так и сяк - ничего не изменилось.
Подумал что возможно один из модулей неисправен, отключил оба и начал подключать по очереди - все работают.

Что я делаю не так?

P.S.: Как запасной вариант рассматриваю хаб, но если можно без него, хотелось бы без него.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Запустите сначала 1 датчик без колдовства, так что бы считать с него данные.
Уже потом можно с перемычкой адреса разбираться.
 
  • Лойс +1
Реакции: noindex

noindex

✩✩✩✩✩✩✩
24 Сен 2022
18
0
@Старик Похабыч, да, сразу вылезла проблема, датчик возвращает nan по обоим параметрам.
Скетч почистил от всего что не относится к этому датчику, физически отключил экран от шины, не помогло...
#include <Arduino.h>
#include "Wire.h"
#include "Adafruit_SHT31.h"
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
Serial.begin(9600);

delay(1000);
Serial.println("SHT31 test");
if (! sht31.begin(0x29)) { // Set to 0x45 for alternate i2c addr
Serial.println("Couldn't find SHT31");
while (1) delay(1);
}
}
void loop() {
float tsht = sht31.readTemperature();
float hsht = sht31.readHumidity();
Serial.print("Temp *C = "); Serial.println(tsht);
Serial.print("Hum. % = "); Serial.println(hsht);
delay(5000);
}

При этом, если в sht31.begin(0x29) оставить дефолтное значение 0x45, пишет Couldn't find SHT31, т.е. по адресу 0x29 соединение с датчиком есть...

В чем прикол?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Если датчик рассчитан на 3.3 в, а питался от 5, мог умереть.
Линия i2c должна быть притянута к + через 4.7кОм резисторы. Если их нет на плате (а тут могут быть варианты) ,то работать не будет.
Если поставить читать с адреса по которому нет отзыва, то естественно не будет ничего найдено.
 

noindex

✩✩✩✩✩✩✩
24 Сен 2022
18
0
@Старик Похабыч, на сайте продавца (mcustore.ru) написано
Напряжение питания: 2,4 - 5,5 В
В обзоре тоже самое написано.
О таких вещах как питание не более 3V обычно пишут в обязательном порядке.
Линия i2c должна быть притянута к + через 4.7кОм резисторы. Если их нет на плате (а тут могут быть варианты) ,то работать не будет.
У меня arduino nano на Sensor Shield
Если поставить читать с адреса по которому нет отзыва, то естественно не будет ничего найдено.
Это понятно, я к тому что датчик по адресу в принципе отвечает, значит в какой-то степени работает.
 

noindex

✩✩✩✩✩✩✩
24 Сен 2022
18
0
Ларчик просто открывался, оказалось по ошибке прислали другие датчики, которые оказались весьма похожи...)