Еще один ESP8266 Weird-O Tidbit знаний

Mrburnette
Ср 13 апреля 2016 г. 13:12
С использованием:
OS Linux Mint 17.3 16-бит
Arduinoide Linux Port 1.6.8 из ".CC "Ребята

Я много читаю; Вероятно, не сохраняйте многое из того, что я прочитал, если я не сталкиваюсь с одним из этих красных или противоречивых заявлений... И это именно то, что произошло на днях. Я читал, что если «Virgin» ESP8266 запрограммирован через Arduinoide и если Этот эскиз не использует какую-либо из функций библиотеки Wi-Fi, то ESP8266 будет работать в режиме RF-DISAKED или значительно снижает мощность постоянного тока, поскольку раздел RF не включен.

И наоборот, если вы используете Arduinoide, чтобы включить РЧ -раздел ESP8266, он останется Даже если следующий эскиз не использует Wi -Fi... Таким образом, РЧ -раздел высасывает силу без причины. Ммммм.

Тестирование здесь подтверждает вышеуказанное поведение. И всякий раз, когда мы получаем новую игрушку из Китая, большинство из нас проводят ее сквозь ее, используя легкодоступные наброски ... Следовательно, большинство ESP8266, которые просто лежат за пределами их антистатической сумки, подвержены трати до 50 мА, если вы используете их в не RF-проекте. Кто-нибудь действительно использует ESP8266 в не беспроводном проекте? Да, по низкой цене за единицу, это возможно.

Вероятно, существуют значительно лучшие способы отключения радиочастотного участка; Я нашел несколько прямых вызовов "system_", но мне нужно копать глубже, чтобы передать правильные типы переменных. Поэтому очень легко останется открытым на данный момент... Скорее всего, Мартин уже справился с этим поведением, но я еще не читал, как.

Итак, 2 -й простой способ, который работает, - это построить эскиз, чтобы выключить радиочастотный рисунок, загрузить эскиз, затем отредактировать эскиз, чтобы не использовать Wi -Fi и загрузить его снова. Я сделал это, и ESP8266 прошел с 80 мА до 20 мА, и светодиод с светодиодным поведением и серийным поведением без изменений!

Вот эскиз, который будет работать с активным разделом RF или неактивным разделом RF - наш базовый эскиз: /* BlinkNcount for ESP8266 NodeMCU by m. ray burnette Compiled on Linux Mint 17.3 32-bit Arduino 1.6.8 tested on 20160409 http://esp8266.github.io/Arduino/versions/2.1.0/ Sketch uses 231,213 bytes (22%) of program storage space. Maximum is 1,044,464 bytes. Global variables use 31,596 bytes (38%) of dynamic memory, leaving 50,340 bytes for local variables. Turns on an LED on for one second, then off for one second, repeatedly. Counts and displays the count on the attached serial monitor This example code is in the public domain. */ #define BOARD_LED_PIN 2 int n = 0; void setup() { // initialize the digital pin as an output. pinMode(BOARD_LED_PIN, OUTPUT); // Initialize COM Serial.begin(115200); digitalWrite(BOARD_LED_PIN,!digitalRead(BOARD_LED_PIN));// Turn the LED from off to on, or on to off Serial.println("Blink LED & count Demo"); } void loop() { long uSeconds = micros(); digitalWrite(BOARD_LED_PIN, HIGH); // set the LED on delay(500); // wait for half-second digitalWrite(BOARD_LED_PIN, LOW); // set the LED off Serial.print("Loop #: "); n++; Serial.print(n); Serial.print(" uS="); Serial.println(micros()-uSeconds); delay(500); // wait another half-second }

Rogerclark
Ср 13 апреля 2016 г., 8:59 вечера
Спасибо, Рэй

Я ненадолго изучил отключение Wi -Fi на ESP8266 некоторое время назад, так как у меня была проблема с ним, мешающим устройству Bluetooth, но в итоге я обнаружил, что проблема не была связана с сигналами Wi -Fi.

