loading

Once a time, a friend asked me to make a hotel password panel for his small hotel. He had less than 50 rooms, and a surveillance system, so he just wanted a simple but extendable panel, which could connect to his hotel IOT system in the future.

For this case, it is not suitable to use batch manufacturing process, they are too expensive, such as injection molding shell, metal CNC machining and stamping.

For a commercial product, we have to consider about the design, mechanical structure, electronics, software, it is not an easy job even for a small design company, how to find a shortcut to make a commercial thing easier?

Step 1: M5Stack Is a Integrated Tool Compatible With Arduino

So I choose the M5Stack (www.M5Stack.com) to make this product.

M5 is an Arduino compatible development tool, it has an electronics board with a nice housing. And it can be extended by stacking the other modules.

M5 Core module is a cube box with a monochrome display, three touch buttons, and a encoder switch. ATmega32u4 is inside this module, so we can choose the “Arduino Micro” as the board when we download under Arduino IDE.

Step 2: What I Have Make?

The M5 core module has a mono LCD screen and a nice housing, so I would like to use it as the display screen of the panel, no more troubles.

And plane metal laser cutting and 3D printing are low cost. I prefer using these craft to make.

And this is the finished product made by M5.

Step 3: Hardware

All the items I had used:

1. M5 Core module

2.Metal button keyboard

3.Stainless steel sheet

4.3D printing frame

5.Customized PCB

The metal keypad is bought from the online store(Taobao), it is designed for some industry device and already sold thousand pieces. So it is low cost, easy to be purchased.

A 3D printing framework is designed to mount the M5 module and the keypad.

And a PCB is drew and made to connect the M5 and keypad.

Step 4: Assembly

After all these steps, a nice looking panel is done and can be install in front of the room.

Step 5: Software

I used Arduino IDE to develop the panel program and downloaded into the M5 module.

First to define the keypad rows and columns.

const byte ROWS = 4; //four rows

const byte COLS = 3; //four columns

//define the cymbols on the buttons of the keypads

const char keys[ROWS][COLS] = {

{'1','2','3'},

{'4','5','6'},

{'7','8','9'},

{'*','0','#'}

};

byte rowPins[ROWS] = {5, 12, 11, 7}; //connect to the row pinouts of the keypad

byte colPins[COLS] = {6, 4, 10}; //connect to the column pinouts of the keypadf

Then define different states for the process.

enum

{

STATE_IDLE,

STATE_REPORT,

STATE_CONFIG,

};

And handle the process for the key events.

#void keypadEvent(KeypadEvent eKey)

{

switch (customKeypad.getState()){

case PRESSED:

digitalWrite(Pin_Key_Backlight, HIGH);

M5.Light(255);

g_Key_Backlight_Timer = 2;

#if defined(TRACE_DEBUG)

MySerial.print(eKey);

#endif

switch (eKey){

case '#':

checkPassword();

current_pwd.reset();

break;

case '*':

////------Ring Bell-----------

g_Ringbell_Level = 0;

digitalWrite(Pin_Ring, g_Ringbell_Level);

current_pwd.reset();

M5.ClearScreen();

M5.PutS_2X(2, 2, (char*)pansen_hint);

break;

default:

current_pwd.append(eKey);

unsigned char input_len = strlen(current_pwd.getGuess());

for(char index = 0; index < input_len; index++){

M5.PutS_2X(2+index*16, 36, "*");

}

break;

}

}

}

Step 6: Summary

When I used this method to design the password panel, it only costed me one month to finish the product, and achieve commercial application. I make dozens of this product in front the room, and the hotel get money back quickly from their holiday customers.

My sample codes are on Github:

https://github.com/curiousguy98/M5Lock

And M5 company website is www.M5Stack.com.

Any suggestion, please feel free to contact with me via ryanliang98@gmail.com.

About This Instructable

5,912views

90favorites

License:

More by hihihahaguy:How to Make a Commercial Product Quickly and Low-cost With Arduino Kids_Box 
Add instructable to: