Мазмуну:

Манжа изине негизделген биометрикалык добуш берүү машинасы Arduino аркылуу: 4 кадам (сүрөттөр менен)
Манжа изине негизделген биометрикалык добуш берүү машинасы Arduino аркылуу: 4 кадам (сүрөттөр менен)

Video: Манжа изине негизделген биометрикалык добуш берүү машинасы Arduino аркылуу: 4 кадам (сүрөттөр менен)

Video: Манжа изине негизделген биометрикалык добуш берүү машинасы Arduino аркылуу: 4 кадам (сүрөттөр менен)
Video: Женщина Маньяк. Её так и не поймали [Расследование] 2024, Июль
Anonim
Манжа изине негизделген биометрикалык добуш берүү машинасы Arduino аркылуу
Манжа изине негизделген биометрикалык добуш берүү машинасы Arduino аркылуу

Биз баарыбыз колдонуучу добуш берүү үчүн кнопканы басуу керек болгон электрондук добуш берүүчү машинаны билебиз. Бирок бул машиналар башынан бери чыңалганы үчүн сынга алынган. Ошентип, өкмөт манжа изине негизделген добуш берүүчү машинаны киргизүүнү пландап жатат, анда колдонуучулар анын манжа изине жараша добуш бере алышат. Бул система добуштардын кайталануу мүмкүнчүлүгүн жок кылбастан, ар кандай манипуляциянын алдын алат.

Ошентип, бул долбоордо биз Arduino Uno, TFT дисплейи жана манжа изинин сенсорун колдонуп биометрикалык добуш берүүчү машинанын прототибин түзөбүз. Биз мурун NodeMCU менен R305 манжа изинин сенсорун биометрикалык негиздеги катышуу тутумун куруу үчүн колдонгонбуз, бирок бул жерде биз Arduino менен өнүккөн GT-511C3 манжа изинин сенсорун колдонобуз.

1 -кадам: Биометрикалык добуш берүү машинасын куруу үчүн керектүү компоненттер

  • Arduino Uno
  • 2.4”TFT LCD дисплей калканы
  • GT-511C3 манжа изинин сенсору

Бул 2.4 дюймдук TFT дисплейи Arduino менен мурда IoT негизиндеги ресторан менюсун заказ кылуу системасын куруу үчүн колдонулган.

2 -кадам: Arduino колдонуп биометрикалык добуш берүү машинасынын схемасы

Ардуинону колдонуп биометрикалык добуш берүү машинасынын схемасы
Ардуинону колдонуп биометрикалык добуш берүү машинасынын схемасы

Бул долбоордун схемасы абдан жөнөкөй, анткени биз TFT дисплейин жана манжа изинин сенсор модулун Arduino Uno менен гана байланыштырып жатабыз. Манжа изинин сенсорунун VCC жана GND казыктары 5V жана GND казандарына Arduino, TX жана RX казыктары Arduino Uno санариптик 11 жана 12 туташтырылган.

2.4”TFT LCD экраны Arduino Shield болуп саналат жана аны төмөндөгү сүрөттө көрсөтүлгөндөй Arduino Uno түз орнотсо болот. TFT дисплейинде 28 казык бар, алар Arduino Uno'го эң сонун дал келет, ошондуктан манжанын изи сенсорун Arduino'нун арт жагына ширетүүгө туура келди.

3 -кадам: Булак коду жана этап -этабы менен кодду түшүндүрүү

Бул манжа изинин добуш берүү тутумунун долбоорунун толук коду Arduino аркылуу макаланын аягында берилген; бул жерде биз коддун кээ бир маанилүү функцияларын түшүндүрүп жатабыз.

Код SPFD5408, Software Serial жана FPS_GT511C3 китепканаларын колдонот. SPFD5408 китепканасы - бул түпнуска Adafruit китепканасынын өзгөртүлгөн версиясы. Бул китепкана файлдарын төмөнкү шилтемелерден жүктөп алсаңыз болот:

  • SPFD5408 китепканасы
  • Программалык серия
  • FPS_GT511C3

Китепканаларды кошуп, кээ бир маанилүү параметрлерди аныктагандан кийин, программалоо бөлүгүнө кире алабыз. Бул программага катышкан үч бөлүм бар. Бири добуш берүүчү машинанын интерфейсин түзүүдө, экинчиси-баскычтар үчүн тийүү чекиттерин алуу жана тийүүнүн негизинде баскычтарды аныктоо жана жыйынтыгын эсептөө жана аларды Arduino эсине сактоо.

1. UI түзүү:

Мен үч баскыч жана проектин аты бар жөнөкөй UI түздүм. TFT дисплей китепканасы сызыктарды, тик бурчтукту, тегерекчелерди, символдорду, саптарды жана башка көптөгөн түстөрдү жана өлчөмдөрдү тартууга мүмкүндүк берет. Бул жерде fillRoundRect жана drawRoundRect функцияларын колдонуу менен эки тик бурчтуу баскычтар түзүлөт. Tft.drawRoundRect функциясынын синтаксиси төмөндө келтирилген:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t радиусу, uint16_t түсү)

