Mostrando entradas con la etiqueta linea. Mostrar todas las entradas
Mostrando entradas con la etiqueta linea. Mostrar todas las entradas

martes, 19 de marzo de 2024

Coche remoto por Infrarrojos. Seguir línea negra.

 

Página principal

Coche remoto por
Infrarrojos
Guía por línea negra automático


Siguiendo el anterior montaje, http://seta43.duckdns.org/car_a/car_a.html , añadí sensores de infrarrojos para seguir una línea negra.



Sensores



El mayor problema que he tenido, son las librerías.
Unas son incompatibles con otras, otras funcionan en algunas versiones de arduino y otras no.
/*
You have to go into the .h and .cpp files and change "WProgram.h" to Arduino.h
WProgram.h: No such file or directory
*/
/*
Las librerías  "IRremote" y "RobotIRremote" son incompatibles
Tu tienes que instalar "IRremote" y desinstalar "RobotIRremote".
*/
La solución es incluir las librerías modificadas que utilizo yo.

Con un poco de código, añado el seguimiento de líneas.
No he depurado mucho el código, solo es una prueba que funciona razonablemente bien.
La cinta negra es del tipo adhesiva eléctrica, alrededor de 9 a 10 mm.
Es muy entretenido ver como sigue la línea.
He utilizado un PowerBank , la pilas se habían agotado,

Programa Arduino.
Librerías utilizadas.

Video


Saludos.
Juan Galaz


Bibliografía:


https://www.youtube.com/watch?app=desktop&v=Ux1nzNDKxoA
https://www.youtube.com/watch?v=4C8Y3caU4y0

viernes, 10 de mayo de 2019

Mandar correo desde la línea de comandos y averiguar la IP publica

Volver

Linux

Mandar correo desde la línea de comandos.

Averiguar la IP publica de nuestro router desde la línea de comandos.


En anteriores artículos había realizado un servidor web.
Al no disponer IP fija de mi operadora, al algún caso cuando se reiniciaba el router, se cambiaba la IP pública.
Esto me hacía imposible entrar en mi servidor desde el exterior al no saber la IP en ese momento.
La única forma era mandarme un correo cada cierto tiempo de la IP publica que tengo.
En este artículo explico como averiguar mi IP pública, y cada 12 horas mandar a mi correo personal un correo donde indico la IP publica en ese momento.
El programa que se utiliza para mandar el correo y averiguar la IP pública es curl.
El programa curl es una auténtica navaja suiza, puede trabajar con la mayoría de los protocolos de internet.

Para averiguar nuestra IP pública utilizamos el comando:  
    curl ifconfig.me 
Nos devolvera una dirección IP, que corresponde la IP externa de nuestro router.

Para mandar un correo desde la línea de comandos (el servidor de correos es GMAIL) se utiliza el programa curl con los comandos:
curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd   --mail-from 'correoOrigen@gmail.com' --mail-rcpt 'correoDestino@gmail.com'   --upload-file correo.txt --user 'correoOrigen@gmail.com:CONTRASEÑA' --insecure
Como podéis ver, para mandar un correo necesitamos una cuenta de correos de origen, y una cuenta de correos donde vamos a mandar el correo.
El correo mandado será desde un archivo de texto, que en este caso se llama correo.txt .

El fichero modelo del correo tiene el siguiente formato:
correo.txt
From: "SERVIDOR_PI" <correoOrigen@gmail.com>
To: "Otro Nombre" <
correoDestino@gmail.com>
Subject: AsuntoIP

Hola IP actual
vie may 10 00:00:01 CEST 2019
87.221.154.144


Todo lo anterior se junta en un script donde a partir de un modelo de correo, solo cambio las 2 últimas líneas donde inserto la fecha y la IP pública en ese momento.
/home/seta/tareas/tarea1.sh
#!/bin/bash
datecreated=`date`

cd /home/seta/tareas
echo "Mandando correo de la IP actual"
sed -i '$d' correo.txt
sed -i '$d' correo.txt

echo $datecreated >> correo.txt
curl ifconfig.me >> correo.txt

curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd   --mail-from 'correoOrigen@gmail.com' --mail-rcpt 'correoDestino@gmail.com'   --upload-file correo.txt --user 'correoOrigen@gmail.com:CONTRASEÑA' --insecure


Ya tenemos el script creado, pero nos falta que el script se ejecute cada 12 horas.
Para esta tarea utilizaremos cron.  El comando cron es un administrador regular de procesos en segundo plano que viene de serie en linux.
Para añadir el comando que se debe ejecutar en segundo plano, utilizaremos el comando crontab -e  .
Y editaremos de la siguiente forma:

0 */12 * * * /home/seta/tareas/tarea1.sh >/dev/null 2>&1

De esta forma el script se ejecutará cada 12 horas.


Espero que os sirva de algo este artículo.


Saludos
Juan Galaz