jDrones News: jD-IOBoard v1.0 update
You had some problems on driving LED strips or something else?? Well no problems anymore.... We have seen people making all type of darlington/transistor and similar hacks to drive their LEDs, Sirens and so on but they all need a lot of hacking and they might not be suitable for long term solution.
We answered on this call and made fully Arduino compatible called jD-IOBoard that can run Single LEDs, LED Strips, Loudspeakers, Buzzers, Power switches and so on. It's upto your own imagination on what all you can control with this board.
So what does this board actually do?? It has fully Arduino compatible ATMEGA 328 MCU and Darlington array to driver high power outputs. Also I2C pins are exposed and same as many TTL level IO and Analog pins. As you can see from picture above.
Board has:
- 6 x High power outputs, max. 500mAh / 50 Volts
- 4 x Analog inputs (6 if you don't use I2C port)
- I2C port for controlling, listening I2C messages
- 6 x TTL level GPIO pins (8 if you don't use FTDI)
- 1 x FTDI port
3 high power outputs can also be controlled by PWM output while another 3 are just normal "On/Off" outputs
How those Arduino pinouts looks like:
Connecting LED's,Buzzers etc is really simple. Just use one of output pins on end of the board. Below you can see examples on how to connect LEDs or LED Strips on it.
Pictures does not give enough credit for how it works so we made small video to show just few examples on how to use it. There are many other ways to do it but this should give at least some idea what/how to run it. So have fun watching it.
Get yours from jDrones Store: jD-IOBoard and have a blink blink.
Ps. There are some nice features coming to this board shortly...
Comments
Thanks Jani and what about the problem of losing mavlink every minute. It really steps on any other LeRi status messages and also freezes the back status light when it happens. I know the back light shouldn't continue flashing the last known status since you could change modes when it loses mavlink and then it would look like it's flashing the wrong mode but I think it should go solid blue anytime mavlink is lost so you don't lose visual orientation. Is that an easy change in the code to make the back light solid when mavlink signal is lost?
And how can i debug why mine keeps losing mavlink? I'm sure I have it connected right and my xbee works fine. My computer doesn't report loss of mavlink but maybe it only reports after more time offline so not to report transient failures. Not sure but on the lights it messes everything up with the LeRi reporting nomavlink 50% of the time. Now I have that flashing very fast so at least I don't lose visual but it's still bad that way.
Managed to get my JD-IO firmware updated, new FTDI adapter did the trick.. old one although it worked with the APM did not want too talk to the JD-IO board for some reason..
Anyway for others struggling.. this is the FTDI board I used and is working with the JD-IO . http://www.dfrobot.com/index.php?route=product/product&filter_n...
iob_fix_type = 1 is already lock but not ful 3D lock. On late GPS software it was changed that GPS outputs IDs 2 and 3 when it has lock. But for sure you can change it that way.
OK I looked closer at the code and I think I prefer the way you have it but it looks like it's disabled. Shouldn't this line:
if(iob_fix_type <= 2) LeRiPatt = ALLOK;
be instead:
if(iob_fix_type <= 2) LeRiPatt = NOLOCK;
So it will show static pattern #4 when there is NO GPS Lock. The way it is now seems you will have static pattern #0 for GPS lock or GPS no lock condition or am I misreading it?
Actually one problem that I would like to solve is why it loses mavlink connection for about 5-10 seconds every minute. Why would that be happening or is that normal? I'm using xBee on same port and it's set to 57.6
Because of this I can't always see the LeRiPatt. It gets interrupted by the nomavlink pattern.
On main sketch line 377 and 379 there are:
if(mavlink_active) {
if(iob_fix_type <= 2) LeRiPatt = ALLOK;
// if(iob_fix_type <= 2) LeRiPatt = NOLOCK;
if(iob_fix_type >= 3) LeRiPatt = ALLOK;
Change ALLOK for another pattern and then you have that pattern running when GPS has fix.
Output 5 and 6 does not do anything special with current software. If you need you can easily modify that. I have been thinking to put relay or something else on one of those outputs. They are free to use.
And what can I do with the other HV pins? O5 and O6? Are they active in the code already?
I see you have this for no GPS lock
#define NOLOCK 4
but I would like to flash a pattern WHEN it achieves 3D lock so I don't have to see the little blue light on the APM that is hard to see through the spaghetti of wires usually near it :)
Is it possible or is a difficult change?
Good work. yes you can change it that way. There are few locations in code where LERI pattern are changed. Look GPS lock functions and also end of main loop. If you look value LeRiPatt from code you will notice that there are few locations when that is changed. You can put 0 to everywhere to keep it always as ALLOK (first pattern on array)
Have fun with it and let me know how you changed it
I used Arduino 1.0.1 and chose Arduino Pro or Pro Mini (3.3V 8MHz) w/ Atmega 328.
Works great. I ended up changing pattern 6 to be like this which helps to not lose orientation at night.
{ 1,0,1,0,1,0,1,0 ,1,1,1,1,1,1,1,1 }, // 6
Thanks Jani. I got Cornerstone. Seems a good SVN client for mac. Now just to check with you that I'm looking at the right part of the code. On IOBoard.h I found:
// Left/Right static patterns
static byte le_patt[8][16] = {
{ 1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1 }, // 0
{ 0,1,0,1,0,1,0,1 ,0,1,0,1,0,1,0,1 }, // 1
{ 1,0,1,0,1,0,1,0 ,1,0,1,0,1,0,1,0 }, // 2
{ 1,1,0,0,1,1,0,0 ,1,1,0,0,1,1,0,0 }, // 3
{ 1,1,1,1,1,1,1,1 ,1,1,0,0,1,1,0,0 }, // 4
{ 1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1 }, // 5
{ 0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1 }, // 6
{ 0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0 }}; // 7
static byte ri_patt[8][16] = {
{ 1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1 }, // 0
{ 1,0,1,0,1,0,1,0 ,1,0,1,0,1,0,1,0 }, // 1
{ 1,0,1,0,1,0,1,0 ,1,0,1,0,1,0,1,0 }, // 2
{ 1,1,0,0,1,1,0,0 ,1,1,0,0,1,1,0,0 }, // 3
{ 1,1,1,1,1,1,1,1 ,1,1,0,0,1,1,0,0 }, // 4
{ 1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1 }, // 5
{ 1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0 }, // 6
{ 0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0 }}; // 7
And NOMAVLINK 6
So it's pattern 6. I think I will change it to pattern 1
#define NOMAVLINK 1
That should be oK?