Кайда:

x0 = X тик бурчтуктун баштапкы чекитинин координаты

y0 = Y тик бурчтуктун баштапкы чекитинин координаты

w = Тик бурчтуктун туурасы

h = Тик бурчтуктун бийиктиги

радиус = тегерек бурчтун радиусу

color = Ректин түсү.

void drawHome ()

{

tft.fillScreen (АК);

tft.drawRoundRect (0, 0, 319, 240, 8, АК); // Барактын чек арасы

tft.fillRoundRect (10, 70, 220, 50, 8, GOLD);

tft.drawRoundRect (10, 70, 220, 50, 8, АК); // Добуш бер

tft.fillRoundRect (10, 160, 220, 50, 8, GOLD);

tft.drawRoundRect (10, 160, 220, 50, 8, АК); // Катталуу

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); // Жыйынтык

tft.drawRoundRect (10, 250, 220, 50, 8, АК);

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Добуш берүү");

tft.setCursor (57, 29);

tft.print ("Машина");

tft.setTextSize (3);

tft.setTextColor (АК);

tft.setCursor (25, 82);

tft.print ("Талапкер 1");

tft.setCursor (25, 172);

tft.print ("Талапкер 2");

tft.setCursor (25, 262);

tft.print ("Талапкер 3");

}

2. Тийүү пункттарын алуу жана аныктоо баскычтары:

Эми коддун экинчи бөлүмүндө, биз баскычтын тийүү чекиттерин аныктап, андан кийин баскычты болжолдоо үчүн ушул пункттарды колдонобуз. ts.getPoint () функциясы колдонуучунун TFT дисплейине тийгенин аныктоо үчүн колдонулат. ts.getPoint тийген аймак үчүн Raw ADC баалуулуктарын берет. Бул RAW ADC баалуулуктары карта функциясын колдонуп пикселдик координаттарга айландырылат.

TSPoint p = ts.getPoint ();

эгер (p.z> ts.pressureThreshhold)

{

p.x = карта (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = карта (p.y, TS_MAXY, TS_MINY, 0, 240);

//Serial.print("X: ");

//Serial.print(p.x);

//Serial.print("Y: ");

//Serial.print(p.y);

Эми, биз X жана Y ар бир баскычтын координаттарын билгендиктен, колдонуучу 'if' билдирүүсүн колдонуу менен кайсы жерге тийгенин алдын ала айта алабыз.

эгер (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("Талапкер 1");

Шайлоочу талапкердин кнопкасын басканда, манжанын изинин сенсорунун манжасын сканерлөө суралат. Эгерде манжа идентификатору уруксат берилген болсо, анда шайлоочу добуш берүүгө укуктуу. Эгерде кандайдыр бир катталбаган колдонуучу добуш бергиси келсе, анда манжа изинин модулу системада анын идентификаторун аныктабайт жана дисплейде "Кечиресиз, добуш бере албайсыз" деген жазуу пайда болот.

эгер (fps. IsPressFinger ())

{

fps. CaptureFinger (жалган);

int id = fps. Identify1_N ();

эгер (id <200)

{

msg = "Талапкер 1";

voice1 ++;

EEPROM.write (0, добуш1);

tft.setCursor (42, 170);

tft.print ("Рахмат");

кечигүү (3000);

drawHome ();

3. Жыйынтык:

Акыркы кадам - EEPROM эсинен добуштардын санын алуу жана үч талапкердин добуштарын салыштыруу. Эң көп добуш алган талапкер жеңип чыгат. Натыйжага сериялык монитордон гана кирүүгө болот жана TFT экранында көрсөтүлбөйт.

добуш1 = EEPROM.read (0);

voice2 = EEPROM.read (1);

voice3 = EEPROM.read (2);

эгер (добуш)

{

эгер ((добуш1> добуш2 && добуш1> добуш3))

{

Serial.print ("Can1 утат");

кечигүү (2000);

}

4 -кадам: Arduino аркылуу манжа изинин добуш берүү тутумун текшерүү

Долбоорду текшерүү үчүн Arduino Uno -ны ноутбукка туташтырып, берилген кодду жүктөңүз. Код жүктөлгөндөн кийин, TFT дисплейи талапкердин атын көрсөтүшү керек. Кимдир бирөө талапкердин атын таптаганда, машина манжа изинин сканерин сканерлөөнү суранат. Эгерде манжа изи жарактуу болсо, анда колдонуучунун добушу эсептелет, бирок үлгү маалымат базасынын рекорддоруна дал келбесе, добуш берүү мүмкүнчүлүгү четке кагылат. Ар бир талапкерге берилген добуштардын жалпы саны EEPROMда сакталат жана эң көп добушка ээ болгон талапкер утуп чыгат.

Окутуу сизге жакты жана пайдалуу нерсени үйрөндүңүз деп үмүттөнөм. Эгерде сизде кандайдыр бир суроолор болсо, төмөндөгү комментарийлер бөлүмүндө бизге билдириңиз, жана дагы башка кызыктуу долбоорлор үчүн Instructableде бизди ээрчиңиз.

Сунушталууда: