Нужен блок для активации второго интерфейса I2C ESP32

Ответить
DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16.08.2021{, 17:06}
Репутация: 0
Имя: Дмитрий

Нужен блок для активации второго интерфейса I2C ESP32

#1

Сообщение DimaD » 16.08.2021{, 18:08}

Приветствую всех неравнодушных!
Исходные данные:
контроллер - ЕSР32,
датчик температуры и влажности - АНТ10,
часы реального времени - DS3231,
дисплей - OLED 0.96/

Столкнулся с проблемой при подключении датчика АНТ10, работает на шине один. При подключении любого другого устройства, например Oled дисплея, шина i2c перестает работать. Остальные устройства дружат и спокойно работают вместе (без АНТ10).
Так вот, возникла идея пересадить его одного на вторую линию i2с.
В интернете нашел пример как это реализовать (приложение), но т.к. я программист мягко говоря не очень, создать рабочий блок у меня не получилось.
Вот тема с примерами http://digitrode.ru/computing-devices/m ... s-i2c.html
В общем нужен блок для активации второго интерфейса I2C на ESP32.
P.S. Сильно помидорами не кидайте :smile44:
Вложения
Два интерфейса i2c для ESP32.txt
Приложение
(1.83 КБ) 33 скачивания

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Нужен блок для активации второго интерфейса I2C ESP32

#2

Сообщение ecoins » 16.08.2021{, 19:11}

Пробовал и испытывал на блоках ecoins - второй интерфейс настраивался на пины 32,33.
Работали два bmе280 с одинаковыми адресами i2c.

DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16.08.2021{, 17:06}
Репутация: 0
Имя: Дмитрий

Нужен блок для активации второго интерфейса I2C ESP32

#3

Сообщение DimaD » 16.08.2021{, 19:17}

Здесь проблема с АНТ10, в даташите к нему указано что он на линии должен сидеть один

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Нужен блок для активации второго интерфейса I2C ESP32

#4

Сообщение ecoins » 16.08.2021{, 20:02}

Так и понял, на одну шину (вторую пины 32,33) вешайте AHT-10, на основную всё остальное.

DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16.08.2021{, 17:06}
Репутация: 0
Имя: Дмитрий

Нужен блок для активации второго интерфейса I2C ESP32

#5

Сообщение DimaD » 16.08.2021{, 20:52}

Без активации в скетчей, пины 32, 33 не активны как i2c

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Нужен блок для активации второго интерфейса I2C ESP32

#6

Сообщение ecoins » 16.08.2021{, 20:55}

В блоках ecoins есть блок настройки, в котором можно указать номера пинов и номер интерфейса.
Испытано на ESP32 и STM32.

DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16.08.2021{, 17:06}
Репутация: 0
Имя: Дмитрий

Нужен блок для активации второго интерфейса I2C ESP32

#7

Сообщение DimaD » 16.08.2021{, 20:59}

Два дня :smile14: без результата. Как такое реализовать в FLProg?

Отправлено спустя 2 минуты 5 секунд:
Блоки ecoins в стандартных не попадались, подскажите где их найти?

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Нужен блок для активации второго интерфейса I2C ESP32

#8

Сообщение ecoins » 16.08.2021{, 21:58}


DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16.08.2021{, 17:06}
Репутация: 0
Имя: Дмитрий

Нужен блок для активации второго интерфейса I2C ESP32

#9

Сообщение DimaD » 17.08.2021{, 04:22}

Спасибо! Буду пробовать, о результатах сообщу.

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Нужен блок для активации второго интерфейса I2C ESP32

#10

Сообщение aidar_i » 17.08.2021{, 05:37}

DimaD писал(а):
16.08.2021{, 18:08}
В интернете нашел пример как это реализовать (приложение), но т.к. я программист мягко говоря не очень, создать рабочий блок у меня не получилось.
DimaD писал(а):
17.08.2021{, 04:22}
Вот тема с примерами http://digitrode.ru/computing-devices/m ... s-i2c.html
В общем нужен блок для активации второго интерфейса I2C на ESP32.
Для bme так можно, TwoWire в его библиотеке заложен, а в библиотеке ANT10 нет.

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Нужен блок для активации второго интерфейса I2C ESP32

#11

Сообщение ecoins » 17.08.2021{, 06:29}

aidar_i писал(а):
17.08.2021{, 05:37}
Для bme так можно, TwoWire в его библиотеке заложен, а в библиотеке ANT10 нет.
Посмотрел мельком библиотеку AHT10 - вроде обмен через i2c
----
Wire.beginTransmission(AHT10_address);
Wire.write(eSensorMeasureCmd, 3);
Wire.endTransmission();
delay(100);

