Updating power supply for Carduino

This slideshow requires JavaScript.

It turns out when I ran the Carduino at about 15v, it would be stuck in a reboot loop, and it was because of the regulator. I decided to just swap it with a LM317 (it is good up to 28V, why not?). Well, it got hot, extremely hot (linear regulating 16v to 3.3v at 60mA is a good deal of power that needs to be dissipated).

Since I just needed 3.3V, I decided to just drop the voltage using the 1N4001 diodes, 5 of them. And it works, so I’m happy 🙂


Carduino! It’s Alive!!!

This slideshow requires JavaScript.

Just a re-cap: This is a little project that will be embedded into my car, that logs the temperature of the engine, transmission, radiator, and interior to an SD card. If something gets too hot, it will show the warning led (decimal point) as well as make an audible notification (cue mario dying song). It can connect to my Controller 2.0 via a BTM-182 module, and if connected, it will display all 5 of the measured temperatures, as well as the voltage, on the controller (without needing any parsing by the controller). This will be my early alert system to warn me if something is getting too hot. In the future I may add sensors to detect the level of radiator coolant, but that is a nice-to-have, rather than need-to-have. The code for this, will be released shortly (Once I have this in my car I imagine).

It’s done! I admit, I did run into some problems. When I first powered up the Carduino main board, there seemed to be a short somewhere. I removed a diode, which of course didn’t help. After poking around, I discovered that the connections for the package of voltage regulator were wrong. After a quick rewire, it produced regulated 3.3v. After fixing a few forgot-to-solder’s, and a ‘soldered but didn’t make connection’, it fully works. I do need to do some tweaking of the software, so that it turns off at 12.3v instead of 14.0v (since I’ll be using a switch to turn it on/off).

Exciting times! Now I just need to get this in the car, and I’ll be set! I’ll need to take care of potential moisture in the temperature cable as well, but I’ll figure that out as needed 🙂

Carduino completed, now I need to test it (as well as wire up ethernet cable for display)

This slideshow requires JavaScript.

If you notice I rearranged things a little bit, and I added a temperature sensor to the display (to record car temp, why not?). Wiring everything up with wire-wrap wire is so much easier than before. Tomorrow I’ll need to do some testing (detecting shorts, seeing if the voltage regulator is working), and once everything is cleared, I’ll put a processor in it and flash it with the latest firmware 🙂

Presumably later this week I’ll be putting it into one of my car’s. I plan to use a 2 part epoxy to attach the temperature sensors to the engine, transmission, and radiator. Considering JB-Weld, but I’ll need to check its upper temperature.

Looking forward to getting this project out the door, so I can start on the next one (Automated Gardening – Sati).

Carduino main board layed out – Part 2 of 3

This slideshow requires JavaScript.

Spent longer than I anticipated organizing how everything would fit. I typically take a picture before I start soldering things, because often, things will have to come off before I can solder everything on.

As you can see, I bought some surface mount parts to use, since through-hole packages weren’t available. It looks like just soldering wires onto them will work out 🙂

This is the idea that has driven me this far in my robotics: When making decisions, do not base your choice on what you want, base it on who you want to become. A short example would be choosing between making a circuit, and playing some Minecraft. You may want to play the game, but you want to be the person with plenty of projects that not only make you more experienced, but actually solve real world problems that you face.

Because of how our brains work, we will either establish or re-enforce the pattern of making things (in this case some electronics :P). If you do this enough, it will be a natural choice, ensuring that you are who you want to become (because you would be doing all of the things the person you want to become, do). Progress!

Progress update on Carduino

So these past few days I have been working on the Carduino. Adding the GPS, parsing the output, saving it and displaying it. But adding that library, which works, increases the usage of the flash. Since I only have 2kB of flash on this MCU, it resulted in using more memory than I have, never a good thing.

So to wrap up this project, and move onto others, I’ll be settling on not having GPS data saved. The main things, temperature monitoring and displaying / alerting, is complete. I even save it to an SD card, which is a nice feature. As I’ve heard before, the first iteration of a device shouldn’t be perfect, nor strive for perfection, since doing so will make the project drag on and on (which has sort of been happening with this carduino project).

So I’ll be making the circuits in the next few days (1 board with BCD, LED’s, and 2 shift regs, 2nd board having processor + BT serial, and SD card), housed in a cheap $0.24 case mounted in my glovebox. The BCD board will be mounted near the speedometer with dimly lit LED’s so that I’m not blinded at night. Ethernet cable will connect the BCD board to the main board, another cable will connect the temperature sensors to the main board (with a diode + resistor protection).

Sometimes you’ve got to abandon a idea or feature in order to get a project built,and many times this is good, since you can always make improvements in the second version.

Sleeping Carduino

Thanks to the great examples here, I now have the Carduino set to monitor the battery voltage (A0) and if it detects that the battery voltage is below a certain level, it sleeps. Once I get the BSS123’s, I’ll be able to control the power going to the BT serial as well as everything else (power off everything, then sleep, wake up, power on everything). Pretty awesome!

I updated the RTTTL example to correct two bugs I found, with the end result that it works better, without messing up on the first note. The updated example is on the same pastebin link as the original.

I also got news that my 3 wireless nunchucks have shipped, so I can expect to be getting them at the end of the month. That’s all for tonight 🙂

Future projects:
Garden monitor + watering (using windshield washer pumps)
Slash Arduino (if I get the FPV camera stuff) Pan/tilt servos, Gyro
PCB-ize the Controller (with options for different wireless modules) will have Nunchuck and maybe PS2 connector
Make OpenCurrent Version 2, with MCU + voltage monitoring, made to be in-line like many power monitoring solutions currently available

Needed features completed for Carduino, all that remains is nice to have features

For this project, I broke up the features into need to haves, and want to haves, with the intention that I could call the project complete once all of the need to haves are complete. I wanted a basic engine monitoring circuit that I can put into my cars, and I have that now.

I even added two shift registers with 8 LEDS and a BCD 8 segment display to compliment it. The purpose would be to display the sensor number, and if it is in a good range or not. I will mount this so that the driver can see it and monitor it. If a temperature or voltage exceeds the threshold in a dangerous way (over temp), It will not only sound an alarm, but light the small decimal point of the BCD so that I know something is up. I need to add sleep code, but that’s about it (and controlling the power rail of the BT serial, SD, GPS, and LEDs with a mosfet).

The remaining want to haves include: GPS and gyro. I don’t anticipate any problems with adding those, even though for both of those, I will be forced to use the SW versions of the protocols (serial, i2c) rather than using the on-board module.

I’m going to be doing some more testing of the alerting code (moving the temperature sensors near an open flame, monitoring temp on controller), but once I do that, I’ll start soldering boards up for it (with connectors for Gyro and GPS for future upgrades) and wiring up my car. I’ll be using the MotionPlus as a gyro, since it is so cheap.

The next two projects I’ll be working on is a Gardening bot, and a arduino for my Traxxas Slash RC car. Might be getting some video equipment so that I can see what the car sees, in real-time. Will also look into updating the OpenCurrent to add some goodies, and making a PCB of my controller, similar to the Ardustation.

I look back at the past 4 months, and I see how doing things, while not perfectly, can accomplish things. If I were too afraid to fail, I would do nothing, as history has shown. Some of the lessons I’ve learned: If it’s too hard, break it down. If your losing motivation, try switching your focus. Record everything in a notebook, writing ideas, no matter how silly. And above all, create rather than consume.

Parts ordered for Carduino, now I just need to order the code :)

I decided that the first thing I’ll connect to the Controller will be a Carduino. It will have a GPS, BT serial module, 4 temperature sensors, a light sensor, a SD card, and maybe a nunchuck. I’ll use a connector for the connections, so it will be simple to pull it out of the car and reprogram it if necessary.

But I got a new idea on how to handle new devices. Instead of having to update the controller everytime I make something new, what if, I didn’t need to? Imagine if the strings for the ‘somethings’ that will connect to the controller, come from the ‘somethings’… Then the controller can exchange a packet with the wireless device, where the device tells the controller what menus to show, and what to return if a particular menu is chosen. That way, I can add new things, without having to push the code limits of the controller.

I’ll need to figure out how to handle the cases where there is more than one wireless thing to connect to. Perhaps each wireless thing can give the controller its identification, and the controller can display the available id’s, and let the user select the desired ID.

Another idea I have is to make a PCB or two for the controller, and this is because I found a really cheap PCB fab house.

I have been looking at the best way to handle the noisy environment of a car, and I have decided to adopt several solutions. The first, is to protect my inputs, as shown with the Ruggedized Arduino here. The second, is to protect my voltage regulator from surges as explained here. With those two strategies, and a beefier 3.3v voltage regulator, it should be able to survive the hostile environment. The question remains, will the temperature readings be consistently distorted to the point where the reading is useless? That, is the question.