Это действительно интересно, так как, хотя я не заинтересован в использовании мощности (80 мА), я подозреваю, что если Wi -Fi полностью выключен, то RTO ESP8266 не будет тратить так много времени на обслуживание Wi -Fi оборудования, оставляя Больше циклов процессора для пользовательской программы (Sketch)

Mrburnette
Ср 13 апреля 2016 г., 21:34
@Роджер,
Я думал то же самое, но мне мешали, потому что, хотя я смог выключить РЧ -раздел и Чтобы включить его, процедура не кажется последовательной, и я не могу повторить ее по желанию.

Когда я выключил Wi -Fi на эскизе Blink, ток упал с 80 до 20 мА. Когда я включил RF, ESP8266 работал, но ток прошел с 20 мА до 90-100MA. Перепрограммирование с помощью приемника UDP Tardis Time, ток снова был при 80 мА. Однако отключенный набросок больше не работает!

В этот момент все стало непоследовательным, я выбежал, если кофе и решил, что это лучше, я отложил это в сторону до другого дня!

Луча

Ахулл
Ср 13 апреля 2016 г., 21:37
Если вы сможете сделать эту работу последовательно, она открывает некоторые интересные низкие варианты мощности, например, вы можете теоретически записать данные в короткие всплески активности и, следовательно, при очень низкой мощности, в течение многих дней, а затем сказать один раз в неделю, загрузите их на Wi -Fi на веб -сервер. Это потенциально значительно продлевает срок службы батареи, так как документация ESP8266 предполагает, что она способна к довольно скромным режимам низкой мощности.

Rogerclark
Ср 13 апреля 2016 г. 22:44
ESP8266 также имеет свой режим ожидания, но мне никогда не приходилось схватить его, так как кажется, что вам нужно подключить штифт GPIO к PIN -коду, чтобы заставить это работать (очень странно)

Mrburnette
Ср 13 апреля 2016 г. 11:40
Ахулл написал:Если вы сможете сделать эту работу последовательно, она открывает некоторые интересные низкие варианты мощности, например, вы можете теоретически записать данные в короткие всплески активности и, следовательно, при очень низкой мощности, в течение многих дней, а затем сказать один раз в неделю, загрузите их на Wi -Fi на веб -сервер. Это потенциально значительно продлевает срок службы батареи, так как документация ESP8266 предполагает, что она способна к довольно скромным режимам низкой мощности.

Rogerclark
Ср 13 апреля 2016 г., 23:46
Привет, Рэй

Я задавался вопросом, как обрабатывались вещи SSID, так что это автоматические разъединения

Я думал, что это ОС, которая хранила эти вещи, но я мало что углубился в код ядра Arduino.

Я делаю несколько местных звонков из кода Arduino, но ничего, что, казалось, не вызвало каких -либо проблем.

Но это хороший момент для конфликтов между написанием собственного кода и использованием кода Arduino.

Лично я бы предпочел более подход стиля, так как я не против использования обратных вызовов, а не всех функций «блокировки», так как обратные вызовы предпочтительны во многих обстоятельствах.

Mrburnette
Ср 13 апреля 2016 г. 11:52 вечера
Rogerclark написал:Привет, Рэй

Я задавался вопросом, как обрабатывались вещи SSID, так что это автоматические разъединения

Я думал, что это ОС, которая хранила эти вещи, но я мало что углубился в код ядра Arduino.

Я делаю несколько местных звонков из кода Arduino, но ничего, что, казалось, не вызвало каких -либо проблем.

Но это хороший момент для конфликтов между написанием собственного кода и использованием кода Arduino.

Лично я бы предпочел более подход стиля, так как я не против использования обратных вызовов, а не всех функций «блокировки», так как обратные вызовы предпочтительны во многих обстоятельствах.

Mrburnette
Сб, 16 апреля 2016 г., 13:24
Это было неловкое путешествие, потому что я делал все более сложным, чем на самом деле... дух! :?

