BLE модуль JDY-10 на чипе TLSR8266

pvvx

Активный участник сообщества
OTA Проверил, нет там его похоже

08:56:54: Searching for devices
08:56:59: Connecting to: JDY-10M-2.3
08:57:01: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
В прошивке вписано OTA и есть доп.прошивка для перезаписи после OTA в адресе 0x001F000. И это MESH, а не BLE прошивка и для неё другая программа для OTA - у Telink на сайте...
 

pvvx

Активный участник сообщества
ее можно откатить на ble версию?
Проще переписать программатором по SWS. У MESH своя разметка FLASH для OTA и может быть не совместима с BLE OTA.
У других чипов Telink и ZigBee разметка OTA отличается - не записать что-то другое по OTA.
А в JDY-10M-V2.3-MESH вообще прописана какая-то китайщина...
 

pvvx

Активный участник сообщества
Больше ничего зашивать не нужно?
От куда я знаю что вам нужно от данного модуля?
Прошивайте что хотите, хоть "AT" прошивку из начала темы...
"с 0x00072000 бинарник jdy_10_ota_72000.bin" нужен для поддержки OTA на TLSR8266.
Он так-же нужен для OTA к https://esp8266.ru/forum/threads/ble-modul-jdy-10-na-chipe-tlsr8266.4654/post-80805
 

pvvx

Активный участник сообщества
А с новой ревизией JDY-10 как нам быть сенсей совсем не подскажет?
От куда взялась "новой ревизия" TLSR8266ET32? Это устаревший чип у Telink и наверняка больше не производится. И все чипы Telink программируются по SWire. "Кирпича" от неправильной прошивки у них не бывает, если пользоваться нормальным программатором по SWS.

С некоторой вероятность можно сделать "Кирпич" - подать на ногу SWS более 12 В, чтобы отгорела. У меня такой чип уже есть - замкнулся болтающимся проводом, но в нем работает ранее зашитая прошивка. :)
 

pvvx

Активный участник сообщества
Firmware files:

1. 8266_jdy_10.bin - the main project file.
2. floader.bin - file of project TlsrComProg-Uartfloader.
Used to download firmware via UART. It is activated if,
at module startup, the SWS pin is shorted to GND.
3. ota_72000.bin - part for firmware on BLE OTA

Binary files for Firmware:
Код:
| Filename        | Flash addr |
|-----------------|------------|
| 8266_jdy_10.bin |  0x000000  |
| ota_72000.bin   |  0x072000  |
| floader.bin     |  0x072800  |
TelinkOTA - https://pvvx.github.io/UBIA/TelinkOTA.html

