Haptic Comlink!




This Haptic Comlink allows someone to feel messages on the wrist or maybe just massages! This is achieved by vibrating pager motors in combinations that represent letters. The main items needed are a micro with 6 outputs, a Darlington array, and 6 vib motors.

10/26/2014 UPDATE- building a version of Tenkey might be a much more fun experiment at this point if you have all these components plus buttons. You only have to rewrite the layout for different numbers of keys/pagers. This projects code has been updated based on upstream code from Tenkey, to work with basically any Arduino using the Serial monitor to send messages to the device.

This project is part of a practicality test for my larger project called Neotype that can be found on Hackday projects here- https://hackaday.io/project/1386-Neotype%3A-Hapti...

In this particular build the Arduino Yun dev board is used from http://canada.newark.com . Check em out! They stock a bunch of interesting dev kits and have informational resources for makers.

Any controller can be used really to get basic functionality, but I take some time to go over some details of the Yun an receiving messages over the web as the tutorial progresses.

Step 1: Matierials List

  1. Mirco- Arduino Yun shown here


  2. Vib motors


  3. Darlington Array


  4. Old sock- salvage
  5. Perf Board- radio shack
  6. thread and snaps - salvage thread and snaps at


  7. battery and powerboost 500c-


  8. female jumpers


  9. headers - salvage
  10. through hole switch - salvage


  1. soldering iron
  2. wire cutters
  3. sewing needle

Step 2: Building Modular Components

Given that this projects purpose is to test and experiment. Taking the extra time to make modular pieces saves time in the end! Modules are all about clutch power, think Legos or little bits! Sandwiching fabric between male headers and female jumpers can provide enough clutch power. Little Velcro can help too.

In using the perf board, the component was laid out first and the perf was snapped to size after.

Vib Motors- Leads on the pagers are teeny and easy to break. Stress relief is essential. Place the vib motor on to the copper side leaving enough clearance (solder touching the motor case is prob bad news) on the opposite side as to where the leads come out for two pads. In this case the leads were woven into the perf board a couple of times then brought in to the same holes of two header pins projecting on the opposite side of the board that the motor is stuck to and soldered in place. Can be secured further to fabric by using stick on Velcro (hooks) on the blank header side.

Darlington- Place the chip and headers into the non-copper side of the board in parallel (header row, chip, header row) and solder in place. Then solder the pins to the corresponding headers. Optionally, cover the finish solder side with a label to shield the connections and mark the pin out.

Power Rail- Solder and 3*3 grid of headers to the perf. Cut out leaving a little extra room for Velcro to stick to. Solder together a 1*3 for the ground rail and a 2*3 for the 5v rail.

Power Supply- In this case a Powerboost 500c and a 2500mah lipo are used. The battery is wrapped with a zippy bag and two pieces of cardboard are used to protect the battery. JST coming out the zip part and into the Powerboost. A strip of duct tape holding the baggy shut also gets fuzzy Velcro to stick the Powerboost and power rail. Also stuck the Yun to the battery in this same manner.

Step 3: Placement and Ergonomics

The shown orientation is proving to be difficult to differentiate between pagers. The modularity allows us to experiment though which is great! Will report back with better configurations!

Step 4: Fastening

This can be done in other ways. For this project I cut and old wool sock into a strip then sewed on two clasp that I found on Adafruit.

This solution works poorly in terms of getting it on, I'm going to experiment with different ways of doing it and report back.

All the modular pieces are fastened with Velcro and by sticking the headers through the fabric and connecting to a female jumper.

Step 5: Wiring



NOTE: Be sure to follow your traces to get a consistent order. It can
be out of order in terms of wiring but then it will need to be corrected in the hardware.ino part of the software. For example: I used the PWM on the Yun which are pins- 3,5,6,9,10,11 My wiring is opportunistic based on jumper length however. So I followed the traces, and corrected the pin order to match the chord order.

byte pagers[]={ 3,5,10,11,9,6,}; // order of traces on Paul's device!

Step 6: Software

10/26/2014 - this project was updated to work on USB serial only to make it more accessible to other arduino boards. You could easily implement the same scheme on the Yun using Console and shh but why bother with the complexity.

The code can be found at github - https://github.com/PaulBeaudet/hapticComlink

Help is welcome, want to get it receiving sms, gtalk, or tweets. Its really just messing around and learning, this is a test for a bigger project.

Step 7: Notes About the Yun

Complexity breeds failure!

The first things I might suggest to a green horn is that if you only need a micro only get a simple one! Nix the wifi or ARM craziness.

With that said, If you decided you want the complexity of the Yun here are a couple of road bump side notes.

Bump 1: Finding the web address to set up Yun initially is a pain... here it is- Go by the ip address to be sure, the name did not route properly on my Linux machine. Otherwise set-up is easy.

