[solved] Core breathing green but is connected to the cloud

After flashing my Core (to apply the CC3300 patch), I noticed an odd behaviour with the status LED when in semi-automatic mode. Once the Core is connected to the cloud, the LED breathes green rather than cyan. In automatic mode, it breathes cyan as expected.

I am pretty certain that the core has actually connected to the cloud as via the online IDE, the core shows as connected and I am able to continue flashing new firmware to the device.

SYSTEM_MODE(SEMI_AUTOMATIC);

int RELAY1 = D0;
int RELAY2 = D1;
int RELAY3 = D2;
int RELAY4 = D3;
int INPUT7 = D7;

void setup() {

    
    //Initilize the relay control pins as output
   pinMode(RELAY1, OUTPUT);
   pinMode(RELAY2, OUTPUT);
   pinMode(RELAY3, OUTPUT);
   pinMode(RELAY4, OUTPUT);
   pinMode(INPUT7, INPUT_PULLUP);
   
   // Attach interrupt to D7
   attachInterrupt(D7, connect, FALLING);
   
   // Initialize all relays to an OFF state
   digitalWrite(RELAY1, LOW);
   digitalWrite(RELAY2, LOW);
   digitalWrite(RELAY3, LOW);
   digitalWrite(RELAY4, LOW);
}

void loop() {
    
    if(digitalRead(INPUT7) == 0) {
        // Connect to WiFi
        digitalWrite(RELAY2, 1);
        
    }
    else {
        digitalWrite(RELAY2, 0);
    }
}

void connect() {
    if (Spark.connected() == false) {
      
        Spark.connect();
        digitalWrite(RELAY4, 1);
    }
    else {
        digitalWrite(RELAY4, 0);
    }
}

My assumption is that I am simply missing something and that this is normal behaviour but on the surface of it, it doesn’t really make sense.

The core is mounted to the relay board - just a easy useful debugging output.

Can anyone offer any comment on this? Is this intended or something wrong with what I am doing?

The breathing green is normal in SEMI_AUTOMATIC.
Cyan means cloud connected, but in SEMI_AUTOMATIC you won’t get connected unless you call Particle.connect()

Or did you mean after you pressed your button and your device went through WiFi and cloud connection color codes it still breathes green?

After I have pressed the button and the device has connected, the LED still breathes green.

I ran your code (compiled with v0.4.9 on Build IDE) on a Spark Core with v1.28 and v1.29 of the CC3000 patch and both worked fine, breathing cyan after D7 jumpered to GND. What versions of firmware and CC3000 patch are you using? Could you also try with the Core out of the relay shield, which is the same way I had mine.

1 Like

The code was compiled with v0.4.9 on the Build IDE. I am not sure of the CC3000 patch version - struggling to find a way to get the version. I updated the CC3000 firmware today running:

particle flash --usb cc3000

Edit - I have tried with the Core out of the relay shield with the same result.

Versions are documented here: https://docs.particle.io/support/troubleshooting/connection-help/core/#deep-update-for-the-core

Looks like you should have v1.29, you can verify by running:
particle subscribe mine

Then power cycling your Core, and get it to connect to the Cloud. You’ll see
"name":"spark/cc3000-patch-version","data":"1.29"
in the stream


Try adding this code to your setup() to see if you get RED, GREEN, BLUE

  RGB.control(true);
  RGB.color(255,0,0);
  delay(500);
  RGB.color(0,255,0);
  delay(500);
  RGB.color(0,0,255);
  delay(500);
  RGB.control(false);

Running that returned v1.29. Interestingly, after putting that LED sequence, powering up and pressing the button, the LED starting breathing cyan as originally expected. Stripping the LED sequence back out still results in the cyan LED. I don’t think I was doing something dumb and the breathing green was definately green as opposed to cyan and I definately had the cloud connection otherwise I wouldn’t have been able to re-flash the Core.

I guess just a glitch… Thank-you for your assistance and verifying that at least the code was at fault.

2 Likes