Paso 4: programa!
Tiempo para programar tu arduino. Esto puede ser un poco difícil usar un arduino básico, quizás tenga que presione el botón reset varias veces antes y durante la primera parte de la carga. Una cosa muy importante a recordar, obtendrá un error de subida si no temporalmente Desconecte la línea serie ID-20 a la línea de Rx del arduino. El ATMega168 sólo tiene 1 entrada de Rx y se utiliza para añadir código a hablar con el programador. Desconecte el ID-20 mientras programación luego enchufarlo cuando listo. Usé un programador FTDI que permite programar el arduino a través de USB con 4 cables. El regulador esquemático muestra una conexión de cabecera de pin para que pueda conectar uno directamente. Sparkfun vende también esta parte pero muchos ya lo tenga.
Puede subir fácilmente mi código para el arduino y nunca mirar hacia atrás pero ¿cuál es la diversión en eso? Me explico la idea básica de cómo funciona.
En primer lugar, no quiero ningún externo botones/interruptores, etc. y no quiero programar el arduino cada vez que quería agregar una nueva tarjeta. Por lo tanto quise usar sólo RFID para controlar la operación del circuito así como el control de la cerradura de la puerta.
El programa se enciende el LED azul para indicar que está listo para leer una tarjeta nueva. Cuando la tarjeta se lee decide si es una tarjeta válida o no comparando lo leído en a una lista de tarjetas válidas. Si el usuario es válido, el arduino el LED azul se apaga y el LED verde se enciende durante 5 segundos. También se convierte en otra salida alta durante 5 segundos. Esta salida está conectada con el transistor TIP31A y permite que el pequeño arduino controlar una mucho más grande 12v 300mA cerradura sin deteriorarse. Después de 5 segundos las cerradura vuelve a cerraduras de la puerta y el LED vuelve a azul a esperar otra tarjeta para leer. Si la tarjeta no es válida entonces el LED cambia a rojo durante unos segundos y de nuevo al azul para esperar otra tarjeta.
Es importante que la cerradura de la puerta todavía trabajo aunque el arduino pierde potencia durante la noche o se restablece. Por lo tanto todo tarjeta de ID ' s se almacenan en la memoria EEPROM. El ATMega168 tiene 512 Bytes de memoria EEPROM. Cada tarjeta tiene un número de serie de 5 bytes Hex y una 1 suma hexadecimal Byte comprobar que podemos usar para comprobar que había no hay errores en la transmisión entre el ID-20 y el arduino.
Tarjetas válidas se almacenan en la EEPROM utilizando el primer Byte como un contador. Por ejemplo, si hay 3 tarjetas válidas almacenan el primer Byte en la EEPROM sería 3. EEPROM.read(0); = 3. Sabiendo esto y el hecho de que cada identificador de 5 Bytes de largo sabemos que es de 1-5 tarjeta, 6-10 es la tarjeta 2 y 11-15 es tarjeta 3. Podemos hacer un bucle que mira a través de los bytes de EEPROM 5 a la vez y trata de encontrar la carta que fue leída en el lector.
Pero ¿cómo podemos agregamos nuevas tarjetas al EEPROM después de instala el circuito??? He leído en una de las tarjetas RFID tengo y duro codificado para que sea la tarjeta RFID de maestro. Así que incluso si la EEPROM toda se limpia la tarjeta maestra todavía funcionará. Cuando se lee una tarjeta, comprueba primero para ver si es la tarjeta principal, si no, entonces sigue a ver si es una tarjeta válida o no. Si la tarjeta es la tarjeta principal tenemos el arduino ir en un "modo programación" donde parpadea RGB y espera otra etiqueta válida ser leído. La siguiente etiqueta en la que se lee se agrega el siguiente punto libre en la EEPROM y el contador es 1 incrementado si la tarjeta no existe en la memoria EEPROM. El lector entonces vuelve al modo normal y espera una nueva tarjeta ser leído.
Actualmente no he programado una manera de borrar una tarjeta como las razones para eliminar una tarjeta más probable es que sea perdido o robado. Como esto es muy probable que se utilizaría con 1-10 personas lo más fácil sería duro programa una tarjeta Maestro borrado que enjugará todas las tarjetas de la EEPROM, luego re agregue a todos, que sólo toma unos segundos. He añadido código para borrar la EEPROM pero no he implementado esta característica todavía. .
Se adjunta el código en un archivo de texto junto con una copia de la lista de piezas.