Just killed my Boron(?)

I used the following code:

#include <adafruit-ina219.h>

#include <Particle-GPS.h>

Gps _gps = Gps(&Serial1);

Timer _timer = Timer(1, onSerialData);

Adafruit_INA219 ina219;

double altitude;
double latitude;
String latitudeDirection;
double longitude;
String longitudeDirection;
double speed;
double tempC = 0.0;
double tempF = 0.0;
int tempPin = A1;
double busvoltage = 0;

void setup()
{
    delay(2000);
    
    Serial.begin(9600);
    
    // Particle.variable("temp", tempF);

    // pinMode(tempPin, INPUT);
    
    // GPS
    
    Particle.variable("altitude", altitude);
    
    Particle.variable("latitude", latitude);
    
    Particle.variable("latitudeDir", latitudeDirection);
    
    Particle.variable("longitude", longitude);
    
    Particle.variable("longitudeDir", longitudeDirection);
    
    Particle.variable("speed", speed);
    
    Particle.variable("voltage", busvoltage);
    
    Serial.println("Initializing GPS...");
    
    _gps.begin(9600);
    
    _timer.start();

    // Volt Meter
    
    uint32_t currentFrequency;
    
    ina219.begin();
}

void onSerialData()
{
    _gps.onSerialData();
}

void readTemp()
{
    int reading = analogRead(tempPin);

    double voltage = (reading * 3.3) / 4095.0;
    
    tempC = (voltage - 0.5) * 100;
    
    tempF = ((tempC * 9.0) / 5.0) + 32.0;
    
    Serial.println(tempF);
}

void loop()
{
    // readTemp();
    
    Gga gga = Gga(_gps);
    
    if (gga.parse()) {
        
        // Serial.println("2) Global Positioning System Fixed Data ($GPGGA)");
        // Serial.println("======================================================");
        // Serial.print("UTC Time: "); Serial.println(gga.utcTime);
        // Serial.print("Latitude: "); Serial.println(gga.latitude);
        // Serial.print("North/SouthIndicator: "); Serial.println(gga.northSouthIndicator);
        // Serial.print("Longitude: "); Serial.println(gga.longitude);
        // Serial.print("East/WestIndicator: "); Serial.println(gga.eastWestIndicator);
        // Serial.print("Position Fix Indicator: "); Serial.println(gga.positionFixIndicator);
        // Serial.print("Satellites Used: "); Serial.println(gga.satellitesUsed);
        // Serial.print("Horizontal Dilution of Precision: "); Serial.println(gga.hdop);
        // Serial.print("Altitude: "); Serial.print(gga.altitude); Serial.print(" "); Serial.println(gga.altitudeUnit);
        // Serial.print("Geoidal Separation: "); Serial.print(gga.geoidalSeparation); Serial.print(" "); Serial.println(gga.geoidalSeparationUnit);
        // Serial.print("Age of Diff. Corr.: "); Serial.println(gga.ageOfDiffCorr);
        // Serial.println("");
        
        altitude = gga.altitude;
        
        Serial.print("Altitude: "); Serial.println(altitude);
    }
    
    Rmc rmc = Rmc(_gps);
    
    if (rmc.parse()) {
        // Serial.println("3) Recommended Minimum Navigation Information ($GPRMC)");
        // Serial.println("======================================================");
        // Serial.print("UTC Time: "); Serial.println(rmc.utcTime);
        // Serial.print("Latitude: "); Serial.println(rmc.latitude);
        // Serial.print("North/SouthIndicator: "); Serial.println(rmc.northSouthIndicator);
        // Serial.print("Longitude: "); Serial.println(rmc.longitude);
        // Serial.print("East/WestIndicator: "); Serial.println(rmc.eastWestIndicator);
        // Serial.print("Speed Over Ground: "); Serial.println(rmc.speedOverGround);
        // Serial.print("Course Over Ground: "); Serial.println(rmc.courseOverGround);
        // Serial.print("Date: "); Serial.println(rmc.date);
        // Serial.print("Magnetic Variation: "); Serial.print(rmc.magneticVariation); Serial.print(" "); Serial.println(rmc.magneticVariationDirection);
        // Serial.print("Mode: "); Serial.println(rmc.mode);
        // Serial.println("");
        
        latitude = rmc.latitude.toFloat();
        latitudeDirection = rmc.northSouthIndicator;
        longitude = rmc.longitude.toFloat();
        longitudeDirection = rmc.eastWestIndicator;
        speed = rmc.speedOverGround;
        
        Serial.print("Latitude: "); Serial.println(latitude);
        Serial.print("Longitude: "); Serial.println(longitude);
        Serial.print("Speed: "); Serial.println(speed);
    }

    busvoltage = ina219.getBusVoltage_V();
    Serial.print("Bus Voltage:   "); 
    Serial.print(busvoltage); 
    Serial.println(" V");
    
    Serial.println("");

    delay(1000);
}

Note the burnt sticker…

Boron now has a solid red light… :frowning:

