CNXSoft: Это обзор от гостя – Эми, работающего в STONE Technology, компании, специализирующейся на промышленных жидкокристаллических дисплейных модулях.
В этом месяце мы планировали разработать проект дверного замка с считывателем отпечатка пальца. Но, когда мы выбрали модуль идентификации отпечатка пальца, проект был приостановлен. Однако, поскольку модуль считывателя отпечатка пальца был приобретен, просто протестируем его.
Этот модуль считывателя отпечатка пальца можно легко приобрести через Интернет и подключить его через UART к плате MCU. Он поддерживает сканирование, ввод, сравнение и удаление отпечатка пальца.
Поскольку производитель модуля считывателя отпечатка пальца предоставляет демонстрационную программу для микроконтроллеров серии STM32F103, мы купили небольшую плату для разработки на основе STM32F103C8T6.
Демонстрационная программа модуля считывателя отпечатка пальца использует светодиодные индикаторы, чтобы предложить пользователю ввести отпечаток пальца и идентифицировать их (удачно или нет). Но, мы хотим использовать ЖК-дисплей, поэтому мы выбрали серийный ЖК-дисплей с разрешением 480 × 272 – STONE STVC050WT-01, который связывается с MCU через UART и будет описан ниже.
3 аппаратных компонента
Всего используется три аппаратных модуля:
- Плата для разработки STM32
- Модуль считывателя отпечатка пальца
- ЖК-дисплей STONE STVC050WT-01
Модуль идентификации отпечатка пальца с UART-TTL
UART- модуль считывателя отпечатка пальца оснащен высокоскоростным цифровым процессором STM32F205 от STMicro и включает в себя алгоритм считывания отпечатка пальца(TFS-9), а также высокоточный оптический датчик (TFS-d400). Он поддерживает ввод отпечатка пальца, обработку изображений, извлечение значений функций, генерацию шаблонов, хранение шаблонов, сравнение отпечатка пальца и поиск. Он предоставляет интерфейс UART для управления от хост-микроконтроллера или процессора.
Особенности
- Чувствительное распознавание отпечатка пальца и высокая скорость идентификации: модуль считывателя отпечатка пальца использует высокоточные оптические каналы и компоненты формирования изображения, поэтому для его использования требуются только руки.
- В первую очередь стабильность: модуль микроконтроллера STM32F205 с низким энергопотреблением и высокой скоростью. Скорость и стабильность лучше, чем у китайских аналогов.
- «Научная структура»: модульная структура, датчик отпечатка пальца + материнская плата обработки + платформа алгоритма.
- Стандартный 16-контактный универсальный интерфейс: датчики могут выбираться независимо и заменяться оптическими и другими датчиками; используются коммерческие алгоритмы.
- Простота разработки: работа с UART через последовательный порт (прямое подключение к любому однокристальному микрокомпьютеру с последовательным портом), чрезвычайно простое управление. Компания предоставляет демонстрационное программное обеспечение, обучающее программное обеспечение, процедуры MCU и соответствующие инструменты.
- Открытость: бесплатный ввод и вывод изображений отпечатка пальца, файлов характеристик отпечатка пальца и различных операций с отпечатком пальца.
Сферы применения
Типичные приложения включают в себя замки с отпечатком пальца, сейфы с отпечатком пальца, контроль доступа с отпечатком пальца, услуги с отпечатком пальца, домофоны, идентификация персонала, управление разрешениями, и т. д …
Модуль считывателя отпечатка пальца можно купить на Aliexpress за 37,78 $.
STONE 5-дюймовый модуль TFT-LCD 4:3 STVC050WT-01
ЖК-дисплей TFT с разрешением 480 × 272
В этом проекте мы хотели бы использовать STONE STVC050WT-01 TFT LCD для отображения статуса модуля считывателя отпечатка пальца (состояние ввода, состояние сравнения и удаление данных). Дисплей поставляется с микросхемой драйвера и программным обеспечением для разработки пользовательского интерфейса. Пользователь просто должен добавить разработанное изображение пользовательского интерфейса через программное обеспечение, а также любую кнопку или текстовое поле, если это необходимо, а затем сгенерировать файл конфигурации для отображения на дисплее.
Дисплей STONE STVC050WT-01 обменивается данными с MCU через сигналы UART-TTL.
Теоретически, дисплей STONE и модуль считывателя отпечатка пальца могут связываться напрямую. Однако, из-за различных протоколов передачи данных установить связь невозможно. Следовательно, MCU все еще необходим для обработки последовательной связи.
Более подробную техническую информацию, включая спецификации, можно найти на странице продукта, а сам модуль можно купить на Aliexpress за 37,38 $.
4 шага для начала работы с модулем STONE Touch LCD
- Разработайте пользовательский интерфейс отображения с помощью PhotoShop или другого программного обеспечения для редактирования фотографий.
- Разработайте логику дисплея и логику кнопок с помощью программного обеспечения STONE TOOL и загрузите файл дизайна в модуль дисплея.
- MCU связывается с ЖК-модулем STONE через последовательный порт.
- Данные, полученные на шаге 3, должны использоваться MCU для других действий.
Установка программного обеспечения STONE TOOL
Загрузите последнюю версию программного обеспечения STONE TOOL (в настоящее время TOOL 2019) с официального сайта и установите его.
После завершения установки программного обеспечения откроется следующий интерфейс:
Нажмите кнопку «Файл» в верхнем левом углу, чтобы создать новый проект, как будет объяснено далее.
Плата STM32 MCU
Мы использовали плату для разработки на основе микроконтроллера STM32F103C8T6 , которую можно купить на Aliexpress за менее чем 2 доллара США.
Среда разработки STM32
Keil vision – это интегрированная среда разработки, разработанная Keil. В настоящее время существует несколько версий Vision2, Vision3, Vision4 и Vision5. В 2005 году Keil был приобретен Arm. В марте 2011 года новейшая интегрированная среда разработки Realview MDK, выпущенная компанией Arm, интегрировала последнюю версию Keil uvision4, а ее компилятор и инструмент отладки были оптимизированы для устройств Arm.
STM32 использует среду разработки KEIL MDK, доступную на веб-сайте компании.
Выполнение тестового проекта модуля STONE LCD Fingerprint
Аппаратное подключение к плате разработки и ЖК-модулю
Чтобы быть уверенным, что мы сможем написать код позже, мы должны сначала определить надежность аппаратного соединения.
Плата разработки STM32F103C8T6 и TFT-LCD дисплей STVC050WT-01 подключаются через UART, а затем плата UM STF32F103C8T6 и модуль считывателя отпечатка пальца также подключаются через UART.
Убедитесь, что аппаратное соединение установлено правильно, затем перейдите к следующему шагу.
Шаг 1 для разработки графического интерфейса
Прежде всего, нам нужно спроектировать изображение дисплея пользовательского интерфейса, которое может быть разработано с помощью программного обеспечения PhotoShop или других инструментов дизайна изображений. После разработки изображения дисплея пользовательского интерфейса сохраните изображение в формате JPG. Вот интерфейс, который мы разработали в Photoshop.
Конструкция модуля TFT-LCD дисплея
Откройте программное обеспечение STONE TOOL2019 и создайте новый проект:
Удалите изображение, которое новый проект загружает по умолчанию, и добавьте изображение пользовательского интерфейса, которое вы разработали сами.
Как добавить файл шрифта с помощью STONE Tool
Пользовательский интерфейс включает в себя строку состояния, которая показывает проверку отпечатка пальца в режиме реального времени, поэтому вам нужно добавить шрифт, а также компоненты и кнопки для отображения текста.
Эффект заключается в следующем:
Как создать файл конфигурации для STONE LCD
Как только описанный выше дизайн пользовательского интерфейса будет завершен, вы можете сгенерировать файл конфигурации и загрузить его на дисплей STVC050WT-01, который описан в материалах для разработки STONE.
Выполните шаг 1 для создания файла конфигурации, затем вставьте USB-накопитель в компьютер. Флешка отобразится. Затем нажмите «Загрузить на u-диск», чтобы загрузить файл конфигурации на USB-накопитель, а затем вставьте USB-накопитель в STVC050WT-01, чтобы завершить обновление.
Как подключить модуль считывателя отпечатка пальца через UART-TTL
Модуль считывателя отпечатка пальца на самом деле состоит из двух частей:
- Оптический коллектор
- Схема драйвера
Основной частью является схема драйвера, которая интегрирована с чипом серии STM32F2. Алгоритм считывателя отпечатка пальца и алгоритм сканирования встроены в чип, и для получения результатов используется связь UART, что делает его очень удобным для разработчиков приложений.
Аппаратное соединение:
VCC —— – 3,3 В или 5 В
GND – – – – – -GND
TXD (отправка через последовательный порт модуля идентификации отпечатка пальца) —— RXD (последовательный порт Rx для ПК или MCU)
RXD (прием через последовательный порт модуля идентификации отпечатка пальца) —— TXD (последовательный порт ПК или MCU Tx)
BL (подсветка отпечатка пальца, не подключена) – порт IO
RST (сброс модуля отпечатка пальца, не подключен) – порт ввода-вывода
В первый раз вы можете использовать ПК с Windows для связи с модулем идентификации через последовательный порт для проведения тестирования. Вы можете найти более подробную информацию о Waveshare Wiki (на китайском).
STM32 Разработка приложений
Посетите официальный веб-сайт поставщика модуля считывателя отпечатка пальца, загрузите демонстрационную программу модуля считывателя отпечатка пальца (示例 程序), а затем откройте программу с помощью программного обеспечения KEIL.
Но, прежде чем идти дальше с разработкой программного обеспечения, давайте сначала подключим оборудование.
Затем отправьте инструкции через последовательную консоль, чтобы проверить правильность подключения.
Мы внесли некоторые незначительные изменения в программу с помощью окончательного кода (main.c) следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
#include <stm32f10x.h> #include "usart.h" #include "timer.h" #include "fingerprint.h" #define ADDUSER_BTN_ADDR 0x01 #define VERIFY_BTN_ADDR 0x05 #define CLEAR_BTN_ADDR 0x09 #define TEXT_STATUS_ADDR 0x0c #define USER_SUCESS 0x01 #define USER_FAIL 0X00 u8 data_send[8]= {0xA5, 0x5A, 0x05, 0x82, 0x00, 0x00, 0x00,0x00}; void delay() { u16 i, j; for (i = 0; i < 1000; i++) for(j = 0; j < 10000; j++); } //void USERGPIO_Init(void) //{ // GPIO_InitTypeDef GPIO_InitStructure; // // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG, ENABLE); // // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // GPIO_Init(GPIOF, &GPIO_InitStructure); // GPIO_ResetBits(GPIOF,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9); // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_8; // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // GPIO_Init(GPIOG, &GPIO_InitStructure); // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; // GPIO_Init(GPIOC, &GPIO_InitStructure); //} //u8 key_scan(void) //{ // if(!USER_KEY||!PRESS_KEY||!DEL_KEY) // { // delay(); // if(!USER_KEY) return 1; // if(!PRESS_KEY) return 2; // if(!DEL_KEY) return 3; // } // return 0; //} void UART1_Send_Array(u8 send_array[],unsigned char num) { u8 i=0; while(i<num) { USART_SendData(USART1,send_array[i]); while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET); i++; } } extern u8 USART_RX_BUF[10]; extern u8 USART_RX_END; extern u16 USART_RX_STA; int main(void) { int i = 5; SystemInit(); // USERGPIO_Init(); usart_Configuration(115200,19200); //Ö¸ÎÆÄ£¿éĬÈÏÊÇ19200 // printf("Test Uart Fingerprint Reader\r\n"); SetcompareLevel(5); // printf("compare level£º%d\r\n", GetcompareLevel()); // printf("time out£º%d\r\n",GetTimeOut()); // printf("total user:%d\r\n",GetUserCount()); while(1) { if(USART_RX_END) { //UART1_Send_Array(USART_RX_BUF,8); switch (USART_RX_BUF[5]) { case ADDUSER_BTN_ADDR: //printf("User:%d\r\n",GetUserCount()); switch(AddUser(i)) { case ACK_SUCCESS: i++; //printf("finger add success\r\n"); data_send[5]=TEXT_STATUS_ADDR; data_send[7]=USER_SUCESS; UART1_Send_Array(data_send,8); LED2_ON; delay(); LED2_OFF; break; case ACK_FAIL: //printf("fail\r\n"); data_send[5]=TEXT_STATUS_ADDR; data_send[7]=USER_FAIL; UART1_Send_Array(data_send,8); LED3_ON; delay(); LED3_OFF; break; case ACK_FULL: //printf("full\r\n"); data_send[5]=TEXT_STATUS_ADDR; data_send[7]=USER_FAIL; UART1_Send_Array(data_send,8); LED4_ON; delay(); LED4_OFF; break; } break; case VERIFY_BTN_ADDR: switch(VerifyUser()) { case ACK_SUCCESS: //printf("Verify sucess\r\n"); data_send[5]=TEXT_STATUS_ADDR; data_send[7]=USER_SUCESS; UART1_Send_Array(data_send,8); LED2_ON; delay(); LED2_OFF; break; case ACK_NO_USER: //printf("NO_USER\r\n"); data_send[5]=TEXT_STATUS_ADDR; data_send[7]=USER_FAIL; UART1_Send_Array(data_send,8); LED3_ON; delay(); LED3_OFF; break; case ACK_TIMEOUT: //printf("time out\r\n"); data_send[5]=TEXT_STATUS_ADDR; data_send[7]=USER_FAIL; UART1_Send_Array(data_send,8); LED3_ON; delay(); LED3_OFF; break; case ACK_GO_OUT: //printf("GO OUT\r\n"); data_send[5]=TEXT_STATUS_ADDR; data_send[7]=USER_FAIL; UART1_Send_Array(data_send,8); break; }; break; case CLEAR_BTN_ADDR: ClearAllUser(); //printf("all user remove\r\n"); data_send[5]=TEXT_STATUS_ADDR; data_send[7]=USER_SUCESS; UART1_Send_Array(data_send,8); break; default: USART_RX_END=0; USART_RX_STA=0; } USART_RX_END=0; USART_RX_STA=0; } } } |
Нам также пришлось изменить файл stm32f10x_it.c, чтобы добавить функцию обработчика USQ IRQ.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
u16 USART_RX_STA=0; u8 USART_RX_END=0; u8 USART_RX_BUF[10]; void USART1_IRQHandler(void) { u8 Res; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { Res =USART_ReceiveData(USART1); //printf("%x",USART_ReceiveData(USART1)); // USART_SendData(USART1,Res); if(USART_RX_END==0) { USART_RX_BUF[USART_RX_STA]=Res ; USART_RX_STA++; if(USART_RX_STA>8) { USART_RX_END=1; } } } } |
Конечный результат
Нам нужно только подключить плату STM32, модуль считывателя отпечатка пальца, экран дисплея и источник питания. Нажмите кнопку над дисплеем STONE, и вы сможете добавлять, удалять и проверять отпечатки пальца.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.