HACMAD - Handheld Arduino-Based Multi-Sensor

Similar projects worth following
This Project is called the HACMAD and is based on the Star Trek Tricorder. The tricorder is neat handheld device that can sense and measure a galaxy-full of phenomena. The intent of the HACMAD is not to try to emulate the looks or interface of the Tricorder but will serve as a base unit with ‘the potential’ to measure anything the user desires. The base unit will include an LCD screen and a few general input/output devices. Users will have to make their own instruments that attach to the front of the unit via a DB25 connector. Most sensors should be able to be housed in the DB25 connector shell. The connectors will be easily interchangeable.

The goal is for this project to be easily made by even the most inexperience tinkerer as well as enjoyable for Mr/Mrs Electronics Expert. As much as possible the hardware will be based on easily found parts. The brains behind the entire project is an Arduino Uno, the most common Arduino format out there.

HACMAD” is an acronym for Handheld Arduino-Compatible Multiple Accessory Device. If you have a better name, please suggest it. We're not against changing it.

Once the prototype is working reasonably, the code, bill of material and case stl’s will be made available. Users can create their own sensors and sketches to be shared with the world.

My teammate [Steven] is handling the tough part (programming) and I will be focusing on the easy part, the hardware.

  • 1 × Arduino Uno
  • 1 × LCD Screen - 16x2 - I2C
  • 1 × DB25 Jack, Female
  • 1 × Case 3D Printed or Project Box
  • 1 × Potentiometer - 10K ohm

View all 11 components

  • 04-Oct-2014 : Temperature / Humidity Dongle

    CaptainSerious10/05/2014 at 00:21 0 comments

    Back on 20-April, we posted about the Temp/Humidity Dongle. This was slapped together using a modified shell that came with the DB25 connector. Since then we've made a 3D-printable version.

    This dongle uses a Virtuabotix DHT11 Sensor Module. There are 3 pins of the DHT11 that are used, the connections are as follows:

    GND - DB25 Pin 2

    VDD - DB25 Pin 1

    DTA - DB25 Pin 9

    There are 2 resistors, both 100 ohms. One resistor connects DB25 Pin 2 (Gnd) tp Pin 14 and the other resistor connects DB25 Pin 2 (Gnd) tp Pin 15. Quarter-watt resistors were used and are a little big, physically, for this application. Eighth-watt would have been a better choice.

    The rectangular hole in the case fits the sensor nicely. A little hot glue keeps it in place.

  • 04-Oct-2014 : Battery Blunder

    CaptainSerious10/05/2014 at 00:04 0 comments

    It has been a while since I posted anything about this, I know....

    I was trying to rig up a battery today. It is going to be harder than I expected. I over-estimated how much room a battery would take up. Even four AAA's won't fit. I even got a super slim USB battery pack (for charging phones on the go) and it is too big. Part of the problem is the Arduino in/out pins. They are kind of high, then when you plug in a connector, it's even higher and takes up most of the compartment height.

    I have 2 possible solutions:

    1. Remove the Arduino in/out pins and solder wires directly to the board itself. This will be annoying to rewire, for sure.

    2. Make a new case with a bump out for a four-AA or AAA battery pack. This is going to look a little goofy.

  • 28-April-2014 : Source Files Available

    CaptainSerious04/29/2014 at 00:15 0 comments

    The source files are now available at

    What's up there isn't much as of right now as the entire project is only a couple weeks old. We will be adding sensors and files as they are made. If you would like to contribute with code and sensors please do! If you have a good idea for a sensor or accessory, we'd be happy to hear it.

    Available 3D Print files:
    Main Case
    Dongle Shell, Basic-Top (used for whatever)
    Dongle Shell, Basic-Bottom (used for whatever)
    Dongle Shell, Tachometer-Top (use with Basic-bottom)

    Version 0.1 of the sketch has the following capabilities:
    Temp / Humidity Sensor
    Ultrasonic Distance Measurement
    RC Servo Tester

    .... more to come...

  • 27-April-2014 : Ultrasonic Distance Measurement

    CaptainSerious04/28/2014 at 21:21 0 comments

    We used one of those cheap ultrasonic distance sensor devices that everyone likes to use with Arduino projects. We got it working on the protoboard but we don't see how it will be extremely useful to people. It only works for a couple meters. Although it's added to the main HACMAD Sketch, making a custom dongle case for it will be low priority.

  • 27-April-2014 : Tach Dongle

    CaptainSerious04/28/2014 at 21:07 0 comments

    The Tach Dongle is done and the Tach Code has been added to the main HACMAD sketch.

    As expected, I had some printing problems with the Makerbot Replicator 2. The extruder likes to stop extruding. I've tried to print two Tach Dongle cases and got a 50% failure rate, which is about par for the course with this printer. When I got home from the hackerspace, I printed one on my Afinia, I got a little warping near the edge of the 'tabs' but it was and acceptable amount on a non-functional surface.

    Purple:Makerbot failed print | Green:Makerbot completed print | Yellow:Afinia print


    Even with the Makerbot's completed print, look at the pin (top left around the screw hole) that should fit into a recess on the mating piece. It didn't really come out. Check the pin on the yellow case printed on the Afinia... awesome.  

    Here's everything installed, all 4 parts. The Omron EE-SPY302 IR sensor only requires power and ground and it also has one output signal. The sensor shines out IR and gives a signal when it sees it's reflection. 

    This is how it works. A piece of reflective tape is put on a rotating object. The sensor is pointed at the tapes location. As the object is rotating, the sketch works by counting how long it sees the reflection and adds that to how long it doesn't see it's reflection. That total time is how long it takes for one revolution. With some simple math you can take 'time per revolution' and convert it to 'revolutions per minute'.

    Here's the final deal. The sensor also has a red LED that indicates when the sensor sees it's reflection. The square hole in the case allows us humans to see that indicator LED.

  • 26-April-2014 : Pinout

    CaptainSerious04/27/2014 at 02:20 0 comments

    The Arduino to DB25 pinout has been completed. The reason why certain Arduino Pins were made available on the DB25 was to maximize the available Arduino Pin Functions outside of the case.

    Ard Pin        ArdFun      DB25                Case                          Desc

    D0                RX              pin7

    D1                 TX              pin8

    D2                Intrpt                                                                       encoder input

    D3                Int/PWM                                                                 encoder input

    D4                                                            LED                             output LED

    D5                PWM                                   buzzer                        sound output

    D6                PWM                                   LED                             output LED

    D7                                                            Button                        input button

    D8                                                            Button                        input button

    D9                PWM           pin9                                                    PWM out

    D10              PWM/SPI    pin10                                                   SS

    D11               PWM/SPI    pin11                                                    MOSI

    D12              SPI              pin12                                                   MISO

    D13              SPI              pin13                                                   SCK (internal LED)

    A0                                                           Pot                              Potentiometer (1024 values)

    A1                                    pin14               ConfRes                    Configuration Resistor (1024 values)

    A2                                   pin15               ConfRes                    Configuration Resistor (1024 values)

    A3                                   pin4                                                   (1024 values)

    A4               TWI             pin5                                                   LCD SDA (1024 values)

    A5               TWI             pin6                                                   LCD SCL (1024 values)

    Vin                                                         BatPack                      Battery

    GND                               pin2

    5V                                  pin1

    3.3V                               pin3

  • 25-April-2014 : Dongle Shell

    CaptainSerious04/26/2014 at 02:15 0 comments

    Who wants to spend $2.50 on a DB25 Connector Shell at Radio Shack every time you need to make a dongle? Not me. If you have a 3D Printer, you can print them. This is a generic one I drew up and printed tonight. This shell will serve two purposes: 1: be a generic shell that can be modified for 'whatever' sensor, and 2. be the base of custom printable shells that are designed to accept certain sensors or components. 

    Overall, I'd say it came out great. I have to do a couple extremely minor tweaks regarding some fillets, but other than that there was no problem. The two parts have interlocking pins so that they only goes together one way and stay that way when the screws are inserted. 

    Printed on an Afinia H-Series, the best printer ever... Printed in ABS.

    Check out those interlocking pins. Both halves are the same, FYI.

    Mission Accomplished:

  • 23-April-2014 : Servo Tester

    CaptainSerious04/24/2014 at 02:06 1 comment

    Ever wonder if your servo worked or not? Steve-o and I have so he made a prototype servo dongle and wrote up some code to use a potentiometer to move the servo back and forth. On the proto board, the potentiometer is hanging off the white breadboard. We'll be making a nice 3D Printable dongle case for this.

  • 21-April-2014 : First Program

    CaptainSerious04/22/2014 at 02:03 1 comment

    Even though we have a prototype unit, we are still working with the breadboard setup. It is easier to troubleshoot and make changes to. And we did make quite a bit of changes tonight, specifically to the pinouts/pin-configuration.

    The dongle is working as expected. The Arduino can determine that the Temp/Humidity dongle is attached and then runs that specific part of the sketch code.

    Here's the display that we ended up with tonight. It will be tweaked a little to display the temperature in both F and C, but the point is that we can 'read' the dongle type and then utilize the expected sensor. This is a milestone and proves the concept. 

    The next sensor dongle will be a Tachometer to measure rotational speed! 

  • 20-April-2014 : Dongle #1

    CaptainSerious04/22/2014 at 01:55 0 comments

    Today we made the first sensor dongle. As planned, the sensors will sit in a DB25 connector shell and plug into the DB25 jack on the front of the unit.

    The first sensor measures temperature and humidity. The first thing we had to do was cut a hole in the shell for the sensor to poke out from. The sensor needs unrestricted access to the ambient air. 

    Here's the sensor wired up to the DB25 pin.

    The 2 resistors you see here are what the unit measures to determine the function of the dongle. Each dongle will have a different resistor combination.

    Inside and outside of the dongle. 

    Plugged into the prototype unit. This is a connector shell from Radio Shack but the plan is to have 3D printable shells available, both generic and specific to certain components.

View all 13 project logs

Enjoy this project?



SC_Hawk wrote 04/24/2014 at 19:11 point
Sensor Ideas
- Sound dbA
- Ultrasonic Distance with Multiply for squart footage
- Geiger counter
- Light Levels (Lux)
- Color Meter, point at wall, take sample, goto hardware store, meter will tell you when it is pointed at the same color
more to come

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates