Este proceso, si detecta presencia con sensor pir en digital 12, enciende led en pin 13 y hacew una llamada al móvil que queramos poner en el programa. Probado y funcionando.No necesita sobrealimentación el escudo sim900. OK
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
int pinSensor = 12;
int pinLed = 13;
void setup()
{
//digitalWrite(9, HIGH); // Descomentar para activar la alimentación de la tarjeta por Software
//delay(1000);
//digitalWrite(9, LOW);
pinMode(pinSensor,INPUT);
pinMode(pinLed,OUTPUT);
delay (5000); //Nos damos un tiempo para encender el GPRS y la alimentación de la tarjeta
SIM900.begin(19200); //Configura velocidad del puerto serie para el SIM900
Serial.begin(19200); //Configura velocidad del puerto serie del Arduino
Serial.println("OK");
delay (1000);
SIM900.println("AT + CPIN = \"1472\""); //Comando AT para introducir el PIN de la tarjeta
delay(25000); //Tiempo para que encuentre una RED
}
void llamar()
{
Serial.println("Realizando llamada...");
SIM900.println("ATD676677815;"); //Comando AT para realizar una llamada
delay(30000); // Espera 30 segundos mientras realiza la llamada
SIM900.println("ATH"); // Cuelga la llamada
delay(1000);
Serial.println("Llamada finalizada");
}
void loop()
{
int lectura = digitalRead(pinSensor);
if(lectura==HIGH)
{
digitalWrite(pinLed,HIGH);
Serial.println("INTRUSO");
llamar(); //Realiza la llamada
// while (1); para que se quede en bucle y no haga mas llamada
}
if(lectura==LOW);
{
digitalWrite(pinLed,LOW);
Serial.println("DESPEJADO");
}
}
ARDUINO UNO + SIM900
lunes, 21 de noviembre de 2016
lunes, 30 de noviembre de 2015
Encendiendo led con mensajes sms
link: https://www.youtube.com/watch?v=6aNeHNQFCi0
Hoy traigo a ustedes un proyecto donde encenderé 9 led mediante mensajes de texto.
Para ello voy a utilizar un arduino uno y un escudo gsm el mismo utiliza un chip sim900 muy utilizado en proyectos m2m.
Se puede aplicar en proyectos de domótica, control industrial, seguridad y por supuesto hobby.
Hay que tener en cuenta que algunos pines no los vamos a poder utilizar para los led, ya que cumplen ciertas funciones esenciales, como por ejemplo los pines 0 y 1 que son usados para el puerto serie por hardware y los pines 2 y 3 como puerto serie por software. El pin número en este módulo se lo utiliza para encender o apagar el módulo gsm, por lo cual en este proyecto no lo vamos a usar porque no hay necesidad de apagar o encender el módulo.
Lo pines usados para los led son el numero 4 5 6 8 9 10 11 12 y 13, también se pueden usar los pines A0 al A5 (pines analógicos) y en total podríamos controlar hasta 15 dispositivos a las vez.
El módulo según el fabricante necesita una fuente que pueda entregar hasta dos amperes de corriente, para poder funcionar sin inconvenientes. El módulo es totalmente compatible con arduino uno y simplemente conectandolo encima del mismo funcionará sin dar ningún problema.
En cuanto al sketch de arduino, los comandos de texto que podemos enviar son On4 enciende el led conectado al pin 4 si queremos apargarlo enviamos Off5, hay que tener en cuenta que es case sensitive, por lo cual va a distinguir entre mayúsculas y minúsculas, si se envía un carácter en forma incorrecta no funcionará el comando.
Link del proyecto http://rogerbit.com/wprb/?p=616 (código fuente y más)
Apoya mi canal suscribiendote en https://www.youtube.com/user/carlosvolt?feature=iv&src_vid=6aNeHNQFCi0&annotation_id=annotation_2136818013
Mi grupo en facebook es https://www.facebook.com/groups/RogerBit
Lista de comandos que se pueden usar, ustedes pueden modificarlos a su gusto y agregar otras funciones
On4—–>Enciende led 4 Off4—–>Apaga el led 4
On5—–>Enciende led 5 Off5—–>Apaga el led 5
On6—–>Enciende led 6 Off6—–>Apaga el led 6
On8—–>Enciende led 8 Off8—–>Apaga el led 8
On9—–>Enciende led 9 Off9—–>Apaga el led 9
On10—–>Enciende led 10 Off10—–>Apaga el led 10
On11—–>Enciende led 11 Off11—–>Apaga el led 12
On12—–>Enciende led 12 Off12—–>Apaga el led 12
On13—–>Enciende led 13 Off13—–>Apaga el led 13
Allon—–>Enciende todos los led
Alloff—–>Apaga todos los led
Partes del módulo gsm
Foto del módulo con los led conectados en el protoboad la conexión es muy simple, sólo hay colocarles un resistor de 1k.
Código Fuente
Descargar http://rogerbit.com/wprb/wp-content/uploads/2015/11/smsLed9.rar
----------------------------------------------------------------------------
#include <SoftwareSerial.h>
#include <string.h>
SoftwareSerial Sim900Serial(2, 3);
byte buffer[64]; //Buffer para recivir datos del puerto serie
int count=0;
int led13 = 13;
int led12 = 12;
int led11 = 11;
int led10 = 10;
int led9 = 9;
int led8 = 8;
int led7 = 7;
int led6 = 6;
int led5 = 5;
int led4 = 4;
#define phonenumber “1234567890” //Cambiar por su número de teléfono, el número de teléfono debe ser el mismo que el formato que recibe el SMS,
//Quizá debe incluir el código de país.
void setup()
{
//Del pin 4 al 13 serán salidas donde se conectaran los led
pinMode(led13, OUTPUT);
pinMode(led12, OUTPUT);
pinMode(led11, OUTPUT);
pinMode(led10, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led4, OUTPUT);
Sim900Serial.begin(19200);//Velocidad del puerto serie por Software pines 2 y 3
Serial.begin(19200); //Velocidad del puerto serie por Hardware pines 0 y 1
delay(500);
Sim900_Inti();
}
void loop()
{
if (Sim900Serial.available())
{
while(Sim900Serial.available()) //Leyendo datos del arreglo de caracteres
{
buffer[count++]=Sim900Serial.read(); //Almacenando los datos del arreglo en un buffer
if(count == 64)break;
}
Serial.write(buffer,count);
Cmd_Read_Act();
clearBufferArray();
count = 0;
}
if (Serial.available()) // Verifica si se dispone de datos en el puerto serie por hardware
Sim900Serial.write(Serial.read()); // y los escribe en el escudo SIM900
}
// Limpia el buffer
void clearBufferArray()
{
for (int i=0; i<count;i++)
{ buffer=NULL;} // borrar todos los índices del arreglo
}
void Sim900_Inti(void)
{
Sim900Serial.println(“AT+CMGF=1”);
delay(500);
Sim900Serial.println(“AT+CNMI=2,2″);
delay(500);
}
//////Esta función lee los SMS enviados al escudo SIM900 y actua en base a esa orden.
void Cmd_Read_Act(void)
{
char buffer2[64];
char comparetext[25];
for (int i=0; i<count;i++)
{ buffer2=char(buffer);}
memcpy(comparetext,buffer2,25);
if (strstr(comparetext,phonenumber))
{
///////////LED13///////////////////////////////////////
if (strstr(buffer2,”On13″))
{
digitalWrite(led13, HIGH);
}
if (strstr(buffer2,”Off13″))
{
digitalWrite(led13, LOW);
}
///////////LED12///////////////////////////////////////
if (strstr(buffer2,”On12″))
{
digitalWrite(led12, HIGH);
}
if (strstr(buffer2,”Off12″))
{
digitalWrite(led12, LOW);
}
///////////LED11///////////////////////////////////////
if (strstr(buffer2,”On11″))
{
digitalWrite(led11, HIGH);
}
if (strstr(buffer2,”Off11″))
{
digitalWrite(led11, LOW);
}
///////////LED10///////////////////////////////////////
if (strstr(buffer2,”On10″))
{
digitalWrite(led10, HIGH);
}
if (strstr(buffer2,”Off10″))
{
digitalWrite(led10, LOW);
}
///////////LED9///////////////////////////////////////
if (strstr(buffer2,”On9″))
{
digitalWrite(led9, HIGH);
}
if (strstr(buffer2,”Off9″))
{
digitalWrite(led9, LOW);
}
///////////LED8///////////////////////////////////////
if (strstr(buffer2,”On8″))
{
digitalWrite(led8, HIGH);
}
if (strstr(buffer2,”Off8″))
{
digitalWrite(led8, LOW);
}
///////////LED7///////////////////////////////////////
if (strstr(buffer2,”On7″))
{
digitalWrite(led7, HIGH);
}
if (strstr(buffer2,”Off7″))
{
digitalWrite(led7, LOW);
}
///////////LED6///////////////////////////////////////
if (strstr(buffer2,”On6″))
{
digitalWrite(led6, HIGH);
}
if (strstr(buffer2,”Off6″))
{
digitalWrite(led6, LOW);
}
///////////LED5///////////////////////////////////////
if (strstr(buffer2,”On5″))
{
digitalWrite(led5, HIGH);
}
if (strstr(buffer2,”Off5″))
{
digitalWrite(led5, LOW);
}
///////////LED4///////////////////////////////////////
if (strstr(buffer2,”On4″))
{
digitalWrite(led4, HIGH);
}
if (strstr(buffer2,”Off4″))
{
digitalWrite(led4, LOW);
}
if (strstr(buffer2,”Allon”))
{
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
digitalWrite(led11, HIGH);
digitalWrite(led12, HIGH);
digitalWrite(led13, HIGH);
}
if (strstr(buffer2,”Alloff”))
{
digitalWrite(led4, LOW);
digitalWrite(led4, LOW);
digitalWrite(led4, LOW);
digitalWrite(led4, LOW);
digitalWrite(led4, LOW);
digitalWrite(led4, LOW);
digitalWrite(led4, LOW);
digitalWrite(led4, LOW);
digitalWrite(led4, LOW);
digitalWrite(led4, LOW);
}
}
}
miércoles, 10 de junio de 2015
Arduino Puerto serial
//Controlamos el pin 13 por el puerto serial
const int ledPin = 13; // the pin that the LED is attached to
int incomingByte; // a variable to read incoming serial data into
int estado;
void setup() {
// initialize serial communication:
Serial.begin(9600);
Serial.println("LED_ON_OFF");
Serial.println("0 - APAGAR");
Serial.println("1 - ENCENDER");
Serial.println("9 - ESTADO");
Serial.println();
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// see if there's incoming serial data:
if (Serial.available() > 0) {
// read the oldest byte in the serial buffer:
incomingByte = Serial.read();
switch (incomingByte){
case '0':
digitalWrite(ledPin, LOW);
estado=0;
break;
case '1':
digitalWrite(ledPin, HIGH);
estado=1;
break;
case '9':
if(estado==1){
Serial.println("ENCENDIDO");
} else {
Serial.println("APAGADO");
}//if estado
break;
}//switch
} else {
delay(100);
}//IF Serial
} //loop
const int ledPin = 13; // the pin that the LED is attached to
int incomingByte; // a variable to read incoming serial data into
int estado;
void setup() {
// initialize serial communication:
Serial.begin(9600);
Serial.println("LED_ON_OFF");
Serial.println("0 - APAGAR");
Serial.println("1 - ENCENDER");
Serial.println("9 - ESTADO");
Serial.println();
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// see if there's incoming serial data:
if (Serial.available() > 0) {
// read the oldest byte in the serial buffer:
incomingByte = Serial.read();
switch (incomingByte){
case '0':
digitalWrite(ledPin, LOW);
estado=0;
break;
case '1':
digitalWrite(ledPin, HIGH);
estado=1;
break;
case '9':
if(estado==1){
Serial.println("ENCENDIDO");
} else {
Serial.println("APAGADO");
}//if estado
break;
}//switch
} else {
delay(100);
}//IF Serial
} //loop
Arduino UNo + Shield Ethernet completo
Página web Información: http://diymakers.es/crear-servidor-web-con-arduino/
/*
www.diymakers.es
by A.García & M.García
Crear servidor Web con Arduino
Tutorial en: http://diymakers.es/crear-servidor-web-con-arduino/
*/
#include <SPI.h> //Importamos librería comunicación SPI
#include <Ethernet.h> //Importamos librería Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//Ponemos la dirección MAC de la Ethernet Shield que está con una etiqueta debajo la placa
IPAddress ip(192,168,1,100);
//Asingamos la IP al Arduino
EthernetServer server(80);
//Creamos un servidor Web con el puerto 80 que es el puerto HTTP por defecto
int
led=6;
//Pin del led
String estado=
"OFF"
;
//Estado del Led inicialmente "OFF"
void
setup()
{
Serial.begin(9600);
// Inicializamos la comunicación Ethernet y el servidor
Ethernet.begin(mac, ip);
server.begin();
Serial.print(
"server is at "
);
Serial.println(Ethernet.localIP());
pinMode(led,OUTPUT);
}
void
loop()
{
EthernetClient client = server.available();
//Creamos un cliente Web
//Cuando detecte un cliente a través de una petición HTTP
if
(client) {
Serial.println(
"new client"
);
boolean currentLineIsBlank =
true
;
//Una petición HTTP acaba con una línea en blanco
String cadena=
""
;
//Creamos una cadena de caracteres vacía
while
(client.connected()) {
if
(client.available()) {
char
c = client.read();
//Leemos la petición HTTP carácter por carácter
Serial.write(c);
//Visualizamos la petición HTTP por el Monitor Serial
cadena.concat(c);
//Unimos el String 'cadena' con la petición HTTP (c). De esta manera convertimos la petición HTTP a un String
//Ya que hemos convertido la petición HTTP a una cadena de caracteres, ahora podremos buscar partes del texto.
int
posicion=cadena.indexOf(
"LED="
);
//Guardamos la posición de la instancia "LED=" a la variable 'posicion'
if
(cadena.substring(posicion)==
"LED=ON"
)
//Si a la posición 'posicion' hay "LED=ON"
{
digitalWrite(led,HIGH);
estado=
"ON"
;
}
if
(cadena.substring(posicion)==
"LED=OFF"
)
//Si a la posición 'posicion' hay "LED=OFF"
{
digitalWrite(led,LOW);
estado=
"OFF"
;
}
//Cuando reciba una línea en blanco, quiere decir que la petición HTTP ha acabado y el servidor Web está listo para enviar una respuesta
if
(c ==
'\n'
&& currentLineIsBlank) {
// Enviamos al cliente una respuesta HTTP
client.println(
"HTTP/1.1 200 OK"
);
client.println(
"Content-Type: text/html"
);
client.println();
//Página web en formato HTML
client.println(
"<html>"
);
client.println(
"<head>"
);
client.println(
"</head>"
);
client.println(
"<body>"
);
client.println(
"<h1 align='center'>DIYMakers</h1><h3 align='center'>LED controlado por Servidor Web con Arduino</h3>"
);
//Creamos los botones. Para enviar parametres a través de HTML se utiliza el metodo URL encode. Los parámetros se envian a través del símbolo '?'
client.println(
"<div style='text-align:center;'>"
);
client.println(
"<button onClick=location.href='./?LED=ON\' style='margin:auto;background-color: #84B1FF;color: snow;padding: 10px;border: 1px solid #3F7CFF;width:65px;'>"
);
client.println(
"ON"
);
client.println(
"</button>"
);
client.println(
"<button onClick=location.href='./?LED=OFF\' style='margin:auto;background-color: #84B1FF;color: snow;padding: 10px;border: 1px solid #3F7CFF;width:65px;'>"
);
client.println(
"OFF"
);
client.println(
"</button>"
);
client.println(
"<br /><br />"
);
client.println(
"<b>LED = "
);
client.print(estado);
client.println(
"</b><br />"
);
client.println(
"</b></body>"
);
client.println(
"</html>"
);
break
;
}
if
(c ==
'\n'
) {
currentLineIsBlank =
true
;
}
else
if
(c !=
'\r'
) {
currentLineIsBlank =
false
;
}
}
}
//Dar tiempo al navegador para recibir los datos
delay(1);
client.stop();
// Cierra la conexión
}
}
Suscribirse a:
Entradas (Atom)