Наш канал в telegram

101 применение шлюза UART-to-I2C/SPI/1W (RH-0004). Часть 3. USB-термометр на DS18B20 с передачей данных по сети

Сегодня мы рассмотрим возможность использования UART-to-I2C/SPI/1W шлюза для подключения к компьютеру датчиков температуры DS18B20, то есть фактически будем делать USB-термометр. Причём термометр мы будем делать не простой, а с возможностью передачи данных по сети.

USB-термометр с передачей данных по сети

Нам понадобятся: шлюз UART-to-I2C/SPI/1W, USB-to-UART конвертер, датчик температуры DS18B20 фирмы Dallas, монтажные провода и специальное ПО. Конвертер USB-to-UART можно взять любой, однако лучше взять вот такой (с нашего сайта). Во-первых, его разъём UART — это ответная часть разъёма UART шлюза, поэтому для их соединения вам не придётся ничего изобретать. Во-вторых, наш конвертер позволяет не только организовать обмен данными между шлюзом и компьютером, но и запитать шлюз (причём любым напряжением: +3,3В или +5В, оба они присутствуют на разъёме конвертера как раз в нужных местах). Вариант со шлюзом и нашим USB-to-UART показан на фотографии справа.

Cоединив вместе USB-to-UART и UART-to-I2C/SPI/1W шлюз, мы, фактически, получаем уже USB-to-I2C/SPI/1W шлюз. Теперь остаётся только подключить к ниму датчик температуры. Датчик DS18B20 нужно подключать к разъёму XT3 шлюза. Это делается следующим образом: первую ногу датчика подключаем к выводу COM (минус питания), третью ногу — к выводу Supply (плюс питания) и, наконец, вторую ногу датчика — к выводу MOSI/1W/DATA (линия передачи данных). Всё, собранную схему можно втыкать в USB-порт компьютера.

Чтобы считывать с помощью собранной схемы измеряемую датчиком температуру нам осталось сделать всего две вещи:

Во-первых, нужно установить на компьютер драйвера для USB-to-UART преобразователя. Преобразователь, предлагаемый на сайте, сделан на базе чипа cp2102 фирмы silabs, дрова для него (VCP Drivers) можно скачать на их официальном сайте, вот по этой ссылке.

Когда драйвера на USB-to-UART конвертер установлены — при его подключении к USB-порту у вас в диспетчере устройств будет появляться виртуальный com-порт. Именно через этот виртуальный com-порт специально написанная программа будет общаться со шлюзом.

программа для работы с USB-термометром

Во-вторых, нужно запустить специальную программу, которая при подключении с виртуальному com-порту автоматически настраивает шлюз на работу с однопроводной линией и далее периодически опрашивает подключенный к шлюзу датчик и отображает считанное с него значение температуры (ссылки для скачивания программы и её исходников можно найти в конце статьи).

Эта программа позволяет не только считывать данные с датчика температуры, но и передавать их по сети. Для этого в программе реализован http-сервер, который рассылает считанные с датчика данные через TCP-порт. Причём, сгенерированную HTML-страницу он посылает удалённому хосту только один раз, а далее пересылает только сами данные, что позволяет значительно экономить трафик. Установленная частота обновления данных — 1 раз в секунду.

Главное окно программы показано на картинке слева. В верхней части этого окна выбирается нужный com-порт. Кнопки «Connect» и «Disconnect» позволяют установить или разорвать связь с датчиком температуры.

В средней части окна настраивается http-сервер. Собственно говоря, тут нужно только выбрать порт, через который удалённые хосты будут подключаться к нашему серверу. Кнопки «Start» / «Stop» служат для включения / выключения сервера.

По умолчанию сервер использует порт 80, то есть тот, который используется для http по умолчанию всеми браузерами. Если выбрать другой порт, то его нужно будет указывать в браузере в явном виде через двоеточие после адреса (адрес:порт, например 127.0.0.1:5454).

Скачать программу ( exe ), скачать исходники ( проект под C++ Builder 6 в zip-архиве )

Программа специально выложена с исходниками, всяческие перепиливания / допиливания — приветствуются, ниже даны полезные ссылки, которые могут вам в этом помочь:

Описание протокола 1-Wire.

Список функций и регистров шлюза.

Небольшое видео, демонстрирующее работу USB-термометра.

  1. Часть 1. USB программатор микросхем EPROM с интерфейсом I2C
  2. Часть 2. USB программатор микросхем EPROM с интерфейсом SPI
  3. Часть 3. USB-термометр на DS18B20 с передачей данных по сети
  4. Часть 4. USB программатор микросхем EPROM DS2430
  5. Часть 5. USB программатор микросхем EPROM DS24B33
  6. Часть 6. Подключение 3-осевого гироскопа/акселерометра MPU6050 к компьютеру
  7. Часть 7. USB-программатор микросхем EPROM DS2431
  8. Часть 8. USB-программатор микросхем 1-Wire

Добавить комментарий