3 dead photon particles

Alright, let’s start at the beginning. I wanted to make my cat a WiFi feeder that way when I am at school, as well as anywhere else, I can feed him, and know he is being fed properly. I came across an instructable (click here) and thought it would be great to have a small board be a problem solver to my issues.

I finally received the first particle, which i was all excited to use because it was new for me. I typed in the guys code he provided, making sure that he had everything right. Connected the particle to a 5.0V 2.5Amp Samsung Fast Charger, and had no issues. Finally ran the program, and the board dies, and the servo is slowly spinning at this point.

I contact Particle Support (Thank you for dealing with me guys, honestly), and they sent me a new one quickly.

Second particle photon,
I was curious if it was human error, and that maybe i messed something up, so I do everything from the first photon, except I connected it to a USB port on my computer instead of the samsung fast charger, and I cut out the buzzer from the code that they guy originally gives. Photon dies, I contacted support AGAIN with my head down, and asking for forgiveness. Low and behold they came through, picked me up, and sent me another particle photon.

Third Photon,
Literally came in today, all excited about it. I finally knew from the emails back, and forth from particle support that 5.0V 2.5 Amps is enough to power it properly. I said alright, and thought that i would be fine. Edited the code a little to take out the buzzer so i could save on line space. Got verified, and flashed it properly. Soon as I ran it this time, it died.

Im literally at a loss on this one. I wont be contacting support for a replacement because they have given so much to me already, I will be ordering a JTAG programmer if people think these Photons can be salvaged, and if that case. I really need help with knowing how to rebuild the memory on the Photon Particles.

Please help me out, i know this is TL;DR post, but i need help.

@AlexTheLion2016, what does this have to do with the title of your post?

Just edited it, my bad

@AlexTheLion2016, you need to explain what you mean by “died”. What is the RGB LED doing? What have you connected to the Photon? Are you able to put the Photon into Safe mode?

1 Like

No LED response from all 3 boards, I am sorry that my explanation is a little bad. I’m just severely angry.
I have tried reconnecting to my USB port with nothing attached to the Photon, but nothing worked.

Though I can understand that you’re a bit frustrated, but without additional info, there’s little we can do.
Could you tell us exactly what you’ve hooked up (links are preferred), and how you hooked it up (pictures wouldn’t hurt here)?
What’s the exact code you’ve used (a share link from the web IDE is preferable)?
Did the Photons do anything weird while ‘dying’ (think of smoke, becoming excessively hot etc.)?
Have you tried Safe Mode and/or DFU mode? If so, what do they do?

The charger might have been an issue since that’s capable of boosting the voltage over the allowed limits, though I’d be surprised if it did. That said, the servo mentioned in the guide can use over 2.5A under certain conditions. Add to that the Photon and other connected devices, and you’re well over its limit. The current draw from the Servo might have been what ‘killed’ it, but for that we need to know how you hooked things up.

As some general advise: if things break unexpectedly, don’t just take a new part and stick it in without searching for the cause. If the cause isn’t fixed, the results are likely to be the same. Especially don’t try it a third time, expecting different results. When in doubt, ask help beforehand.

3 Likes

This is the way i have it setup on the board, except the buzzer isnt there, and the Yellow wire is with the A5 Pin as indicated in the instructable

This is the code i originally used with Photon 1

Servo myservo;
int servoPin = A5;  // variable to store servo pin
int speakerPin = D0; // variable to store speaker pin

// create an array for the notes in the melody:
// C4,G3,G3,A3,G3,0,B3,C4
int melody[] = {1908,2551,2551,2273,2551,0,2024,1908}; 
// create an array for the duration of notes
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {4,8,8,4,4,4,4,4};

// setup function
void setup()
{
    myservo.attach(servoPin);   // attach servo pin
    Particle.function("feed",triggerFeed);  // declare feed funtion
    pinMode(speakerPin, OUTPUT);     // attach speaker pin
}

void loop()
{
    //do nothing in loop
}

// feed function
// since feed can be invoked by 3 different methods (button, voice, schedule)
// we need to account for 3 different commands
int triggerFeed(String command)
{
	// bfeed is fed by the button
	// sfeed is fed by schedule
	// vfeed is fed by voice command
   if (command=="bfeed" || command=="sfeed" || command=="vfeed")
    {
        for (int i=1; i<=3; i++){
            playNotes();
        }
        myservo.write(0);   //start turning the servo
        delay(330);     //how long the turn turns in ms (may need some adjusting)
        myservo.write(92);  //stop turning servo
        setTime();
        if (command=="bfeed"){
            Particle.publish("Bella fed by button",Time.timeStr(),PRIVATE);
        }else if (command=="sfeed"){
            Particle.publish("Bella fed by schedule",Time.timeStr(),PRIVATE);
        }else if (command=="vfeed"){
            Particle.publish("Bella fed by voice command",Time.timeStr(),PRIVATE);
        }
        return 1;
    }
}

