Warning: Declaration of Db::query($query) should be compatible with mysqli::query($query, $resultmode = NULL) in /var/www/u1300519/data/www/acoptex.com/_lib/class.Db.php on line 29

Deprecated: Function get_magic_quotes_runtime() is deprecated in /var/www/u1300519/data/www/acoptex.com/_lib/CacheLite/Lite.php on line 757

Deprecated: Function get_magic_quotes_runtime() is deprecated in /var/www/u1300519/data/www/acoptex.com/_lib/CacheLite/Lite.php on line 757

Warning: Use of undefined constant MYSQL_ASSOC - assumed 'MYSQL_ASSOC' (this will throw an Error in a future version of PHP) in /var/www/u1300519/data/www/acoptex.com/_lib/class.Db.php on line 64

Warning: mysqli_fetch_array() expects parameter 2 to be int, string given in /var/www/u1300519/data/www/acoptex.com/_lib/class.Db.php on line 64

Deprecated: Function get_magic_quotes_runtime() is deprecated in /var/www/u1300519/data/www/acoptex.com/_lib/CacheLite/Lite.php on line 757

Deprecated: Function get_magic_quotes_runtime() is deprecated in /var/www/u1300519/data/www/acoptex.com/_lib/CacheLite/Lite.php on line 757

Warning: Cannot modify header information - headers already sent by (output started at /var/www/u1300519/data/www/acoptex.com/_lib/class.Db.php:0) in /var/www/u1300519/data/www/acoptex.com/_config/config.php on line 168

Warning: session_start(): Cannot start session when headers already sent in /var/www/u1300519/data/www/acoptex.com/_config/config.php on line 169

Warning: Use of undefined constant MYSQL_NUM - assumed 'MYSQL_NUM' (this will throw an Error in a future version of PHP) in /var/www/u1300519/data/www/acoptex.com/_lib/class.Db.php on line 92

Warning: mysqli_fetch_array() expects parameter 2 to be int, string given in /var/www/u1300519/data/www/acoptex.com/_lib/class.Db.php on line 92

Warning: Use of undefined constant MYSQL_ASSOC - assumed 'MYSQL_ASSOC' (this will throw an Error in a future version of PHP) in /var/www/u1300519/data/www/acoptex.com/_lib/class.Db.php on line 64

Warning: mysqli_fetch_array() expects parameter 2 to be int, string given in /var/www/u1300519/data/www/acoptex.com/_lib/class.Db.php on line 64
jobs.html_title
0

members

Difficult Basics: Project 022l 4x3 rigid keypad, LEDs, active piezo buzzer, LCD1602 I2C module - security code

of Acoptex.com in UNO

Basics: Project 022l

Project name:  4x3 rigid keypad, LEDs, active piezo buzzer, LCD1602 I2C module - security code

Attachments: sketch1, sketch2, sketch3 and libraries1pitches.h, libraries2

In this project, you need these parts :

1.Aruduino Uno R3 (you can also use the other version of Arduino)

2. 4x3 rigid keypad 1pc

3.Arduino IDE ( you can download it from here  )

4.Jumper cables

5. Breadboard 1 pc

6.LEDs 2 pcs (red and green colors)

7.Resistor 2 pcs (220 Ohm each)

8. Active piezo buzzer 1 pc

9. LCD 1602 I2C module 1 pc

General

We will learn how to connect  4 x 3 rigid keypad, LEDs, active piezo buzzer, LCD1602 I2C module to Arduino board and upload the security code to it.

Understanding a piezo buzzer

See more information here.

Understanding the 4x3 rigid keypad

Keypads are used in all types of devices, including cell phones, fax machines, microwaves, ovens, door locks, etc. They're practically everywhere.

For this project, the type of keypad we will use is a 4 x 3 membrane matrix keypad. This is a keypad that follows an encoding scheme that allows it to have much less output pins than there are keys. For example, the matrix keypad we are using has 12 keys (0-9, *, #), yet only 7 output pins. With a linear keypad, there would have to be 17 output pins (one for each key and a ground pin) in order to work. The matrix encoding scheme allows for less output pins and thus much less connections that have to made for the keypad to work. In this way, they are more efficient than linear keypads, being that they have less wiring. 

Unfortunately, keypads do not usually have pins attached, so we will have to attach some, and the only way to do that is to solder them on. So this is another of our projects where you will have to do a little soldering. Keypads are normally arranged in a grid so that when one of the keys is pressed, it connects a row to a column. A typical arrangement for a 12-key keyboard with numbers from 0 to 9 and * and # keys is shown below:

The key switches are arranged at the intersection of row-and-column wires. When a key is pressed, it connects a particular row to a particular column. By arranging the keys in a grid like this, it means that we only need to use 7 (4 rows + 3 columns) of our digital pins rather than 12 (one for each key). However, it also means that we have to do a bit more work in the software to determine which keys are pressed. The basic approach we have to take is to connect each row to a digital output and each column to a digital input. We then put each output high in turn and see which inputs are high. You can solder seven pins from a pin header strip onto the keypad so that you can then connect it to the breadboard.

Pin headers are bought in strips and can be easily snapped to provide the number of pins required. Now, we just need to find out which pin on the keypad corresponds to which row or column. If we are lucky, the keypad will come with a datasheet that tells us this. If not, we will have to do some detective work with a multimeter. Set the multimeter to continuity so that it beeps when you connect the leads together. Then get some paper, draw a diagram of the keyboard connections, and label each pin with a letter from a to g. Then write a list of all the keys. Then, holding each key down in turn, find the pair of pins that make the multimeter beep indicating a connection. Release the key to check that you have indeed found the correct pair. After a while, a pattern will emerge and you will be able to see how the pins relate to rows and columns. For example below:

Understanding LCD 1602 I2C module

The meaning of LCD1602 marking is Liquid Cristal Display 16 characters by 2 rows, each row displays 16 characters of either 5x7 or 5x8 dot matrix characters.The LCD is available in a 16 pin package. It consists of back light and contrast adjustment function and each dot matrix has 5×8 dot resolution.

As we all know, though LCD and some other displays greatly enrich the man-machine interaction, they share a common weakness. When they are connected to a controller, multiple IOs will be occupied of the controller which has no so many outer ports. Also it restricts other functions of the controller. Therefore, LCD1602 with an I2C bus is developed to solve the problem.I2C bus is a type of serial bus invented by PHILIPS. It is a high performance serial bus which has bus ruling and high or low speed device synchronization function required by multiple-host system. The blue potentiometer on the I2C LCD1602 (see the figure below) is used to adjust the backlight  for better display. I²C uses only two bidirectional open-drain lines, Serial Data Line (SDA) and Serial Clock Line (SCL), pulled up with resistors. Typical voltages used are +5 V or +3.3 V although systems with other voltages are permitted.

Datasheet can be found here.

Signals and contacts of LCD 1602 I2C module

As you can see on the back of LCD 1602 module there 4 connections: GND (-), VCC (+5V), Serial Data Line (SDA) (Arduino SDA pin or analog pin A4)  and Serial Clock Line (SCL) (Arduino SCL pin or analog pin A5).

Signals and connections of 4x3 rigid keypad

Signals and connections of LED

The operating voltage of the LED is 1.8V and the operating current is 10mA-20mA. The Arduino Uno board can supply 5V or 3.3V power. We will use 5V for this project, so the minimum resistance of the current limiting resistor should be (5 V to 1.8 V)/20 = 160 Om. The 220 Om offered in the kit is suitable and you can also choose other resistors that meet the condition. The larger the resistance is, the dimmer the LED will get.

Signals and connections of active piezo buzzer
Active piezo buzzer pin marked with (+) sign should be connected to Arduino Uno board digital pin which sends a signal, the other pin of active piezo buzzer should be connected to Arduino Uno board GND.

Signals and connections of active piezo buzzer

Active piezo buzzer pin marked with (+) sign should be connected to Arduino Uno board digital pin which sends a signal, the other pin of active piezo buzzer should be connected to Arduino Uno board GND.

Wiring

The following picture shows the needed connections with the Arduino Uno

Step by Step instruction

  1. Open Arduino IDE.
  2. Plug your Adruino Uno board into your PC and select the correct board and com port
  3. Open up serial monitor and set your baud to 9600 baud.
  4. Find your I2C address. Each device has an I2C address that it uses to  accept commands or send messages. Load the sketch over at http://playground.arduino.cc/Main/I2cScanner and follow the instructions to use it.  By opening up the Serial monitor window after you upload the sketch, Arduino will scan the address range looking for a reply.  Even though the documentation said it was 0x27, this scanner can detect different (in my case 0x3F).
  5. Modify the sketch in attachments above (you can use the sketch below too): the line LiquidCrystal_I2Clcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE) (See part marked bold).
  6. Verify and upload the the sketch to your Adruino Uno.
  7. Press any of the buttons on the keypad.
  8. This sketch takes input from a keypad for secret code.  If the code is entered correctly it turns on a green LED to simulate access granted and prints access granted in Serial Monitor and on LCD screen. Otherwise the red LED is lit and access denied is printed in Serial Monitor and on LCD screen. Active piezo buzzer will sound different melody in each case.

Summary

We have learnt how to connect 4x3 rigid keypad, LEDs, active piezo buzzer, LCD1602 I2C module to Arduino board and uploaded the security code to it.

Libraries:

  • See attachments on the begining of this project description.
  • We have used the library - NewliquidCrystal_1.3.4.zip which we downloaded, unzipped, changed the name of folder to LiquidCristal and added to libraries in our PC, for example C:\Users\toshiba\Documents\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC.
  • If you have LiquidCristal folder in this location already - delete this folder and copy folder, which was made by you, to this location.
  • pitches.h file contains all the pitch values for typical notes. For example, NOTE_C4 is middle C. NOTE_FS4 is F sharp, and so forth. This note table was originally written by Brett Hagman, on whose work the tone() command was based. You may find it useful for whenever you want to make musical notes.File should be in the same directory with sketch.
  • We have attached the Keypad library but you can also download and install it via the Arduino IDE library manager. If you wanna use our library then download, unzip it and add to libraries in your PC, for example C:\Users\toshiba\Documents\Arduino\libraries or C:\Program Files (x86)\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC.
  • Keypad library is available via the Arduino IDE library manager. Open Arduino IDE, then Sketch->Include Library->Manage Libraries... Then search for Keypad. Once found, click on its entry and the install button will appear. See more information about this library here.
  • EEPROM library is integrated inside Arduino IDE. We also attached it here.
  • Password library we attached too. Download, unzip it and add to libraries in your PC, for example C:\Users\toshiba\Documents\Arduino\libraries or C:\Program Files (x86)\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC.

Sketch:

  • See attachments on the begining of this project description.
  • There are 3 different sketches. Sketch1 /Andrew Mascolo idea/ has default password inserted in code which you can change to yours easily+you can use different password lenght.
  • Sketch2 /Saddam idea/ has default password programmed in code which you can change to yours easily by pressing # on keypad + you can modify code and use different password lenght.
  • Sketch3 max password lenght is 20. when you enter secret code press * to enter. it will check if code is wrong or good. Password you can modify on the begining of the code.


Other projects of Acoptex.com
Medium Basics: Project 083w Sipeed Maixduino board - Using PlatformIO IDE of Acoptex.com in Sipeed Maixduino 08-08-2019
Medium Basics: Project 083e Sipeed Maixduino board - Uploading MaixPy of Acoptex.com in Sipeed Maixduino 04-08-2019
Medium Basics: Project 083f Sipeed Maixduino board - Using MycroPython of Acoptex.com in Sipeed Maixduino 04-08-2019

jobs.published_at
jobs.viewed