C: dgito de control.
Existen varios tipos de cdigos de barras, y son los siguientes:
EAN
Code 128
Code 39
Code 93
Codabar
Los primeros dgitos del cdigo de barras EAN identifican el pas que otorg el
cdigo, no el pas de origen del producto. Por ejemplo, en Chile se encarga de ello
una empresa responsable adscrita al sistema EAN y su cdigo es el '780'.
Objetivo
Planteamiento de la solucin
Material
1 Sensor CNY70
1 Resistencia de 330
1 Resistencia de 470
1 Resistencia de 10K
1 Resistencia de 1 K
2m Cable para protoboard
1 Pluma para escribir
Cautn
Soldadura
1 Arduino UNO
Laptop con software para Arduino y MATLAB
1 cable de datos para impresora
1 Cinta de aislar
*Usamos el sensor CNY70 debido al filtro contra luz solar que tiene, debido
tambin al precio ya que es bastante barato (costo $15) y debido a que
segn la datasheet es muy bueno para escaneo de informacin; es decir que
se acoplaba bastante bien a todas nuestras necesidades.
Observando que funcionaba bien se opt por pasar el circuito a una envase de
pluma de escritura, se puso el sensor en la donde se coloca comnmente la punta
de la pluma y adentro del envase se le soldaron las resistencias ocupadas en el
circuito anterior y se dejaron afuera unos cables un poco largos para estos
conectarlos al Arduino UNO y este diera la alimentacin para nuestro circuito.
Una vez realizado lo anterior, el sensor se conect al Arduino UNO y este se
conect a la computadora mediante el cable de datos de impresora despus se
investig como crear un cdigo para obtener la lectura del sensor.
Una vez obtenido esto se investig como crear un enlace entre nuestro
microcontrolador y MATLAB para poder leer los datos que mandaba el Arduino
UNO, ya obtenido se continuo a programar un cdigo que nos pudiera graficar lo
que observaba el sensor y nos lo pudiera representar como 1s si era blanco o 0s
si era negro.
Se prob esto con un cdigo de franjas negras y blancas el cual fue el siguiente.
Se obtuvo la siguiente grfica.
Entrada
Resultados
Se logr crear un lector de barras bastante eficaz y barato si hablamos del tema
comercial, la parte de la decodificacin pensamos que no hubiera sido un gran
gasto de dinero y por lo tanto creemos que hubiera sido una opcin bastante
rentable para leer y decodificar cdigos de barras comerciales, el mayor problema
de nuestro diseo fue la sensibilidad aunque creemos que tal vez con algn
sensor ms caro y por tanto ms sensible podramos hacerlo mucho ms eficiente.
Conclusiones
Se aprendi como se usan los sensores de luz y la ventaja que tienen unos sobre
otros ya que se prob con varios, desde fotoresistencias muy baratas hasta el
sensor CNY70 y se logr ver una diferencia abismal debido al filtro de luz solar
que nos indica la datasheet que tiene el sensor, adems de esto vimos que la
funcin de una pistola lectora de cdigos de barras tiene un principio bastante
complicado que con los conocimientos que tenemos ahora es muy difcil de
replicar y pues tenemos que abordar el problema desde otro ngulo menos
eficiente pero que es ms comprensible para nuestros conocimientos tambin
pudimos ver lo eficiente que es el software de MATLAB para estos anlisis ya que
nos simplifica mucho los problemas de programar y con pocas lneas de cdigo
podemos generar la grfica que tenemos que analizar para decodificar los cdigos
de barras.
Durante la elaboracin de este dispositivo nos enfrentamos a distintos problemas,
los cuales principalmente era la fuente de adquisicin de los datos, ya que para
poder usar un lser que nos ayudara a poder leer un cdigo de barras estndar en
lugar de un led infrarrojo, era necesario realizar un filtraje de luz y realizar ms
procesos, adems de que sera mucho ms costoso. A pesar de los
inconvenientes, el objetivo principal del proyecto fue logrado, ya que entendimos y
observamos como la luz se refleja en las superficies y un ejemplo de ese
fenmeno son los colores que son un resultado de los tipos de onda que se
reflejan en esas superficies, y en este caso las lneas negras contra espacios en
blanco. Al final habiendo logrado conseguir una respuesta a la luz en nuestro
receptor ptico, solo restaba realizar una conversin digital de esa repuesta y nos
apoyamos en un microcontrolador arduino y un programa de Matlab, que a pesar
de ser lo ms sencillo, resulto ser lo ms prctico para la solucin de nuestro
problema.
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
int x;
out1 = analogRead(A0);
Serial.println(out1);
delay(20);
// put your main code here, to run repeatedly:
% parmetros de medidas
tmax = 15; % tiempo de captura en s
rate = 33; % resultado experimental (comprobar)
% preparar la figura
f = figure('Name','Captura');
a = axes('XLim',[0 tmax],'YLim',[0 5.1]);
l1 = line(nan,nan,'Color','r','LineWidth',2);
xlabel('Tiempo (s)')
ylabel('Voltaje (V)')
title('Captura de voltaje en tiempo real con Arduino')
grid on
hold on
% inicializar
v1 = zeros(1,tmax*rate);
i = 1;
t = 0;
b = zeros(1,tmax*rate);
v1(i)=0;
end
x = linspace(0,i/rate,i);
set(l1,'YData',v1(1:i),'XData',x);
drawnow
% seguir
i = i+1;
end
% resultado del cronometro
clc;
fprintf('%g s de captura a %g cap/s \n',t,i/t);
fclose(s);
delete(s);
clear s;
Bibliografa
http://iaci.unq.edu.ar/materias/sistemas_digitales/proyectos/Lector%20de%20c
%F3digos%20de%20barras.pdf
https://es.wikipedia.org/wiki/European_Article_Number
https://es.wikipedia.org/wiki/C%C3%B3digo_de_barras
https://sites.google.com/site/appinventormegusta/ejemplos/lector-de-codigo-de-
barras