Install the Advertising type: "custom" on the custom firmware
(https://github.com/pvvx/ATC_MiThermometer),
configure the TRG settings: Control GPIO PA5 (marked "reset").

Run AdScanerTrg.html and configure the MAC of the sensor device
to repeat the "Temperature or Humidity Trigger" on the GPIO:

PC0 - the output value of the GPIO_TRG pin (pull up / down)
PE6 - input value of the GPIO_TRG pin (real level)

If sensor data is not received within 120 seconds, then PC0 and PE6 are set to "0".
 

Вложения

Kruzo

New member
А какая серия 826x или 825x более свежая и какая более энергоэффективная?
 

pvvx

Активный участник сообщества
825x = 8251, 8253 = 8258 в разных корпусах. У всех 64 кило RAM и т.д.
и возможно новая, на RISC-V, но её нема в продаже.
 
От куда я знаю что вам нужно от данного модуля?
Мне нужна возможность впоследствии записывать прошивки базирующиеся на вашем примере ds3231 по uart с помошью USB-COM.

попробовал зашить зашить с 0 адреса бинарник от UBIA, а с 0x00072000 бинарник jdy_10_ota_72000.bin

теперь чип не виден среди BT устройств

А какая серия 826x или 825x более свежая и какая более энергоэффективная?
825x и свежее и энергоэффективней. 8266 просто больше на али.
 

millworm

New member
можете подсказать как правильно работать у 8266 с adc? пробовал брать значения с С4 через adc_SampleValueGet как в примерах с батарейкой, но что-то значения никак не меняются в зависимости от того к gnd или vcc цепляю кабель
хочу попробовать прикрутить емкостный датчик влажности почвы к этому модулю и раз в час(может побольше) показания снимать
p.s.до этого с мк на таком уровне не работал
 

pvvx

Активный участник сообщества
можете подсказать как правильно работать у 8266 с adc? пробовал брать значения с С4 через adc_SampleValueGet как в примерах с батарейкой, но что-то значения никак не меняются в зависимости от того к gnd или vcc цепляю кабель
К gnd и входу GPIO_PC4.
Перед опросом adc_SampleValueGet() необходимо выполнить инициализацию ADC.
Пример показан в SDK в void battery_power_check(u16 alarm_vol_mv)
и убрать в конфиге настройку GPIO_PC4 как GPIO выход:
C:
#define    PC4_FUNC                            AS_GPIO
#define PC4_INPUT_ENABLE                    1
#define    PC4_OUTPUT_ENABLE                    1
#define    PC4_DATA_OUT                        0
Возможно оставить #define PC4_INPUT_ENABLE 1
Другой пример в ble_sdk_v3.3.0_20191012\vendor\826x_driver_test\app_adc.c (ADC_CHN_D2):
C:
    adc_Init(ADC_CLK_4M, ADC_CHN_D2, SINGLEEND, ADC_REF_VOL_AVDD, ADC_SAMPLING_RES_14BIT, ADC_SAMPLING_CYCLE_6);
 

millworm

New member
а вот порт переключить забыл... спасибо
максимальное значение, которое можно считать через PC4 в таком варианте как-то ограничено? а то при подключении PC4 к VCC больше 1947 не показывает
 

millworm

New member
правда показания что-то нестабильны, когда ничего не подключено. прыгают 700-800
 

millworm

New member
почитал документацию. похоже больше 1.3в к 8266 надо через делитель подключать
но вот чего с прыгающими показаниями делать пока не разобрался. пробовал
C:
gpio_setup_up_down_resistor(PC4_FUNC, PM_PIN_PULLUP_10K);
и другие PM_PIN, но не помогло. правда не уверен, что должно было
 

Alexander

Member
правда показания что-то нестабильны, когда ничего не подключено. прыгают 700-800
А когда подключено стабильны?
Входное сопротивление у ADC достаточно большое и шум, естественно, будет.
но не помогло. правда не уверен, что должно было
Лучше конденсатор подключить и делитель внешний, если измерять нужно напряжение, выше верхнего предела ADC.
 

pvvx

Активный участник сообщества
почитал документацию. похоже больше 1.3в к 8266 надо через делитель подключать
но вот чего с прыгающими показаниями делать пока не разобрался. пробовал
C:
gpio_setup_up_down_resistor(PC4_FUNC, PM_PIN_PULLUP_10K);
и другие PM_PIN, но не помогло. правда не уверен, что должно было
Vref переключается.
C:
/*****
 *  adc reference voltage
 */
typedef enum{
    ADC_REF_VOL_1V3  = 0x00, //!< ADC Reference:1.3v
    ADC_REF_VOL_AVDD = 0x01, //!< ADC Reference:AVDD
} ADC_REFVOL_t;

/*****
 * @brief init adc module. such as adc clock, input channel, resolution, reference voltage and so on.
 *        notice: adc clock: when the reference voltage is AVDD, the adc clock must be lower than 5Mhz.
 *        when the reference voltage is 1.4, the adc clock must be lower than 4Mhz.
 * @param[in] adc_clock    - enum ADC_CLK_t, set adc clock.
 * @param[in] chn          - enum ADC_INPUTCHN_t ,acd channel
 * @param[in] mode         - enum ADC_INPUTMODE_t
 * @param[in] ref_vol      - enum ADC_REFVOL_t, adc reference voltage.
 * @param[in] resolution   - enum ADC_RESOLUTION_t
 * @param[in] sample_cycle - enum ADC_SAMPCYC_t
 * @return    none
 */
void adc_Init(ADC_CLK_t adc_clock,ADC_INPUTCHN_t chn,ADC_INPUTMODE_t mode,ADC_REFVOL_t ref_vol,\
              ADC_RESOLUTION_t resolution,ADC_SAMPCYC_t sample_cycle);
а вот порт переключить забыл... спасибо
максимальное значение, которое можно считать через PC4 в таком варианте как-то ограничено? а то при подключении PC4 к VCC больше 1947 не показывает
1947 - это расчет для батарейки.
для передискретизации или повышения разрядности используйте набор суммы:
C:
unsigned short get_adc(void) {
    unsigned int i;
    unsigned int asumm = 0;
    for(i=0; i < 32; i++){
        reg_adc_chn1_outp = FLD_ADC_CHN_MANU_START;  // Set a run signal,start to run adc
        sleep_us(5);   // wait for data
        asumm += reg_adc_dat_byp_outp & 0x3FFF;// read data
    }
    return asumm >> 3;
}
правда показания что-то нестабильны, когда ничего не подключено. прыгают 700-800
У входа c ADC есть ток утечки в + и - от среднего напряжения (вроде около 0.7 В). На не подключенном ни к чему входу с ADC оно и будет...
 
Сверху Снизу