FAQ ESP8266

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Semendey
Сообщения: 68
Зарегистрирован: Чт сен 26, 2019 4:14 pm
Откуда: Ярославль
Благодарил (а): 19 раз
Поблагодарили: 6 раз

Re: FAQ ESP8266

Сообщение Semendey » Ср май 27, 2020 9:32 am

TrDA писал(а):
Вт май 26, 2020 7:41 pm
Semendey писал(а):
Вт май 26, 2020 5:39 pm
Добра всем.
5. Плату расширения TCA9548A
А это то вам зачем, если не секрет ?
Я так понимаю она позволяет расширить количество входов.

Но меня больше беспокоит длина проводов до датчиков, от этого будет зависит количество плат и расположение.
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

Re: FAQ ESP8266

Сообщение TrDA » Ср май 27, 2020 8:44 pm

Semendey писал(а):
Ср май 27, 2020 9:32 am
"Я так понимаю она позволяет расширить количество входов" - не совсем. TCA9548A - нужна только если у вас на шине I2C несколько датчиков, с одинаковым фиксированным адресом (таких в вашем списке я не увидел).

"Но меня больше беспокоит длина проводов до датчиков" - тут смотря какая шина, варианты разные есть, но нужна конкретика.

"от этого будет зависит количество плат и расположение" - изначально правильнее обрисовать потребность, в противном случае "будет как всегда" (нужна конкретика).
Всем удачи.
Спрашивайте - не стесняйтесь.
Semendey
Сообщения: 68
Зарегистрирован: Чт сен 26, 2019 4:14 pm
Откуда: Ярославль
Благодарил (а): 19 раз
Поблагодарили: 6 раз

Re: FAQ ESP8266

Сообщение Semendey » Чт май 28, 2020 12:40 pm

TrDA писал(а):
Ср май 27, 2020 8:44 pm
Semendey писал(а):
Ср май 27, 2020 9:32 am
"Я так понимаю она позволяет расширить количество входов" - не совсем. TCA9548A - нужна только если у вас на шине I2C несколько датчиков, с одинаковым фиксированным адресом (таких в вашем списке я не увидел).

"Но меня больше беспокоит длина проводов до датчиков" - тут смотря какая шина, варианты разные есть, но нужна конкретика.

"от этого будет зависит количество плат и расположение" - изначально правильнее обрисовать потребность, в противном случае "будет как всегда" (нужна конкретика).
Датчики BME280 можно подключить по шине I2C но у них всего два разных адреса, то есть через TCA9548A можно подключить большее количество ?
Можете подсказать как?
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

Re: FAQ ESP8266

Сообщение TrDA » Чт май 28, 2020 2:30 pm

Semendey писал(а):
Чт май 28, 2020 12:40 pm
Можете подсказать как?
1. Если нужно "дальше": 2. Если нужно "больше":
СпойлерПоказать
xxx I2C.jpg
xxx I2C.jpg (229.42 КБ) 3276 просмотров
3. Если нужно "дальше" и "больше": просто комбинируем "1" и "2", всегда помня про лимит по ёмкости I2C шины и ограничении на количество устройств на шине.
За это сообщение автора TrDA поблагодарил:
Semendey (Чт май 28, 2020 2:46 pm)
Рейтинг: 1.16%
Всем удачи.
Спрашивайте - не стесняйтесь.
Semendey
Сообщения: 68
Зарегистрирован: Чт сен 26, 2019 4:14 pm
Откуда: Ярославль
Благодарил (а): 19 раз
Поблагодарили: 6 раз

Re: FAQ ESP8266

Сообщение Semendey » Чт май 28, 2020 2:48 pm

TrDA писал(а):
Чт май 28, 2020 2:30 pm
Semendey писал(а):
Чт май 28, 2020 12:40 pm
Можете подсказать как?
1. Если нужно "дальше": 2. Если нужно "больше":
СпойлерПоказать
xxx I2C.jpg
3. Если нужно "дальше" и "больше": просто комбинируем "1" и "2", всегда помня про лимит по ёмкости I2C шины и ограничении на количество устройств на шине.
Спасибо. А вот понять нужно ли дальше не могу, потому как никто пока не ответил какая длина провода возможна для датчика BME-280, но судя по этим картинкам не более 2 м. Так ?
Semendey
Сообщения: 68
Зарегистрирован: Чт сен 26, 2019 4:14 pm
Откуда: Ярославль
Благодарил (а): 19 раз
Поблагодарили: 6 раз