Bump 2: Serial/Console, Just do it! SSH into the Yun to understand how it can be more powerful. Now... for someone unfamiliar with Linux this is a bit intimidating, but stay strong. Most commands are very easy to look up! I have to do it and have been using Linux for a long time.

If you are used to serial debugging, it can been done via console when wireless via telnet. Check out the code to see!

Step 8: Layout

The 1s and 0s represent on and off states

The number followed by the # sign represent the number in binary as it would show up as a byte. In the code there is a function that takes a byte value and sets the Vib Motors in the arrangement that the bits show up.

Designed layout- Based on patterns

A-000_001 # 1

B-000_101 # 5

C-110_000 # 48

D-111_000 # 56

E-000_010 # 2

F-011_000 # 24

G-100_001 # 33

H-000_110 # 6

I-000_100 # 4

J-001_110 # 14

K-011_100 # 28

L-001_100 # 12

M-101_000 # 40

N-011_110 # 30

O-000_111 # 7

P-010_010 # 18

Q-011_111 # 31

R-000_011 # 3

S-010_000 # 16

T-100_000 # 32

U-110_011 # 51

V-101_101 # 45

W-001_000 # 8

X-100_011 # 35

Y-011_011 # 54

Z-110_001 # 49


Backspace-(8) 01000_000 # 128//HOLD for Carrige Return (13) Space-(32) 10000_000 # 64



    • Tape Contest

      Tape Contest
    • Trash to Treasure

      Trash to Treasure
    • Arduino Contest 2019

      Arduino Contest 2019

    19 Discussions


    4 years ago on Introduction

    As of today I changed the code to have functionality that is a bit more practical to testing this out. You should be able to use any Arduino hooked up via USB (note: you will still power the pagers with a separate supply like the power boost) Open the serial monitor, type in a message (under 80 characters) and press send and messages can be felt.

    Had intended to take advantage of the Yun's Linux system and wifi, but this was more of a test so it didn't work out that way.


    The way the Arduino IDE works is that it look at the folder name in your sketchbook and opens the similarly name .ino file in the folder. Other .ino files are kinda treated a as dependent continuations to the main .ino file.

    In this case yunPagerWatch should be the name of the folder in your sketchbook. When you open yunPagerWatch.ino, hardware.ino will also as a tab alongside it. So, To answer your question more directly, both are uploaded.

    The reason I do this is mainly to organize the project into its respective components. In theory with more properly written code a benefit is that these files could be ported between multiple programs using similar components. For me it just prevents creating a single .ino with 1000s of lines of code that is much harder to read.


    4 years ago

    Why not use Morse code, especially since its already a standard? You could eliminate all but one or maybe two motors. One on top for dits, one on bottom for dahs. Or just one that does both. And as a side benefit, you become proficient at reading Morse, which is a useful ability to possess if you ever wanted to talk to hams.

    1 reply

    I Agree with the practicality of what you are suggesting. However, this is designed to ultimately work in concert with a "chorded" input system. In which a user can gain proficient speeds that exceed what have been observed with Morse utilizing multiple inputs that can be combined. Now, even with that said, a haptic Morse project would be fun to see! Would only need Android to make the Morse project possible. Have seen Morse keyboards no haptic message readers though.


    4 years ago on Introduction

    I'm sure I missed it somewhere (or could've read that in code), but is a vibration pattern for each letter something you have to memorise to use this efficiently or it has some level of ability to operate intuitively? Just curious, since my master's thesis project included a vibrotactile display.

    9 replies

    Reply 4 years ago on Introduction

    The is a guide in the one of my other repos, I'll copy it over to the readme and maybe it's own step. In the future I would like it to be "aquired" but for the sake of simplicity it just memorized right now.


    Reply 4 years ago

    Paul i am just a 13 year old kid who makes arduino projects for his science compitions at state level in india. i need more help on my projects. plz contact me using
    kik: navneetcs,
    whatsapp: +91 9164569398
    plz contact me bro

    Maybe I still have kik or whatsapp on my tablet but all of my friends
    use other things. More then happy to help if you get stuck on something!


    Reply 4 years ago

    bro paul i need yr help now. plz help. if u have any pnther chattin apps then plz send me yr contact here


    Reply 4 years ago

    plz tell me yr name in kik and number in whats app. i need yr hwlp in my new project.

    Haha sure thing, Anyone can get a hold of me through Google Hangout
    (inof8orATgmail.com) or look up "Paul the inventor Beaudet" on skype, or
    friend me on facebook, messenger works too. Just let me know who are
    when trying to connect!


    Reply 4 years ago on Introduction

    I'll be updating the projects page at

    https://hackaday.io/project/1386 as things move forward with a wrist based computing system that the Neotype system covers.


    4 years ago

    this is a very interesting project. try out my project, it looks like a basic model but it is good