Arduino (IoT): Simple Tutorial Medición de Corriente UNO vs NANO

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Medición de Corriente UNO vs Nano

En un tutorial anterior vimos como medir la corriente de un MCU, en ese caso una Tosduino UNO.  El consumo era de 46.5mA mientras esta activa.  Luego la pusimos a dormir mediante un sketch y el consumo bajó a 33.3mA.

En este caso lo comparamos con el consumo de una Tosduino Nano (equivalente a una Arduino Nano) y el consumo es de 28.1mA y baja a 21.1mA mientras duerme.

Aquí podemos ver las imágenes de la diferencia en consumo entre la UNO utilizada arriba (anteriormente) versus la Nano:

Arduino IoT Consumo Energético Uno vs Nano Santiapps Marcio Valenzuela
Arduino IoT Consumo Energético Uno vs Nano

Ahora veamos al poner la Nano en Sleep Mode:

Arduino IoT Consumo Energético Uno vs Nano Santiapps Marcio Valenzuela
Arduino IoT Consumo Energético Uno vs Nano

 

Arduino (IoT): Simple Tutorial Proyecto Iluminación Nocturna v2

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Proyecto Iluminación Nocturna v2

En un tutorial anterior vimos el proyecto de iluminación nocturna y si medimos su consumo con una Nano, vemos que el consumo es de 28.8mA.  Si un día tiene 24 horas estamos hablando de 28.8mA x 24hrs = 691mAh.  Una paquete de baterías 1.5V en serie tienen una capacidad de alrededor de 2500mAh.  Esto significa que nuestro proyecto podría operar durante 2500/691 = 3.6 días.

Hay mucho que se puede hacer para reducir el consumo energético de la MCU.  Como vimos podíamos reducir su consumo a 21.1mA en Sleep Mode pero aun así estamos hablando de 4.9 días de operación.  Como es posible que los juguetes duren mas?  Bueno, las MCU tienen un consumo energético alto debido a la LED que llevan y le regulador de voltaje.  Remover estos componentes puede mejorar el consumo a unos 12mA, lo cual nos daría 8.7 días.

Lo ideal es hacer un IC especifico a nuestro proyecto, sin embargo a menos que tengamos nuestra propia linea de producción, eso es muy costoso.  Otra opción es remover la MCU por completo, lo cual por suerte, en nuestro proyecto de iluminación nocturna es posible.  El PIR tiene la opción de conectarle un photoresistor que lo activara solo en la noche.  Luego usamos la fuente de poder para alimentar el PIR que produce una señal que en lugar de llevarla a una MCU para procesamiento, la conectamos a un transistor que amplifica la corriente para encender la LED cuando el PIR se dispara.

El proyecto final se mira asi:

Arduino (IoT) Simple Tutorial Iluminación Nocturna sin MCU Santiapps Marcio Valenzuela
Arduino (IoT) Simple Tutorial Iluminación Nocturna sin MCU

Esto reduce el consumo a básicamente los 20mA de la LED, que los consumirá durante 10 segundos cada ciclo de disparo.  Si asumimos unos 10 ciclos por noche, en realidad por día o 24 hrs, hablamos de un consumo de 100 segundos al dia.  Esto es alrededor de 0.03hrs, ósea 20mA x 0.03hrs = 0.55mAh lo cual, para 2500mAh de capacidad equivale a 4,166 días.

Arduino (IoT): Simple Tutorial Arduino PHP Web JSON/XML

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Arduino PHP Web JSON/XML

