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

  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 к компьютеру

Сегодня мы рассмотрим возможность использования 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, дрова для него можно скачать на их официальном сайте, вот по этой ссылке.

Когда драйвера на 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 к компьютеру

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