El hilo de ARDUINO: Dudas, código, ejemplos, etc

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Donde tengas la parte del código donde realices la llamada (no sé si lo haces con un comando o con un comando AT a través de serial) intercalas el IF. Seguramente tengas ya un IF para poder hacer la llamada, pues justo debajo, en vez de poner...

Código:
IF "condición"
-realiza llamada

...pones el IF justo antes de hacer la llamada para que lo pueda comparar:

Código:
IF "condición"
-IF "comparación de variable"
--realiza llamada

De todas formas, si nos subes el código podremos verlo y echarte una mano, que cuatro, seis u ocho ojos ven más que dos. :guiño:
Luego cuando encienda el pc lo pongo porque me suena que tenia algo escrito en el void loop y lo borré y ahora no rula se queda en las interrogantes
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Este es el código que usé y funcionaba hasta que lo toqué

#include <SoftwareSerial.h>



SoftwareSerial SIM900(7, 8);


void setup() {

digitalWrite(9, HIGH); // Descomentar para activar la alimentación de la tarjeta por Software

delay(1000);

digitalWrite(9, LOW);

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=\"xxxx\""); //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("ATDXXXXXXXXX;"); //Comando AT para realizar una llamada

delay(30000); // Espera 30 segundos mientras realiza la llamada

SIM900.println("ATH"); // Cuelga la llamada

delay(2000);

Serial.println("Llamada finalizada");

}


void mensaje_sms()

{

Serial.println("Enviando SMS...");

SIM900.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir mensajes

delay(100);

SIM900.println("AT+CMGS = \"XXXXXXXXX\""); //Numero al que vamos a enviar el mensaje

delay(100);

SIM900.println("SMS enaviado desde arduino."); // Texto del SMS

delay(100);

SIM900.print((char)26); //Comando de finalización ^Z

delay(100);

SIM900.println();

Serial.println("SMS enviado");

}



void loop() {

}
 

pasko

Forista Senior
Modelo
F45 - K54
Registrado
21 Sep 2017
Mensajes
4.203
Reacciones
10.200
Hola.

¿Es este el código que decías que repetía las llamadas?. A mi me parece que está bien: se registra, hace una llamada y envía un sms, luego en la parte loop se queda sin hacer nada...

Si pones las funciones llamar() y enviar_sms dentro de loop(), las.estará repitiendo continuamente ...que creo que es lo que te pasaba antes.
Saludos.
 
Última edición:

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Hola.

¿Es este el código que decías que repetía las llamadas?. A mi me parece que está bien: se registra, hace una llamada y envía un sms, luego en la parte loop se queda sin hacer nada...

Si pones las funciones llamar() y enviar_sms dentro de loop(), las.estará repitiendo continuamente ...que creo que es lo que te pasaba antes.
Saludos.
al borrar el loop y cargar de nuevo hizo la llamada y el mensaje pero después no conseguí que volviera a hacer la llamada

Se supone que si envío en el display por el comando atd debería volver a hacer la llamada? Porque no hace nada, y solo me salen interrogantes, descomente la línea de marcar pin porque previamente se lo había quitado con un móvil y funcionar funciona pero no veo nada en el display
 

pasko

Forista Senior
Modelo
F45 - K54
Registrado
21 Sep 2017
Mensajes
4.203
Reacciones
10.200
Hola.

Tienes que poner el atd y el del sms en el loop, junto con el IF que decía McClane.

Lo que pongas en el IF es lo que tiene que lanzar la alarma... ¿Cómo quieres que salte la alarma? ¿Con detención de movimiento, una puerta abierta en el camión ? ...

Saludos.
 

McClane

Moderador Informática
Moderador
Miembro del Club
Modelo
2 E30, 1 E39
Registrado
20 Jul 2006
Mensajes
44.373
Reacciones
24.282
¿No hay nada en el LOOP? Es muy raro eso, porque no debería entrar (no soy un experto en Arduino) en los VOID distintos sin un código que le mande, pero esto no lo recuerdo con exactitud. Otra opción es que ejecute el código y SOLAMENTE el VOID SETUP se ejecuta una vez, por lo que puede que entre en bucle la programación porque:

-No veo código que le indique cuándo realizar la llamada
-No veo código que pare de hacer llamadas

Por lo que veo, los VOID entran en bucle y creo que ahí está el problema. Debería estar en el VOID LOOP o dejarlos así pero con un código en el VOID LOOP que llame a ese VOID cuando haya un evento, como por ejemplo, una fuerza G que mueva el coche y lo interprete como robo, alarma externa con salida de señal, etc. De todas formas, ahí veo muchos DELAY y además bastante largos. No soy tampoco extremista y hago un código para evitar un DELAY de... 50ms, como otros hacen, pero 30s de DELAY son muchos segundos. Esto deja la placa TOTALMENTE detenida y lo peor de todo, con uso de núcleo aunque no haga nada. Esto puede serte útil si va a estar tirando de batería el sistema. :guiño:

Por otro lado, aunque debería funcionar, se recomienda que la propia placa y todos sus componentes por serial estén vinculados a 9600 baudios. Aunque funciona a 115200 también, mucha gente lo recomienda porque dicen que es como menos falla. Lo mismo, con lo de los interrogantes, tienes por ahí algún fallo de sincronismo entre la pantalla, el serial y otras cosas. :guiño:
 

pasko

Forista Senior
Modelo
F45 - K54
Registrado
21 Sep 2017
Mensajes
4.203
Reacciones
10.200
Hola.

Prueba algo así :

........ inicializaciones, void llamada(), void envia_sms(), etc.
....

void loop ()
{

if condición_disparo_alarma:
llamada();
envia_sms();
}

Reduce también el delay de 30 segs de la llamada, sobre todo para poder probar sin perder tanto tiempo. biggrin

Saludos.
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Gracias por los aportes iré probando a ratos porque esta semana y dando la brasa para incluir los sensores que tienen que estar al caer

Los sensores son uno para cada depósito otro para cada puerta y dos sensores por infrarrojos para el interior

La idea es que cuando salten haga el loop y me telefonee la historia es que en el sms me gustaría incluir las coordenadas de latitud y longitud para posición del objeto y en ese código ya si que me pierdo :floor:
 

pasko

Forista Senior
Modelo
F45 - K54
Registrado
21 Sep 2017
Mensajes
4.203
Reacciones
10.200
Hola.

Cuando tengas los sensores lo vemos...
Los sensores de interior son infrarrojos o ultrasonidos?
Las coordenadas no se, serán las del camión y ya sabrás donde está, ¿no?
Saludos.
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Hola.

Cuando tengas los sensores lo vemos...
Los sensores de interior son infrarrojos o ultrasonidos?
Las coordenadas no se, serán las del camión y ya sabrás donde está, ¿no?
Saludos.
Puertas y depósitos de ultrasonidos los de dentro infrarrojos

Las coordenadas se que hay una acción para leer los datos que se reciben de la red móvil y entre ellos se encuentran las coordenadas, la gracia de eso es que si se lo llevan que por ejemplo cada 20 min envíe un sms con las coordenadas
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305

pasko

Forista Senior
Modelo
F45 - K54
Registrado
21 Sep 2017
Mensajes
4.203
Reacciones
10.200
Hola.
Puertas y depósitos de ultrasonidos los de dentro infrarrojos

Las coordenadas se que hay una acción para leer los datos que se reciben de la red móvil y entre ellos se encuentran las coordenadas, la gracia de eso es que si se lo llevan que por ejemplo cada 20 min envíe un sms con las coordenadas

Buena idea. No sabía que se podía hacer algo así ...

Saludos.
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
¿No hay nada en el LOOP? Es muy raro eso, porque no debería entrar (no soy un experto en Arduino) en los VOID distintos sin un código que le mande, pero esto no lo recuerdo con exactitud. Otra opción es que ejecute el código y SOLAMENTE el VOID SETUP se ejecuta una vez, por lo que puede que entre en bucle la programación porque:

-No veo código que le indique cuándo realizar la llamada
-No veo código que pare de hacer llamadas