// play melody function
void playNotes()
{
    // iterate over the notes of the melody:
    for (int thisNote = 0; thisNote < 8; thisNote++) {      // to calculate the note duration, take one second
      // divided by the note type.
      //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
      int noteDuration = 1000/noteDurations[thisNote];
      tone(speakerPin, melody[thisNote],noteDuration);      // the note's duration + 30%
      int pauseBetweenNotes = noteDuration * 1.30;
      delay(pauseBetweenNotes);
      // stop the tone playing
      noTone(speakerPin);
    }
}

// time function sets the event time to CST which is UTC-5 during daylight savings, or else UTC-6
void setTime()
{
    int dst=Time.isDST(); // check if daylight savings time is in effect
    if (dst=1){
        Time.zone(-5); //set timezone to CDT
    }else Time.zone(-6); //set timezone CST
}




_**and this is the edited one i used with the 2nd and 3rd one**_

Servo myservo;
int servoPin = A5;  // variable to store servo pin

// setup function
void setup()
{
    myservo.attach(servoPin);   // attach servo pin
    Particle.function("feed",triggerFeed);  // declare feed funtion
}

void loop()
{
    //do nothing in loop
}

// feed function
// since feed can be invoked by 3 different methods (button, voice, schedule)
// we need to account for 3 different commands
int triggerFeed(String command)
{
	// bfeed is fed by the button
	// sfeed is fed by schedule
	// vfeed is fed by voice command
   if (command=="bfeed" || command=="sfeed" || command=="vfeed")
    {
        for (int i=1; i<=3; i++){
        }
        myservo.write(0);   //start turning the servo
        delay(330);     //how long the turn turns in ms (may need some adjusting)
        myservo.write(92);  //stop turning servo
        setTime();
        if (command=="bfeed"){
            Particle.publish("Bella fed by button",Time.timeStr(),PRIVATE);
        }else if (command=="sfeed"){
            Particle.publish("Bella fed by schedule",Time.timeStr(),PRIVATE);
        }else if (command=="vfeed"){
            Particle.publish("Bella fed by voice command",Time.timeStr(),PRIVATE);
        }
        return 1;
    }
}

// time function sets the event time to CST which is UTC-5 during daylight savings, or else UTC-6
void setTime()
{
    int dst=Time.isDST(); // check if daylight savings time is in effect
    if (dst=1){
        Time.zone(-5); //set timezone to CDT
    }else Time.zone(-6); //set timezone CST
}

The photons all ran the application, then suddenly all the LED’s turned off (Except Photon 1, that one had a Dim D7 light with the main LED off). They didnt get hot, and the servo still kept running. the servo is supposed to run at 6.0v-7.2v.

I just want to know if there is a way to use the JTAG programer to rebuild/restore these 3

What makes you think its a software issue? The spec of that servo says it sinks 400mA (up to 500mA with load) at 6V. If I remember correctly, the photon can deliver up to 125mA (somebody check me). It seems to me you blew the PSU. No software issue.

EDIT----------------
Hang on, you connected the servo +Pwr to the Vin of the photon, why?

1 Like

Okay, so nothing at this point is able to fix, or be bypassed? should i just go on to another project?

The Instructable up above said to, i just followed instructions.

Ah, I should have followed the instructable first - my bad - you have the Vin connected to servo +pwr which in turn is connected to an external power supply? If so, what kind of PSU?

Samsung fast charger: 5.0v 2.5 amp, photon support said that this would be perfectly fine to power

So I see the instrucable connect USB power to the photon, is that your setup also? After photons started dying, did you try to see if you could run a simple LED on/off project without the servo attached? That will tell if hw things are still ok. I don’t think going jtag is what you need.

After the photons died, i disconnected the board to power supply, disconnected servo, and then reconnected photon to same power supply to see if i get a response out of the LED’s i didnt all 3 times, Particle support said that i couldve caused a low voltage situation which made the bootloader corrupted

EDITED

hmm, i see, I have thrown a lot of dirt at photons without ever getting that bootloader to be corrupted but the Particle boys know more than me… You cannot get it in dfu-mode (flashing yellow)? Absolutely no response to button presses?

No response to trying DFU… just all dead LED’s

Then sorry my man, you hit the end of my knowledge, Particle might be right to reload the bootloader - that means going through jtag. But before going that route; be aware that you will end up squarely in programmers town i.e. you need to know what you’re doing with jtag - perhaps better to find a friend who is already setup?

2 Likes