En este tutorial aprendemos a interfaz entre servicios web como openweather.org y lenguajes como PHP para parse JSON o XML y alimentar la Arduino.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Servidor Linux/PHP
  4. Arduino IDE (https://www.arduino.cc/en/Main/Software)
Arduino IoT Simple Tutorial Web JSON XML Santiapps Marcio Valenzuela
Arduino IoT Simple Tutorial Web JSON XML

OpenWeather:

http://api.openweathermap.org/data/2.5/weather?q=Amsterdam,NL&units=metric&appid=suID

Resultado:

{"coord":{"lon":4.89,"lat":52.37},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}],"base":"cmc stations","main":{"temp":24.17,"pressure":1013.79,"humidity":39,"temp_min":24.17,"temp_max":24.17,"sea_level":1013.72,"grnd_level":1013.79},"wind":{"speed":8.56,"deg":79.5083},"clouds":{"all":12},"dt":1463065042,"sys":{"message":0.0123,"country":"NL","sunrise":1463024893,"sunset":1463081183},"id":2759794,"name":"Amsterdam","cod":200}

PHP:

[/code]
<?php
 // retrieve the current weather in Amsterdam in degrees Celcius
 $json = file_get_contents('http://api.openweathermap.org/data/2.5/weather?q=Amsterdam,NL&units=metric&appid=suID');

// parse the JSON
$data = json_decode($json);

// show the city (and the country)
echo ‘<h1>’, $data->name, ‘ (‘, $data->sys->country, ‘)</h1>’;

// the general information about the weather
echo ‘<h2>Temperature:</h2>’;
echo ‘<p><strong>Current:</strong> ‘, $data->main->temp, ‘&deg; C</p>’;
echo ‘<p><strong>Min:</strong> ‘, $data->main->temp_min, ‘&deg; C</p>’;
echo ‘<p><strong>Max:</strong> ‘, $data->main->temp_max, ‘&deg; C</p>’;

// something about the air
echo ‘<h2>Air</h2>’;
echo ‘<p><strong>Humidity:</strong> ‘, $data->main->humidity, ‘%</p>’;
echo ‘<p><strong>Pressure:</strong> ‘, $data->main->pressure, ‘ hPa</p>’;

// and about the wind
echo ‘<h2>Wind</h2>’;
echo ‘<p><strong>Speed:</strong> ‘, $data->wind->speed, ‘ m/s</p>’;
echo ‘<p><strong>Direction:</strong> ‘, $data->wind->deg, ‘&deg;</p>’;

// and what the weather is according to the API (an array)
echo ‘<h2>The weather</h2>’;
echo ‘<ul>’;
foreach ($data->weather as $weather) {
echo ‘<li>’, $weather->description, ‘</li>’;
}
echo ‘<ul>’;
?>

[/code]

 

Resultado:

Arduino IoT Simple Tutorial Web JSON XML
Arduino IoT Simple Tutorial Web JSON XML

Ahora queremos obtener el forecast de los próximos 5 días:

[/code]
<?php
// retrieve the current weather in Amsterdam in degrees Celcius
$json = file_get_contents('http://api.openweathermap.org/data/2.5/forecast?q=SanPedroSula,HN&units=metric&appid=suID');

// parse the JSON
$data = json_decode($json);

// show the city (and the country)
echo ‘<h1>’, $data->city->name, ‘ (‘, $data->city->country, ‘)</h1>’;

for ($x = 0; $x <= 39; $x++) {
// the general information about the weather
echo ‘<h2>Data for ‘,$data->list[$x]->dt_txt,’:</h2>’;
echo ‘<p><strong>Temp_range:</strong> ‘, $data->list[$x]->main->temp_min, ‘ – ‘, $data->list[$x]->main->temp_max, ‘&deg; C</p>’;
echo ‘<p><strong>Pressure:</strong> ‘, $data->list[$x]->main->pressure, ‘</p>’;
echo ‘<p><strong>Humidity:</strong> ‘, $data->list[$x]->main->humidity, ‘</p>’;
echo ‘<p><strong>Weather:</strong> ‘, $data->list[$x]->weather[0]->description, ‘</p>’;
}
?>

[/code]

Para poder servir la info en un arreglo podemos usar este código:

<?php
// retrieve the current weather in Amsterdam in degrees Celcius
$json = file_get_contents('http://api.openweathermap.org/data/2.5/forecast?q=SanPedroSula,HN&units=metric&appid=suID');
// parse the JSON
$data = json_decode($json);</pre>
// show the city (and the country)
//echo '<h1>', $data->city->name, ' (', $data->city->country, ')</h1>';

