“How do you figure all this stuff out? “
“How did you get into these fields of interest?”
“What motivates you to design the work you do?”
My dad was a huge driving force in my previous basic tech background. The internet is an amazing place if you know what to look for. The community that I helped bring together has been the most powerful driving force for my projects. I have always kept a laid back and “fun” approach to this, rather then trying to make some serious business venture out of it.
Learning something “just because” is near impossible. You’ll get bored and lose focus. One must aim for an overall goal to shoot for, but set little challenges that near immediate knowledge can help accomplish. Keep it SMALL, because large goals will get stifled fast with complexity. Learn in a way that uses little key components to build upon and further the project. Make it work, then make it pretty. You will always find a better way to do something, and going back to make old projects better can feel very fulfilling. If you ever get stuck, sleep on it for a couple nights. Many of my “Aha” moments were during rudimentary tasks like doing dishes, driving around, eating dinner, and so forth so just let things brew until you find a new way to approach or test a problem. Some of the most powerful motivations for my projects has come from other the interest of other people. Many of the things that I sat down to actually finish, fully flesh out, or do properly have been because I knew other people might be using them rather then just myself. Having just enough knowledge to ask the right questions will help tremendously, so research and learn from others! Don’t be discouraged by failure, evaluate if this is the easiest way to solve a problem and always try to have other solutions in mind as a backup. Try something even if you’re not sure about it, the outcome may surprise you.
Websites that have helped me along the way:
– Sparkfun: Second-to-none basic lessons and tutorials of micro controllers, binary, and basic programming
– Adafruit: Amazing tinker catalog and incredibly laid out tutorials of all said products including example code and libraries
– Arduino: I’ve referenced the Reference page more times then I can count while programming and the forum is a wonderful place to ask or search questions
– Google: AVRfreaks, Electronic Exchange, Github have all had some incredibly enlightening explanations on specific topics I have searched
– Youtube: Conference talks on programming, tutorial series’ if not a little bland (I may make my own tutorial series at one point honestly)
– Dedicated groups of like minded projects or people: RenixPower and some FB groups.
– Arduino IDE: Free Excellent beginners language for program that can be fairly powerful later on.
– Fritzing: Free EDA circuit board designer which is also fairly easy to use, If not a little buggy at times.
– TinkerCAD: Free web based CAD program for designing 3d models for 3d printing or other uses
– Makerbot Desktop: Free slicer program that was compatible with my 3D printer type and is fairly easy to use but refining settings takes time
– Excel: Great for plotting formulas and data, testing complicated math, keeping track of data and other work
– Start with an Arduino Uno so you can easily follow tutorials without the guesswork
– Voltage levels are one of the MOST important things you will worry about with projects so learn them well. IE: 3.3v or 5v logic level. Regulating 12v down to 5v, protecting circuits from high voltages.
– Take notes on the basics and look for libraries or tutorials that will help you along with your idea
– When looking for modules, pay attention to how they communicate with the Arduino and make sure you have the pins needed. IE: Serial UART, I2C, SPI, Analog, other
So, as a little backstory, I have always been a nerd when it came to computers and other tech, but also cars in a way. My father was probably the leading factory to my youth interest as we would stay up late at night researching computer parts or going to tech shops and conventions until the fateful day that we had everything we needed to build a custom PC tower together. He wouldn’t just show me what components were, but he’d actually let me put some in myself, and I think thats where a lot of my hands on nature had stemmed from. Being surrounded by computers and even building my own from a young age really planted my feet in the tech industry, and I’m sure growing up in the dawn of the modern internet helped too in gaining a general understanding of it all (more on this later.)
As for cars, when I was younger one of my favorite things to do as a kid was pointing to all the cars in parking lots and identifying what all the makes were from their badges. My mom would even make a little game out of it to see how many I could guess. Later on I got into RC vehicles and even got some higher end models that could be customized and modified. And of course with more speed came more crashes, so eventually I got good at repairing and replacing parts myself which honed in the skills I still use today on real vehicles.
With those 2 major factors coming into play, it’s not much of a surprise that I took interest in the awesome world of Jeeps and the offload community that came with them. The first vehicle I purchased was my 1989 Jeep Cherokee 4×4 that I bought some months after my first job out of high school. It was beat and needed some love, but it was able to drive home under it’s own power, so it still had a chance! With more help from my dad, we slowly tore it down piece by piece and got it back to running condition while I learned the basics of vehicle repair, hands on in the field.
Now my first real education in the field was when I took up some vo-tech classes at a local school because my buddy took up a class and mentioned how cool it was. After taking a look I was hooked, and soon took every basic automotive course that was available at the school, and just in time as the current night teacher was on his way out to a new dealership half way across the country. The classes really helped with the basics and through his vast field knowledge and stories, we all learned things that most would probably never learn in a classic text book or online forum. That was one of the few educations I was very happy that I took.
On the contrary, one of the biggest wastes of time to me was trying to pursue a degree in Computer Science at my Local College. It didn’t even take my first full semester until I realized it was not for me. The starter classes were too dry and covered basics that I learned over 10 years ago so it was not doing me any favors. To put things lightly, I’d describe it as HighSchool 2.0, except now you have to pay for it. Needless to say, I did not go back for another semester, and I’m still happy with that decision.
So, onto the actual topic now. Fast forward a few years and I’m finally past the basics on the Jeep. It was time to stop loading the parts cannon and learn a bit more about actually diagnosing it proper. All modern vehicles have a diagnostic port that any scanner off the shelf could plug into and spit out codes, so I wondered what was possible on my old dinosaur. Eventually I stumbled upon the mighty Snap-On MT2500 scan tool and read up on what was possible through some dedicated Internet Renix communities. I finally pulled the trigger on an ebay deal and low and behold I finally had the power of live vehicle data in my hands! It was a great insight into the vehicle, and was way more helpful then fumbling with the old trusty DMM and paperclip back-probes. It was a great tool, but a little clunky to take on drives, even though I could get it to the passenger seat with extension cable.
One day I woke up with the idea of seeing what the deal was with this diagnostics protocol anyway. Wouldn’t it be cool to have something more portable like the ScanGauge II I had in my civic. After doing some more digging on the RenixPower forums I found a guy by the name of Phil Andrews that was quite the tinkerer and actually found his way into the data stream of his Renault GTA turbo that he has worked on for quite some time. The impressive thing here was that he was able to use an Arduino to interface with the Renix data port and display live data on his laptop with a fancy command line program that he wrote himself. But the best part was that he was willing to show his work and even provided the basic code he wrote on the forums for other folks to check out and try for themselves.
As a reference, this was the original video that really sparked the interests to dive in head first and actually give this a go myself! https://www.youtube.com/watch?v=AUqQrLLVdZ8
Now maybe for an actual answer, haha. So with this basic info in hand, and the very slight possibility that I might be able to replicate his work on my own vehicle, I set off to the trusty internet to learn about the magical world of Arduino’s and what I was about to get myself into. I asked around to a few friends, but wasn’t getting much reply, so I decided to play it safe and settle on the base model Arduino UNO that is by far the most supported and user friendly Arduino out there. The real inception of this project can be traced back to a family vacation I took shortly after getting my first Arduino. I had no idea how to use it, and only armed with the basic code that Phil provided, I was on a mission to learn my way through it and see if I could make it work myself. After stumbling my way through some google searches I came across Sparkfun which was by far the most useful website I found for learning my way though the age of micro controllers. They have excellent tutorials that go over the very core basics starting all the way from what binary is and build up from there. Notebook in hand I started writing down my own Arduino lessons with all the basics of binary logic, different variable sizes, the types of memories used and basic Arduino programming syntax. All of this helped build up my confidence enough to maybe understand how to at least make the code work.
Before I took on my own vehicle, I started trying some little test projects first. The first test was just to make an LCD library work and print a simple sentence on the screen. That tiny little task proved challenge enough as I learned how to hook up the screen, use a library, and even write some very basic code to figure out how it is all done. Then we can add a button and see if we can make it do anything and build from there. When I had a slightly better grasp on it, I was ready to try and make Phils code work for myself. My dad had most of the components I needed in his old parts bins lying around, as he himself use to design hand drawn circuit boards and tinker when he was younger too! So I finally wired it all together, loaded up Phils code, and with a bit of poking and troubleshooting I was actually able to get something to show up on my laptop and it was the most magical feeling ever. Some readings were off or wrong, but I was just happy to see that it was even possible to read this vehicle without super fancy tech. From there I asked Phil a few questions to try and figure out why things weren’t quite right and he was able to give a little insight, but there was still plenty of mystery left.
Skip forward to finally getting a very basic prototype figure out, I was able to read in the data and display it on the Arduino screen instead of my computer and I was ready to show the world what I figured out. That video was here where you can see it in action: https://www.youtube.com/watch?v=tzTWCc5mHzA
After gauging public interest to see if I should push this option any further, I got a couple people that were intrigued and that was good enough for me. Now I was on the hunt to make my code better and find a circuit board plotting program that I could figure out. The current standards like Eagle were way to complicated and expensive for me to get into, so I looked for something free and easy because I’d like those. Adafruit seemed to love Fritzing for it’s ease of use, and it was free, although still in beta. I took what little I knew about the current hardware and tried to throw together my very first circuit board with a screen, smaller Arduino from adafruit, some buttons, and an ethernet cable to connect to the vehicle. Surprisingly, the current model REMs still look extremely similar to the V1 prototype I made years ago.
After getting a design together, it was time to find a manufacturer to make some boards to test. Sadly, the best options I could find were overseas, as no one local had easy websites or competitive prices, so why not try a decent Chinese company for $1 a board. I gave them a shot and still to this day am pleasantly surprised by their level of craftsmanship, speed, and cost for small runs.
After getting a beautiful homebrew board in my hands for the first time, it really drove home how real this was becoming. After doing lots of parts hunting on places like digikey, I was ready to put my first prototype together and test it out. Along the way of development I would share little update videos on Youtube and use inputs from the interested few to help shape ideas and deicide where to go.
Next big step was to figure out a way to make cases for these devices to really finish them off. After much research, I settled on a 3D printer that looked fairly capable but wasn’t an overwhelmingly huge investment for such a small project. Heated build plate, dual extruders, enclosed case, and decent accuracy were all goals of mine. I settled on a knock off of a knock off of a good but rather expensive printer, but the reviews looked good and I was feeling hopefully. What a fun day that was unboxing and setting it up for the first time.
Back on the free search, I started looking for a CAD program that was easy to use so I could model these cases. Google comes in clutch again with top 10 program searches. I found tinkerCAD which is a web based program that lets you make models with basic shapes by adding or subtracting shapes to get the design you want. I was able to export in a file type that I could use in a slicer program to test on my printer so it was go time. I settled on Makerbot Desktop slicer as it looked simple and was compatible with the printer I chose. More fiddling with print settings, filament choices, and case design and I finally was able to create something halfway useable!
To save on the specifics, a key component to this alpha testing project was having a very communicative assistant, AICoffroad, try my product on his Jeep. He made an unboxing video, link, and I could not explain how much my face lit up when I saw the first package I ever sent in someone else’s hands. After talking about the device a little, he always filmed himself using it, showing the good and the confusing. This was by far one of the most helpful things in my early product development because I could clearly see when a feature was confusing, when a program feature wasn’t performing the way it was suppose to, or what I could add to make the device easier to use. You only know what you know, and an outside perspective can be invaluable for improvement because you won’t get these chances often.
Beyond that, it was really just a brute force task of adding more code, finding new hardware needs to add, testing ideas and learning how to solve the problems that came up, and just having a general goal for what to work on next. The fact that I could use this device for myself was also a huge motivation boost, because it was really easy to see what needed work while using it on my own Jeep and I could add features as I saw fit. I’ve always complained about product features and how I could make them better, so I guess it was time to prove it.
Along the way, there were many a problem that have come up and left me scratching my head for sometimes weeks at a time. You can beta test all you want in the lab, but there will always be something new that happens in the field that will leave you baffled, and the best you can do is narrow it down and test! During the Alpha and even Beta testing phase, I learned what some of the the more common failure modes were and tried to find ways to fix them best I could.
My tips to you, start small with an Alpha batch and wait at least 3-4 months before placing a beta order. I almost never waited that long, and ended up having to mod beta boards to fix issues that weren’t popping up on alphas until later. Just make sure that you’ve made easy to access power rails and maybe some extra vias to tap into or pray that you can get to the traces that you need. As far as user feedback goes, no feedback is good feedback I guess. Not too many people said much of anything about them unless really asked, but generally folks would at least let me know when they were having problems so I could work them out. It’s hard to put myself into a first-time users shoes, as they would ask questions that seemed basic but made me realize I could have added better clarification to documentation, so it’s always best to listen! That and generally just someone asking was enough motivation for me to finally spell something out completely or work out all the options for a new feature. It’s hard to work on stuff they I wouldn’t directly be using myself, but if at least 1 person seemed generally interested in it then it was enough to push through.
Anyway, thanks for the listen on how it’s all unravelled so far. It’s amazing to see how far everything has come and where it is today. Shipping sometimes multiple orders a day and even sending stuff international is truly an amazing feeling and I’m grateful for all the awesome support I get from everyone that has been interesting in my work, so thanks for the support!