Bluetooth Serial Connection With Windows 10

Recently I have been using a HC 05 Bluetooth module connected to an Arduino and have found it incredibly useful. You can easily connect it to an Arduino serial port and use Bluetooth to communicate with the Arduino as if it were connected through serial USB to a computer.

Most projects and examples have you use the your cell phone because Bluetooth is ubiquitous on them. However, I wanted my daughter to be able to play with my project without monopolizing my phone, so I found the Bluetooth Serial Terminal app. Unfortunately, it has a lot of bad reviews and no instructions, this is because there is a slightly hidden step needed to assign Bluetooth to a com port in Windows 10. I had trouble finding documentation around this, so hopefully this instruction set will help others.

The first step is to pair the HC-05 with your Windows 10 computer. Once it is paired most people open up the Bluetooth Serial Terminal app and find there is nothing to connect to, even though the device is paired.

serialterminal

The Bluetooth device needs to be setup to use a COM port. In order to do this open up the Bluetooth settings and press the More Bluetooth Options link at the bottom.

bluetooth

In the Bluetooth Settings dialog switch to the COM Ports tab and then press the Add button.

BlueToothSettings

In the Add COM Port dialog select the Outgoing (your PC initiates the connection) radio button. Choose the HC-05 device under Device that will use the COM Port drop down and then click OK.

addcom

It will assign the device to a COM port, click OK out of the Bluetooth settings.

settingswithsetup

Return to the Bluetooth Serial Terminal app and click on Refresh List. The HC-05 should now appear in the list and the app will allow you to connect to it.

Terminal With Connection

Wireless Simon

I really wanted to make Simon wireless. The breadboard and cord was a hassle and I didn’t want it to be permanent, so it constantly fell out. As a quick fix I tried using a Bluetooth Shield, however, the pin used to reset the Bluetooth was shared by one of the NXT motors. Depending on the position of the wheel the shield could either communicate or not.

With the quick route unsuccessful, I decided to go ahead and build the wireless Esplora controller describe by Mike Barela on his blog. It look a lot of pieces but has worked great. I set it up with series 1 xBees which were surprisingly easy to get working. My daughter also upgraded his paneling to cardboard because the paper was too flimsy and coming off (he needs a new hat).

SimonSide

Simon now has the Uno, the NXT shield and wireless shield with an xBee on it. The breadboard and Gameport connection is gone. So is the buzzer for now.

ControllerTop

The only deviation from the Esplora Controller on the blog is how it is mounted. I had a partial 3D printed case for the Esplora so I mounted the Esplora inside of it. I then put some balsa wood on the back mounted with double sided mounting tape and screwed all the components to that.

ControllerBack

The programming part is simple. It just sends the character ‘u’, ‘d’, ‘l’, or ‘r’ depending on how the joystick is pressed and moves in that direction as well as displays it on the screen.

ControllerFront

I have a lot planned for the controller now. Besides sending the joystick position there are 4 buttons (and the joystick button) that can be sent. I want to use the linear potentiometer to move a servo attached to the range sensor. There is also the mic which I think my daughter might like yelling at to make things happen.

With the TFT panel I want to be able to display all the sensors coming off of Simon. So the range sensor, color, mics, switches, whatever we put on her. I would also like to get some LEDs on Simon.

The Esplora is a fun product for learning, but fairly useless to for connecting things. Using it as a wireless controller with a TFT panel turns it into an extremely interesting product. It is a discontinued product, but you can still get the Arduino Esplora Board on Amazon.

 

Meet Simon

I have been spending a lot of time working with microcontrollers and circuits. One of my majors goals is to build an awesome, complex robot with my daughter. She has all kinds of ideas for how it should act (and so do I). We have been talking about it since watching Battle Bots, which was renewed for a second season! Here is our first prototype, Simon.

SimonR1

Simon is built with an Arduino Uno and the Lego Mindstorm NXT kit. Her chassis is based on this build. The Arduino connects to the NXT sensors and motors using a Bricktronics Shield. The first version had the GamePad connected through a breadboard and a button sensor on the front that prevented Simon from moving if she was touching something.

SimonTop

I attached a maker board to the top to wire in the Game Pad better. Only the X/Y analog controls are wired up. We also removed the button and connected the ultra sonic sensor instead. On the maker board we also put a buzzer. Now if something is too close to the front of Simon, Simon complains through the buzzer. My daughter like to bug and instead of driving Simon she prefers to get into Simon’s face and make her yell.

SimonSide

Finally, Simon also got dressed up. We placed panels on her, a hat, there are earrings (colored paperclips) and a necklace my daughter made.

The next step for Simon is to attach her to a wireless control using an Esplora.

If you want to meet Simon, we will be the Barnes & Noble Mini Maker Faire at Coronado, for the Sunday night Meet the Maker event.

 

PC ProPad 4 Arduino Code and Connections

