Hardware components | ||||||
| × | 3 | ||||
| × | 2 | ||||
| × | 15 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 6 | ||||
| × | 6 | ||||
Software apps and online services | ||||||
| ||||||
Hand tools and fabrication machines | ||||||
| ||||||
| ||||||
|
Overview
Read moreIf you have an studio or want to get your entryphone wireless and light related (for deaf people, noisy places, etc.) this may be the cheapest way to do it.
This is an Arduino Pro Mini with a basic cheapest Rx-Tx 433mhz modules, then a lot of red LEDs. To read the entryphone ringing signal, we need to build a little Op Amplifier circuit to read current and transform to voltage.
Why do I need that, I want to plug wires!When the buzz device is off there is an open circuit with no reliable voltage sense, so we need to do a current measure.
I built a coconut emitter (principal photo) which is placed and wired to the entryphone and then a couple of coconut receivers in different rooms, they are powered by 9V transformer but you could use from 5 to 12v (batteries).
#include <VirtualWire.h>
#define DEBUG
#define ringanalogpin A0
#define TX 12
#define HUMBRAL 200 //0-5v 0-1023... 200-->1volt humbral sensing
char datagrama[7]={"FFFFFF"};
char llaman[7]={"LLAMAN"};
char idle [7]={"-NADA-"};
void setup() {
#ifdef DEBUG//if debug is defined compile and go with the serial thing for monitoring from the arduino IDE
Serial.begin(9600);
#endif
pinMode(TX, OUTPUT);
vw_set_tx_pin(TX); // Configura el pin como TX
vw_set_ptt_inverted(true); // Requerido para DR3100
vw_setup(2000); // Bits por segundo
//leds y analog input
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(A0,INPUT);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
//pequeño TEST de transmision tras el reset
vw_send((uint8_t *)llaman, strlen(llaman));//shot the message to the RX modules
vw_wait_tx(); // Wait until the whole message is gone
}
void loop() {
if(analogRead(ringanalogpin)>=HUMBRAL)//if analogpin detects door ringing do stuff
{
strcpy(datagrama,llaman);//load the datagrama array "shhck ch!"(shotgun noise)
digitalWrite(13, HIGH); // Turn on a light to show transmitting
vw_send((uint8_t *)datagrama, strlen(datagrama));//shot the message to the RX modules
vw_wait_tx(); // Wait until the whole message is gone
delay(50);
digitalWrite(13, LOW); // Turn off a light after transmission
doorisringingmotherfucker();//blink effects
}
else//if nothing is happening
{
strcpy(datagrama,idle);//send idle state to the RX modules
digitalWrite(4,HIGH);//every light is turned off
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
}
#ifdef DEBUG //if debug is defined compile and go with the serial thing for monitoring from the arduino IDE
Serial.print("Value picked by the analog input");
Serial.print(analogRead(ringanalogpin));
Serial.print(" Datagrama");
Serial.println(datagrama);
#endif
}
void doorisringingmotherfucker()//friendly blinking lights function, nice dancing effect and then all blinking
{
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(6,HIGH);
delay(30);
digitalWrite(7,LOW);
delay(30);
digitalWrite(7,HIGH);
delay(30);
digitalWrite(8,LOW);
delay(30);
digitalWrite(8,HIGH);
delay(30);
digitalWrite(9,LOW);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(6,HIGH);
delay(30);
digitalWrite(7,LOW);
delay(30);
digitalWrite(7,HIGH);
delay(30);
digitalWrite(8,LOW);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(6,HIGH);
delay(30);
digitalWrite(7,LOW);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(4,LOW);
delay(200);
digitalWrite(4,LOW);//it could had been done smarter, yes but i dont care
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(6,HIGH);
delay(30);
digitalWrite(7,LOW);
delay(30);
digitalWrite(7,HIGH);
delay(30);
digitalWrite(8,LOW);
delay(30);
digitalWrite(8,HIGH);
delay(30);
digitalWrite(9,LOW);
delay(30);
digitalWrite(9,HIGH);
}
#include <VirtualWire.h>
#define DEBUG
#define RX 12
char datagrama[7]={"FFFFFF"};
void setup() {
#ifdef DEBUG//if debug is defined compile and go with the serial thing for monitoring from the arduino IDE
Serial.begin(9600);
#endif
pinMode(RX, OUTPUT);
vw_set_tx_pin(RX); // Configura el pin como TX
vw_set_ptt_inverted(true); // Requerido para DR3100
vw_setup(2000); // Bits por segundo
//leds y analog input
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(A0,INPUT);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
}
void loop() {
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
// Non-blocking
if (vw_get_message(buf, &buflen))//message received
{
int i;
// Message with a good checksum received, dump it.
for (i = 0; i < buflen; i++)
{
// Fill datagrama Char array with corresponding
// chars from buffer.
datagrama[i] = char(buf[i]);
}
datagrama[buflen] = '\0';
}
if(datagrama=="LLAMAN")
{
doorisringingmotherfucker();
}
if(datagrama=="-NADA-")
{
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
}
if(datagrama=="FFFFFF")
{
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
}
#ifdef DEBUG
Serial.print("Datagrama recibido:");
Serial.println(datagrama);
#endif
delay(1000);
}
void doorisringingmotherfucker()//friendly blinking lights function, nice dancing effect and then all blinking
{
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(6,HIGH);
delay(30);
digitalWrite(7,LOW);
delay(30);
digitalWrite(7,HIGH);
delay(30);
digitalWrite(8,LOW);
delay(30);
digitalWrite(8,HIGH);
delay(30);
digitalWrite(9,LOW);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(6,HIGH);
delay(30);
digitalWrite(7,LOW);
delay(30);
digitalWrite(7,HIGH);
delay(30);
digitalWrite(8,LOW);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(6,HIGH);
delay(30);
digitalWrite(7,LOW);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(4,LOW);
delay(200);
digitalWrite(4,LOW);//it could had been done smarter, yes but i dont care
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(200);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(30);
digitalWrite(4,LOW);
delay(30);
digitalWrite(4,HIGH);
delay(30);
digitalWrite(5,LOW);
delay(30);
digitalWrite(5,HIGH);
delay(30);
digitalWrite(6,LOW);
delay(30);
digitalWrite(6,HIGH);
delay(30);
digitalWrite(7,LOW);
delay(30);
digitalWrite(7,HIGH);
delay(30);
digitalWrite(8,LOW);
delay(30);
digitalWrite(8,HIGH);
delay(30);
digitalWrite(9,LOW);
delay(30);
digitalWrite(9,HIGH);
}
javier muñoz sáez
13 projects • 84 followers
Electronic engineer and sparky person.
I make tutorials so my future self doesnt need to remember how he did the thing
Comments