update DHT11 tutorial
This commit is contained in:
parent
2194b126e8
commit
7394b249c5
@ -1,6 +1,6 @@
|
||||
# Работа с DHT11 и DHT22 на Wemos D1 Mini (и других)
|
||||
|
||||
## Подготовка платы и прошиивка
|
||||
## Подготовка платы и прошивка
|
||||
|
||||
### Предисловие о файле прошивки
|
||||
|
||||
@ -59,7 +59,7 @@ esptool.py \
|
||||
/home/user/Downloads/ESP8266_GENERIC-20240222-v1.22.2.bin
|
||||
```
|
||||
|
||||
### Обеспечиваем удобство взаимодействия
|
||||
## Обеспечиваем удобство взаимодействия
|
||||
|
||||
D1 Mini имеет на борту UART преобразователь на чипе `CH34x`.
|
||||
|
||||
@ -70,6 +70,8 @@ D1 Mini имеет на борту UART преобразователь на чи
|
||||
pip3 install mpremote
|
||||
```
|
||||
|
||||
### mpremote
|
||||
|
||||
`mpremote` - это специальная утилита для взаимодействия с платой на MicroPython.
|
||||
|
||||
Вот неполный листинг справки.
|
||||
@ -102,6 +104,8 @@ List of commands:
|
||||
Сочетание клавиш `Ctrl+D` вызывает мягкую перезагрузку (`MPY: soft reboot`).
|
||||
Сочетание клавиш `Ctrl+X` закрывает соединение.
|
||||
|
||||
### rshell
|
||||
|
||||
Советую ещё установить `rshell`.
|
||||
|
||||
```shell
|
||||
@ -122,7 +126,7 @@ boot.py # непосредственно сами файлы
|
||||
|
||||
`/pyboard/` - это путь к памяти устройста. **Автодополнение работает**.
|
||||
|
||||
### Проверка работоспособности
|
||||
## Проверка работоспособности
|
||||
|
||||
Подключимся к плате и проверим некоторые детали.
|
||||
|
||||
@ -188,3 +192,108 @@ https://docs.micropython.org/en/latest/esp8266/quickref.html#dht-driver.
|
||||
Model DHT11
|
||||
Power supply 3-5.5V DC
|
||||
```
|
||||
|
||||
Я подключил датчик к **3.3V** и к пину **D3** (`GPIO0`).
|
||||
|
||||
### Получениие показаний
|
||||
|
||||
Вот скрипт, который опрашывает датчик каждые 5 секунд.
|
||||
|
||||
```python
|
||||
import dht
|
||||
from machine import Pin
|
||||
import time
|
||||
|
||||
sensor = dht.DHT11(Pin(0)) # D3
|
||||
|
||||
while True:
|
||||
print('Measuring', end = '')
|
||||
|
||||
retry = 0
|
||||
while retry < 3:
|
||||
try:
|
||||
sensor.measure()
|
||||
break
|
||||
except:
|
||||
retry = retry + 1
|
||||
print('.', end = '')
|
||||
|
||||
print('')
|
||||
|
||||
if retry < 3:
|
||||
print('Temperature: %3.1f °C' % sensor.temperature())
|
||||
print(' Humidity: %3.1f %% RH' % sensor.humidity())
|
||||
|
||||
time.sleep(5)
|
||||
```
|
||||
|
||||
Для тестрованиия достаточно выполнить команду:
|
||||
|
||||
```shell
|
||||
mpremote run ./<script_name>.py
|
||||
```
|
||||
|
||||
## Питание и глубокий сон
|
||||
|
||||
### Глубокий сон
|
||||
|
||||
Ниже представлен полный листинг программы,
|
||||
которая выполняет считывание и вывод информации с сенсора DHT11,
|
||||
после чегго переходит в режим глубокого сна,
|
||||
пробуждаясь каждые 5 секунд.
|
||||
|
||||
```python
|
||||
import dht
|
||||
import machine
|
||||
import time
|
||||
|
||||
WAKE_TIME = 5 # Период в секундах пробуждения устройства
|
||||
|
||||
sensor = dht.DHT11(machine.Pin(0)) # Пин датчика DHT11
|
||||
|
||||
# Настравает RTC.ALARM0 для пробуждения устройства
|
||||
rtc = machine.RTC()
|
||||
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
|
||||
|
||||
# Проверка пробуждение устройства от глуюокого сна
|
||||
if machine.reset_cause() == machine.DEEPSLEEP_RESET:
|
||||
time.sleep(2)
|
||||
print('Measuring', end = '')
|
||||
|
||||
retry = 0
|
||||
while retry < 3:
|
||||
try:
|
||||
sensor.measure()
|
||||
break
|
||||
except:
|
||||
retry = retry + 1
|
||||
print('.', end = '')
|
||||
|
||||
print('')
|
||||
|
||||
if retry < 3:
|
||||
print('Temperature: %3.1f °C' % sensor.temperature())
|
||||
print(' Humidity: %3.1f %% RH' % sensor.humidity())
|
||||
|
||||
# Задержка, чтобы успеть подключиться к REPL
|
||||
# и обновить скрипт, если что-то пойдёт не так!
|
||||
time.sleep(5)
|
||||
|
||||
# Устанавливает RTC.ALARM0 для активации через указанный период (пробуждение устройства)
|
||||
rtc.alarm(rtc.ALARM0, WAKE_TIME * 1000)
|
||||
|
||||
# Переводиит устройство в спящий режим
|
||||
machine.deepsleep()
|
||||
```
|
||||
|
||||
### Питание
|
||||
|
||||
...
|
||||
|
||||
## Подключениие к Wi-Fi сети
|
||||
|
||||
...
|
||||
|
||||
## Передача данных
|
||||
|
||||
...
|
||||
|
41
projects/MicroPython/DTH11/main.py
Normal file
41
projects/MicroPython/DTH11/main.py
Normal file
@ -0,0 +1,41 @@
|
||||
import dht
|
||||
import machine
|
||||
import time
|
||||
|
||||
WAKE_TIME = 5 # Период в секундах пробуждения устройства
|
||||
|
||||
sensor = dht.DHT11(machine.Pin(0)) # Пин датчика DHT11
|
||||
|
||||
# Настравает RTC.ALARM0 для пробуждения устройства
|
||||
rtc = machine.RTC()
|
||||
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
|
||||
|
||||
# Проверка пробуждение устройства от глуюокого сна
|
||||
if machine.reset_cause() == machine.DEEPSLEEP_RESET:
|
||||
time.sleep(2)
|
||||
print('Measuring', end = '')
|
||||
|
||||
retry = 0
|
||||
while retry < 3:
|
||||
try:
|
||||
sensor.measure()
|
||||
break
|
||||
except:
|
||||
retry = retry + 1
|
||||
print('.', end = '')
|
||||
|
||||
print('')
|
||||
|
||||
if retry < 3:
|
||||
print('Temperature: %3.1f °C' % sensor.temperature())
|
||||
print(' Humidity: %3.1f %% RH' % sensor.humidity())
|
||||
|
||||
# Задержка, чтобы успеть подключиться к REPL
|
||||
# и обновить скрипт, если что-то пойдёт не так!
|
||||
time.sleep(5)
|
||||
|
||||
# Устанавливает RTC.ALARM0 для активации через указанный период (пробуждение устройства)
|
||||
rtc.alarm(rtc.ALARM0, WAKE_TIME * 1000)
|
||||
|
||||
# Переводиит устройство в спящий режим
|
||||
machine.deepsleep()
|
Loading…
Reference in New Issue
Block a user