Теперь я могу последовательно отключить радиочастотную часть модуля ESP12E, который должен быть применим через линейку продуктов ESP8266 с использованием Arduinoide и IGRR Core. Читая об этом «материалах», я, должно быть, прочитал тот же абзац 10 раз и все еще сделал ту же глупую ошибку. :плакать:

Похоже, существует ряд способов сделать отключение разделения РЧ и ряд способов снижения профиля РЧ -мощности. Уловка, показанная ниже, предназначена для полного отключения РЧ - однако, я не могу полностью подтвердить, что RF не будет просыпаться после 0xffffff нас. Просто вопрос проверки для проверки долгосрочного поведения РЧ-секции. Соответствующая ссылка на esp8266 arduinoide githubздесь.

По сути, ваш эскиз без RF должен
  • импорт ESP8266WIFI.час
  • вызов Wi-Fi.Силы сна ();
  • вызов задержка (100); // или какое -то другое числовое значение задержки.
    Задержка () убедится, что переключатель задач переходит от Arduino к нативному разделу ESP, чтобы отключить упорядоченное радио.
Я попробовал приведенное выше, используя искусственный nodemcu от Lolin. Я могу запустить нормальные эскизы Wi-Fi на уровне около 80-100 млн. Лет, а затем запустить эскизы Arduino без радиочастотных ресурсов около 20-30 млн. Поведение последовательно.

Как уже упоминалось, я (в настоящее время) не знаю, истекает ли 0xffffff нас или кодируется как «всегда» значение. Чтение предполагает, что последствия Wi-Fi.Силы сна (); можно обойти, и раздел РЧ -. Я не знаю значения такого изменения или даже если изменение действительно возможно (другие сетевые ресурсы и т. Д.) Такие неизвестные должны быть проверены.

Вот сценарий счета Blink 'n, измененный для ESP8266 без использования какого -либо тока для разделения RF... Я измеряю между 20-30 мА.
/* BlinkNcount for ESP8266 NodeMCU by m. ray burnette Compiled on Linux Mint 17.8 64-bit Arduino 1.6.8 tested on 20160416 http://esp8266.github.io/Arduino/versions/2.1.0/ USING WiFi Library calls to turn off the normally on RF electronics: Sketch uses 232,408 bytes (22%) of program storage space. Maximum is 1,044,464 bytes. Global variables use 31,813 bytes (38%) of dynamic memory, leaving 50,107 bytes for local variables. Maximum is 81,920 *----> PROGRAMMED AS Generic / reset method: nodemcu / Flash mode: QIO / Flash Size: 4M (1M SPIFFS) <----* Turns on an LED on for one second, then off for one second, repeatedly. Counts and displays the count on the attached serial monitor This example code is in the public domain. RF sleep reference: https://github.com/esp8266/Arduino/issues/460#issuecomment-168970936 */ #include #define BOARD_LED_PIN 2 // MAPLE MINI int n = 0; void setup() { pinMode(BOARD_LED_PIN, OUTPUT); Serial.begin(115200); Serial.println("\n\n\r\rBlink LED & count Demo\n\r"); WiFi.forceSleepBegin(); delay(100); } void loop() { long uSeconds = micros(); digitalWrite(BOARD_LED_PIN,!digitalRead(BOARD_LED_PIN)); Serial.print("Loop #: "); n++; Serial.print(n); Serial.print(" uS="); Serial.println(micros()-uSeconds); delay(1000); }

Ахулл
Сб, 16 апреля 2016 г., 13:46
Если мы говорим с нами здесь, то моя быстрая защита от расчета конверта предполагает, что 0xfffffff US - 268435455us или 268.435455 секунд, что составляет около 4 1/2 минуты, поэтому вы сможете проверить, если он не просыпается довольно легко. Начните эскиз, измеряйте ток, сделайте кофе, проверьте, проснется ли он. : D

Кроме того, вызов Wi -Fi.Силы сна (); Через 4 1/2 минуты, скорее всего, сбросит время сна до 4 1/2 минуты, поэтому более длительные сна должны быть относительно тривиальными для кода.

