Arduino based door lock system

Shawn recently built an RFID electronic door lock that accepts 100 RFID ID cards. Since in his office already was electronic door lock accessed with button code, he thought RFID would be a great addition, so you don’t have to remember the code and also this saves time while entering.

He used parallax RFID readers that can be communicated via serial interface. Control boards are custom built Arduino where Atmega328 gets data from RFID readers and drives relay through transistor. Everything is fairly simple, the only thing that took real effort, to wire the system as office building is quite big and messing with wires is not acceptable. Anyway he’s done the work pretty well, system works. With a bit code cleanup it can be used to accept even more than 100 cards.


Communicating multiple Arduinos through I2C

I2C is great communication protocol allowing to interface multiple devices to only two signal wires. Using it is simple, because I2C peripheral is already included in most microcontrollers. Atmega micros on Arduino also have this peripheral sometimes called TWI (Two Wire Interface). I2C communication is normally single master and one or multiple slaves. Berryjam couldn’t find decent example where multiple slave Arduino could accept multiple tasks from master. So he wrote his own tutorial on this.

He wrote programs for master and slave(s) allowing to send any number of commands. Master sends code number to slave which its hand executes function with assigned code and returns results to master. This way he was able to interface separate arduinos to master where one is responsible for reading sensors and controlling motor, another outputs information to display and so on. In his recent code master is able to send command but also passes up to 5 arguments of data to be passed in to slave function. If you are setting project like modular home automation system, this example may be a good starting point.


Adjusting RTC accuracy with Arduino

Real time clocks like DS3232 is already quite accurate. By default is is specified to be 2.5ppm accurate between temperatures 0ºC and 40ºC. This number means an 80 seconds error during one year. We all know that aging of electronics, temperature and other factors may influence the accuracy. So DS3232 has internal 8-bit aging offset register where clock adjustment can be programmed about ±13ppm.

Kerry set up a simple prototype board where he connected Arduino to RTC chip and wrote small function which access aging offset register and changes its value with new one. Then he was able to measure frequency change with HP5350B microwave counter. He found out that each adjustment step changes clock frequency by 0.1ppm meaning 0.002 to 0.003Hz. Keep in mind that adjustment values stays as long as chip is powered with backup battery.


BASIC computer on ATmega1284P

BASIC programming language was founded back in 1964. Its main goal was to enable people to use computers for their need the easier way. BASIC is generally a high level programming language that from simple form evolved in to modern programming language like Visual Basic .NET. Anyway simple forms of BASIC language still exists and are used in several areas. Microcontrollers are one place where it fits pretty well. Dan has been doing projects with BASIC functionality. His earlier work was done on building Arduino BASIC shield. But eventually he saw the limitations of such approach like low TV out resolution and Arduino dependence.


Having these in mind he decided to build a standalone BASIC computer based on ATmega128P. Using stand alone solution these problems were gone. BASIC computer has a PS/2 keyboard support, TV out and the rest GPIO headers for interfacing purposes. BASIC programs are stored in AVR EEPROM memory. Microcontroller runs TinyBASIC Plus which supports most of common BASIC commands including IO support, system commands, storage, math, etc. BASIC computer is assembled using only through hole components, so building one is really piece of cake.