В данном уроке мы microPython датчик температуры DS18B20 к ножке GPIO4 нашего микроконтроллера ESP8266:
Программный код:
import machine, onewire, ds18x20, time
ds_pin = machine.Pin(4)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = ds_sensor.scan()
print('Found DS devices: ', roms)
while True:
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
print(rom)
print(ds_sensor.read_temp(rom))
time.sleep(5)
Разберем наш программный код:
В нашем случаи мы подключаем модуль для взаимодействия с входами, датчиком температуры DS18B20 и временем.
import machine, onewire, ds18x20, time
Создаем переменную для подключения датчика температуры DS18B20 (ножка 4).
ds_pin = machine.Pin(4)
Дальше мы читаем температуру с датчика:
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
DS18B20 обменивается данными по однопроводному протоколу связи, каждый датчик имеет уникальный 64-битный последовательный код. Это означает, что можно считывать данные с нескольких датчиков температуры, подключенных к одному входу.
С помощью функции scan() происходит сканирования датчиков DS18B20:
roms = ds_sensor.scan()
Далее выводим адрес каждого датчика в терминал:
print('Found DS devices: ', roms)
Конвертируем данные (считываем):
ds_sensor.convert_temp()
Ждем 750 мс (в соответствии с документацией), чтобы дать достаточно времени для преобразования температуры:
time.sleep_ms(750)
После этого мы можем считывать температуру по адресам, найденным ранее, используя read_temp () и передав адрес в качестве аргумента.
print(ds_sensor.read_temp(rom))
Так как мы можем подключить несколько датчиков к одной линии данных, у нас есть цикл, который перебирает все адреса и выводит температуру для каждого из них:
for rom in roms: print(rom) print(ds_sensor.read_temp(rom))
В результате выполнения вышеописанного кода, вы увидите следующие данные(номер датчика и температуру):