I am a final-year Bachelor of Technology student majoring in Internet of Things, and while studying ad hoc networks in wireless security networks, I discovered how mesh technology works. I wanted to make my own network to communicate over long distances without Wi-Fi, cellular networks, or even using a mobile telephone switching office or base station. It would run on its own, using nearby devices to form a mesh. I realized how useful this is in case of natural disasters, when ordinary infrastructure like telephone or Wi-Fi goes offline since they rely on central infrastructures. That’s when ad hoc or mesh technology comes into play. This technology amazed me a lot, so I made a minor project around it, which I also posted on Hackster as "LoRa Messenger 1.0".
Communicating with a friend when other networks go offline is kind of interesting😁.
AbstractThe Wio L1 tracker device uses Meshtastic technology to communicate over a mesh network. Unlike cellular or Wi-Fi, these modules use the Nordic nRF52840 chip, which has built-in Bluetooth 5.0 to connect with smartphones. This allows a mesh to be created where the phone connects to the Wio device, and that Wio device connects to another Wio device located farther away. The peripheral
Wio Pad
Enables the Wio module to send text without relying on a cellphone. Using its compact QWERTY-style mini pad, it can send strings of text directly between Wio-to-Wio nodes.
Connecting through magnetic pogo connectors makes it special and portable, allowing rapid connection from the WioPad to the Wio Tracker L1
System OverviewThe Wio-Pad consists of a Wio L1 Tracker module connected to a minimalistic keyboard peripheral via a Grove connector. The Wio Tracker, based on the Nordic nRF52840, runs on Meshtastic firmware to enable long-range, low-power communication over the LoRa SX1262
the diagram illustration show how mesh technology works over devices to devices without using existing infrastucture for communication
When a user types a message on the Wio Pad, the keystrokes are first captured by the keyboard circuit and transmitted to the Wio Tracker via UART or I²C through the Grove interface. The Wio Tracker then encodes the message and sends it over the LoRa mesh network to another Wio device.
On the receiving end, the Wio device decodes the incoming message and forwards it to a connected smartphone via Bluetooth 5.0, where the text is seamlessly displayed in the Meshtastic app.
The Hardware Behind the ProjectI chose to use an ATmega32 for the WioPad. The WioPad has a lot of tactile buttons and some LEDs, and wiring each button to its own digital pin felt a bit… noob. So I thought—why not use a budget MCU to make a proper peripheral? That’s when I decided to go with I²C (Inter-Integrated Circuit), much like how our computers talk to keyboards or mice over USB as part of the HMI. All the buttons are arranged in a matrix pattern, as shown below
Doing matrixification of switches
The matrix I designed has 10 columns and 4 rows. The rows are connected to high signals on the MCU, and whenever a button is pressed, the corresponding column picks up that high signal. That’s the principle behind it—and it means this 40-button matrix can run using only 14 digital pins on the ATmega328, instead of wasting one pin per button. Kinda smart 🙂
There was one tactile switch left, so I decided to connect it directly to a digital pin and make it the ‘send’ button. To go with it, I added an acknowledgment LED that lights up whenever the button is pressed—basically telling you the message has been sent.
Since the WioPad is also able to send special characters, it needed a shift button. For that, I included a WS2812B LED that lights up whenever shift is pressed and held. Just for fun (and aesthetics), I went with the tiny WS2812B in the 2020 package. For now, it’s mostly for looks, but in future versions I plan to give it a real role—like showing notifications or acknowledgments in style
And after putting it all together, the circuit doesn’t just work—it actually looks pretty cool too
Below is the schematic showing all the component values for this PCB. The ATmega328P chip is set up with its basic configuration: a 16 MHz crystal, a pull-up resistor, and a 100 nF DTR capacitor. In addition, there are a few more resistors and capacitors, an LED connected to a digital pin, and all the necessary pads for UART and I²C port
Note: Since the Wio Tracker L1 already has a built-in battery management system for LiPo batteries, I didn’t include any battery-related circuitry in my design. After all, a peripheral isn’t really supposed to carry its own battery
In my case, I’m using a 1.3-inch OLED display.
The WioPad uses the Grove connector’s VCC, GND, D0, and D1 pins as I²C pins, which—as mentioned—is fully supported by the Wio modules. On the Wio modules, we also have a switch and a joystick, which could be used later to add more functions, like toggling through the contact list.
As shown in the image, we’re using only 4 pins of the Grove connector: VCC, GND, D0 as SCL, and D1 as SDA
The Grove connectors[grove ecosystem] are then routed to pogo magnetic connectors, keeping everything neat and portable.
3D Files PreviewAfter fixing the pogo magnetic connectors to the enclosure, it will look like this.
All the attachments for the Wio Tracker L1 remain the same, as I’m not changing anything in the Wio Tracker itself. I simply made a peripheral—the WioPad—that connects to the Wio Tracker L1 through magnetic pogo connectors, fully compatible with the Grove ecosystem.
Here’s how it’s going to connect to the WioPad.
Note: There are still some minor changes pending, but since the submission requires the final design, I’m submitting this version
Software for The Wio-pad
Comments