Я так понимаю она позволяет расширить количество входов.
Но меня больше беспокоит длина проводов до датчиков, от этого будет зависит количество плат и расположение.
Модератор: immortal
Я так понимаю она позволяет расширить количество входов.
"Я так понимаю она позволяет расширить количество входов" - не совсем. TCA9548A - нужна только если у вас на шине I2C несколько датчиков, с одинаковым фиксированным адресом (таких в вашем списке я не увидел).
Датчики BME280 можно подключить по шине I2C но у них всего два разных адреса, то есть через TCA9548A можно подключить большее количество ?TrDA писал(а): ↑Ср май 27, 2020 8:44 pm"Я так понимаю она позволяет расширить количество входов" - не совсем. TCA9548A - нужна только если у вас на шине I2C несколько датчиков, с одинаковым фиксированным адресом (таких в вашем списке я не увидел).
"Но меня больше беспокоит длина проводов до датчиков" - тут смотря какая шина, варианты разные есть, но нужна конкретика.
"от этого будет зависит количество плат и расположение" - изначально правильнее обрисовать потребность, в противном случае "будет как всегда" (нужна конкретика).
1. Если нужно "дальше":
Спасибо. А вот понять нужно ли дальше не могу, потому как никто пока не ответил какая длина провода возможна для датчика BME-280, но судя по этим картинкам не более 2 м. Так ?
1. Для шины I2C нет ограничения по длине, но есть ограничение по ёмкости шины не более 400 пФ.
1. Для написания своей прошивки необходимо потрать очень много времени 6 ... 24 ... 96 месяцев. Если вы обладаете необходимыми знаниями и достаточным запасом времени - тогда конечно, оно того стоит (на самом деле нет).
Спасибо.ZyaK писал(а): ↑Пт май 29, 2020 7:58 amНе правильный подход использовать готовые прошивки. потом начнутся проблемы и что и почему никому будет не понятно и не известно.
на готовую прошивку 6 - 24 -96 месяцев что то вы уш сильно загнули. для простой прошивки опроса входов и управления выходами с передачей данных ну максимум неделя с отладкой. за то если помучаться недельку то станет понятен алгоритм работы, а косяки выявленные во время работы будут устранены самостоятельно без создания лишних тем на форуме типа у меня вай фай идиот всё глючит и нихрена не работает...
Код: Выделить всё
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <BME280I2C.h>
#include <Wire.h>
#define motionSensorD6 D6 // пин, к которому подключен датчик
BME280I2C::Settings settings77(
BME280::OSR_X1,
BME280::OSR_X1,
BME280::OSR_X1,
BME280::Mode_Forced,
BME280::StandbyTime_1000ms,
BME280::Filter_Off,
BME280::SpiEnable_False,
0x77 // I2C address. I2C specific.
);
BME280I2C bme77(settings77);
BME280I2C::Settings settings76(
BME280::OSR_X1,
BME280::OSR_X1,
BME280::OSR_X1,
BME280::Mode_Forced,
BME280::StandbyTime_1000ms,
BME280::Filter_Off,
BME280::SpiEnable_False,
0x76 // I2C address. I2C specific.
);
BME280I2C bme76(settings76);
void IRAM_ATTR detectsMovementD6() { // Функция при обнаружении движения на D6
Serial.println("Движение на D6!!!");
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Wire.begin();
while(!bme76.begin())
{
Serial.println("Could not find BME280 sensor 76!");
delay(1000);
}
while(!bme77.begin())
{
Serial.println("Could not find BME280 sensor 77!");
delay(1000);
}
pinMode(motionSensorD6, INPUT_PULLUP); // уставливаем пин D6 на прием и включаем внутренний подтягивающий резистор
attachInterrupt(motionSensorD6, detectsMovementD6, RISING); // Прерывание для датчика движения запуск функции detectsMovementD6
}
void loop() {
BME280::TempUnit tempUnit(BME280::TempUnit_Celsius);
BME280::PresUnit presUnit(BME280::PresUnit_Pa);
// Датчик температуры на адресе 0х76
float temp76(NAN), hum76(NAN), pres76(NAN);
bme76.read(pres76,temp76,hum76,tempUnit,presUnit);
Serial.print("Temp76: ");
Serial.print(temp76);
Serial.println("°C");
Serial.print("Humidity76: ");
Serial.print(hum76);
Serial.println("% RH");
Serial.print("Pressure76: ");
Serial.print(pres76*0.00750062,2);
Serial.println(" mmHg");
delay(1000);
// Датчик температуры на адресе 0х77
float temp77(NAN), hum77(NAN), pres77(NAN);
bme77.read(pres77,temp77,hum77,tempUnit,presUnit);
Serial.print("Temp77: ");
Serial.print(temp77);
Serial.println("°C");
Serial.print("Humidity77: ");
Serial.print(hum77);
Serial.println("% RH");
Serial.print("Pressure77: ");
Serial.print(pres77*0.00750062,2);
Serial.println(" mmHg");
delay(3000);
Serial.println("-------------------------------------------------");
}