Arthur Sobel
Published © CC0

Alexa and Photon Controlled Hanukkah Menorah

Had to find a good use for replaced 12V AC plastic LED path lights, so why not make them into a menorah controlled by Alexa?

AdvancedShowcase (no instructions)Over 1 day1,258
Alexa and Photon Controlled Hanukkah Menorah

Things used in this project

Hardware components

Photon
Particle Photon
×1
Capacitor 100 nF
Capacitor 100 nF
×3
Capacitor 100 µF
Capacitor 100 µF
×1
Resistor 10k ohm
Resistor 10k ohm
×3
1N4001 Diode
×1
1N5819 – 1A Schottky Barrier Rectifier
1N5819 – 1A Schottky Barrier Rectifier
×1
Resistor 1 ohm - RSF100JB-1R0
×2
Resistor 20K ohm 5% 0.25W(1/4W)
×1
Capacitor 220pF 100V 5%
×1
Capacitor 220 µF
Capacitor 220 µF
×1
Inductor 220 uH
×1
Resistor 30.1K ohm .40W 1%
×2
Thyristor Triac .6A 600V TO92
×8
Texas Instruments MC33063
×1
MC74HC595AN
×1
Terminal Block 5 mm Vert 2POS
×1
Terminal Block 5 mm Vert 3POS
×2
Terminal Block 5 mm Vert 8POS
×1
PTC Resettable Fuse 0.75A (hold)
×1
Resistor 330 ohm 16-pin DIP Thick Film
×1
Stardust Sprinkler circuit board
×1

Software apps and online services

Amazon Alexa service
IFTTT Amazon Alexa service

Story

Read more

Schematics

Sprinkler Stardust

PCB for WICED Stardust or Photon to control 12VAC Valves

Code

Menorah Control code

Arduino
This is the code flashed on the Particle . You can control either individual LEDs or use it to set the day in which all LED equal or less than the number specified with be lit
// -----------------------------------
// Controlling LEDs over the Internet
// -----------------------------------

// name the pins
int led1 = D0;
int led2 = D1;
int led3 = D2;
int led4 = D3;
int led5 = D4;
int led6 = D5;
int led7 = D6;
int led8 = D7;

// This routine runs only once upon reset
void setup()
{
   //Register one Particle function here
   Particle.function("led", ledControl);

   //Register two Particle function here
   Particle.function("menorah", SetDay);


   // Configure the pins to be outputs
   pinMode(led1, OUTPUT);
   pinMode(led2, OUTPUT);
   pinMode(led3, OUTPUT);
   pinMode(led4, OUTPUT);
   pinMode(led5, OUTPUT);
   pinMode(led6, OUTPUT);
   pinMode(led7, OUTPUT);
   pinMode(led8, OUTPUT);

   // Initialize   the LEDs to be OFF
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
   digitalWrite(led3, LOW);
   digitalWrite(led4, LOW);
   digitalWrite(led5, LOW);
   digitalWrite(led6, LOW);
   digitalWrite(led7, LOW);
   digitalWrite(led8, LOW);


   }



// This routine loops forever 
void loop()
{
   delay(100);
   // Nothing to do here
}


// This function gets called whenever there is a matching API request
// the command string format is l<led number>,<state>
// for example: l1,HIGH or l1,LOW
//              l2,HIGH or l2,LOW

int ledControl(String command)
{
   int state = 0;
   //find out the pin number and convert the ascii to integer
   int pinNumber = command.charAt(1) - '0';
   //Sanity check to see if the pin numbers are within limits
   if (pinNumber < 0 || pinNumber > 7) return -1;

   // find out the state of the led
   if(command.substring(3,7) == "HIGH") state = 1;
   else if(command.substring(3,6) == "LOW") state = 0;
   else return -1;

   // write to the appropriate pin
   digitalWrite(pinNumber, state);
   return 1;
}

int SetDay(String command)
{
   
   int i=0;
   //find out the day number and convert the ascii to integer
   int dayNumber = command.charAt(0) - '0';
   //Sanity check to see if the pin numbers are within limits
   if (dayNumber < 0 || dayNumber > 8) return -1;
   
   if (dayNumber==0) {
   
   	for (i=0; i<8; i++){
   	digitalWrite(i, 0);
   		}
   	}
   
   else {
     	for (i=0; i<8; i++){
     	
   	digitalWrite(i, (i < dayNumber));
   		}
   	}


   return 1;
}

Credits

Arthur Sobel

Arthur Sobel

4 projects • 4 followers
General electronics

Comments