Ranger's HUD Progress

What phone do you use?


  • Total voters
    26

RandomRanger

Sr Member
I man i hope so!! looking forward to this!!
As long as my replacment part arrives and there's no issues, I'm writing it (v1.0) tomorrow ;-)
I also play on making a sort of chart showing cost of parts, and what parts/what costs are necessary for which features.

Update: Parts arrived today, a day early and audio's fixed :)
 
Last edited:

RookBartly

New Member
Ok. I’m I. Love. I’ve been trying to figure out how to do this but I’m not so good on the programing side.

I’m working on building my Spartan armor now and working on getting my boomco battle riffle setup with a mag system and ammo display.

Let me know
 

xXDashIVXx

Well-Known Member
Ok. I’m I. Love. I’ve been trying to figure out how to do this but I’m not so good on the programing side.

I’m working on building my Spartan armor now and working on getting my boomco battle riffle setup with a mag system and ammo display.

Let me know
Battle rifle? 0.o did you mean assult rifle? Because if you wrote what I read, I am very interested to see that!
 

RookBartly

New Member
Yeah. I got the boomco gun a few months ago and love it but hate the harmonica magazine. There is a reason that it’s extremely rare to see in real weapons....

So I started to look at the mechanics of the boomco riffle. The system is pretty simple. Just have to move the tube back.... which involves removing the wall housing. Basicly cut out the internals cut a hole for a new magizine in the bottom. Due to relocation of the mag it opens up a lot of space on the front of the weapon. Here is where I’m looking to house the new pressure chamber and a small battery driven pump. I still haven’t figured out mag design yet I’m just working on concept drawings as I’m trying to figure out the best places for stuff.
 

RookBartly

New Member
Battle rifle? 0.o did you mean assult rifle? Because if you wrote what I read, I am very interested to see that!
I have a few ideas but a lot of work to do on the riffle. Maybe I could work a transmitter that could send ammo details to the hud this guy is making but I stuck at the programing side... I’m a mech not a techy

The key features I plan on are....

Relocating mag well
Using a high capacity mag
Flash light
Ammo counter
Battery powered mini compressor (shelf cocking)
Adding an actual barrel (increase accuracy)
Increased pressure tank (holds more air to allow for longer sustained fire)
 
Last edited:

RandomRanger

Sr Member
Ranger's HUD Tutorial v0.1 (click on images)
Parts
Note: Not all parts are required for all features. If you want a quote for how much a certain feature should cost, ask in the thread and I'll do my best for you. There's also a fair amount of wiggle room as far as how much a specific component costs, with currently the only exception being the display. You can also send me a desired budget, and I'll scour the internet's for you to see how many features I can pack in for that, given I understand how to move the parts around and what's really necessary from them.

PartCostFeatures it enables
Raspberry Pi$35Required for all features
Battery bank$xxxPower
Some sort of speaker$5-XXXMusic, audio out, comms, etc.
Aux extender$5Plug in speakers
VuFine Wearable Display$200HUD, Games, Discord
Keyboard$16All features
Mics2x $9 ($18)Voice comms, PA system, external listening
USB audio adapter2x $9 ($18)Necessary for mic in
WiFi Adapter$10-25Internet access
Expanded usb ports$10May be optional, add more usb ports
Build-a-headphone-jack-part$5Helps plug speakers in
Mount Vufine Display$6Mounts the screen to helmet
Jumper wires$6Helps install speakers
Raspi Case$10-25Helps install raspi into helmet
Total$75-400 (ouch)

Overview:
This tutorial will cover how to install a computer into your helmet and get the following features working (with no promises of it being pretty)
  • Music
  • Voice Comms (Discord)
  • Game streaming
Music is provided in two forms: YouTube (which requires little to no effort to setup), and Raspotify which is a 'headless' Spotify client
Voice Comms are provided via Discord and the use of the web browser client (requires some mildly hacky stuff to get it working)
GameStreaming is done via the application Moonlight, which requires a PC with a nVidia graphics card (GTX 650 or higher)