Por lo que veo, los VOID entran en bucle y creo que ahí está el problema. Debería estar en el VOID LOOP o dejarlos así pero con un código en el VOID LOOP que llame a ese VOID cuando haya un evento, como por ejemplo, una fuerza G que mueva el coche y lo interprete como robo, alarma externa con salida de señal, etc. De todas formas, ahí veo muchos DELAY y además bastante largos. No soy tampoco extremista y hago un código para evitar un DELAY de... 50ms, como otros hacen, pero 30s de DELAY son muchos segundos. Esto deja la placa TOTALMENTE detenida y lo peor de todo, con uso de núcleo aunque no haga nada. Esto puede serte útil si va a estar tirando de batería el sistema. :guiño:

Por otro lado, aunque debería funcionar, se recomienda que la propia placa y todos sus componentes por serial estén vinculados a 9600 baudios. Aunque funciona a 115200 también, mucha gente lo recomienda porque dicen que es como menos falla. Lo mismo, con lo de los interrogantes, tienes por ahí algún fallo de sincronismo entre la pantalla, el serial y otras cosas. :guiño:

Va a tirar de las baterías de 24v pero alimentado por un escudo con dos baterías para que en caso de fallo de alimentación siga funcionando con las pilas, entonces necesito que si salta uno de los sensores mientras esté el evento siga repitiendo la llamada y en el sms incluya la posición, con posibilidad de que pueda detenerlo remotamente con un sms, no me toque ir en calzones desde mi casa al aparcamiento a resetear la placa
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Tengo novedades acerca del invento del volante

He conseguido que funcione el encoder con el programa, repasando el esquema había pasado por alto que llevaba 2 resistencias entre el positivo del encoder y una a la fase a y otra a la b, el caso una vez colocadas las resistencias parece que llegaba señal, pero ha sido la mover los pines de la placa cuando ha empezado a funcionar, gira hacia los dos lados , pero ha sido mover la placa para conectar los pines que van al driver motor y se ha jodido el invento, ha dejado de leer en encoder y el motor solo gira en una dirección

Seguiré investigando
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Llegaron los infrarrojos ya puedo seguir las pruebas de la alarma ahora me supongo que es cuando me tiro 3 noches más dándole vueltas al código para que funcione :floor::floor:

2vvs1fq.jpg
biggrin
 

pasko

Forista Senior
Modelo
F45 - K54
Registrado
21 Sep 2017
Mensajes
4.203
Reacciones
10.200
Hola.

:descojon:

Con las librerías adecuadas debería ser sencillo...

Saludos.
 

McClane

Moderador Informática
Moderador
Miembro del Club
Modelo
2 E30, 1 E39
Registrado
20 Jul 2006
Mensajes
44.373
Reacciones
24.282
:LOL: Eso en media tarde lo tienes funcionando, y como funcione sin librería, en un par de horas. biggrin
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Bicheando he visto que los infrarrojos no necesitan librería con unas cuantas líneas funciona, ahora creo que ir tengo que incluir un condicionante para que cuando se lea posición High en el pin entre el void llamada void mensaje

En acostar a los nenes me pongo a ver si lo dejo funcionando lo meto todo en una caja y empiezo la instalación del cableado en la camioneta
 

pasko

Forista Senior
Modelo
F45 - K54
Registrado
21 Sep 2017
Mensajes
4.203
Reacciones
10.200
Hola.

Bicheando he visto que los infrarrojos no necesitan librería con unas cuantas líneas funciona, ahora creo que ir tengo que incluir un condicionante para que cuando se lea posición High en el pin entre el void llamada void mensaje

En acostar a los nenes me pongo a ver si lo dejo funcionando lo meto todo en una caja y empiezo la instalación del cableado en la camioneta

Nos tienes en ascuas.... :LOL:

Saludos.
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Otra duda que me surge, los sensores de ultrasonidos hay que montarlos individualmente cada uno con su línea o se pueden montar en paralelo? Por ahorrarme algo de cobre que está la vida mu achucha biggrin
 

katraska

Coordinador
Coordinador
Modelo
330i G20
Registrado
24 Ene 2002
Mensajes
10.321
Reacciones
3.298
Llegaron los infrarrojos ya puedo seguir las pruebas de la alarma ahora me supongo que es cuando me tiro 3 noches más dándole vueltas al código para que funcione :floor::floor:

2vvs1fq.jpg
biggrin

Yo me hice una luz de acceso a casa con un sensor parecido. En principio para una luz funciona bastante bien, pero da algún que otro falso positivo. Tendrás que inventarte algo para confirmar la alarma y que no te esté incordiando sin motivo. Tal vez poner los dos sensores en el mismo sitio y alertar sólo si los dos se activan.... o poner dos tecnologías (infrarrojo + ultrasonido)

Por otro lado, la calefacción de la casa del pueblo la controlo con un sim900 como el que has puesto. Si tienes pegas te echo un cable, aunque hace ya varios años que no toco ese código

salu2
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Sensor en pruebas, me ha llamado un par de veces pero no se si ha sido por el sensor o por el loop, lo he dejado en espera, ahora cuando entre en la habitación si funciona o si le he metido las líneas incorrectas o en el lugar indebido
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Yo me hice una luz de acceso a casa con un sensor parecido. En principio para una luz funciona bastante bien, pero da algún que otro falso positivo. Tendrás que inventarte algo para confirmar la alarma y que no te esté incordiando sin motivo. Tal vez poner los dos sensores en el mismo sitio y alertar sólo si los dos se activan.... o poner dos tecnologías (infrarrojo + ultrasonido)

Por otro lado, la calefacción de la casa del pueblo la controlo con un sim900 como el que has puesto. Si tienes pegas te echo un cable, aunque hace ya varios años que no toco ese código

salu2
Se puede variar el tiempo? Por ejemplo si se activa el sensor que hasta pasados unos Segundos no salte? Si hay alguien dentro durante más de 10 Segundos y el sensor activo salte entonces
 

katraska

Coordinador
Coordinador
Modelo
330i G20
Registrado
24 Ene 2002
Mensajes
10.321
Reacciones
3.298
Se puede variar el tiempo? Por ejemplo si se activa el sensor que hasta pasados unos Segundos no salte? Si hay alguien dentro durante más de 10 Segundos y el sensor activo salte entonces

Por valer, podría valer, aunque no tienes garantía de que no te de dos falsos positivos seguidos.... es cuestión de probar

Yo he usado este, que lleva una regulación de sensibilidad, aunque lo he tenido que llevar al mínimo para minimizar los falsos positivos:

https://www.ebay.com/itm/New-HC-SR5...e=STRK:MEBIDX:IT&_trksid=p2060353.m2749.l2649

salu2
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
De pruebas ando, la placa va, la Shield también hace llamada manda mensaje, el sensor va porque lo he probado primero en el display porta y da cero to el rato menos cuando le arrimo la mano que empieza a mandar unos

Ahora viene cuando intento juntarlo todo y hace pummm ya está aquí la guerra,
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Lo que yo te diga por separado funcionan los módulos

Cuando intento modificar el código me empieza a dar errores y entender lo justo de inglés tiene sus limitaciones biggrinbiggrin voy q rebuscar algún código que ya esté hecho y funcionando
 

pasko

Forista Senior
Modelo
F45 - K54
Registrado
21 Sep 2017
Mensajes
4.203
Reacciones
10.200
Hola.

En el IDE de Arduino se puede cambiar el idioma en el menú Preferences.

Saludos.
 

josete_perez

Forista Legendario
Modelo
Ex 535i E39
Registrado
21 Ene 2015
Mensajes
10.665
Reacciones
12.305
Vale creo que ya funciona

Me ha tocado ingeniármelas y escribir el código entero pero en el display port salen todos los pasos

Sensor ok
Movimiento detectado
Realizando llamada
Llamada realizada

Y el loop se repite cada vez que paso la mano, lo malo es que como la tarjeta es de prepago creo que se ha chupado ya el saldo biggrin

Esta noche cambio la sim que ya tengo una y lo pruebo

Aunque me tocara modificar el código para incluir los ultrasonidos que han llegado hoy
 
Arriba