Martinayotte
Сб, 16 апреля 2016 г., 14:04
Да, как и некоторые люди, которые делают для DeepSleep (), храня дополнительную счетчик в RTC_RAM, проверьте его на Wakeup и снова входите в DeepSleep (), если реальное время сна не достигнуто.

Mrburnette
Солнце 17 апреля 2016 г. 2:28 утра
Ахулл написал:Если мы говорим с нами здесь, то моя быстрая защита от расчета конверта предполагает, что 0xfffffff US - 268435455us или 268.435455 секунд, что составляет около 4 1/2 минуты, поэтому вы сможете проверить, если он не просыпается довольно легко. Начните эскиз, измеряйте ток, сделайте кофе, проверьте, проснется ли он. : D <...>

Werecatf
Солнце 17 апреля 2016 г., 5:17 утра
Mrburnette написал:По сути, ваш эскиз без RF должен
  • импорт ESP8266WIFI.час
  • вызов Wi-Fi.Силы сна ();
  • вызов задержка (100); // или какое -то другое числовое значение задержки.
    Задержка () убедится, что переключатель задач переходит от Arduino к нативному разделу ESP, чтобы отключить упорядоченное радио.
Я попробовал приведенное выше, используя искусственный nodemcu от Lolin. Я могу запустить нормальные эскизы Wi-Fi на уровне около 80-100 млн. Лет, а затем запустить эскизы Arduino без радиочастотных ресурсов около 20-30 млн. Поведение последовательно.

Rogerclark
Солнце 17 апреля 2016 г. 5:59 утра
работает ли hield (), а также задерживается

Я подозреваю, что то, что используется в задержке, на самом деле доход ()

Werecatf
Солнце 17 апреля 2016 г. 6:10
Rogerclark написал:работает ли hield (), а также задерживается

Я подозреваю, что то, что используется в задержке, на самом деле доход ()

Mrburnette
Солнце 17 апреля 2016 г., 17:52
Rogerclark написал:работает ли hield (), а также задерживается

Я подозреваю, что то, что используется в задержке, на самом деле доход ()

Werecatf
Солнце 17 апреля 2016 г. 18:02
Mrburnette написал:Rogerclark написал:работает ли hield (), а также задерживается

Я подозреваю, что то, что используется в задержке, на самом деле доход ()

Mrburnette
Солнце 17 апреля 2016 г. 18:14
WereCatf написал:Mrburnette написал:Rogerclark написал:работает ли hield (), а также задерживается

Я подозреваю, что то, что используется в задержке, на самом деле доход ()

Mrburnette
Солнце 17 апреля 2016 г. 18:21
Mrburnette написал: <...>
В настоящее время я поставляю стабильную ветвь, но обычно я более передовая и поставляю релиз «постановка»!
http: // arduino.ESP8266.com/stable/packa ... индекс.json

Луча

Werecatf
Солнце 17 апреля 2016 г. 18:53
Mrburnette написал:Rogerclark написал:работает ли hield (), а также задерживается

Я подозреваю, что то, что используется в задержке, на самом деле доход ()

Rogerclark
Солнце 17 апреля 2016 г., 21:14
Я посмотрел на задержку () и называет eSp_yield (), но он также делает кое -что с таймерами вооружения и разоружения.

У меня не было времени, чтобы увидеть, что делает ESP_YIELD () или это функция API

Mrburnette
Солнце 17 апреля 2016 г., 21:25
WereCatf написал: <...>
Я не могу повторить это. Если я использую helipt (), Wi -Fi не включает. Вы звоните задержке () где угодно, как, скажем, в вашей петле ()-функции? Если да, то вы действительно, используете задержку (), чтобы заставить силос.

Mrburnette
Солнце 17 апреля 2016 г., 21:28
Rogerclark написал:Я посмотрел на задержку () и называет eSp_yield (), но он также делает кое -что с таймерами вооружения и разоружения.

