Считываем данные с датчика температуры DS18B20 с помощью языка Python на микроконтроллере ESP8266 .

В данном уроке мы 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))

В результате выполнения вышеописанного кода, вы увидите следующие данные(номер датчика и температуру):