Featherwing tripler has power/ground from an external USB plug, RX/TX wired to the GPS and SCL/SDA wired to the INA219.

What did I do wrong?

For a while, I was getting similar to the following:

Altitude: 826.00
Latitude: 43**.**
Longitude: 116**.**
Speed: 0.56
Bus Voltage:   9.09 V

My goal is to monitor a 12V RV/Car battery, so if I’m on the wrong track, please let me know!

The ina219 connections look fine from what I can see.

Measuring 12v battery is fine with the INA219.

Take a meter and test the voltages on the Boron Vin and Gnd pins with and without the INA219 attached.

That black GND wire doesn’t look soldered.
Could it be that you just pushed that through the hole where it could make contact to some other pin behind the board?

BTW, why did you not connect the GND to the screw terminal just the way you did with the red +9V wire (with current limiting resistor of course)?

The other screw terminal is not ground, it’s the other side of the shunt for measuring high side current flow through the positive wire.

He is only measuring battery voltage and not current.

It is confusing though by just looking at it. The picture below may help.

2 Likes

Thanks for the clarification :+1:

The missing signs of soldering is still giving me goosepimples :flushed:

Not sure which one is Vin.

VUSB to GND was about 5V.

3V3 to GND was about 3.33V.

Correct, it was just pushed through the hole. Is it possible that the lack of good connection there caused an issue?

I'm hesitant to hook up another Boron without a descent hypothesis as to what happened. I don't want to burn up another one.

One other note, the orange LED, adjacent to the Boron’s USB plug is constantly flickering.

That's the charging LED for the LiPo - no need to worry (unless you shorted something going to the Li+ pin.

However, having (had) a short between GND and Li+ could explain what you are experiencing.

What does the Boron do when you take it out of the trippler completely?

Exact same result. Solid red + the charging LED flickering.

That sounds like a fried Boron :pensive:

However, I can’t see how that could happen with the wiring above without any inadvertent shorts.

I’m going to assume I must’ve shorted it. In an effort to prevent goose pimples (and shorts), I’ve updated my hardware.

Will report back. Fingers crossed I don’t fry a second Boron.

2 Likes

Well, it’s back to life.

Altitude: 822.80
Latitude: 43**.**
Longitude: 116**.**
Speed: 0.17
Bus Voltage:   9.11 V

Everything seems to working fine. I’m just a little terrified to walk away from it. :joy:

1 Like

Looks like that ground pin stuck in the hole was shorting something then if all you changed was a better GND connection.

Spoke too soon. And almost let the smoke out of another Boron.

It still connects fine, but the sticker is torched. Not sure how I’d connect with it via the app again, if I needed to.

So once I made the changes to the GND connection, I ran it with the 9V battery several times with no issue. I took it out and attempted to connect it to the 12V car battery and when I did, the Boron and GPS LED’s went out.

I brought it back inside and wired it back to the 9V battery and had the same result, as soon as I connected the battery, the Boron and GPS LED’s went out.

I removed the battery and walked away. When I came back, the sticker was torched. I unplugged everything, let it cool off and plugged it back in, not connected to the tripler and it still connects to the cloud and doesn’t heat up. So the issue seems to be with my tripler wiring.

Top:

Bottom:

Wondering if either my power cable (hacked USB cable) is doing weird things when I move it around or those metal stand off posts are inadvertently shorting something.

Thoughts?

The soldering job on that tripler looks pretty bad on the underside. Look for solder Bridges along the headers. Also the solder connections for the ground Trace look weak especially on the left side of the underside photo. I don’t think it’s harming anything but also look at the stand-off lugs… it looks like they may be touching pads immediately surrounding them.

1 Like

The trippler already connects all the respective pins of the three header-sets through, so your cross connections should be superfluous and may even contribute to the issue when not perfectly correct.

And I agree with @ninjatill about the soldering :wink:
In some circumstances poor connections may introduce ringing which may cause RLC circuitry to oscillate and produce unhealthy conditions.

But most importantly what voltage are you feeding into the 3v3 pin??? :flushed: :fire: :boom:
If that red wire is coming from a USB power source you’ll definetly cause problems. 3v3 can only take 3.3V (hence the name) but USB delivers 5V.
You’d rather want to connect the red wire (if it is a 5V source) to the VUSB pin.

4 Likes

I misread the description. I thought only the power and ground were connected. That just made life so much easier. :joy:

The photo makes it look worse than it actually is, although I'm sure it's still a marginal solder job at best.

And the winner for identifying the root issue! Total rookie move. I was supplying 5V, instead of the required 3.3V. When I was testing at my desk, most times I was connected directly to the Boron's USB, so I could utilize the serial monitor. It wasn't until I was preparing to move the unit outside that I started powering it via the USB plug that is wired to the trippler, at which point the incorrect voltage was being supplied and I ended up burning up the Boron.

I've removed the superfluous jumpers, rewired the USB 5V to the VUSB and everything is working as expected. The unit it successfully monitoring the 12VDC RV battery.

Huge thanks to you all for the support. The Particle community is always so helpful, it's much appreciated.

5 Likes