12/27/2020 at 19:31 •
Don't you dare think that we're done with the Lasertag just yet!
We just... We have a backlog of stuff here, we had an amazing time finishing a few really good #Some Christmas gift presents (will have to be updating that one later too, it is turning out really nice :D), BUT
We FINALLY bought it! The Principle Sound Design Sci-Fi weapon SFX Unity asset we have been dreaming about for oh so long.
It was reduced by 30%, and now that we finally have OPUS encoding we can store compressed audio, allowing us to have 20 times more sound effects in the same storage space, meaning it's actually worthwhile to get high-quality SFX and slap them in there!
The SFX pack has a huge list of weapon designs, some of which are just blowing us away, but we will need to rewrite the entire gun handling core to make use of things like energy-beam weapons and the different pre-charge/post-charge effects.
You can see a first rough draft of the improved effects here:
Oh, and on another note, a few people have shown interest in trying out the VSYL Emitter Type, which is a type of IR laser instead of regular IR diode. It could seriously improve the transmission distance of the Lasertag.
Look down into the comments to see how it's going!
11/09/2019 at 20:07 •
Whew, so ... Finally.
Before I start rambling on about stuff, I'd like to share a proper video demonstrating a handful of features that are now fully functional and supported in the Lasertag code <3
This means that my system is fully functional and useable for games, with everything you'd need to set it up:
- Team selection before the game
- Gun reloading and switching during the game
- Configurable parameters like damage, life regeneration, revival, team damage etc.
- Beacons to allow for King Of The Hill gamemodes, as well as Capture The Flag with a bit of trickery.
- Stats tracking of Kills, Deaths, Damage done and received and self-healing done.
- Registering and starting of different games via MQTT, meaning a headless server is also doable now.
- A slightly crude but still useable Webinterface (that I'll polish uh ... Eventually >.>)
And I also spent all the time needed to build and wire up four of these sets all by myself, which was fun, but also a surprising amount of work.
As of this time, I've completed my list of issues and ideas I wanted to implement, have successfully avoided feature-creep and am a bit out of breath :P
This means I can finally put this project's development back on pause for a well deserved break while I focus on Uni.
Trust me, this is not the end, and you will see more progress on the webinterface and some general polishing all around once I feel like it again - but for now I am really more than happy with the system, and it's time to enjoy the fruits of my labour by inviting my friends over for a round or two <3
10/24/2019 at 20:09 •
Alright, just a quick poke for all you guys somehow still following along.
Over the last few days I have been refining the whole game control system a little, there certainly were some bugs to squash but nothing out of the ordinary.
I also took some time to set the new Raspberry Pi up properly - and I might do an instruction on how to get a nice WiFi AP setup with internet forwarding, so you guys can do that stuff yourselves.
The important news here is that the new Raspberry Pi + better WiFi stick have massively improved the connection stability of the Lasertag, which is a huge relief and improves the gameplay!
There has also been a huge bunch of extra code documentation that I did, and now all the important Ruby library functions have been documented with YARD. I've also pushed a first version of the libraries onto Rubygems, who has been refusing to build my documentation ever since, so I can't show it off for now :C
Seriously, if you know how to fix this, please tell me.
Oh, also, a friend offered me to mill the vest detector PCBs, and they're on their way right now. They already look great, and will be much better to use than hand-wired breadboard stuff and eeeeh >->
And as one last thing:
We switched the IR Protocol around a little, to a DIY library we call "XIRR". The nice thing is that we already have AVR code ready for another project - IR Bacon.
We already reprogrammed them to be small positioning beacons for the lasertag game, which opens up a TON of possibilties, from Payload and Capture-point games to Kill and Revive zones or "safe" regions to play in.
It's awesome, and I will definitely show those new features off when we complete the vest sensor boards :>
10/13/2019 at 18:36 •
It's been a while since I last posted a log, so I felt like doing it now - it's an opportune moment for a number of reasons.
Firstly, the new hardware is now pretty much 100% supported, all the way from the new navigation switch to the gyroscope. This includes support for the Ruby backend, as well as a few snippets of template code that already show off how useful these new elements are!
My favorite example is the gyroscope. It can detect when the weapon is pointing up or down - so at the start of the match, players can choose their team simply by picking up the weapon at a certain moment. I call that quite useful!
Secondly, the Ruby backend is also nearly complete - not just for the new hardware, but for a completely overhauled game control system.
With the current code, it's very easy to define various states of your game (such as starting, team selection, prep, active gameplay and a post-game celebration), and switch between these manually.
There's also a way to register various configurations of games into Ruby, and select a game via MQTT, meaning that it's now feasible to set up a central, "always on" server from which games can be started!
More importantly, with the individual Lasertag components coming to a polished state, we have started working on the system as a whole.
We bought a new Raspberry Pi 3 A+, which we will turn into a proper central LZRTag server. It will have more power than the RPi Zero we are using right now, but more importantly, it also has a USB and Ethernet port, giving us much better connectivity options than with just the Zero.
The extra processing power will also be relevant to host a webserver!
That's right, we finally started to work on the Lasertag's web app. React + MQTT is turning out to be a perfect combination, and we were already able to extract all relevant information on players and display it live!
We'll have to create a good design first, and especially optimize the whole thing for mobile viewing as well as for a big "scoreboard" screen, but those tasks are surmountable.
Well, right now there just is a lot of small, disconnected stuff going on. Showing each element off individually will be tricky.
Once we properly set up the Raspberry 3 A+ and got all five current sets running with an example game though, we will definitely provide you guys with a rich video showing off the features of our system!
There will also be more documentation incoming on the Ruby gem and setting up the Raspberry Pi as we go along, and we're almost done tweaking the 3D printed casing for the new system and will be uploading a zip with the files soon!
09/23/2019 at 20:34 •
That's what I'm counting on~
I used to want you to beep, but now I only want you ooonn~
Heh, couldn't help myself there.
A lot has been happening with the Lasertag sets recently. Sadly, most of it has to do with internal reconfigurations and polishing. I'm slowly working on adding the new features that the hardware has given me, and it has been going very well!
The Nav Switch works super well, the weapon's power supply is stable, charging works just fine... The Ruby-Side is getting a good amount of affection too, making sure it's the best it can be for the new stuff.
But ... I felt like doing something ... Silly. Something to really savor what it means to have four whole Lasertag sets at once. And there was no better way to do that, than to make them play "Cara Mia", the Portal 2 turret song in the end sequence.
One thing that really swept me off my feet here was an experience that I think many of you can cherish.
While trying to play the song, bugs and glitchy sounds kept popping up. I thought it was some kind of malfunction, maybe a faulty packet transmission... But when I cleared up the typo that caused a unsigned vs. signed calculation, it suddenly all came together as a ... Frankly quite stunning melody.
We hackers deal with randomness and glitches all the time, constantly trying to turn it into some form of pattern, rhythm, music, or art. It was quite poetic, really.
09/18/2019 at 09:07 •
Aw hell yeah <3
Aisler took its time with delivering the PCBs, so this project log is coming up a little later than expected.
However, as usual, the wait time was more than worth it! The PCBs are of the usual high quality I've come to know from them, and the stencil with it was perfect as well.
I had just gone through an exam, so sitting down and being able to take some time to solder the Lasertag was ... Actually kinda tranquil.
It certainly began to rapidly eat up any sense of time I had left, so I was able to, somehow, sit through an entire morning and afternoon just soldering away :>
So, enough of the talk, let's share some pretty pictures!
Ok I might have forgotten to take more pictures.
I did, however, not forget to write a detailed assembly guide over on GitHub :>
Here's the awesome extra: Everything worked first try!
Seriously, how often does that happen? It did make me rather proud, in a way :>
The only thing that went wrong was the fact that I didn't have enough PMBT2222A transistors, which means that for now not all weapons have their vibration motor running, but for initial programming etc. that's no problem at all.
A few minutes after finishing up their solder, I was already able to get some lovely blink action running~
Gha, just look at these precious little babies!
The fourth one is functional too, I just didn't have a USB cable or LiPo at hand to run it.
So yeah, Revision 3.2 is finally underway at basically full speed. We've even already started adjusting the 3D casing for the new navigation switch at the side, and will be printing them out either today or tomorrow, so stay tuned!
It's going well :>
09/12/2019 at 21:16 •
Alright, so it seems Aisler is taking their sweet time with the new boards...
It's still quicker than LCSC, and they'll be here tomorrow, but the wait was a biiit annoying. Happens <.<
The DigiKey components arrived though, and oh boy: <3
In the mean time however, I was able to work on some other, extremely important and long-awaited code rewrite:
The light handling!
Before, a lot of the patterns were defined in a rather static manner, making it hard to add new effects and get them integrated in the code in a smooth fashion.
I was finally able to change this by using a completely new, class-based approach with a proper, abstract interface and a list of components to render.
The result is a very easy to expand, stable, and quite stunning new effects system!
I think the video here shows it off best:
I'll be reviewing the changes in a GitHub PR soon. Those that are interested can poke me for a link :>
And next monday?
Time for the new hardware to be soldered~
09/02/2019 at 19:54 •
Seems that now that I am out of the confines of my last project (who made DShot and drone ESCs so damn uncooperative :S), things have been moving very smoothly!
As of today, I've already ordered enough components for 4 whole Lasertag sets off of DigiKey, with the PCBs following shortly, courtesy of Aisler.
If you want your own, you can find them right here:
The whole thing has turned out a little more pricey than expected, with about 50€ worth of hardware per set, but this does include all sensors, batteries, speakers, etc., so it is a price I can accept!
Anyhow, enough talking, let's have a few pictures rolling in~
The new board is a thing of beauty - and not just because the first revision was pretty nice~
It features a self-programming setup instead of RST and GPIO0 push buttons (which turned out to be pretty annoying to use), a much bigger regulator than the previous version, as well as a thicker supply capacitor near the ESP32 to prevent WiFi Brownout at higher power.
We also have the MAX audio amp on-board now (though soldering a breakout board on is easy), a LSM6DS3 IMU to play hot potato with your device or detect crashes, and a beautiful new navigation switch to change your weapon selection mid-game. That's right, you can have your SMG AND a pistol!
Or ... Well, whatever.
There's also a little more protection like resistors to the external cable and a 3.3V ESD diode to make these boards tough as nails, and let's hope the new battery charge IC does not blow up like the previous ones did :S
Also, fun little side-note:
The ESP32's GPIO pins are now 100% maxed out!
Buuut I bet you can squeeze in more pins if you're smart enough ... Somehow <.<
For now we don't need any of that - and if we do, we use a I2C expander :P
08/28/2019 at 09:38 •
Whew... It's been a while, hasn't it!
Don't worry, I never left this project alone - but taking breaks and getting a bit of variation in is healthy and fun, and I got to say, it was great working on the DSKorder and a small Hovercraft and stuff.
However, I've been idly collecting ideas, changes and improvements that I've been wanting to implement, and more importantly: I want to document the entire process, from soldering the hardware to setting up the Webserver.
It would be good practice for me, and helpful for anyone wanting to take inspiration or make their own sets.
So, what's planned for Revision 3.2:
There's a lot for sure, and I'll be chewing down on things over the next few months. In summary:
- The hardware will be polished. A few better support caps, charger IC, you name it. The MAX chip and a new I2C 6DOF gyro will now also be put on the board, and I'll optimize it for hot air flow resoldering~
- I'll also run a first larger batch of soldering. I intend to get at least four boards fully functional, which will finally allow me to try out proper games with friends!
- The software will get multiple new features! After cleaning up the current code and adding the IMU, I'm planning to rework the light control system to make custom light patterns easier to add. There's also going to be a new button to switch weapons on the fly, and a Filesystem based sound and weapon handler. This will give the server a lot more control by being able to upload new weapons on the fly, so... Wheee~
- The MQTT interface will be changed slightly, mainly to remove some load from the Lasertag sets themselves. Nothing major here ^^
- Speaking of the server, that thing will be polished a bit more too. After giving the Ruby backend a few small extra features to handle games smoother, I intend to add a SQL database to log events. That way, it's a bit easier to see what happened during a game, print statistics, that sort of stuff~
- Once all of this stuff is running smoothly, we'll get a Web interface! I've been playing with React, which is a fantastic backend for this sort of work. If everything goes well there will be a Player HUD, a big game statistics page to put on a screen or projector, and a game configuration window to mix and match game modules on the fly, set player teams, etc. This is definitely the most ambitious part, but it I get it right, it'll put this project into a truly professional grade of Lasertag system.
I'm really looking forward to this work, especially since I'll make sure it's well documented and reproducible for any guys here.
I'll also post updates on hardware and software here, so you can review it. The more eyes the better, since we all make small mistakes ^^'
07/13/2019 at 09:53 •
There's an important lesson for everyone here at the bottom, please give it a read!
This morning I was greeted by a lovely message from Aisler, telling me that my project had been bought by a couple of people!
That isn't fully unexpected, as I was told a FabLab was working on implementing my Lasertag Project as a small workshop course, but it still comes with a problem:
The PCBs uploaded to Aisler are faulty
No, it's not a major problem, or something that requires the people that did buy them to throw them away.
The problem is the following: In the top right corner of the front of the PCB, a trace coming from the RESET and GPIO0 buttons is shorted against the ground pad.
The good news is that it is easy to cut with a scalpel, and the rest of the PCB is functional - so for those that did already buy the PCB, don't worry, it will still work!!
The bottom pads of the buttons, where you can also see the vias, are the "output" pins. They should not be connected to ground, but they are. Cutting them with a scalpel will resolve the issue, and you can not damage anything by accidentally leaving the fault in. If the ESP32 does not boot up, but 3.3V is present, this is likely the problem.
Other things worthy of note to get it running:
- You will need a set of 0603 resistors and capacitors to solder up the set. I did not include them in the Aisler parts list, because those are components I always have on hand from a lot of other projects myself.
- You will need PMBT2222A (or similar BEC SOT-23) transistors for the IR LED and vibration motor (I always keep those on hand as well, they're fantastic little BJT transistors <3)
- You will need a 480mAh LiPo battery, preferrably with built-in protection. For germans, I can highly recommend eckstein-shop.de for those
- You will need an Antenna for the ESP32, preferrably a PCB antenna with sticky backside to mount in the casing.
- For the external vest detector piece, you will need 40kHz VISHAY IR Receivers, as well as a bunch of WS2812 LEDs to chain together. Oh, and a D-SUB cable, the ribbon cable mounted ones are great!
- You'll also need a I2S Amplifier chip. The MAX98357a is perfect for the job!
My lesson: Always be vocal about the state of the project
I feel a bit bad for the people that bought the PCBs and now have to go through the process of reworking them.
If I had been a bit more vocal about the state of the project, i.e. mentioning that the PCB needs reworking, the Aisler parts list isn't fully complete, then maybe people would have waited a bit longer, or would have been more prepared to deal with these issues.
The way I made it seem was that the project was fairly easy to build, and ... That's my mistake.
However, this should also be a lesson to anyone trying to buy or build projects here on HackADay:
Nothing will be perfect. Mostly, we're all just a bunch of nerds having fun with these things - or at the very least, I know I am!
There will be undocumented flaws, incomplete parts lists, or other little quirks in the process that the person building them dealt with and ... Never really wrote down, because it didn't seem like a big deal.
As a maker, the best we can do is to put a huge "WORK IN PROGRESS" above the things that aren't quite ready yet.
And as the person trying to build it, we should always make sure the project is replicable: Please, ask about the status of PCB etc.
If the maker says "The PCB needs a bit of rework", then that means it's not ready yet.
Continue if you wish, but at your own risk to deal with all those little quirks the Maker left in.