Friendly Fire Tags from Halo

Fox3455

Active Member
For Worlds I decided to make IFF (Identify Friend or Foe) tags for the 405th. This is essentially lights your reticule red or green. It also tells you on your radar blue dots for friends and red for foe.
1759434959140.png

In this books it is also your team indicator where you have:
Spartan name, status light

I wanted to make something cheap that would show up on a dashboard and was low profile and low power so literally anyone can throw it in their armour at the event without worry. I basically wanted to make it as cheap as possible to propagate as many as I can. For those who don't know what an IFF tag is, how it works, or why the military use such things, the TLDR version is it prevents you from shooting down allied vehicles and aircraft. The long answer is with the speed in which an aircraft flies you need to know much sooner than you can visually confirm whether or not that is a friendly vehicle or not.

To avoid being shot down by both friendlies or avoid putting out unnecessary radio wave, there is a handshake that needs to happen. An interrogator signal is sent by the base to the aircraft. If the signal is recognised, and only if it is recognised, the aircraft responds with a handshake back to the interrogator signal. If this handshake is good your marked as a friendly and if not then you can probably imagine what happens.

For this project I chose to use the ESP-32 Wroom32 which allows for BlueTooth Low Energy (BTLE) which sucks little to no power and really cheap to purchase. It is 18 × 25.5 × 3.1mm, 4 MB flash, and a Xtensa® 32-bit LX7 CPU. The code I wrote uses 81% of the flash memory. It stores the Team ID then computes HMAC(secret, device_id || slot || team_id). BTLE has an effective range of 10m which is done so I am not tracking everyone across Seattle. The difference between an IFF tag in an aircraft and my IFF tag is that is constantly pings out the signal to the server. Obviously this is fine within the context of this project but not practical in real life.
IMG_6851.JPG

For the event I wanted to make a dashboard to show what friendly Spartans are around at any given time. I wanted to declare the team, whose tag it is, and how far away the Spartan is. I wrote the dashboard in Python so it can run on literally anything. This just opens up BlueTooth and listens for the handshake. Using a simple JSON file for referencing what teams use which secret, then takes the RSSI and does this equation round(10 ** ((RSSI_AT_1M - rssi) / (10.0 * PATH_N)) to tell you how far away someone is in meters. Then splash some Falsk and a little bit of style to make it look as in universe as possible:
image.PNG

I will be bringing a laptop and the code to flash other tags for anyone that wants to have one! If you have an HDMI monitor we could spruce up to look like a UNSC monitor that I could plug my Raspberry Pi into then it would be very appreciated! Next steps I am considering making a LoRa Heltec V3 just to make a more accurate version. I am also looking at making a radar to go with it too but this is a post Worlds problem.
 
I'm liking where this is going! Following your progress, and will continue to give you ideas on how to expand it.
I am thinking about how to integrate it into the suit with the rest of Project SENTRY which will get its own build log probably after Worlds. I also want to majorly crank up the range and keep it more inline with how their team system works in universe. It should also add a stronger processor allowing for more onboard processes. All in all there is probably a lot more to come on both projects!
 
For Worlds I decided to make IFF (Identify Friend or Foe) tags for the 405th. This is essentially lights your reticule red or green. It also tells you on your radar blue dots for friends and red for foe.
View attachment 367648
In this books it is also your team indicator where you have:
Spartan name, status light

I wanted to make something cheap that would show up on a dashboard and was low profile and low power so literally anyone can throw it in their armour at the event without worry. I basically wanted to make it as cheap as possible to propagate as many as I can. For those who don't know what an IFF tag is, how it works, or why the military use such things, the TLDR version is it prevents you from shooting down allied vehicles and aircraft. The long answer is with the speed in which an aircraft flies you need to know much sooner than you can visually confirm whether or not that is a friendly vehicle or not.

To avoid being shot down by both friendlies or avoid putting out unnecessary radio wave, there is a handshake that needs to happen. An interrogator signal is sent by the base to the aircraft. If the signal is recognised, and only if it is recognised, the aircraft responds with a handshake back to the interrogator signal. If this handshake is good your marked as a friendly and if not then you can probably imagine what happens.

For this project I chose to use the ESP-32 Wroom32 which allows for BlueTooth Low Energy (BTLE) which sucks little to no power and really cheap to purchase. It is 18 × 25.5 × 3.1mm, 4 MB flash, and a Xtensa® 32-bit LX7 CPU. The code I wrote uses 81% of the flash memory. It stores the Team ID then computes HMAC(secret, device_id || slot || team_id). BTLE has an effective range of 10m which is done so I am not tracking everyone across Seattle. The difference between an IFF tag in an aircraft and my IFF tag is that is constantly pings out the signal to the server. Obviously this is fine within the context of this project but not practical in real life. View attachment 367650
For the event I wanted to make a dashboard to show what friendly Spartans are around at any given time. I wanted to declare the team, whose tag it is, and how far away the Spartan is. I wrote the dashboard in Python so it can run on literally anything. This just opens up BlueTooth and listens for the handshake. Using a simple JSON file for referencing what teams use which secret, then takes the RSSI and does this equation round(10 ** ((RSSI_AT_1M - rssi) / (10.0 * PATH_N)) to tell you how far away someone is in meters. Then splash some Falsk and a little bit of style to make it look as in universe as possible:
View attachment 367649
I will be bringing a laptop and the code to flash other tags for anyone that wants to have one! If you have an HDMI monitor we could spruce up to look like a UNSC monitor that I could plug my Raspberry Pi into then it would be very appreciated! Next steps I am considering making a LoRa Heltec V3 just to make a more accurate version. I am also looking at making a radar to go with it too but this is a post Worlds problem.
Excited to see this in action. As someone else who uses ESP32s on the regular, it's amazing to see what people can do with them. If you need advice on a radar, I might know someone who has built one already
 
Thanks! I’ll probably need help with the radar. I don’t work with hardware so I’m figuring it all out as I go. I have an idea to use the proximity sensor in conjunction with the tag to line up friendlies on the radar with simple “if object and tag are same distance then it is likely a friendly”
 
I wrote "Official" UNSC documentation that I am printing off to bring to Worlds. I have added a nice cover sheet thanks to Arma (seriously a godsend because he taught me a lot about documenting). I added snippets of code and better broke down the thought process on how things work. I also included more explanation on HMAC and how the connection there works and the distance calculations which I will be using later with my radar to determine friendlies on the proximity sensor.

If anyone skims through it and has questions that maybe could be clarified please feel free to ask as I may update the document further. Other than that here it is linked in its entirety.
 

Attachments

  • IFF-Tag-Complete.pdf
    405 KB · Views: 2

Your message may be considered spam for the following reasons:

If you wish to reply despite these issues, check the box below before replying.
Be aware that malicious compliance may result in more severe penalties.
Back
Top