Поменять адрес I2C на BME280
- Войдите на сайт для отправки комментариев
Пнд, 05/02/2018 - 11:10
Вот приехал ко мне такой вот датчик. По умолчанию у него адрес I2C 0x76. Согласно даташиту, чтобы сменить его на 0x77, необходимо ногу (подписанную на рисунке как SW) переключить с GND (LOW), на 3.3V (HIGH). Сейчас нога прибита к площадке указанной на рисунке. Кто-нибудь занимался подобным? Есть ли возможность в домашних условиях переключить ногу. Пока не соображу даже как копать.
Всё верно, разрезать и припаять. Источник : https://forum.arduino.cc/index.php?topic=404946.0
Ну как водится в тот момент когда сформулировал проблему пришла догадка, что соседняя справа площадка и есть 3.3V. Нужно всего ли разрезать перемычку слева от центральной площадки и перекинуть ее направо. Вечером попробую - напишу.
А вот и ответ появился подтверждающий. Спасибо! )
Ну и сопутствующий вопрос (умозрительный). Свою проблему (два датчика) я то решил. А если предположим надо их десяток? Это уже программными методами решать?
Ну и сопутствующий вопрос (умозрительный). Свою проблему (два датчика) я то решил. А если предположим надо их десяток? Это уже программными методами решать?
Железно - I2C мультиплексор (https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer-brea...), программно - Software TWI.
Спасибо. Утащил в закладки.
Вот только сообразить не могу, а на хрена десяток датчиков атмосферного давления на одном МК?
А ничего что он еще умеет в температуру и влажность?
Температуру и DS18B20 умеет, а их хоть гирлянду елочную вешай. Влажность кстати тоже умеет (весьма точно), но с физическими хаками.
Ну вешайте свою гирлянду где хотите. А свое непонимание оставьте при себе.
Температуру и DS18B20 умеет, а их хоть гирлянду елочную вешай. Влажность кстати тоже умеет (весьма точно), но с физическими хаками.
Дырку в нем сверлить или в психометр ставить? ))
Второе.))))
У меня вот такой BME280.
Как на нём сменить i2c адрес???
The I²C interface uses the following pins:
- SCK: serial clock (SCL)
- SDI: data (SDA)
- SDO: Slave address LSB (GND = ‘0’, VDDIO = ‘1’)
The 7-bit device address is 111011x. The 6 MSB bits are fixed. The last bit is changeable by SDO value and can be changed during operation. Connecting SDO to GND results in slave address 1110110 (0x76); connection it to VDDIO results in slave address 1110111 (0x77), which is the same as BMP280’s I²C address. The SDO pin cannot be left floating; if left floating, the I²C address will be undefined.
Ух ты. Спасибо. А где вы нашли такое описание?
И я оставил SDO неподключенным.
И модуль работает на адресе 0x76
Ух ты. Спасибо. А где вы нашли такое описание?
https://cdn-shop.adafruit.com/product-files/2652/2652.pdf
И модуль работает на адресе 0x76
На плате подтянут резистором, наверно. Надо по дорожкам посмотреть - куда он идет.
извините за назойливость, а как решили то? Тоже сижу играюсь с датчиком и есть проблемма с подключением пары...
Ну не знаю может и дичь сморозил, но решил вопрос с двумя DHT11 вот таким вот извращением:
01
[code]
02
#include "DHT.h"
03
#define DHTPIN 5 // датчик номер раз
04
#define DHTPIN1 6 // датчик номер два
05
DHT dht(DHTPIN, DHT11);
06
DHT dht1(DHTPIN1, DHT11);
07
void
setup
() {
08
Serial
.begin(9600);
09
dht.begin();
10
dht1.begin();
11
}
12
void
loop
() {
13
delay(2000);
// 2 секунды задержки
14
float
h = dht.readHumidity();
//Измеряем влажность датчик номер раз
15
float
t = dht.readTemperature();
//Измеряем температуру датчик номер раз
16
if
(isnan(h) || isnan(t)) {
// Проверка. Если не удается считать показания, выводится «Ошибка считывания», и программа завершает работу
17
Serial
.println(
"Error read"
);
18
return
;
19
}
20
21
//Вывод показателей на экран датчик номер раз Serial.print("Vlahznost: ");
22
Serial
.print(h);
23
Serial
.print(
" %\t"
);
24
Serial
.print(
"Temperatura: "
);
25
Serial
.print(t);
26
Serial
.println(
" *C "
);
27
28
29
delay(2000);
// 2 секунды задержки
30
h = dht1.readHumidity();
//Измеряем влажность датчик номер два
31
t = dht1.readTemperature();
//Измеряем температуру датчик номер два
32
if
(isnan(h) || isnan(t)) {
// Проверка. Если не удается считать показания, выводится «Ошибка считывания», и программа завершает работу
33
Serial
.println(
"Error read"
);
34
return
;
35
}
36
//Вывод показателей на экран датчик номер два
37
Serial
.print(
"Vlahznost: "
);
38
Serial
.print(h);
39
Serial
.print(
" %\t"
);
40
Serial
.print(
"Temperatura: "
);
41
Serial
.print(t);
42
Serial
.println(
" *C "
);
//Вывод показателей на экран
43
44
}
45
[/code]
Я просто подключил питание не на Vcc, а на SDO. Получил адрес 77 и смог подключить 2 датчика.