Mundarija:

Arduino yordamida barmoq iziga asoslangan biometrik ovoz berish mashinasi: 4 qadam (rasmlar bilan)
Arduino yordamida barmoq iziga asoslangan biometrik ovoz berish mashinasi: 4 qadam (rasmlar bilan)

Video: Arduino yordamida barmoq iziga asoslangan biometrik ovoz berish mashinasi: 4 qadam (rasmlar bilan)

Video: Arduino yordamida barmoq iziga asoslangan biometrik ovoz berish mashinasi: 4 qadam (rasmlar bilan)
Video: 🦾Оживляем танк с манипулятором на Arduino 2024, Noyabr
Anonim
Arduino yordamida barmoq iziga asoslangan biometrik ovoz berish mashinasi
Arduino yordamida barmoq iziga asoslangan biometrik ovoz berish mashinasi

Biz hammamiz bilamizki, foydalanuvchi ovoz berish uchun tugmani bosishi kerak bo'lgan elektron ovoz berish mashinasi. Ammo bu mashinalar boshidanoq temperament uchun tanqid qilingan. Shunday qilib, hukumat barmoq izlariga asoslangan ovoz berish mashinasini joriy etishni rejalashtirmoqda, bunda foydalanuvchilar uning barmoq izlari taassurotiga ko'ra ovoz berishlari mumkin. Bu tizim nafaqat takroriy ovoz berish ehtimolini yo'q qiladi, balki har qanday manipulyatsiyani oldini oladi.

Shunday qilib, ushbu loyihada biz Arduino Uno, TFT displeyi va barmoq izi sensori yordamida biometrik ovoz berish mashinasining prototipini qurmoqchimiz. Biz ilgari NodeMCU bilan R305 barmoq izi sensori yordamida biometrik tashriflar tizimini qurganmiz, lekin bu erda biz Arduino bilan birgalikda rivojlangan GT-511C3 barmoq izi sensoridan foydalanamiz.

1 -qadam: Biometrik ovoz berish mashinasini yaratish uchun zarur bo'lgan komponentlar

  • Arduino Uno
  • 2,4 dyuymli TFT LCD displeyli ekran
  • GT-511C3 barmoq izi sensori

Bu 2,4 dyuymli TFT displeyi ilgari Arduino bilan IoT asosidagi restoran menyusiga buyurtma berish tizimini yaratish uchun ishlatilgan.

2 -qadam: Arduino yordamida biometrik ovoz berish mashinasining sxemasi

Arduino yordamida biometrik ovoz berish mashinasining sxemasi
Arduino yordamida biometrik ovoz berish mashinasining sxemasi

Ushbu loyihaning sxemasi juda oddiy, chunki biz faqat TFT displeyi va barmoq izlari sensori modulini Arduino Uno bilan bog'laymiz. Barmoq izi sensori VCC va GND pinlari Arduino -ning 5V va GND pinlariga, TX va RX pinlari esa Arduino Uno -ning 11 va 12 raqamli pinlariga ulangan.

2,4 dyuymli TFT LCD displey Arduino qalqoni bo'lib, uni quyidagi rasmda ko'rsatilgandek to'g'ridan -to'g'ri Arduino Uno -ga o'rnatish mumkin. TFT displeyida 28 ta pin bor, ular Arduino Uno -ga juda mos keladi, shuning uchun men barmoq izlari sensorini Arduino -ning orqa tomoniga lehimlashga majbur bo'ldim.

3 -qadam: Manba kodi va bosqichma -bosqich kodni tushuntirish

Arduino yordamida barmoq izlari bilan ovoz berish tizimi loyihasining to'liq kodi maqolaning oxirida berilgan; bu erda biz kodning ba'zi muhim funktsiyalarini tushuntiramiz.

Kod SPFD5408, Software Serial va FPS_GT511C3 kutubxonalaridan foydalanadi. SPFD5408 kutubxonasi - bu asl Adafruit kutubxonasining o'zgartirilgan versiyasi. Bu kutubxona fayllarini quyidagi havolalardan yuklab olish mumkin:

  • SPFD5408 kutubxonasi
  • Dasturiy ta'minot seriyasi
  • FPS_GT511C3

Kutubxonalarni qo'shib, ba'zi muhim parametrlarni aniqlagandan so'ng, dasturlash qismiga o'tishimiz mumkin. Ushbu dasturda uchta bo'lim mavjud. Ulardan biri-ovoz berish mashinasining UI-ni yaratish, ikkinchisi-tugmachalarga tegish nuqtalarini olish va sensorli tugmalarni aniqlash va natijalarini hisoblash va ularni Arduino xotirasida saqlash.

1. UI yaratish:

Men uchta tugma va loyihaning nomi bilan oddiy UI yaratdim. TFT displey kutubxonasi sizga chiziqlar, to'rtburchaklar, doiralar, belgilar, satrlar va boshqa rang va o'lchamdagi boshqa narsalarni chizish imkonini beradi. Bu erda fillRoundRect va drawRoundRect funktsiyalari yordamida ikkita to'rtburchaklar tugmalar yaratiladi. Tft.drawRoundRect funktsiyasining sintaksisi quyida keltirilgan:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t soat, int16_t radiusi, uint16_t rang)

