---
title: "IoTMacroPad"
url: "https://maker.wiznet.io/rudals/contest/iotmacropad/"
markdown_url: "https://maker.wiznet.io/rudals/contest/iotmacropad/md"
type: "Contests"
author: "rudals"
author_url: "https://maker.wiznet.io/rudals/"
original_author: "Kim Kyung Min"
license: "3-Clause BSD License(BSD-3-Clause)"
published: "2024-10-18"
language: "en"
tags: ["Internet of Things", "C/C++", "MQTT"]
hardware: ["WIZnet W55RP20-EVB-Pico", "WIZnet WIZPoE-P1"]
likes: 3
views: 2859
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# IoTMacroPad

> IoTMacroPad - Customizable keypad with IoT service

Original author: Kim Kyung Min

## Components

- **WIZnet W55RP20-EVB-Pico** x 1 ([docs](https://wiznet.io/products/powered-by-raspberry-pi/w55rp20-evb-pico))
- **WIZnet WIZPoE-P1** x 1 ([docs](https://docs.wiznet.io/Product/Open-Source-Hardware/PoE/WIZPoE-P1))
- Software: **MQTT**

## Documents and links

- [IoTMacroPad](https://github.com/rudals/IoTMacroPad) (code): IoTMacroPad C source code
- [IoTMacroPad Schematic](https://maker.wiznet.io/_lib/download.asp?path=project/5864&downfile=schematic0%2Ejpg) (schematics)

## Article

IoTMacroPad is a keypad that combines IoT services with a general macro keypad. It can be used as shortcut keys such as copy/cut/paste/select all on a Windows computer. Additionally, if you modify the content of the shortcut key, it can be used as a guide sign.

IoTMacroPad connects to the MQTT service to send and receive data on a topic basis. To process published messages by IoTMacroPad on a Windows PC, C# application was written and connected to the MQTT Broker to process the topic.

Also, to personally test many devices, I connected the LCD, encoder, buzzer, and keypad to the W55RP20-EVB-PICO board and made them interact with each other.

## **IoTMacroPad Block Diagram**

IoTMacroPad and IoTMacroPad Controller are set as Subscriber and Publisher respectively and are connected to the MQTT service to operate with each other.

![](https://maker.wiznet.io/upload/ckeditor5/669434519%5F1729000252%2Epng)

## **Hardware Implementations**

W55RP20-EVB-PICO, WIZPoE-P1, keypad, buzzer, encoder, LCD were used like below.

![](https://maker.wiznet.io/upload/ckeditor5/450939185%5F1729416011%2Epng)

As shown in the image below, a simple boot log is displayed on the LCD and the main GUI is displayed when booting is complete.

![](https://maker.wiznet.io/upload/ckeditor5/450939185%5F1729416244%2Epng)

## **Software Implementations**

Fuctions and S/W block diagram.

- Receives key events

- Publishes topics

- Parses subscribed messages

- Stores parsed messages in the internal DB

- Publishes messages in the DB when the direction key on Menu1 is pressed.

![](https://maker.wiznet.io/upload/ckeditor5/883247704%5F1729109380%2Epng)

When you rotate the encoder of IoTMacroPad, Two menus appear.

The first Menu0 consists of a total of 8 buttons. The top 4 buttons are Copy/Cut/Paste/Select All that can be used in Windows applications, and the bottom 4 buttons are Web browser/File manager/Calculator/Notepad for each application.

![](https://maker.wiznet.io/upload/ckeditor5/883247704%5F1729105658%2Epng)

The second Menu 1 also consists of a total of 8 buttons. The 4 buttons above are the same as the previous Menu0, and the 4 buttons below are used to output text designated for each key. Please refer to the video below for more details.

![](https://maker.wiznet.io/upload/ckeditor5/883247704%5F1729105646%2Epng)

I wrote the following IoTMacroPad Controller application in C# to process MQTT messages sent from IoTMacroPad on a Windows PC. When run, it is automatically connected to the MQTT service and a message indicating that it is connected to MQTT is displayed in the status bar.

![](https://maker.wiznet.io/upload/ckeditor5/883247704%5F1729109488%2Epng)

When you right-click and select Manager, the below dialog window appears and you can change the button's contents of IoTMacroPad.

![](https://maker.wiznet.io/upload/ckeditor5/23317608%5F1729207315%2Epng)

## **Demo**

[Embedded media](https://www.youtube.com/embed/-gZcZ6qndL8)

---

Source: https://maker.wiznet.io/rudals/contest/iotmacropad/
