Электронный USB счетчик на AVR ATtiny25

Проект представляет собой счетчик с отображением данных на 8-ми сигментном индикаторе и передачей данных через USB-интерфейс. Я к примеру использовал данное устройство как счетчик посещений для вебсайта.

 

 

 

 

В проекте используется микроконтроллер AVR ATtiny25, в качестве драйвера LCD-дисплея используется микросхема MAX7219. Для отображения данных используется обычный 7-ми сегментный индикатор на 8 знакомест.
Принципиальная схема устройства приведена на рисунке ниже:

 

 

 

Для связи микроконтроллера и микросхемы MAX7219 используется всего 3 линии. Программа для контроллера написана на AVR-GCC и основана на коде EasyLogger. Также, Christian Starkjohann разработал отличный программный USB-драйвер который называется AVR-USB и с помощью которого реализуется поддержка USB 1.1 (low speed) для атмеловских AVR микроконтроллеров. Т.о. необходимость в специальной USB-микросхеме (к примеру FT232) отпадает, все реализуется программно. Для питная м/с MAX7219 требуется источник питания мощностью не менее 300мА и напряжением 9-12В. Микроконтроллер IC3 питается от USB-шины.

 

 

 

 

Для экономии памяти микроконтроллера (2к в ATtiny25), MAX7219 использовался режим decode-mode (см. даташит). В этом режиме в памяти МК не нужно хранить таблицу шрифтов для семисегментного индикатора.


Код функции usbFunctionSetup для приема данных от МК:

 

USB_PUBLIC uchar usbFunctionSetup(uchar data[8])
{
static uchar replyBuf[2];
uchar Dlen;
usbMsgPtr = replyBuf;
switch (data[1]) {
case 0: // data format => data[3]:data[2]:data[5]:data[4]
MAX7219_DisplayChar(1,data[3] >> 4 & 0x0F); // display digit 0
MAX7219_DisplayChar(2,data[3] & 0x0F); // display digit 1
MAX7219_DisplayChar(3,data[2] >> 4 & 0x0F); // display digit 2
MAX7219_DisplayChar(4,data[2] & 0x0F); // display digit 3
MAX7219_DisplayChar(5,data[5] >> 4 & 0x0F); // display digit 4
MAX7219_DisplayChar(6,data[5] & 0x0F); // display digit 5
MAX7219_DisplayChar(7,data[4] >> 4 & 0x0F); // display digit 6
MAX7219_DisplayChar(8,data[4] & 0x0F); // display digit 7
Dlen = 0;
break;
case 1:
MAX7219_Clear();
Dlen=0;
break;
case 2:
MAX7219_Init();
Dlen=0;
break;
default:
Dlen=0;
break;
}
return Dlen;
}

 

Программа для ПК

Программа для компьютера написана на Delphi 6 с использованием компонента Indy 10. Для данной версии необходима специальная библиотека LibUSB-Win32, которая является портированной версией libusb для Windows-систем. Библиотека значительно упрощает пользовательскому приложению доступ к USB-устройству. Также, для delphi использованы компоненты CoolTrayIcon и TextTrayIcon. Компоненты позволяют сворачивать приложение в трей, как это показано на картинке ниже.
Данное приложение каждые 10 секунд считывает данные с текстового файла hits.txt (счетчик посещений) и затем перенаправляет данные на USB.

 

 

 

Скрипт для вебсервера

На вебсервере используется файл hits.txt, в который записывается количество посещений странички. Файл должен быть доступен для записи (права 0777). Для записи количества посещений используется простенький PHP-скрипт:

$hitfile = $_SERVER['DOCUMENT_ROOT']."/counter/hits.txt";
$hits = @ file_get_contents($hitfile);
file_put_contents($hitfile,$hits+1,LOCK_EX);
echo ($hits+1); // используется для отладки


Для прошивки контроллера я использовал AVR ISP программатор и программу PonyProg

 

Исходники и прошивки - У вас нет доступа к скачиванию файлов с нашего сервера

Источник: bobhobby.com

0 комментариев

Ваше имя: *
Ваш e-mail: *
Войти через
  • bowtie smile laughing blush smiley relaxed smirk
    heart_eyes kissing_heart kissing_closed_eyes flushed relieved satisfied grin
    wink stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes grinning kissing stuck_out_tongue sleeping
    worried frowning anguished open_mouth grimacing confused hushed
    expressionless unamused sweat_smile sweat disappointed_relieved weary pensive
    disappointed confounded fearful cold_sweat persevere cry sob
    joy astonished scream tired_face angry rage triumph
    sleepy yum mask sunglasses dizzy_face imp smiling_imp
    neutral_face no_mouth innocent
Введите два слова, показанных на изображении:
© 2010-2020 Все права соблюдены.