Re: FAQ ESP8266

Сообщение Semendey » Чт май 28, 2020 3:04 pm

Еще один вопрос, я только изучаю ESP8266, по моей задумке ESP8266 будет только отправлять данные в MajorDoMo о состоянии того или иного датчика, то есть по сути достаточно односторонней связи.
Как подключиться WiFi сети я нашел, попробовал даже.
Но вот как передавать значения и как принимать их в MajorDoMo не понимаю пока. Нашел что можно использовать MQTT
Есть у кого то простой пример скетча по такой связке?
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

Re: FAQ ESP8266

Сообщение TrDA » Чт май 28, 2020 7:21 pm

Semendey писал(а):
Чт май 28, 2020 2:48 pm
А вот понять нужно ли дальше не могу, потому как никто пока не ответил какая длина провода возможна для датчика BME-280, но судя по этим картинкам не более 2 м. Так ?
1. Для шины I2C нет ограничения по длине, но есть ограничение по ёмкости шины не более 400 пФ.
https://ru.wikipedia.org/wiki/I%C2%B2C

2. До 2 (двух) метров на витой паре - работает без ошибок (экспериментально выяснено мной, см. схему "1" выше).

3. Если нужно более 2 (двух) метров, то нужны повторитель (см. схему "1" выше, там есть все необходимые обозначения)
Всем удачи.
Спрашивайте - не стесняйтесь.
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

Re: FAQ ESP8266

Сообщение TrDA » Чт май 28, 2020 7:29 pm

Semendey писал(а):
Чт май 28, 2020 3:04 pm
Но вот как передавать значения и как принимать их в MajorDoMo не понимаю пока. Нашел что можно использовать MQTT
Есть у кого то простой пример скетча по такой связке?
1. Для написания своей прошивки необходимо потрать очень много времени 6 ... 24 ... 96 месяцев. Если вы обладаете необходимыми знаниями и достаточным запасом времени - тогда конечно, оно того стоит (на самом деле нет).

2. Возможно, на начальном этапе, вам следует попробовать уже готовые прошивки:
https://tasmota.github.io/docs/
https://wifi-iot.com/

3. Готовых прошивок с поддержкой TCA9548A (см. "2"), я не встречал, хотя они возможно и существуют.

4. Протоколов для передачи информации от "ESP8266" до "Сервера" очень много: самые популярные это MQTT и JSON. Они оба очень простые, и универсальные, т.е. подходят практически для любой системы умного дома.

5. Примеров скетчей много в Arduino IDE, ну и конечно на github.com (поиском).
Всем удачи.
Спрашивайте - не стесняйтесь.
ZyaK
Сообщения: 407
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 69 раз

Re: FAQ ESP8266

Сообщение ZyaK » Пт май 29, 2020 7:58 am

Не правильный подход использовать готовые прошивки. потом начнутся проблемы и что и почему никому будет не понятно и не известно.
на готовую прошивку 6 - 24 -96 месяцев что то вы уш сильно загнули. для простой прошивки опроса входов и управления выходами с передачей данных ну максимум неделя с отладкой. за то если помучаться недельку то станет понятен алгоритм работы, а косяки выявленные во время работы будут устранены самостоятельно без создания лишних тем на форуме типа у меня вай фай идиот всё глючит и нихрена не работает...
PI2 + MQTT + 5 ESP8266 + Atmega16
Semendey
Сообщения: 68
Зарегистрирован: Чт сен 26, 2019 4:14 pm
Откуда: Ярославль
Благодарил (а): 19 раз
Поблагодарили: 6 раз

Re: FAQ ESP8266

Сообщение Semendey » Пт май 29, 2020 9:15 am

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("-------------------------------------------------");
}



Ответить