//create master array
$masterArray = array();
for ($x = 0; $x <= 39; $x++) {
$dataArray = array("timestamp" => $data->list[$x]->dt_txt,
"temp_min" => $data->list[$x]->main->temp_min,
"temp_max" => $data->list[$x]->main->temp_max,
"pressure" => $data->list[$x]->main->pressure,
"humidity" => $data->list[$x]->main->humidity,
"weather" => $data->list[$x]->weather[0]->description);
//echo '<pre>'; print_r($dataArray); echo '</pre>';
array_push($masterArray, $dataArray);
} //end for loop
echo '<pre>'; print_r($masterArray); echo '</pre>';
?>
<pre>

Es importante saber usar server scripts para poder integrarlos a nuestros proyectos de IoT.  Adelante trabajaremos con un proyecto que lee los datos que posteamos de un modulo Arduino a la web para alimentar un proyecto mas avanzado de AI residencial.

Arduino (IoT): Simple Tutorial Válvula Solenoide con un BJT

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Válvula Solenoide con un BJT

En este tutorial continuamos aprendiendo sobre como controlar solenoides.  En el anterior lo hicimos via un FET pero esta vez lo hacemos via un BJT.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Válvula Solenoide de 12V
  4. TIP120 Transistor
  5. Diode
  6. 2 baterias de 9V
  7. Breadboard
  8. Arduino IDE (https://www.arduino.cc/en/Main/Software)
Arduino IoT: Simple Tutorial Valvula Solenoid Santiapps Marcio Valenzuela
Arduino IoT: Simple Tutorial Valvula Solenoid

Una válvula solenoide no es mas que una válvula controlada por un electromagnet, que es esencialmente un motor invertido.  Sabemos entonces que los motores generan contra corrientes.  Como podemos ver en el diagrama de arriba, debemos alimentar la válvula de una fuente y proteger el cerebro (Arduino) de las contra corrientes a través de un diodo.

Al mismo tiempo debemos controlar el flujo de corriente a la válvula a través de un transistor.  Para esto es posible usar un TIP120, enviarle una señal por medio del GATE o BASE.  Podemos ver el siguiente diagrama:

Arduino IoT: Control Solenoid con Arduino Santiapps Marcio Valenzuela
Arduino IoT: Control Solenoid con Arduino

Aquí vemos como una señal desde el pin 13 hacia el Gate del TIP120 abre el flujo para que la solenoide complete el circuito a tierra y como el diodo controla dicho flujo en una sola dirección.

Como seleccionar un BJT:

VCB

VCE

VEB

IC

VBEon

El código:

/* BJT TIP-120
This sketch will blink a LED and at the same time, use the MOSFET to open a 12V solenoid.
Arduino D10 : To LED (Through 330 Ohm Resistor)
Arduino D02 : To MOSFET Gate
*/
int ledPin = 10; // Connect the pin to Arduino pin 10
int mosfetPin = 2; // Connect the MOSFeT Gate (first pin on the left, when writing on the chip is facing you) to Arduino pin 2
void setup(){
 pinMode(ledPin, OUTPUT);
 pinMode(mosfetPin, OUTPUT);
}
void loop(){
 digitalWrite(ledPin, HIGH);
 digitalWrite(mosfetPin, HIGH);
 delay(60000); // Will turn both the LED and the MOSFET on for 60s, it gives you plenty of time to see if water is flowing as expected!
 digitalWrite(ledPin, LOW);
 digitalWrite(mosfetPin, LOW);
 delay(5000); // Will shut down everything for 5s and restart.
}

 

Controlar el flujo de un liquido puede ser muy util para regar plantas y muchas otras aplicaciones mas.

Arduino (IoT): Simple Tutorial Válvula Solenoide con MOSFET

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Válvula Solenoide con MOSFET

En este tutorial introducimos otros switch digital basado en transistores, el MOSFET!

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Válvula Solenoide de 12V
  4. MOSFET IRLB-8721
  5. Diode
  6. Batería 12VDC Lead-Acid (de algún UPS)
  7. Breadboard
  8. Arduino IDE (https://www.arduino.cc/en/Main/Software)
Arduino IoT: Simple Tutorial Solenoide con MOSFET by Santiapps Marcio Valenzuela
Arduino IoT: Simple Tutorial Solenoide con MOSFET

Una válvula solenoide no es mas que una válvula controlada por un electromagnet, que es esencialmente un motor invertido.  Sabemos entonces que los motores generan contra corrientes.  Como podemos ver en el diagrama de arriba, debemos alimentar la válvula de una fuente y proteger el cerebro (Arduino) de las contra corrientes a través de un diodo.

Entra el MOSFET!  Este dispositivo es muy similar a un transistor BJT como el TIP-120, pero es capaz de operar a mayores voltages.  Y esa es la clave, porque a diferencia de un BJT, el flujo de corriente no se activa por medio de un flujo de corriente a la Base como en el caso del BJT.  En el caso del MOSFET el flujo de corriente se activa con un campo (field) eléctrico en la Base.

Otra diferencia es que donde en un BJT tenemos la Base, en el MOSFET tenemos el Gate.  Y el flujo de corriente que queremos controlar no es entre Emitter y Collector sino entre Source y Drain.

Arduino IoT: Simple Tutorial Valvula Solenoid Santiapps Marcio Valenzuela
Arduino IoT: Simple Tutorial Valvular Solenoid with MOSFET

Aquí vemos como una señal desde el pin 3 hacia el Gate del MOSFET IRLB8721 abre el flujo para que la solenoide complete el circuito a tierra y como el diodo controla dicho flujo en una sola dirección.

Como seleccionar un MOSFET:

Vds

Vgs

RDSon

ROJA

El código:

/* MOSFET IRLB8721
This sketch will blink a LED and at the same time, use the MOSFET to open a 12V solenoid.
Arduino D10 : To LED (Through 330 Ohm Resistor)
Arduino D02 : To MOSFET Gate
*/
int ledPin = 13; // Connect the pin to Arduino pin 13
int mosfetPin = 3; // Connect the MOSFeT Gate (first pin on the left, when writing on the chip is facing you) to Arduino pin 3
void setup(){
 pinMode(ledPin, OUTPUT);
 pinMode(mosfetPin, OUTPUT);
}
void loop(){
 digitalWrite(ledPin, HIGH);
 digitalWrite(mosfetPin, HIGH);
 delay(5000); // Will turn both the LED and the MOSFET on for 60s, it gives you plenty of time to see if water is flowing as expected!
 digitalWrite(ledPin, LOW);
 digitalWrite(mosfetPin, LOW);
 delay(5000); // Will shut down everything for 5s and restart.
}

Las conexiones finales usando el perf board se pueden ver aquí:

Arduino IoT: Simple Tutorial Solenoide con MOSFET
Arduino IoT: Simple Tutorial Solenoide con MOSFET

y el video final se puede ver aquí:

Controlar el flujo de un liquido puede ser muy util para regar plantas y muchas otras aplicaciones mas.

Arduino (IoT): Simple Tutorial de Transistores BJT, JFET & MOSFET

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial de Transistores BJT, JFET & MOSFET

En este tutorial hacemos un alto en el camino y repasamos un poco de teoría para entender PN-Junctions, Diodes, BJTs, JFETs y MOSFETs.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Válvula Solenoide de 12V
  4. TIP120 Transistor, Diode N4148, MOSFET IRLB8721
  5. 2 baterias de 9V
  6. Breadboard
  7. Arduino IDE (https://www.arduino.cc/en/Main/Software)

 

Primero entendamos que es un PN-Junction:

pnjunction

Una PN junction se forma al unir 2 semiconductores de distinta composición llamados n-type y p-type.  El n-type tiene mas electrones lo cual atrae hoyos positivos de la p-type.  La p-type tiene mas hoyos positivos lo cual atrae electrones de la n-type.  Esto crea una banda donde no hay flujo eléctrico después de alcanzar este equilibrio debido a que los electrones negativos del n-type quedan bloqueados por la carga positiva de la banda (pn-junction) y vv al otro lado.  Esto es algo muy deseable como veremos.

Arduino IoT PN Junction
Arduino IoT PN Junction

Aquí podemos ver en la izquierda como la banda o pnj creada se llama un Depletion Region a través de la cual no hay flujo eléctrico.  Ahora si conectamos una fuente de poder de forma que le n-type esta conectada a la terminal + de la fuente, los electrones de la n-type son atraídos a la terminal + y vv del otro lado.  Esto agranda la Depletion Zone y el flujo eléctrico se asegura o se restringe aun mas.  Esto se llama Reverse bias y es así como funciona un Diode.

Arduino IoT PN Junction
Arduino IoT PN Junction

En un Diode, si el pnj esta reversed biased, no fluye corriente. Y de que sirve esto!?  Pues en primera instancia, para restringir el flujo de corriente cuando no lo queremos.  Esto es importante para proteger circuitos delicados y caros.  Ahora veamos como hacer que SI fluya la corriente!

Arduino IoT PN Junction
Arduino IoT PN Junction

Si conectamos la bateria con la terminal + al p-type y vv, lo que hacemos es forward bias.  Ahora a pesar que hay una pnj en el centro del pn sandwich a traves de la cual no hay flujo eléctrico, al conectar la bateria los electrones en el n-type son empujados por los electrones negativos de la bateria.  Los hoyos positivos del p-type son empujados por la terminal positiva de la bateria.  Ahora si hay flujo a traves de la pnj.  Aquí tenemos otra representación del pnj que la hacemos Reverse Bias.

Arduino IoT PN Junction
Arduino IoT PN Junction

 

Ahora hagamos algo mas interesante.  En un sandwich de NPN se crean 2 pnj.  No hay flujo eléctrico a menos que apliquemos un pequeño potencial forward bias entre el Emitter y la Base.  Al lograr esto y teniendo otro potencial mas grande conectado entre Emitter y Collector, y debido a que el Emitter es construido con mucho mas electrones que el Collector, los electrones del Emitter viajan a través de las pnj hacia el Collector y los electrones del Collector son atraídos por la terminal + de la fuente de poder.  Voila!  Ahora tenemos un switch digital y esto se llama un BJT!

Arduino IoT PN Junction
Arduino IoT PN Junction

Ahora pasemos a JFETs…

Arduino IoT BJTs JFETs MOSFETs
Arduino IoT BJTs JFETs MOSFETs

Ahora MOSFETs Depletion…

Arduino IoT BJTs JFETs MOSFETs
Arduino IoT BJTs JFETs MOSFETs

Finalmente MOSFETs Depletion/Enhancement…

Arduino IoT BJTs JFETs MOSFETs
Arduino IoT BJTs JFETs MOSFETs

Tratemos de operar una solenoide usando estos componentes.  Pero primero establezcamos los valores de nuestra solenoide usando un multimeter.

  1. Midamos la resistencia de una VDC = 42Ohms = 285mA
  2. Midamos el amperaje = 195mA

Arduino (IoT): Simple Tutorial de PNJ & Diodes

//rcm-na.amazon-adsystem.com/e/cm?o=1&p=13&l=ez&f=ifr&linkID=50610450ab57eae036291d286ac2abd5&t=santiapps17-20&tracking_id=santiapps17-20

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial de PNJ & Diodes

En este tutorial exploramos la base de BJTs y FETs.

Vimos que es un PN-Junction:

pnjunction

Una PN junction se forma al unir 2 semiconductores de distinta composición llamados n-type y p-type.  El n-type tiene mas electrones lo cual atrae hoyos positivos de la p-type.  La p-type tiene mas hoyos positivos lo cual atrae electrones de la n-type.  Esto crea una banda donde no hay flujo eléctrico después de alcanzar este equilibrio debido a que los electrones negativos del n-type quedan bloqueados por la carga positiva de la banda (pn-junction) y vv al otro lado.  Esto es algo muy deseable como veremos.

Arduino IoT PN Junction
Arduino IoT PN Junction

Aquí podemos ver en la izquierda como la banda o pnj creada se llama un Depletion Region a través de la cual no hay flujo eléctrico.  Ahora si conectamos una fuente de poder de forma que le n-type esta conectada a la terminal + de la fuente, los electrones de la n-type son atraídos a la terminal + y vv del otro lado.  Esto agranda la Depletion Zone y el flujo eléctrico se asegura o se restringe aun mas.  Esto se llama Reverse bias y es así como funciona un Diode.

Una forma diferente de explicar es en este diagrama.  Aquí vemos que cuando una pnj se Forward Bias, fluye corriente de + a -.  (NOTA:Esta es la conceptualizacion convencional de la corriente.  En realidad lo que fluye son los electrones en dirección opuesta).  Es por esto que un diode esta Forward Bias en la dirección que queremos via una Depletion Layer o Region delgada.  Por otro lado, un pnj Reverse Biased ocurre cuando la corriente quiere fluir en sentido contrario.  Es aquí donde la Depletion Region se ensancha y no permite el flujo.

Arduino IoT PNJ Diodes
Arduino IoT PNJ Diodes

Aqui podemos ver otra terminologia:

Arduino IoT PNJ Diodes
Arduino IoT PNJ Diodes

Flujo de corriente (convencional) es de Anodo a Catodo (k), ossa de + a -.  Este flujo si esta permitido en un Diode.

Aqui otra imagen:

Arduino IoT PNJ Diodes
Arduino IoT PNJ Diodes

Nuevamente, la corriente convencional no se permite fluir de Catodo a Anodo pero si de Anodo a Catodo.

Arduino (IoT): Simple Tutorial Seguridad Biometrica Huella Digital 3/3

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Seguridad Biometrica Huella Digital

En este tutorial usamos un modulo biometrico de huella digital para brindar seguridad a nuestros proyectos.

Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital Santiapps Marcio Valenzuela
Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. FPS GT511-c1R FPS
  4. Resistores
  5. Breadboard
  6. Arduino IDE (https://www.arduino.cc/en/Main/Software)

El setup continua igual.  Ahora cambiamos el codigo para comparar las huellas digitales en el modulo.

Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital Santiapps Marcio Valenzuela
Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital

El código:

</pre>
<pre>#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
//FPS connected to pin 4 and 5 - see previous schemas
FPS_GT511C3 fps(4, 5);
void setup(){
  Serial.begin(9600);
  delay(100);
  fps.Open();
  fps.SetLED(true);
}
void loop(){
  // if a finger is on the sensor
  if (fps.IsPressFinger()){
    //capture the finger print
    fps.CaptureFinger(false);
    //get the id
    int id = fps.Identify1_N();
    //maximun finger print stored in 200. 
    //Id > 200 is a not recognized one
    if (id <200){
      //finger print recognized: display the id
      Serial.print("Verified ID:");
      Serial.println(id);
      // ...
      // add you code here for the condition access allowed
      // ...
    }else{
      //finger print not recognized
      Serial.println("Finger not found");
       // ...
      // add you code here for the condition access disallowed
      // ...
    }
  }else{
    // wait for finger
    Serial.println("Please press finger");
  }
  delay(100);
}

Al conectar la UNO podemos comparar nuestra huella digital.  Si quisiéramos borrar las huellas digitales solo tenemos que usar el comando:

fps.<span class="pl-c1">DeleteAll</span>();

 

Arduino (IoT): Simple Tutorial Seguridad Biometrica Huella Digital 2/3

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Seguridad Biometrica Huella Digital

En este tutorial usamos un modulo biometrico de huella digital para brindar seguridad a nuestros proyectos.

Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital Santiapps Marcio Valenzuela
Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. FPS GT511-c1R FPS
  4. Resistores
  5. Breadboard
  6. Arduino IDE (https://www.arduino.cc/en/Main/Software)

El setup continua igual.  Ahora cambiamos el codigo para registrar huellas digitales en el modulo.

Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital Santiapps Marcio Valenzuela
Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital

El código:

#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
//FPS connected to pin 4 and 5 - see previous schemas
FPS_GT511C3 fps(4, 5);
void setup(){
 Serial.begin(9600);
 //display messages on the classical serial teminal - DEBUG 
 fps.UseSerialDebug = true; 
 Serial.println("before open");
 fps.Open();
 //call Enroll to add fingerprint
 Serial.println("before enroll");
 enroll();
}
void enroll(){
 // get the first available id for new finger print
 int enrollid = 0;
 bool usedid = true;
 Serial.println("before while");
 while (usedid == true){
 usedid = fps.CheckEnrolled(enrollid);
 if (usedid==true) enrollid++;
 }
 Serial.println("before enrollstart");
 //enrollment start here with the first free id
 fps.EnrollStart(enrollid);
 Serial.print("Press finger to Enroll #");
 Serial.println(enrollid);
 // ***** FIRST MEASURE *****
 // wait for finger press
 while(fps.IsPressFinger() == false) delay(100);
 bool bret = fps.CaptureFinger(true);
 int iret = 0;
 if (bret != false){
 //has a finger print captured
 Serial.println("Remove finger");
 // Enroll step 1
 fps.Enroll1(); 
 //wait for finger removed
 while(fps.IsPressFinger() == true) delay(100);
 // ***** SECOND MEASURE *****
 // Now we need to check the finger print 
 // wait for finger press
 Serial.println("Press same finger again");
 while(fps.IsPressFinger() == false) delay(100);
 bret = fps.CaptureFinger(true);
 if (bret != false){
 Serial.println("Remove finger");
 //enroll step 2
 fps.Enroll2();
 //wait for finger removed
 while(fps.IsPressFinger() == true) delay(100);
 // ***** THIRD MEASURE *****
 //Check Again the finger print
 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){
 //*** SUCCESS third measure are the same -> NOW finger print is stored
 Serial.println("Enrolling Successfull");
 }else{
 //*** FAIL For some reason -> NOTHING STORED
 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");
}
//loop is useless here
void loop(){
 delay(100000);
}

Al conectar la UNO podemos registrar nuestra huella digital.

Arduino (IoT): Simple Tutorial Seguridad Biometrica Huella Digital 1/3

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Seguridad Biometrica Huella Digital

En este tutorial usamos modulo FPS para agregar seguridad biometrica a nuestros proyectos.

Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital Santiapps Marcio Valenzuela
Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. FPS GT511-c1R FPS
  4. Resistores
  5. Breadboard
  6. Arduino IDE (https://www.arduino.cc/en/Main/Software)

El modulo requiere 3.3V y es por eso que usamos 2 resistores para crear un voltage divider para generar 3.3V de los 5V proveídos por la Arduino UNO, o se puede usar el pin de 3.3V.

El setup se ve asi:

Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital Santiapps Marcio Valenzuela
Arduino (IoT) Simple Tutorial Seguridad Biometrica Huella Digital

Vamos a usar una library para facilitar el uso del modulo.  La podemos descargar aqui: https://github.com/sparkfun/Fingerprint_Scanner-TTL

En el primer tutorial queremos simplemente saber si el modulo esta funcionando.

El código:

#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
FPS_GT511C3 fps(4, 5);
void setup(){
  Serial.begin(9600);
  fps.UseSerialDebug = true; 
  fps.Open();
}
void loop(){
  //blink the led
  fps.SetLED(true);
  delay(1000);
  fps.SetLED(false);
  delay(1000);
}

Al conectar la UNO podemos ver como el modulo enciende y apaga su LED interna repetitivamente.  Ahora sabemos que el modulo esta funcionando.  Si no funciona asi, sera necesario medir el voltage saliente del voltage divider para asegurar que estamos obteniendo los 3.3V requeridos.