Wire.requestFrom(AHT10_address, 6);
----
Но с множеством delay() - надо бы переделать.

Отправлено спустя 7 минут 18 секунд:
Посмотрел описание https://elchupanibrei.livejournal.com/53764.html
Интересно, выписал AHT20 - получим и исследуем.

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Нужен блок для активации второго интерфейса I2C ESP32

#12

Сообщение ecoins » 17.08.2021{, 06:41}

Здесь библиотека получше
http://arduinolab.pw/index.php/2019/10/ ... sti-aht10/
Но тоже с delay()

DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16.08.2021{, 17:06}
Репутация: 0
Имя: Дмитрий

Нужен блок для активации второго интерфейса I2C ESP32

#13

Сообщение DimaD » 17.08.2021{, 08:54}

ecoins писал(а):
17.08.2021{, 06:37}
Интересно, выписал AHT20 - получим и исследуем

У меня два датчика, один АНТ10 ( при сканирования шины адрес определяется, но показания в порт не передает - возможно брак), второй АНТ20 (работает с библиотекой АНТ10). Адрес у обоих одинаковый.

Отправлено спустя 10 часов 13 секунд:
После работы сел за комп, загрузил блоки ecoins и библиотеку RT_00_HW_BASE_v6.52.zip в ide, и началось :smile390: :smile14:
При компиляции ругается на отсутствие библиотеки RT_HW_BOARDS, :smile427: поиск на форуме - ссылки на скачивание нет, в Яндексе - тоже нет. :shok:
Ткните меня носом, что я делаю не так?
Вложения
1.flp
(1.66 МБ) 22 скачивания

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Нужен блок для активации второго интерфейса I2C ESP32

#14

Сообщение aidar_i » 17.08.2021{, 20:44}

Через менеджер библиотек нашел 2 библиотеки Adafruit_AHT10 и Adafruit_AHTX0. Они идентичны, во вторую добавили AHT20.
Оба поддерживают TwoWire.
Испытайте их, код подправил для TwoWire:

Код: Выделить всё

#include <Adafruit_AHTX0.h>
// Или:
 //#include <Adafruit_AHT10.h>
#define I2C1_SDA_PIN 33
#define I2C1_SCL_PIN 32
Adafruit_AHTX0 aht;

void setup() {
  Serial.begin(115200);
  Serial.println("Adafruit AHT10/AHT20 demo!");
 Wire1.begin(I2C1_SDA_PIN, I2C1_SCL_PIN); 
  if (! aht.begin(&Wire1,0)) {
    Serial.println("Could not find AHT? Check wiring");
    while (1) delay(10);
  }
  Serial.println("AHT10 or AHT20 found");
}

void loop() {
  sensors_event_t humidity, temp;
  aht.getEvent(&humidity, &temp);
  Serial.print("Temperature: "); Serial.print(temp.temperature); Serial.println(" degrees C");
  Serial.print("Humidity: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");

  delay(500);
}
libraries.rar
(369.04 КБ) 28 скачиваний
Если работает, можете блок сделать.

DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16.08.2021{, 17:06}
Репутация: 0
Имя: Дмитрий

Нужен блок для активации второго интерфейса I2C ESP32

#15

Сообщение DimaD » 17.08.2021{, 21:36}

aidar_i, спасибо буду пробовать как вариант!
Пробовал эти библиотеки, в исходном варианте они не дружат с соседями на линии I2C.
ecoins писал(а):
17.08.2021{, 06:41}
Здесь библиотека получше
http://arduinolab.pw/index.php/2019/10/ ... sti-aht10/
Но тоже с delay()
Эта библиотека в связке с блоком "Настройка i2c" запустились и работают, далее к АНТ10 и дисплею добавил часы, и чудо все работает!
В блоке настроек i2c указаны пины 32 и 33, но они по прежнему не активны, все устройства работают по одной основной линии.
МАГИЯ!!!

Отправлено спустя 5 минут 23 секунды:
Огромное спасибо всем!!! :D
Приложил проект, вдруг кому пригодится.
Вложения
IMG_20210817_231240.jpg
1 — копия (1).flp
(2.68 МБ) 46 скачиваний

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Нужен блок для активации второго интерфейса I2C ESP32

#16

Сообщение aidar_i » 18.08.2021{, 09:39}

DimaD писал(а):
17.08.2021{, 21:42}
aidar_i, спасибо буду пробовать как вариант!
Этот вариант даёт использовать i2c одновременно на разных пинах

Ответить

Вернуться в «Помогите, а то я "нимагу"»