Basic Setup:
Installing the Raspberry Pi:
I don't want to cover how to setup/install the OS on a raspberry pi, as it's beyond scope and has been covered many times elsewhere. Here's their official directions: https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up/2
Here's an overview of installing the os:
We're going to use Raspbian, fyi. Download their NOOBS image, and extract it onto a empty sd card, then put it in the pi, boot up, follow the directions on screen.

The part I need to cover is installing the Pi into your helmet. I used two things for this, one I had a case on my Pi which allowed me to affix velcro to it, and two, I used velcro on it. I am wearing a gen 2 Mk VI helmet, which has a nice slot of empty-space sun-blocking-visor above the... gold-see-through-visor (we need more words for this). Here's what it looks like, I simply velcro'd the pi into this space and it has been working well.
IMG_20190622_184904.jpg

Hopefully that's an easy step, I didn't struggle with it. Interestingly enough I didn't have an issue with the top of my head hitting the pi and becoming uncomfortable and pained.

Installing the power supply:
Next we need to install the power supply. I didn't list a reccomended power supply frankly because there's so many of them and people have widely different budgets. What I recommend looking for in a power supply though is 2 output usb ports (1 for pi, 1 for charging the display if you go for the screen), and that the usb ports are on the end and not on the sides. One of the issues my battery pack has is it with the usb ports on the side, installing it the way I did puts a lot of strain on the USB plug, and I broke one of my cables over time. My helmet came with foam on the inside, and I simply velcro'd it to the back of that foam which has worked well for me. If you don't intend on using the battery outside of the helmet you could use hot glue. I do recommend making sure you have some sort of barrier between the back of your skull and the battery pack because otherwise it would be quite uncomfortable. I also found the foam quite useful for cable management and hiding the cables, though this could also be done with tape if that's not an option for you.
IMG_20190622_185953.jpg
MVIMG_20190622_190031.jpg


Installing the speakers:
First off, what speakers should you buy? It doesn't really matter too much, personally I had a busted bluetooth speaker lying around that I gutted apart and stole the drivers out of. An important thing to note while picking speakers is to make sure they either have female pin connections, or long wires (like 12in), as this will help with the wiring. Don't buy any that don't have wires connected... cause idk what to do then. If you can find speakers with long wires then you don't need to buy the jumper wires listed above.
This one I had a little bit of difficulty with. In order for me to get the speakers installed, I had to first cut holes into the side-foam and put them there:
MVIMG_20190622_190344.jpg

This should be relatively simple, however one of my speakers refused to work with hot glue and I had to resort to gorilla glue (the other one affixed fine). One thing to note while installing the speakers is to make sure that you glue them down in a manner such that the wires attached to them are accessible.
Wiring the speakers:
This is where we use that heaphone jack adapter thing. Using that we are able to connect wires into it and create a headphone jack specifically for the speakers in your helmet.
IMG_20190622_191000.jpg
MVIMG_20190622_191029.jpg
IMG_20190622_191019.jpg

Using that jack, you simply need to connect the wires to the speakers. The headphone jack has labels for L (left speaker) R (right speaker) and ground. In my case, my wires were short so I needed to use jumpers to stretch them to the jack. To do so, I simply plugged a jumper wire into both of the female pinholes and then connected the other wire of the jumper to ground and either L or R depending on what I was plugging in. It is worth noting here that after installing wires here you will have 1 wire in L, 1 wire in R, and 2 wires in ground. It is also worth noting that it does not matter which wire on the speaker you connect L/R and ground to, so long as you connect both L or R and ground. It will work either way.
This isn't necessarily what jumper wires are meant for, so it may be worth taping them onto the speaker connector if they feel like they'll fall out.

If you're using long wires instead of a jumper connection, simply strip the end of the wire (about half an inch) and stick it into the headphone jack's slots, then screw it down. This is a more elegant solution, but my wires weren't long enough.

Once all that is done simply connect the headphone jack to the raspberry pi with the aux cord. If you bought a mic + usb audio adapter, you will want to plug the aux into this as the audio quality is better. Note that in order for sound to come out of the USB adapter instead of the headphone jack you will need to tell the Pi to do so in the settings. How to do this is shown in the mic setup.

If your using a usb sound adapter, I recommend just finding a way to stash it on the side of the helmet using velcro if need be. I was able to get away with simply stuffing it into the side-foam. You can't see it, but it's just sitting right behind this foam:
IMG_20190622_192624.jpg


Installing the internal mic:
This was fairly simple for me, I taped the mic to the bottom of the helmet so that the mic head was pointed at/close to my mouth, and then plugged it in to the USB adapter. You can't see the mic connecting to the adapter because it is behind my side-foam.
IMG_20190622_192957.jpg


Configuring the mic/speakers:
This is all done on the Raspberry Pi. I recommend plugging it into a monitor/TV to work on it, with a full size keyboard/mouse.
First off, sorry for the pictures of a screen. I normally do high quality screenshots, but that's more difficult on a raspberry pi.
So here's the steps, open audio device settings;
IMG_20190622_193443.jpg
IMG_20190622_193454.jpg
IMG_20190622_193505.jpg

In device settings, select the USB Audio Device from the dropdown (there will be two if you got two of them) and click Make Default.
IMG_20190622_193514.jpg

In order to see the settings I do, click on Select Controls... and check all boxes.
IMG_20190622_193528.jpg

Now your audio and mic should be routed through that usb card. At the time of writing, I have not yet gotten functionality out of the second microphone. If you're playing some audio (via youtube or something, covered later) and not hearing anything, try rebooting. Sometimes open applications don't detect the audio device change.

If your mic is quiet, you can increase it's volume on the capture tab in this app.

Getting internet access:
If you bought a wifi card that was advertised with compatibility for the pi then you should be able to plug it in and go. Otherwise, if you bought the one I did you have a 2/3 chance of needing to install drivers for it. In order to do that, follow the instructions found on this site: (UPDATE) Drivers for TL-WN725N V2 - 3.6.11+ -> 4.xx.xx+ - Raspberry Pi Forums

Also I have made a script which will automatically install the right driver version if it is available. The script can be downloaded using
Code: Select all
sudo wget http://downloads.fars-robotics.net/wifi-drivers/install-wifi -O /usr/bin/install-wifi
sudo chmod +x /usr/bin/install-wifi
Use command sudo install-wifi -h for details on how you can use it to download or update the wifi driver. This script will automatically determine the wifi you are using and search for the correct driver to download for the kernel version you are using
That should be it for this. At this point you should now be able to use YouTube using the built in webrowser.

Getting Discord to work:
This is all done on the Raspberry Pi. I recommend plugging it into a monitor/TV to work on it, with a full size keyboard/mouse.
To use discord, we will use the browser version. Unfortunately, the Discord browser does not support the browser we're using and so we have to trick it. First install the chrome web app Chrome User Spoofer. I used that one, but there are many. Once that is installed, use it to switch your user to IE 10.
IMG_20190622_195507.jpg

After this is done, you should be able to use discord via their web app. If you have difficulties getting the mic to work, make sure you have the mic plugged into a usb adapter, and that the usb adapter is set as default in the pi's audio settings. Also make sure that chromium (the browser you're using) has given the site permission for the microphone, this can be done in the browsers settings.

Preparing the display:
This one is tricky and risky, so don't go too quickly.
Here's the hard truth, this display costs $200 (for whatever reason), and we need to smash it. Let me explain. This display works by having a tiny display shine through a lens and into your eye, and because it was intended to be used on a pair of glasses it comes in a fixed plastic case. There's one problem with this, if we leave it in that case it doesn't have the flexibility we need to maneavor it around in the helmet, and leave room for our heads. See here:
IMG_20190127_144334.jpg

That is an early version of my HUD. With the display setup like this it is incredibly difficult to get the helmet on/off without breaking anything (including your eyeball) as the display sticks forward and that black plastic arm is in the middle of the helmet. Fortunately someone else had done a teardown of the display: https://www.reddit.com/r/electronics/comments/7sjdf0 and I was able to see how the insides looked . From this I concluded the only natural solution to an expensive and fragile display not fitting within a tight space that's being worn, removed, occupied, and breathed into, was to start smashing things.
Note this image:
QQgzprM.jpg

Here we can see that the black panel on the inside comes off. I was able to do this without too much difficulty (but I also have an iFixit Pro Toolkit), and you'll want to do that as well. After removing that panel, you'll notice the only thing holding the display on is a tiny plastic tab/bar near the display. See here (thanks for these images u/old_and_limitless)

0gJzKBT.jpg

We want to break that tab/bar thing off so we can slide the display and its flex cable out of the plastic enclosure. Be careful, but not shy. To break it off and open the panel I used my beloved iFixit spatula. Once that is done, break off the curved part of the plastic part of the enclosure. This is now useless and will only get in your way. See mine here:
IMG_20190622_205806.jpg
IMG_20190622_210402.jpg


That, was the easy part.

Mounting the display:
This is the tricky part.
This is where we mount the display inside the helmet. Simple. However, there is one very critical complication here: the display, wherever it is, must be pointed directly at your eye. The smallest deviations can result in either a blurry image, or chunks of the display clipping off (being covered up and not visible). To get around this issue, we bought a mount that allows us to maneauver in 3dimensions. That's the odd screw-on-a-ball thing inside a black cylinder (example of the same hardware holding my Vive lighthouses up). There may be better solutions than this, but this is the best I found. The trick is being able to position something by rotating it in 3 dimentions.
IMG_20190622_211130.jpg

I attempted another method using two hinges glued to each other, but it didn't work. The hinges were too loose and didn't hold their position.
IMG_20190609_200042.jpg


Here's the important thing to know for this step: find a way to fit the mounting hardware, and the display, inside your helmet. For me, the best way that fit was sideways by my chin. If my helmet was shaped slightly differently, I could've also stood it up vertically behind the mouth piece. Just remember to leave room for the mic. Here's what mine looks like:
IMG_20190622_211707.jpg

It may be difficult to see the mounting hardware because it's hidden behind black duct tape, but the display is hot glued to the top 'spinning piece' (intended for a normal use case, like a camera), and then the hardware is simply duct taped to the helmet. Duct tape has problems such as an increased amount of flex, giving me a hard time to keep my display at the correct angle. However, I did this because I had difficulty getting hot glue to bind the hardware to the helmet. I would recommend trying hot glue first, just be sure not to hot glue the bottom part of the black cylinder to the top part as these parts move to allow the tightening of the mount. From here you should be able to (carefully) maneauvour the display into the correct position to see. I did not say doing so would be easy, or comfortable, but it will be possible.

Once you have the display mounted, you can plug it in. Simply connect the display provided cable to the raspi and display, and connect the usb cable to the display and power bank (not technically necessary, but the in-display batter only lasts about 1.5hrs), and route your cables however you choose (I have them hidden behind foam).

If you run into an issue where the display isn't outputting what you expect, try rebooting and re plugging everything, and if that doesn't work disconnect the display from power, sometimes that causes an issue as well.

I do not recommend using this diplay to setup features of the pi, as it is tiny. Develop on a tv, use on the helmet.

Streaming Halo or any other xbox/PC game to the HUD:
This feature is actually a chain of other software features being used together.
Requirements: Xbox One, Windows 10 PC with a nVidia graphics card (GTX 650 or higher)

Note: I heavily, seriously, definitely, recommend having both the pc and the xbox connected to internet/home network using an Ethernet cable, and NOT over WiFi. For a use case like this, WiFi has a really hard time keeping up and is usually too inconsistent to be enjoyable. Yes, the raspberry pi is on wifi, and if you bought the card I bought it'll do ok, but we don't want the PC, the Pi, and the Xbox all on wifi. You have been warned.

Here's the overall process:

Stream the Xbox to the PC using the xbox's streaming feature.
Stream the PC to the raspberry pi using nvidia gamestream via 3rd party app Moonlight

How to do it:
To get xbox -> pc streaming working, follow this tutorial:
or another tutorial of your choosing. Other's have done plenty good jobs explaining how.
Screenshot_4.png