Qaerda:

x0 = X to'rtburchaklar boshlanish nuqtasining koordinatasi

y0 = Y to'rtburchakning boshlang'ich nuqtasining Y koordinatasi

w = To'rtburchak kengligi

h = To'rtburchak balandligi

radius = dumaloq burchak radiusi

color = Rect rangi.

void drawHome ()

{

tft.fillScreen (oq);

tft.drawRoundRect (0, 0, 319, 240, 8, oq); // Sahifa chegarasi

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

tft.drawRoundRect (10, 70, 220, 50, 8, oq); // Ovoz bering

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

tft.drawRoundRect (10, 160, 220, 50, 8, oq); // Ro'yxatdan o'tish

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); // Natija

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Ovoz berish");

tft.setCursor (57, 29);

tft.print ("Mashina");

tft.setTextSize (3);

tft.setTextColor (oq);

tft.setCursor (25, 82);

tft.print ("1 -nomzod");

tft.setCursor (25, 172);

tft.print ("2 -nomzod");

tft.setCursor (25, 262);

tft.print ("3 -nomzod");

}

2. Sensorli nuqtalarni olish va aniqlash tugmalari:

Endi kodning ikkinchi bo'limida biz tugmachaning tegish nuqtalarini aniqlaymiz va keyin tugmachani bashorat qilish uchun shu nuqtalardan foydalanamiz. ts.getPoint () funktsiyasi TFT displeyida foydalanuvchi tegishini aniqlash uchun ishlatiladi. ts.getPoint tegilgan maydon uchun Raw ADC qiymatlarini beradi. Bu RAW ADC qiymatlari keyinchalik xarita funksiyasi yordamida piksel koordinatalariga aylantiriladi.

TSPoint p = ts.getPoint ();

agar (p.z> ts.pressureThreshhold)

{

p.x = xarita (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = xarita (p.y, TS_MAXY, TS_MINY, 0, 240);

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

//Serial.print(p.x);

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

//Serial.print (p.y);

Endi, biz har bir tugma uchun X va Y koordinatalarini bilganimiz uchun, 'if' iborasi yordamida foydalanuvchi qaerga tegganligini taxmin qilishimiz mumkin.

agar (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("1 -nomzod");

Saylovchi nomzod tugmachasini bosganda, undan barmoq izi skanerida barmog'ini skanerlash so'raladi. Agar barmoq identifikatori tasdiqlangan bo'lsa, u holda ovoz beruvchi ovoz beradi. Agar biron bir ro'yxatdan o'tmagan foydalanuvchi ovoz berishni xohlasa, barmoq izi moduli uning identifikatorini tizimda aniqlamaydi va displeyda "Kechirasiz, ovoz berolmaysiz" yozuvi paydo bo'ladi.

agar (fps. IsPressFinger ())

{

fps. CaptureFinger (noto'g'ri);

int id = fps. Identify1_N ();

agar (id <200)

{

msg = "1 -nomzod";

ovoz berish1 ++;

EEPROM.write (0, ovoz1);

tft.setCursor (42, 170);

tft.print ("Rahmat");

kechikish (3000);

drawHome ();

3. Natija:

Oxirgi qadam - EEPROM xotirasidan ovozlarni hisoblash va har uch nomzodning ovozlarini solishtirish. Eng ko'p ovoz to'plagan nomzod g'alaba qozonadi. Natijaga faqat ketma -ket monitor orqali kirish mumkin va TFT ekranida ko'rsatilmaydi.

ovoz1 = EEPROM.read (0);

ovoz2 = EEPROM.read (1);

ovoz3 = EEPROM.read (2);

agar (ovoz berish)

{

agar ((ovoz1> ovoz2 && ovoz1> ovoz3))

{

Serial.print ("Can1 yutadi");

kechikish (2000);

}

4 -qadam: Arduino yordamida barmoq izlari bilan ovoz berish tizimini tekshirish

Loyihani sinab ko'rish uchun Arduino Uno -ni noutbukga ulang va berilgan kodni yuklang. Kod yuklanganidan so'ng, TFT displeyida nomzodning ismi ko'rsatilishi kerak. Kimdir nomzodning nomiga tegsa, mashina barmoq izlari skanerini skanerlashni so'raydi. Agar barmoq izi haqiqiy bo'lsa, foydalanuvchining ovozi hisobga olinadi, lekin agar ma'lumotlar bazasi yozuvlari mos kelmasa, ovoz berishga ruxsat berilmaydi. Har bir nomzod uchun ovozlarning umumiy soni EEPROMda saqlanadi va eng ko'p ovoz to'plagan nomzod g'alaba qozonadi.

Umid qilamanki, sizga darslik yoqdi va foydali narsalarni bilib oldingiz. Agar sizda biron bir savol bo'lsa, iltimos, quyida sharhlar bo'limida bizga xabar bering va boshqa qiziqarli loyihalar uchun "Instructable" da bizni kuzatib boring.

Tavsiya: