Этап 6: настройка сканера отпечатков пальцев
Для создания связи с датчиком отпечатков, была использована инструкция Arduino library от Джоша Хоули (прямая загрузка инструкции здесь).
Чтобы отладить работу сканера отпечатков пальцев с буквенным табло, надо загрузить этот файл синхронизации.
Датчик отпечатков пальцев имеет собственную память для хранения отсканированных снимков. Так что после того, как датчик начнет работать, загрузите этот файл регистрации эскизов, добавив его в базу данных отпечатков пальцев под адресом 0. Откройте на компьютере консоль управления и следуйте всплывающим подсказкам.
Коды – Blink Example:
/* Library example for controlling the GT-511C3 Finger Print Scanner (FPS)
*/
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
//Hardware setup - FPS connected to:
//digital pin 10(arduino rx, fps tx)
//digital pin 11(arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground)
//this brings the 5v tx line down to about 3.2v so we dont fry our fps
FPS_GT511C3 fps(10, 11);
void setup(){
Serial.begin(9600);
fps.UseSerialDebug = true; // so you can see the messages in the serial debug screen
fps.Open();
}
void loop(){
// FPS Blink LED Test
fps.SetLED(true); // turn on the LED inside the fps
delay(1000);
fps.SetLED(false);// turn off the LED inside the fps
delay(1000);
}
Коды – Enroll Example:
/*
FPS_Enroll.ino - Library example for controlling the GT-511C3 Finger Print Scanner (FPS)
*/
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
//Hardware setup - FPS connected to:
//digital pin 10(arduino rx, fps tx)
//digital pin 11(arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground)
//this brings the 5v tx line down to about 3.2v so we dont fry our fps
FPS_GT511C3 fps(10, 11);
void setup(){
Serial.begin(9600);
delay(100);
fps.Open();
fps.SetLED(true);
Enroll();
}
void Enroll(){
// Enroll test
// find open enroll id
int enrollid = 0;
fps.EnrollStart(enrollid);
// enroll
Serial.print("Press finger to Enroll #");
Serial.println(enrollid);
while(fps.IsPressFinger() == false) delay(100);
bool bret = fps.CaptureFinger(true);
int iret = 0;
if (bret != false)
{
Serial.println("Remove finger");
fps.Enroll1();
while(fps.IsPressFinger() == true) delay(100);
Serial.println("Press same finger again");
while(fps.IsPressFinger() == false) delay(100);
bret = fps.CaptureFinger(true);
if (bret != false)
{
Serial.println("Remove finger");
fps.Enroll2();
while(fps.IsPressFinger() == true) delay(100);
Serial.println("Press same finger yet again");
while(fps.IsPressFinger() == false) delay(100);
bret = fps.CaptureFinger(true);
if (bret != false)
{
Serial.println("Remove finger");
iret = fps.Enroll3();
if (iret == 0)
{
Serial.println("Enrolling Successfull");
}
else
{
Serial.print("Enrolling Failed with error code:");
Serial.println(iret);
}
}
else Serial.println("Failed to capture third finger");
}
else Serial.println("Failed to capture second finger");
}
else Serial.println("Failed to capture first finger");
}
void loop(){
delay(100000);
}
Файл синхронизации:
Файл регистрации эскизов:
Этап 7: программирование процессора ATtiny85
Микрочип ATtiny85 стоит дешево, и полностью совместим с платой Arduino, наверное, он самая лучшая электродеталь из когда-либо созданных!
Программатор Arduino также нужен, чтобы перепрошить микросхему ATmega328, которая управляет работой ЖК-дисплея.
В собираемом устройстве процессор ATtiny будет выполнять очень простые команды: проверять наличие сигнала от ATmega и открывать дверь гаража, когда сигнал будет подтвержден.
Чтобы запрограммировать работу процессора, его надо подключить при помощи макетной платы к программатору вместе с конденсатором 10 мкФ, как показано на картинке ниже.
А затем загрузить окончательный код и следовать рекомендациям инструкции от High-Low Tech.
После загрузки окончательного кода, выход 13 на плате Arduino, соединённый со светодиодом, нужно перевести в состояние HIGH для отслеживания работы по световой индикации.
Окончательный код для ATtiny:
//fpsAttiny by Nodcah
//Recieves a brief signal from the main module to close a relay
void setup(){
pinMode(2,OUTPUT); //indicator led through 10K resistor
pinMode(4,OUTPUT); //trasistor pin that opens the garage
pinMode(0,INPUT); //input
delay(500); //give things time to start up
digitalWrite(2, HIGH); //indicator LED
}
void loop(){
if(digitalRead(0)){ //simple pattern to trigger the transistor
delay(125);
if(digitalRead(0)==false){
delay(55); //the timings are off because the ATtiny's timer isn't perfect
if(digitalRead(0)){
delay(55);
if(digitalRead(0)==false){
delay(55);
if(digitalRead(0)){
delay(55);
if(digitalRead(0)==false){
digitalWrite(4, HIGH); //transistor "presses" the button
delay(1000);
digitalWrite(4,LOW);
digitalWrite(2,LOW);
delay(1000);
digitalWrite(2, HIGH);
}
}
}
}
}
}
}
ПРЕДЫДУЩИЙ ЭТАП – Сборка платы управления и программирование микроконтроллера
Здравствуйте.
У меня в наличие есть сканер . Можно ли им воспользоваться? Какие библиотеки я должен использовать?
Здравствуйте. Это потребует довольно многих изменений в коде, описанном на этапе 8, но это возможно! Пожалуйста, поделитесь, если вы в конечном итоге разберетесь !!! = D вот код.