Electron Asset Tracker not sending data, message: pin_reset

Not having much luck with connecting, getting frustrated. Have attempted to use the Particle Dev tool and cannot connect to the electron via usb serial. I can use the command line to update firmware. I cannot connect to the electron. Was having issues with the photon as well with the local Particle dev tool. Smells like a usb driver issue. So I can’t see what any serial output is on the Electron.

I was able to update the firmware with the particle CLI, the code uses the asstracking lib and the example code below. In the particle console log, when the electron connects, I get a weird pin_reset message.
Looks like:
{“data”:“pin_reset”,“ttl”:“60”,“published_at”:“2017-02-28T04:38:23.975Z”,“coreid”:“xxxxxxxx”,“name”:“spark/device/last_reset”}

Pins are not bent and I reseated the sim card a couple of times.

Any ideas?

Thank you in advance.

code
// This #include statement was automatically added by the Particle IDE.
#include <AssetTracker.h>
/* -----------------------------------------------------------
This example shows a lot of different features. As configured here
it'll check for a good GPS fix every 10 minutes and publish that data
if there is one. If not, it'll save you data by staying quiet. It also
registers 3 Particle.functions for changing whether it publishes,
reading the battery level, and manually requesting a GPS reading.
---------------------------------------------------------------*/


// Set whether you want the device to publish data to the internet by default here.
// 1 will Particle.publish AND Serial.print, 0 will just Serial.print
// Extremely useful for saving data while developing close enough to have a cable plugged in.
// You can also change this remotely using the Particle.function "tmode" defined in setup()
int transmittingData = 1;

// Used to keep track of the last time we published data
long lastPublish = 0;

// How many minutes between publishes? 10+ recommended for long-time continuous publishing!
int delayMinutes = 15;

// Creating an AssetTracker named 't' for us to reference
AssetTracker t = AssetTracker();

// A FuelGauge named 'fuel' for checking on the battery state
FuelGauge fuel;

// setup() and loop() are both required. setup() runs once when the device starts
// and is used for registering functions and variables and initializing things
void setup() {
    // Sets up all the necessary AssetTracker bits
    t.begin();
    
    // Enable the GPS module. Defaults to off to save power. 
    // Takes 1.5s or so because of delays.
    t.gpsOn();
    
    // Opens up a Serial port so you can listen over USB
    Serial.begin(9600);
    
    // These three functions are useful for remote diagnostics. Read more below.
    Particle.function("tmode", transmitMode);
    Particle.function("batt", batteryStatus);
    Particle.function("gps", gpsPublish);
}

// loop() runs continuously
void loop() {
    // You'll need to run this every loop to capture the GPS output
    t.updateGPS();

    // if the current time - the last time we published is greater than your set delay...
    if(millis()-lastPublish > delayMinutes*60*1000){
        // Remember when we published
        lastPublish = millis();
        
        //String pubAccel = String::format("%d,%d,%d",t.readX(),t.readY(),t.readZ());
        //Serial.println(pubAccel);
        //Particle.publish("A", pubAccel, 60, PRIVATE);
        
        // Dumps the full NMEA sentence to serial in case you're curious
        Serial.println(t.preNMEA());
        
        // GPS requires a "fix" on the satellites to give good data,
        // so we should only publish data if there's a fix
        if(t.gpsFix()){
            // Only publish if we're in transmittingData mode 1;
            if(transmittingData){
                // Short publish names save data!
                Particle.publish("G", t.readLatLon(), 60, PRIVATE);
            }
            // but always report the data over serial for local development
            Serial.println(t.readLatLon());
        }
    }
}

// Allows you to remotely change whether a device is publishing to the cloud
// or is only reporting data over Serial. Saves data when using only Serial!
// Change the default at the top of the code.
int transmitMode(String command){
    transmittingData = atoi(command);
    return 1;
}

// Actively ask for a GPS reading if you're impatient. Only publishes if there's
// a GPS fix, otherwise returns '0'
int gpsPublish(String command){
    if(t.gpsFix()){ 
        Particle.publish("G", t.readLatLon(), 60, PRIVATE);
        
        // uncomment next line if you want a manual publish to reset delay counter
        // lastPublish = millis();
        return 1;
    }
    else { return 0; }
}

// Lets you remotely check the battery status by calling the function "batt"
// Triggers a publish with the info (so subscribe or watch the dashboard)
// and also returns a '1' if there's >10% battery left and a '0' if below
int batteryStatus(String command){
    // Publish the battery voltage and percentage of battery remaining
    // if you want to be really efficient, just report one of these
    // the String::format("%f.2") part gives us a string to publish,
    // but with only 2 decimal points to save space
    Particle.publish("B", 
          "v:" + String::format("%.2f",fuel.getVCell()) + 
          ",c:" + String::format("%.2f",fuel.getSoC()),
          60, PRIVATE
    );
    // if there's more than 10% of the battery left, then return 1
    if(fuel.getSoC()>10){ return 1;} 
    // if you're running out of battery, return 0
    else { return 0;}
}

I think pin_reset means you pressed the reset button (i’m guessing) that is what is causing the device to reset.

For the USB driver, you can grab it here: https://docs.particle.io/guide/getting-started/connect/electron/#installing-the-particle-driver

Does Particle Dev list the usb serial port and are you able to connect to it?

1 Like

No gps data is getting through the particle cloud.

I can see the Electronic in the device manager, shows ok. The firmware updater works as well.

Particle dev does not list any USB serial port. The company port shows as a drop down and 9600 baud but will not connect to anything, Electron Orr photon.

Can you use something like Putty or CoolTerm to connect to the COM port and see if that works?

The publish is every 15 minutes from what I see in the code. How are you viewing the event logs from Particle.publish()?

1 Like

It looks like the GPS receiver is not picking up any satellites, though it is at the window with 1/2 the hemisphere. The red Fix light blinks on and off 1 second (attempting to find satellites). There is no reporting in every 15 min without the gps fix, it appears. Seems like it should at least report the battery status…

I have putty, connected just fine. this is what was returned

$GPGSA,A,1,*1E

No gps fix.

Yup, it works. GPS is just touchy really need an external antenna.

value from log:
{“data”:“39.516544,-119.809525”,“ttl”:“60”,“published_at”:“2017-02-28T16:56:41.350Z”,“coreid”:“xxxxxxxxxxxxx”,“name”:“G”}

Will need to modify the code to check in regardless of GPS fix or not.

Particle Dev still not working. I uninstalled it, then reinstalled it. Still a no-go.