Usb термометр, роблю все своїми руками

Давно у мене народилася ідея зробити. проте потреби не
було, і ідея лежала. Якось у одного в гостях зауважив пару USB флешок. одна
була дохла і дісталася мені нахаляву. З недавнього часу постійно за ними
полюю, тому що в більшості випадків згорає контролер, а NAND flash жива + SMD
кварц. А таке на дорозі не валяється.
Так ось, з цієї флешки я поимел: SMD
кварц на 12 МГц, USB штекер на плату і маленький корпус, а також розвиток ідеї
а.

Протягом тижня були розроблені:
1. Схема пристрою;
2. Розведення
друкованої плати під наявний корпус;
3. Програма для МК ATtiny45;
4.
Програма-хост (Даллі просто хост) для прийому даних від МК.

Як видно зі схеми, основа устроуства - МК ATtiny45. Його вибір обумовлюється
необхідністю мінімізувати розміри друкованої плати і наявністю у нього 4 Кбайт
флеш пам'яті, потрібних для реалізації USB і роботи з DS18B20.
Датчик (DS18B20)
працює в режимі паразитного харчування, тобто не вимагає окремого підведення
харчування, а підключається до пристрою 2 проводами. Вхідна ланцюг USB -
стандартна, рекомендована розробниками avrusb, за винятком того, що
підтягує резистори в моєму варіанті включені після захисних на 68 Ом.

Програма для МК розроблена в середовищі AVR Studio з використанням
GCC на основі бібліотеки avrusb і початкових кодів якогось Martin'a Thomas'a для
DS18B20 (часу не було самому писати). Спопсоб взаємодії хоста з
пристроєм реалізований у вигляді відправки пристрою умовного коду (відповідно
з яким пристрій буде виконувати необхідні операції), а також запиту пакета
даних зі значенням поточної температури. Так як розмір відправляються і
прийнятих даних малий, то був обраний future репорт (тип пакета даних) з огляду на
простоти роботи з ним.
Якщо ви захочете виправити програму для МК,
будь ласка, перед цим уважно прочитайте документ USBID-License.txt,
що знаходиться в папці usbdrv.
Там міститься ряд правил і обмежень по
використанню бібліотеки avrusb.
Програма-хост написана в Borland Delphi 7
з використанням бібліотеки компонентів JEDI-VCL, до складу якої входить
компонент TJvHidDeviceController, який реалізує просить доступ до HID сумісним
USB пристроїв. Щоб зробити використання пристрою максимально зручним було
вирішено реалізувати хост у вигляді значка з'являється та температура в сітемном треї
(Біля годинника) без будь-якого графічного інтерфейсу, за винятком
контекстрого меню після натискання правої кнопки миші по значку в треї.
У мене
WinXP SP3, на інших ОС програму не Пробував.

Загалом, хост работет за наступним алгоритмом:
1. За таймером
(Раз в 2 секунди) запускаємо пошук нашого девайса. Критерії пошуку - текстові
імена виробника (vendor) і пристрої (product);
2. Приймаємо інформацію
від пристрою з численними перевірками на помилки. Якщо такі виникають -
ставимо значок "NA" - no access;
3. Віддаємо команду читання температури з
датчика. чекаємо;
4. Віддаємо команду початку вимірювання температури;
5. Повернення
до пункту 1 через 2 сек.
Начебто все сказав ... ах ось, цей пристрій я
підніс у вигляді подарунка на день народження того самого друга, у якого схалявіть
дохлу флешку.
Ось кілька фото готового пристрою.

Доп матеріали, файли до пристрою (схемі):

Схожі статті