MicroPython:Платы/ESP8266/Руководство по MicroPython для ESP8266/Управление питанием: различия между версиями

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

(Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} <syntaxhighlight lang="python" enclose="div"> =С...»)
 
 
Строка 2: Строка 2:
 
{{Перевод от Сubewriter}}
 
{{Перевод от Сubewriter}}
 
{{Myagkij-редактор}}
 
{{Myagkij-редактор}}
 +
 +
=Управление питанием<ref>[http://docs.micropython.org/en/latest/esp8266/tutorial/powerctrl.html docs.micropython.org - Power control]</ref>=
 +
 +
[[ESP8266]] позволяет на ходу менять частоту [[CPU]], а также переходить в режим глубокого сна. Обе этих функции можно использовать для управления потреблением электроэнергии.
 +
 +
==Изменение частоты CPU==
 +
 +
У модуля machine есть функция, позволяющая считывать и задавать частоту [[CPU]]. Чтобы прочесть частоту [[CPU]], используйте:
  
 
<syntaxhighlight lang="python" enclose="div">
 
<syntaxhighlight lang="python" enclose="div">
 +
>>> import machine
 +
>>> machine.freq()
 +
80000000
 +
</syntaxhighlight>
 +
 +
По умолчанию [[CPU]] работает на ''80 МГц''. Если вам нужна более высокая вычислительная мощность, частоту можно поменять на ''160 МГц'', но это произойдет ценой увеличения нагрузки на питание:
 +
 +
<syntaxhighlight lang="python" enclose="div">
 +
>>> machine.freq(160000000)
 +
>>> machine.freq()
 +
160000000
 +
</syntaxhighlight>
 +
 +
То есть, если вашему коду надо выполнить какие-то сложные вычисления, вы можете задать более высокую частоту, а после этого вернуть ее обратно.
 +
 +
==Режим глубокого сна==
 +
 +
После перехода в режим глубокого сна [[ESP8266]] выключится, включая всю его периферию, включая [[WiFi]] (кроме часов реального времени, которые используются для пробуждения чипа). Это серьезно снижает энергопотребление и хорошо подходит для проектов, работающих от батареи.
 +
 +
Чтобы использовать режим глубокого сна, вы должны подключить ''GPIO16'' к контакту сброса (на плате ''Adafruit Feather HUZZAH'' это ''RST''). Затем можно воспользоваться кодом ниже для перевода чипа в режим глубокого сна и выхода из него:
 +
 +
<syntaxhighlight lang="python" enclose="div">
 +
import machine
 +
 +
# настраиваем RTC.ALARM0 на пробуждение устройства:
 +
rtc = machine.RTC()
 +
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
 +
 +
# задаем RTC.ALARM0 на запуск
 +
# через 10 секунд (пробуждение устройства):
 +
rtc.alarm(rtc.ALARM0, 10000)
 +
 +
# переводим устройство в режим глубокого сна:
 +
machine.deepsleep()
 +
</syntaxhighlight>
 +
 +
Помните, что когда устройство выходит из режима глубокого сна – это как если бы оно пробуждалось после сброса (включая сброс памяти). Скрипты в ''«boot.py»'' запустятся как обычно, и вы можете поместить в них код, который будет проверять, выходит ли устройство из режима глубокого сна, и если да, будет выполнять какие-то другие действия, чем если бы устройство просто включалось. Например, с помощью кода ниже можно напечатать или уведомление о выходе из режима глубокого сна, или уведомление о просто включении или включении после полной перезагрузки:
 +
 +
<syntaxhighlight lang="python" enclose="div">
 +
if machine.reset_cause() == machine.DEEPSLEEP_RESET:
 +
    print('пробуждение из режима глубокого сна')
 +
else:
 +
    print('просто включение или включение после перезагрузки')
 +
</syntaxhighlight>
  
 
=См.также=
 
=См.также=

Текущая версия на 12:40, 1 июля 2020

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Управление питанием[1]

ESP8266 позволяет на ходу менять частоту CPU, а также переходить в режим глубокого сна. Обе этих функции можно использовать для управления потреблением электроэнергии.

Изменение частоты CPU

У модуля machine есть функция, позволяющая считывать и задавать частоту CPU. Чтобы прочесть частоту CPU, используйте:

>>> import machine
>>> machine.freq()
80000000

По умолчанию CPU работает на 80 МГц. Если вам нужна более высокая вычислительная мощность, частоту можно поменять на 160 МГц, но это произойдет ценой увеличения нагрузки на питание:

>>> machine.freq(160000000)
>>> machine.freq()
160000000

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

Режим глубокого сна

После перехода в режим глубокого сна ESP8266 выключится, включая всю его периферию, включая WiFi (кроме часов реального времени, которые используются для пробуждения чипа). Это серьезно снижает энергопотребление и хорошо подходит для проектов, работающих от батареи.

Чтобы использовать режим глубокого сна, вы должны подключить GPIO16 к контакту сброса (на плате Adafruit Feather HUZZAH это RST). Затем можно воспользоваться кодом ниже для перевода чипа в режим глубокого сна и выхода из него:

import machine

# настраиваем RTC.ALARM0 на пробуждение устройства:
rtc = machine.RTC()
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)

# задаем RTC.ALARM0 на запуск 
# через 10 секунд (пробуждение устройства):
rtc.alarm(rtc.ALARM0, 10000)

# переводим устройство в режим глубокого сна:
machine.deepsleep()

Помните, что когда устройство выходит из режима глубокого сна – это как если бы оно пробуждалось после сброса (включая сброс памяти). Скрипты в «boot.py» запустятся как обычно, и вы можете поместить в них код, который будет проверять, выходит ли устройство из режима глубокого сна, и если да, будет выполнять какие-то другие действия, чем если бы устройство просто включалось. Например, с помощью кода ниже можно напечатать или уведомление о выходе из режима глубокого сна, или уведомление о просто включении или включении после полной перезагрузки:

if machine.reset_cause() == machine.DEEPSLEEP_RESET:
    print('пробуждение из режима глубокого сна')
else:
    print('просто включение или включение после перезагрузки')

См.также

Внешние ссылки