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

Ответить
DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16 авг 2021, 17:06
Имя: Дмитрий

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

Сообщение DimaD »

Приветствую всех неравнодушных!
Исходные данные:
контроллер - Е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:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 4054
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 146 раз
Поблагодарили: 174 раза

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

Сообщение ecoins »

Пробовал и испытывал на блоках ecoins - второй интерфейс настраивался на пины 32,33.
Работали два bmе280 с одинаковыми адресами i2c.
DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16 авг 2021, 17:06
Имя: Дмитрий

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

Сообщение DimaD »

Здесь проблема с АНТ10, в даташите к нему указано что он на линии должен сидеть один
ecoins
Полковник
Сообщения: 4054
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 146 раз
Поблагодарили: 174 раза

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

Сообщение ecoins »

Так и понял, на одну шину (вторую пины 32,33) вешайте AHT-10, на основную всё остальное.
DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16 авг 2021, 17:06
Имя: Дмитрий

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

Сообщение DimaD »

Без активации в скетчей, пины 32, 33 не активны как i2c
ecoins
Полковник
Сообщения: 4054
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 146 раз
Поблагодарили: 174 раза

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

Сообщение ecoins »

В блоках ecoins есть блок настройки, в котором можно указать номера пинов и номер интерфейса.
Испытано на ESP32 и STM32.
DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16 авг 2021, 17:06
Имя: Дмитрий

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

Сообщение DimaD »

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

Отправлено спустя 2 минуты 5 секунд:
Блоки ecoins в стандартных не попадались, подскажите где их найти?
ecoins
Полковник
Сообщения: 4054
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 146 раз
Поблагодарили: 174 раза

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

Сообщение ecoins »

DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16 авг 2021, 17:06
Имя: Дмитрий

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

Сообщение DimaD »

Спасибо! Буду пробовать, о результатах сообщу.
aidar_i
Полковник
Сообщения: 3371
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 17 раз
Поблагодарили: 111 раз
Контактная информация:

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

Сообщение aidar_i »

DimaD писал(а): 16 авг 2021, 18:08 В интернете нашел пример как это реализовать (приложение), но т.к. я программист мягко говоря не очень, создать рабочий блок у меня не получилось.
DimaD писал(а): 17 авг 2021, 04:22 Вот тема с примерами http://digitrode.ru/computing-devices/m ... s-i2c.html
В общем нужен блок для активации второго интерфейса I2C на ESP32.
Для bme так можно, TwoWire в его библиотеке заложен, а в библиотеке ANT10 нет.
ecoins
Полковник
Сообщения: 4054
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 146 раз
Поблагодарили: 174 раза

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

Сообщение ecoins »

aidar_i писал(а): 17 авг 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
Полковник
Сообщения: 4054
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 146 раз
Поблагодарили: 174 раза

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

Сообщение ecoins »

Здесь библиотека получше
http://arduinolab.pw/index.php/2019/10/ ... sti-aht10/
Но тоже с delay()
DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16 авг 2021, 17:06
Имя: Дмитрий

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

Сообщение DimaD »

ecoins писал(а): 17 авг 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:
Ткните меня носом, что я делаю не так?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
aidar_i
Полковник
Сообщения: 3371
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 17 раз
Поблагодарили: 111 раз
Контактная информация:

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

Сообщение aidar_i »

Через менеджер библиотек нашел 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
Если работает, можете блок сделать.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
DimaD
Рядовой
Сообщения: 7
Зарегистрирован: 16 авг 2021, 17:06
Имя: Дмитрий

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

Сообщение DimaD »

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

Отправлено спустя 5 минут 23 секунды:
Огромное спасибо всем!!! :D
Приложил проект, вдруг кому пригодится.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
aidar_i
Полковник
Сообщения: 3371
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 17 раз
Поблагодарили: 111 раз
Контактная информация:

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

Сообщение aidar_i »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей