Компьютерный USB-термометр для цифровых видов связи, APRS и EchoLink.

главная\р.л. конструкции\разное\...

Компьютерный USB-термометр для цифровых видов связи, APRS и EchoLink.

Появление IgorPlug-USB (приемник инфракрасного ДУ с USB-подключением к компьютеру) [1] показало, что во многих случаях для периферийных USB-устройств необязательно использовать специализированные чипы - микроконтроллер семейства AVR способен программно выполнять обмен данными по интерфейсу USB. Кроме основной функции (прием сигнала от пульта ДУ для управления WinAmp-ом и другими программами), IgorPlug-USB позволяет компьютеру управлять выходами одного из параллельных портов микроконтроллера, а также вводить данные с этого порта в компьютер.

Казалось бы: дорога открыта, пора переводить все любительские разработки, которые для этого использовали COM- и LPT-порты компьютера (программаторы ПЗУ, переключатели антенн радиостанции, выключатели света в комнате и т.п.) на "рельсы" USB.

Не тут-то было. А дело даже не в низкой пропускной способности (всего несколько килобайт в секунду) шины USB в режиме Low Speed [7], в котором и работает микроконтроллер AVR. Главная проблема, с которой сталкивался разработчик - необходимость создания драйвера устройства для операционной системы Windows, а это дело исключительно сложное и кропотливое, а главное - требующее опыта и больших затрат времени. И если не заниматься этим профессионально, ничего хорошего не выйдет...

Один из выходов из этой ситуации - использование спецификации HID (Human Interface Device) [7]. Таким же образом, к примеру, работают USB-клавиатуры и мышки. Разработчик соблюдает спецификацию, а Windows (Linux, MacOS и т.д.) использует стандартные (готовые) драйвера, когда устройство оказывается подключенным к компьютеру. Далее, управляющую программу для этого устройства можно написать даже на Бейсике...

Джойстик MJoy [2] - это разработка, которая иллюстрирует работу контроллера AVR с шиной USB, используя спецификацию HID.

Созданный на базе MJoy цифровой термометр имеет следующие отличительные особенности:

  • Дешевый микроконтроллер AVR (вместо спец-чипов USB) плюс цифровой датчик температуры.
  • Спецификация HID позволяет обойтись без написания драйвера для Windows.
  • Управляющая программа, кроме отображения температуры на экране компьютера, передает ее другим программам (для передачи в эфир в цифровых видах связи, например).
Схема

"Сердце" прибора - микроконтроллер AT90S2313-10 (или ATTINY2313-12 или -16). Стандартным кабелем (GND - черный провод, +5V - красный, DATA+ - зеленый, DATA- - белый) он подключается к USB-порту компьютера. Важно, чтобы сопротивление резистора R1 было именно 1.5 кОм (а не 2.2, например), иначе компьютер может "не опознать" устройство. Питание (+5В) - от шины USB. Микросхема термометра DS18B20 (или DS18S20) включена по обычной схеме с применением "подтягивающего" резистора R2.

Firmware (программа микроконтроллера)

Программа "перекроена"  из MJoy [2] - убраны процедуры опроса АЦП и кнопок джойстика, добавлены подпрограммы работы с микросхемой термометра (спасибо Виктору Голутвину, UT1WPR [3], за помощь в освоении этого чипа термометра).

HID report [7], то есть формат передаваемых в компьютер данных, описан следующим образом:

USAGE_PAGE (Generic Desktop)    06 01 00
USAGE (Vendor Usage 1)          09 01
COLLECTION (Application)        A1 01
  USAGE_PAGE (Generic Desktop)  05 01
  USAGE (Vno)                   09 46
  LOGICAL_MINIMUM (0)           15 00
  LOGICAL_MAXIMUM (1000)        26 E8 03
  UNIT (SI Lin:Temperature)     67 01 00 01 00
  UNIT_EXPONENT (0)             55 00
  REPORT_COUNT (1)              95 01
  REPORT_SIZE (16)              75 10
  INPUT (Data,Var,Abs)          81 02
END_COLLECTION                  C0

В компьютер передается 16-битное число - текущая температура в Кельвинах (в отличие от джойстика или мыши, где передаются координаты X и Y, а также состояния кнопок ). Конечно,  HID report для этого термометра можно было описать как "просто число", но спецификация HID содержит, в числе прочих, такую сущность как "температура", для того чтобы программное обеспечение компьютера при необходимости смогло просмотреть список всех подключенных устройств и выбрать из них только те, которые измеряют температуру.

Сейчас эта возможность не используется, и программа в компьютере "распознает" этот термометр по идентификаторам VID (=0000) и PID (=0003) [7].

Для компиляции программы используется ассемблер AVRA [4]. Запрограммировать микроконтроллер (то есть, занести в его память содержимое готового hex-файла) можно, например, используя программу AVREAL [5]  с несколькими проводами, подключенными к LPT-порту компьютера.

Для чипов термометра DS18B20 и DS18S20 подготовлены соответствующие hex-файлы: usbthermb.hex и usbtherms.hex, а в исходном тексте firmware присутствует строка ".define DS18B20", которая определяет тип используемого чипа.

Программа для компьютера

Программа работает под операционными системами Windows 98/ME/2000/XP. Написана для компилятора Visual C++ 6 с использованием HID-библиотек Windows DDK [8]. Основой послужила аналогичная программа Cypress USB Thermometer (HIDTHERM) [6].






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.