This is a followup to my previous post about the PC ProPad 4. I finally got a chance to figure out the full functionality. I wired it up only using the active connections and created a simple sketch to get more specific output from the connections.  I tried to design it so it would work for any GamePort connection.

PC ProPad4 wiring
PC ProPad4 Wiring.
Blue is wired from the X & Y to the analog pins
Green is wired from the buttons to the digital pins
Red is 5v
White is ground

Next a wrote a much more complex sketch specifically for the PC ProPad 4. It allows me to configure interrupts, buttons, speeds, etc. I also wrote it with the intention of controlling a mouse. The Uno only has two interrupts and can’t connect as a mouse, so that part is untested. This sketch and the PC ProPad 4 should ideally be hooked up to a Leonardo or Due. This will allow you to use interrupts for all the buttons and connect it as a keyboard/mouse to the computer.

I will try it on the Netduino, which I believe supports interrupts on all the pins. It seems sending 3v should be fine, I just have to make sure I actually change it to the 3v line so keep the Netduino safe.

The first question I had what was the semi-auto, auto and speed buttons do? When a button is set to semi-auto then holding down the button will continue to fire the bottom (change from high to low). When the button is set to auto, it will fire the button constantly without it being pressed. Once I figured that out I remembered all the Doom 2 games I played with direct modem connections and setting my fire button to auto and having lots of fun.

The second question was what do the speed buttons do? I thought the speed button was some how associated with the analog direction pad, but this is not the case. The two speed settings set how fast the button is pressed when using auto and semi-auto settings. On Speed 1 the button is pressed about every ~30ms. On speed 2 it is pressed as fast as it can. The buttons need to be debounced and you can’t tell the difference between a bounce and the button firing automatically on speed 2, so it really just runs as fast as you are willing to debounce the button.

The next step is to see how this runs on the Netduino, then I’m going to try and create my own PCB board for a GamePort shield.

New Life for an Old Controller

An exciting part about getting into microcontrollers and circuits is finding new life for old pieces of hardware. All my old electronics end up in a plastic tub that collects and collects, but nothing ever happens to it. This tub has been collecting electronics for almost 15 years. Now I can start putting them to use. Good use…I don’t know, but at least use them for learning purposes.

One of the devices I had was a PC Pro Pad 4 that has a ton of buttons and switches, but connects with a Game Port, which is no longer used or made anymore. I decided that I could try a project where I hooked it up and used it as an input device for an Arduino. The final piece I needed was a connector for the game port, I thought I would have to find a sound card and cut off a game port from it. Digging through my electronics I found a PCI Game Port adapter, which worked perfect for connecting to a bread board.

Game Port PCI connector
Game Port PCI connector

I found several useful guides online for hooking up a joystick, so decided I could hook up the Pro Pad. The Pro Pad has 6 buttons, a direction pad, 4 switches for the button fire rate, one switch on the back (a/b), and two speed buttons. I was excited to find out how it used all these buttons considering the game port only has 4 digital pins and 4 analog pins. I assumed it had some crazy custom multiplexing of buttons or something of that nature and so I wired every pin up.

Here is everything setup, the guides I listed above have a great walk through.

Full wiring of Pro Pad 4
Full wiring of Pro Pad 4

The yellow wires come from the analog joystick pins and are connected to ground with 100K resistors. The blue and white wires head to the Arduino analog ports.

Analog Wiring
Analog Wiring

The green wires are connected with 10K resistors to 5v from the button pins and then connected to the Arduino digital I/O headers.

Digital IO Wiring
Digital IO Wiring
Arduino wiring from bread board
Arduino wiring from bread board

With everything wired up I launched Ben Katz’s Arduino Program which outputs the values for the 4 analog and 4 digital ports. It worked great and I was immediately able to see how the A B C & D Buttons worked. The direction pad just the X and Y axis joystick controls and kept the value in the middle. A move up raised the analog Y high, down moved it low. Right raised the X high and left lowered it.

Not as complex as I hoped. It turns out there are only four buttons and the A/B switch on the back changes it from A B C D to A B L R. I couldn’t get the speed buttons to do anything nor the semi-auto/auto switches. I assume these do a quick high/low change for the button state and I will need to use interrupts.

Internals of the PC Pro Pad 4
Internals of the PC Pro Pad 4

With that I opened up the game pad and discovered it only used 8 wires of the 15. I mapped all the wires to their appropriate pins.

Game Port pins for Pro Pad 4
Game Port pins for Pro Pad 4

That’s when I decided to write up all my notes so I can optimize the connections.

My next step for this project:

  • Rewire the breadboard to just what I need
  • Write some new Arduino code to use interrupts and experiment with the Auto fire and speed buttons.
  • Hook it up to a Netduino (I think I need to do something with 5v vs 3.3v?)
  • Solder together my own shield
  • Design and print my own Arduino Shield

Update: Part 2 is here