To get pc -> pi streaming, your pc must have nVidia GeForce Experience installed. If you don't have this installed already, shame on you, you've been wasting your graphics card away without utilizing it's fancy features. GeForce Experience is Your Gateway to Great PC Gaming
Once that's installed, make sure to enable shield game streaming from the settings. You may want to double check the settings menu if you are uncertain if your card supports streaming

Screenshot_1.png

Screenshot_2.png
Screenshot_3.png

This game streaming is intended to be used with nVidia's shield devices... which I doubt you own... but we're going to use it anyways.

Once that is done, we need to setup Moonlight on your raspberry pi. I recommend doing this on a tv with a real keyboard/mouse plugged in.
Install Moonlight by following this page here (you are on the Stretch version of Raspbian): irtimmer/moonlight-embedded

Or here's a synopsis of what to do
Add this line to your /etc/apt/sources.list file for Raspbian Stretch based distributions

Run these commands:
wget http://archive.itimmer.nl/itimmer.gpg
sudo apt-key add itimmer.gpg
sudo apt-get update
sudo apt-get install moonlight-embedded
Once that is done, we must pair the raspberry pi with your pc. On your computer, open command promp by going to the start menu and type 'cmd' then hit enter. This should open a command prompt window, when it does run the command 'ipconfig' and look for a series of numbers next to the word 'ipv4'. I should be a number resembling '192.168.1.xxx'. For example mine is 192.168.1.236
Screenshot_5.png


Once you have that number, go back to your raspberry pi and run the command 'moonlight pair 192.168.1.xxx' replacing xxx with the numbers from the ipv4 address you just grabbed. It should output a 4digit code, go back to your PC and enter that code in the prompt that popped up in the lower right corner. If that did NOT happen, double check the ip address is correct, and if that's not it then I recommend googling troubleshooting with 'nvidia shield pair not working' or 'moonlight pair not working'.

Once you've done that, plug an xbox controller into your raspberry pi and run this command
moonlight stream -720 192.168.1.xxx
If you're using a usb audio adapter, run this command instead
moonlight stream -720 192.168.1.xxx -audio hw:1,0
If you have 2 usb audio adapters you may need to run this, depending on which adapter got position 1
moonlight stream -720 192.168.1.xxx -audio hw:2,0
After you run that, you should be able to stream your pc. Now simply connect your pc to the xbox and begin playing!

Disclaimer:
I wrote large portions of this from memory, and there may be some steps missing. If you attempt to replicate this and run into issues, throw me a message and I'll do my best to help you fix it. Chances are I had the same issue and already figured it out. I plan on reviewing and updating this as time goes on.
 
Last edited:

RandomRanger

Sr Member
I think that just about does it for an initial version of the tutorial.
I'm sure I'll be updating it plenty as the days go by, but either way let me know what you think! I'm not done working on the hud, still plenty of features I want to add, improvements to UX to make, and yadda yadda, but I wanted to make the tutorial a living document rather than a monstrocity of a task once I'd 'finished' working on it.


Also, I tried to record a demo video of some of the functionality, namely game streaming, but I found out afterwards the camera was out of focus, and making videos is hard. I may try again later.
 
Last edited:

RandomRanger

Sr Member
TL/DR.


Lol jk this is awesome information! I'm jealous of you tech types.
Yeah, it took me much longer than anticipated to write it because in my mind it's "put this piece here, and that piece there, done." Instead it took 3hrs.

If anything in it is unclear, or could use improvement, please let me know and I'll revise it.
 
Last edited:

RookBartly

New Member
Hey ranger, I have a suggestion for you. It will make your life better while auites up. You should run two microphones. One on each side of the helmet. It’s how I’m wiring mine.

The reason being that the human brain is wired for stereoscopic hearing. This basically means duel channel audio. Left and right. It is how we are able to judge the location of an object making noise by sound. Louder on the left means the sound comes form the left. Louder to the right.... ect... on the spartan helmet there are 4 round recesses below the ears on the jaw line. I’m boring them out to add a mic into the upper holes on each side. I’m looking at a speaker in one of the lowers and a fan duct in the other lower to allow for helmet cooling

Wire each mix directly to the corresponding ear speaker and this will allow you to still listen as if you were not suited up.
 

RandomRanger

Sr Member
Hey ranger, I have a suggestion for you. It will make your life better while auites up. You should run two microphones. One on each side of the helmet. It’s how I’m wiring mine.

The reason being that the human brain is wired for stereoscopic hearing. This basically means duel channel audio. Left and right. It is how we are able to judge the location of an object making noise by sound. Louder on the left means the sound comes form the left. Louder to the right.... ect... on the spartan helmet there are 4 round recesses below the ears on the jaw line. I’m boring them out to add a mic into the upper holes on each side. I’m looking at a speaker in one of the lowers and a fan duct in the other lower to allow for helmet cooling

Wire each mix directly to the corresponding ear speaker and this will allow you to still listen as if you were not suited up.
Yeah, I definitely agree with you. This is something I'd love to do, and as a huge binaural audio fan, and had originally planned to, but decided against in the end due to cost savings and the increased complexity. I'm admittedly having a little more difficulty than I anticipated getting just the two (internal/external) mics working for the moment. I'll definitely let you know if I make this upgrade though, I've been thinking about adding a second, smaller computer to the helmet to help with this kind of stuff if necessary.
 

RandomRanger

Sr Member
Have you thought about using VR Lenses or some Near Eye Display?
I mentioned interest in building a VR version of the HUD in a comment here:

Also, I'm not sure what your definition of Near Eye Display is, but I believe the one I'm using qualifies. I've had the display literally touching my eyelashes and was still able to use it. There's a link provided in the tutorial table above.

Great minds think alike?
 

RandomRanger

Sr Member
Fan installed:
Got my Henry's Helmet Fans today. First off: They are amazing, and well built. Second, after spending 5minuts huffing into my visor to fog it up as best I could, I turned the fan on with the button switch and it was cleared up in seconds. Definitely worth the purchase!!! I'm not even convinced I need to install the second one.
IMG_20190624_175211 (1).jpg
 

Whaledalt

New Member
I'm not sure if you plan on making any changes, but have you considered using/upgrading to a Pi Zero W for the computer? It has wireless and Bluetooth connectivity, a smaller form factor and easier mounting points on the board itself. I currently plan on using one on the project I'm working on. A big thanks for sharing your work process as well, as many people, myself included can learn a lot from you.
 

RandomRanger

Sr Member
I'm not sure if you plan on making any changes, but have you considered using/upgrading to a Pi Zero W for the computer? It has wireless and Bluetooth connectivity, a smaller form factor and easier mounting points on the board itself. I currently plan on using one on the project I'm working on. A big thanks for sharing your work process as well, as many people, myself included can learn a lot from you.
I'm actually putting a lot of thought into the Pi Zero W yeah. One thing I want to do over the next couple weeks is create a HUD tier system that mixes and matches various components to fit different types of budgets, use cases, and features. Part of the reason I used the components I did was because I already owned them (though I have a pi zero non-w too).
One of my concerns with the pi zero w is that it's great it has built in wifi and bluetooth, but those have to be able to perform well enough for some of the features like wireless communication and music streaming, which I have to look into, and depending on the budget it has to be cheaper than a usb based solution.

Yes, I plan on continuously making changes, that tutorial is a living document.
 

RandomRanger

Sr Member
Other good news: I got the external mic working, and playing audio to the speakers.
Bad news: The mic is so quiet, is has little to no effect.
Working on it.
 

RandomRanger

Sr Member
After messing with the mic for 5-6hrs, I think it might be the mic. I've tested 4 mics, but they're all of similar type. They do a good job a detecting voice right next to the mic (as gaming mics, this is good) but very poor at anything more than 3 inches away. Ugh!
I also tried my webcam's mic, but I had difficulties getting thatone to output at all. But hey, the camera worked (not that I'm gonna keep it though)!
 
Top