Slacky
Member
Ну мне еще WiFi хотелось быЛюбой современный 8-ми/16-ти битный MCU с устраиваемым количеством ножек справиться с вашей задачей и сможете достигнуть потребления при sleep к 0.1 мА![]()
Значит эта платка с ebay подойдет ...
Спасибо. Закажу
Ну мне еще WiFi хотелось быЛюбой современный 8-ми/16-ти битный MCU с устраиваемым количеством ножек справиться с вашей задачей и сможете достигнуть потребления при sleep к 0.1 мА![]()
Если у вас передача данных раз в час и только аварийное оповещение, то и выйдет среднее менее 1 мА.Ну мне еще WiFi хотелось бы))
Ну у меня алгоритм придуман такой.Если у вас передача данных раз в час и только аварийное оповещение, то и выйдет среднее менее 1 мА.
Зато уменьшит потребление в разы, что и есть основной вопрос темы.Внешний процессор не ускорит выход на связь с сервером.

Добавит знаний.1) У автора всегда подключено WIFI, следовательно внешний MCU ничего не решит.
В заголовке писано "Уменьшение потребления ..."2) В основном использует внешнее питание. Следовательно ловить блох не надо
Сложность переделывания платы в разы больше и дороже.3) Ну и конечно сложность решения с MCU на порядок больше (если автор вообще в состоянии реализовать с использованием различных систем команд)
Ну да, опять тупите"А в остальном прекрасная Маркиза, все хорошо,все хорошо"
Я примерно понял. Но есть один нюанс. Прерываний два. И я пока не очень понял, как мне отследить, какое из них сработало, а это важно. Точнее, без засыпания, это отслеживается просто.В результате применения такой схемы Вы можете реализовать следующее:
1) ESP спит вечным сном ( т е ничего не потребляет) и просыпается лишь по прерываниям
В этом режиме время выхода на связь с сервером составит от 1 до 5 секунд.
Можно смотреть 16 бит "защелок" GPIO по фронту RESET. Они и запоминаются для выбора типа загрузки... GPIO_STRAPPING -> gpio_reg.xlsx в esp8266web/info/ESP8266_reg at master · pvvx/esp8266web · GitHubЯ примерно понял. Но есть один нюанс. Прерываний два. И я пока не очень понял, как мне отследить, какое из них сработало, а это важно. Точнее, без засыпания, это отслеживается просто.
Но если применить код, который я привел в первом письме, то модуль просыпается, но как отследить, с какого GPIO пришел сигнал я не понимаю, так как функция callback - она одна ...
Уважаемый pvvxМожно смотреть 16 бит "защелок" GPIO по фронту RESET. Они и запоминаются для выбора типа загрузки... GPIO_STRAPPING -> gpio_reg.xlsx в esp8266web/info/ESP8266_reg at master · pvvx/esp8266web · GitHub
Если устройство всё равно не работает в автономном режиме, то не проще ли его вообще включать сигналом появления внешнего питания?
PS: Я тут уже подумываю, ради "спортивного интереса", да и всё уже складывается, запустить на CR2032 какой RTL на месяц в автономный набор данных с датчиков с передачей и при этом непрерывный - не менее 2-х точек в сек с датчика... Будет время попробую запустить...
void sleepNow() {
Serial.println("going to light sleep...");
wifi_station_disconnect();
wifi_set_opmode(NULL_MODE);
wifi_fpm_set_sleep_type(LIGHT_SLEEP_T); //light sleep mode
gpio_pin_wakeup_enable(GPIO_ID_PIN(0), GPIO_PIN_INTR_HILEVEL); //set the interrupt to look
gpio_pin_wakeup_enable(GPIO_ID_PIN(2), GPIO_PIN_INTR_HILEVEL); //set the interrupt to look for
HIGH pulses on Pin 0 (the PIR).
wifi_fpm_open();
delay(100);
wifi_fpm_set_wakeup_cb(wakeupFromMotion); //wakeup callback
wifi_fpm_do_sleep(0xFFFFFFF);
delay(100);
}
void wakeupFromMotion(void) {
wifi_fpm_close;
wifi_set_opmode(STATION_MODE);
wifi_station_connect();
Serial.println("Woke up from sleep");
}
По ссылке дан XML, в нем найдете слово GPIO_STRAPPING - там старшие 16 бит записанных при старте состояний GPIO0..15, а в младших 16 - текущие значения с пинов GPIO0..15...Большое человеческое спасибо)
Если бы было так просто, я бы с первого раза понял. Мне бы кусок примера, как работать с этими регистрами ...По ссылке дан XML, в нем найдете слово GPIO_STRAPPING - там старшие 16 бит записанных при старте состояний GPIO0..15, а в младших 16 - текущие значения с пинов GPIO0..15...
На простом C (или C++) тоже надо учить писать?Если бы было так просто, я бы с первого раза понял. Мне бы кусок примера, как работать с этими регистрами ...
Не очень понял "прикинуться важным" и про "большие гонорары", но ладно. Спасибо. Если бы было все так очевидно ... Я вряд ли сам бы догадался, что "регистры" это всего-лишь ячейка памяти ...На простом C (или C++) тоже надо учить писать?
Есть же какие-то книжки... Я учить этому не могу, т.к. оно развивалось с нуля со мной, а названия ко всему придумали всякие разгильдяи для задания "солидности" потом и ныне энтих разгильдяев мульоны... и я их не знаю, но знаю как, почему и зачемА вам выпала возможность зазубрить всю эту поверхностную галимотью и прикинуться "важным", ну шоб на большой гонорар, по европейски, с флагом ЕВРО или АМЕРО
![]()
uint32_t GPIO_STRAPPING = (*((volatile uint32_t *)(0x60000318)))>>16;
А зачем ныне пишут такие книжки?Не очень понял "прикинуться важным" и про "большие гонорары", но ладно.
WDT с прошлого раза(?) или неполная инициализация (не через физический RESET, когда всё в чипе сбрасывается в значения "по умолчанию", а далее горе-программеры меняют только часть, рассчитывая что старт всегда только со значения "по умолчанию") ?Но тут выплала проблема другого уровня. Модуль после пары-тройки просыпаний тупо перегружается ...
gpio_pin_wakeup_enable(GPIO_ID_PIN(HOT_PIN), GPIO_PIN_INTR_LOLEVEL); //set the interrupt to look for HIGH pulses on Pin 0 (the PIR).
gpio_pin_wakeup_enable(GPIO_ID_PIN(COLD_PIN), GPIO_PIN_INTR_LOLEVEL); //set the interrupt to look for HIGH pulses on Pin 0 (the PIR).
uint32_t GPIO_STRAPPING = (*(volatile uint32_t *)(0x60000318))>>16;
Serial.println(GPIO_STRAPPING);
Я же описал с каким состоянием на GPIO сработал фронт RESET, а не от какого пина. От RESET он проснулся после deep_sleep, а на PIN дублируете сами сигнал, который вызывал RESET по схеме на реле от nikolzЕсли я правильно все понял, то не получается отследить с какого пина пришел сигнал, так как число возвращается всегда одинаковое не зависимо от того, с какого пина модуль проснулся ...
Может какие-то длинные времена ставите. Там есть ограничения по времени deep_sleep. Я счас не вспомню - поищите сами...А вот если плату оставить спать достаточно долго, например несколько часов, то она по сигналам с пинов уже не просыпается ...
Ну когда наладится там всё и будет популярно разжованно... А на сегодня на него нет Arduino... (Есть всё только на "A" серию)Ладно, придет 8710, буду с ней развлекаться))