У меня не было времени, чтобы увидеть, что делает ESP_YIELD () или это функция API

Werecatf
Солнце 17 апреля 2016 г., 21:36
Mrburnette написал:Или просто используйте задержку (1) и забудьте обо всем этом.

Rogerclark
Солнце 17 апреля 2016 г., 21:39
Привет, Рэй,

Я до сих пор не выяснил, как код IGGR превращает неблокирующие функции в блокирующие стиль Arduino.

Я предполагаю, что это какой -то, если Semaphore System, и в API ESP должен быть способ приостановить задачу переднего плана / пользователя.


ESP - очень странный зверь. Но это, вероятно, вина ESP RTO, а не фактическое оборудование.
Ну, на самом деле... Я нахожу странным, что у устройства нет внутренней вспышки программы..(или я что -то пропустил?)

Этот OHMO не отлично подходит для устройства WiFi, так как это означает, что код могут быть защищены код.

Werecatf
Солнце 17 апреля 2016 г., 21:47
Rogerclark написал:ESP - очень странный зверь. Но это, вероятно, вина ESP RTO, а не фактическое оборудование.
Ну, на самом деле... Я нахожу странным, что у устройства нет внутренней вспышки программы..(или я что -то пропустил?)

Этот OHMO не отлично подходит для устройства WiFi, так как это означает, что код могут быть защищены код.

Mrburnette
Солнце 17 апреля 2016 г., 21:56
Rogerclark написал: <...>
ESP - очень странный зверь. Но это, вероятно, вина ESP RTO, а не фактическое оборудование.
Ну, на самом деле... Я нахожу странным, что у устройства нет внутренней вспышки программы..(или я что -то пропустил?)

Этот OHMO не отлично подходит для устройства WiFi, так как это означает, что код могут быть защищены код.

Werecatf
Солнце 17 апреля 2016 г. 22:11
Mrburnette написал:Согласитесь с проблемой безопасности, и я не знаю, предпринимает ли API ESP -API какие -либо попытки пробить вещи, чтобы предотвратить легкое извлечение.

Mrburnette
Солнце 17 апреля 2016 г. 22:25
WereCatf написал: <...>
Всегда можно было отключить просижирование Wi-Fi ( Wi-Fi.постоянный (ложь) ) при загрузке, чтобы он не хранит клавиши на вспышке автоматически, тогда можно использовать уникальный, специфичный для чипа идентификатор ( Особенно.getChipid () ) Хранится в ПЗУ ESP, чтобы зашифровать ключ, хранить его вручную и при загрузке, загрузите его вручную и расшифровывает и используйте расшифрованные ключи, как обычно.<...>

Werecatf
Солнце 17 апреля 2016 г. 22:35
Mrburnette написал:Таким образом, уникальное число - это подход - при условии, что оно действительно случайно, а не сериализовано. Последовательная нумерация, так что облегчает алгоритм дешифрования.

Rogerclark
Солнце 17 апреля 2016 11:02
Существуют различные методы для безопасной загрузки, но я не уверен, что идентификатор устройства в кремнии будет достаточно большим ключом, чтобы сделать это особенно безопасным.

Иггр написал
... По умолчанию ESP устанавливает свой MAC -адрес в качестве конкатенации 3 фиксированных байтов и 3 уникальных байта, сгоревших в чипе (которые читаются по функции GetChipid). Но 3 байта, вероятно, было бы легко грубое атаку при силе.

Использование MAC ID, как правило, также не является жизнеспособным решением для безопасности, так как AFIK поставщики не гарантируют, что у каждого устройства будет уникальный Mac, и довольно часто повторно используйте один и тот же Mac более одного раза.


Я обычно использую созданные серверы, которые регистрируются в базе данных, поэтому никакие два устройства не должны иметь одинакового руководства.

Но, конечно, как GUID и пароль могут быть прочитаны из внешней вспышки, нет ничего, чтобы не дать кому -то клонировать устройство ESP8266.