• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

BLE SoC PHY6202

pvvx

Активный участник сообщества
В коде вычисления уровня разряда батареи за минимальный уровень напряжения (0% заряда) принимается 2.5В.
PHY6222 - Operating Voltage range 1.8V to 3.6V
CHT8310 - Operating Voltage range 1.5V to 5.5V
0% у CR2032 везде считается 2.0 В. Это при кратковременной нагрузке в 3..5 мА. Внутренне сопротивление уже более 200 Ом и падение от хим.физ.реакции в батарее уже 1В при описанных токах.
Пишите измерение напряжения и если оно менее 2.0 В - всё отключить и чипу спать на несколько минут в глубокий сон. Проснуться и смотреть - больше 2.2 В? -> стартовать, меньше -> спать опять.
Иначе чип при подсаженной батарейке на холоде или с малым АКБ с солнечной панелью не проснется при прогреве утренним солнышком. Или полностью убьет батарею/АКБ.
 

pvvx

Активный участник сообщества
Тестировать работоспособность термометра надо подключив к источнику 3.3В через резистор 100+ Ом. Если сбивается - в помойку.
 

cool2000

Member
0% у CR2032 везде считается 2.0 В.
Пишите измерение напряжения и если оно менее 2.0 В - всё отключить
Тестировать работоспособность термометра надо подключив к источнику 3.3В через резистор 100+ Ом.
OK, спасибо, буду иметь ввиду.

Дополнение по чтению данных сенсора CHT8310. Программирование встроенного контроллера I2C китайский гений не осилил. Вместо этого тупо воткнул код реализации протокола i2c через gpio из CHT3810 User Manual. При этом в прошивке остался невычищенным код из примера Tuya Demo для вывода текста на oled экран, подключенный в примере по шине i2c. И это в свою очередь потянуло за собой в прошивку, как минимум, библиотеку шрифтов. Самого такого экрана, естественно, ни в одном устройстве нет.
Кроме постоянно что-то того тупо пишется во флеш по одному и тому же адресу, видимо пока не протрёт дыру.
 

pvvx

Активный участник сообщества
И это в свою очередь потянуло за собой в прошивку, как минимум, библиотеку шрифтов. Самого такого экрана, естественно, ни в одном устройстве нет.
Но вы всё равно купили. Им больше ничего и не требовалось.
А где бинарник fullflash?

 

cool2000

Member
CHT8310.Advanced.Datasheet_Ver1.0.20230407.pdf
Я по этому описанию и разбираюсь. Кстати в нём забыли описать регистр 0xFF (Version ID). В прошивке для сенсора CHT8310 ожидается значение 0x8215.
А где бинарник fullflash?
Вот здесь в post #149 ранее уже выложил.
Тут тоже побороть датчик CHT8310 не могут
Почему-то я даже не удивлён
 

pvvx

Активный участник сообщества
Почему-то я даже не удивлён
Слепить прошивку с передачей BLE рекламы в формате BTHome дело совсем несложное и не требует много времени. Это не дает ничего, т.к. нужен OTA. OTA для Tuya и OTA для вашего варианта, ещё интерфейс настроек с OTA работающий во всех вариантах ОС.
И как там дела с п.п.1 - OTA для Tuya?
 

pvvx

Активный участник сообщества
THB2 Sleep - 11 мкА
1703094213519.png
Xiaomi LYWSD03MMC с альт. прошивкой при работе = Average 14 мкА
 

pvvx

Активный участник сообщества
Точность измерения среднего тока в Sleep (включая смещения и шумы) +- 100 нА. (в данном диапазоне токов сказывается изменение влажности воздуха на печатной плате и пайках, т.к. это ток на 30 МОм на 3В).
 

pvvx

Активный участник сообщества
Странное поведение (скорее всего датчика или внутренних счетчиков чипа) между маяками (BLE рекламами):
1703096541047.png
Наверняка можно убрать путем правильной инициализации или программных установок.

@cool2000 - у вас с эНтим PHY6222 работы связанной с патчами SDK будет немеренно...
 

pvvx

Активный участник сообщества
@cool2000 - залито в THB2, тест передачи 30 байт данных в BLE рекламе с шагом 5 секунд.
1703101957559.png
SDK ещё не оптимизирован, но большинство настроек выставлено, лишние процедуры выкинуты.
Датчик пока не опрашивается.
 

pvvx

Активный участник сообщества
прошивке используется код из i2c_soft_driver.c Возможно как раз он исполняется в течение 2 мс, отмеченных, как "ненужный код".
Не думаю, что вдруг опрашивают датчик каждую секунду.
Там есть длинный активный период, с выводом в UART отладки. Там наверно и опрашивают, раз в несколько минут.
И чистый SDK не отличается "умом и сообразительностью" - тупит по страшному, да и sleep в нем значительно более 10 мкА, если не патчить.

А Tuya говорит
IIC0SCLP24
IIC0SDAP23
 

cool2000

Member
В китайской прошивке i2c протокол реализован в стиле "дурино" через gpio.
C:
void cht8310_sda_out(int level)
{
  tal_gpio_write(18,(uint)(level != 0));
  return;
}

void cht8310_scl_out(int level)
{
  tal_gpio_write(20,(uint)(level != 0));
  return;
}
А линии i2c в phy62xx можно на любые pin подключить через pinmux.
Там есть длинный активный период, с выводом в UART отладки.
Особенно порадовали участки кода, когда сначала что-то выводят в UART, а после чего вызывают uart_init().
 

cool2000

Member
Возможный вариант инициализации i2c (из SDK).
Код:
#define I2C_SDA 18
#define I2C_SCL 20

hal_gpio_pin_init(I2C_SDA, IE);
hal_gpio_pin_init(I2C_CLK, IE);
hal_i2c_pin_init(I2C_0, I2C_SDA, I2C_CLK);
pi2c = hal_i2c_init(I2C_0, I2C_CLOCK_100K);
 

pvvx

Активный участник сообщества
Для аппаратного I2C описания битов в регистрах нет. А без этого не получится получить ACK/NACK, или Старт/Стоп, или Clock Stretching.
Можно только догадываться о глубине FIFO регистра данных.
Правда все эти быты можно выудить путем тыркания и наблюдая в осцилл. Но ныне не 2014, когда есть только ESP8266.
 

pvvx

Активный участник сообщества
Возможный вариант инициализации i2c (из SDK).
Это есть в документации к SDK и примерах. А если копнуть исходники - охватывает страх... кто этот кошмар писал?
Из всего что там можно найти - это дергание 3-х бит в десятке регистров. Остальные засИкречены :)
По этому используют "ногодрыг".
 

pvvx

Активный участник сообщества
Любое дополнение или функция с разными параметрами для BLE у PHY описана своей отдельной веткой кода. Примерно как у WCH, но используется ещё больше ветвлений. Т.е. как таковой SDK не содержит библиотеки BLE, а функционал реализуется путем дописывания каждой функции для конкретной реализации, которая не стыкуется с другими и использует свои переменные и define. Китайская грамота.
 
Сверху Снизу