update DHT11 tutorial
This commit is contained in:
parent
2194b126e8
commit
7394b249c5
@ -1,6 +1,6 @@
|
|||||||
# Работа с DHT11 и DHT22 на Wemos D1 Mini (и других)
|
# Работа с DHT11 и DHT22 на Wemos D1 Mini (и других)
|
||||||
|
|
||||||
## Подготовка платы и прошиивка
|
## Подготовка платы и прошивка
|
||||||
|
|
||||||
### Предисловие о файле прошивки
|
### Предисловие о файле прошивки
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ esptool.py \
|
|||||||
/home/user/Downloads/ESP8266_GENERIC-20240222-v1.22.2.bin
|
/home/user/Downloads/ESP8266_GENERIC-20240222-v1.22.2.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
### Обеспечиваем удобство взаимодействия
|
## Обеспечиваем удобство взаимодействия
|
||||||
|
|
||||||
D1 Mini имеет на борту UART преобразователь на чипе `CH34x`.
|
D1 Mini имеет на борту UART преобразователь на чипе `CH34x`.
|
||||||
|
|
||||||
@ -70,6 +70,8 @@ D1 Mini имеет на борту UART преобразователь на чи
|
|||||||
pip3 install mpremote
|
pip3 install mpremote
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### mpremote
|
||||||
|
|
||||||
`mpremote` - это специальная утилита для взаимодействия с платой на MicroPython.
|
`mpremote` - это специальная утилита для взаимодействия с платой на MicroPython.
|
||||||
|
|
||||||
Вот неполный листинг справки.
|
Вот неполный листинг справки.
|
||||||
@ -102,6 +104,8 @@ List of commands:
|
|||||||
Сочетание клавиш `Ctrl+D` вызывает мягкую перезагрузку (`MPY: soft reboot`).
|
Сочетание клавиш `Ctrl+D` вызывает мягкую перезагрузку (`MPY: soft reboot`).
|
||||||
Сочетание клавиш `Ctrl+X` закрывает соединение.
|
Сочетание клавиш `Ctrl+X` закрывает соединение.
|
||||||
|
|
||||||
|
### rshell
|
||||||
|
|
||||||
Советую ещё установить `rshell`.
|
Советую ещё установить `rshell`.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -122,7 +126,7 @@ boot.py # непосредственно сами файлы
|
|||||||
|
|
||||||
`/pyboard/` - это путь к памяти устройста. **Автодополнение работает**.
|
`/pyboard/` - это путь к памяти устройста. **Автодополнение работает**.
|
||||||
|
|
||||||
### Проверка работоспособности
|
## Проверка работоспособности
|
||||||
|
|
||||||
Подключимся к плате и проверим некоторые детали.
|
Подключимся к плате и проверим некоторые детали.
|
||||||
|
|
||||||
@ -188,3 +192,108 @@ https://docs.micropython.org/en/latest/esp8266/quickref.html#dht-driver.
|
|||||||
Model DHT11
|
Model DHT11
|
||||||
Power supply 3-5.5V DC
|
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