SlideShare una empresa de Scribd logo
David Meléndez Cano
@taiksontexas
Taiksonprojects.blogspot.com

Taiksonprojects.blogspot.com
¿Qué es TRRP?
➔

Plataforma de desarrollo de bajo o ningún coste

➔

“Internet de las cosas”

➔

Usa lo que tengas por casa

➔

Los trastos pueden ser útiles

➔

No tirar, no reciclar: Reutilizar

Taiksonprojects.blogspot.com

2
Usa tu viejo router como plataforma domótica / robótica

Inversión inicial cero. Ya dispones de él
➔
Cambia el firmware: Ej: Linux OpenWRT
➔

Robots creados:

ROVER Texas Ranger: Linksys
WRT54GL
Taiksonprojects.blogspot.com

Cuadricóptero ATROPOS:
La Fonera 2201
Primer contacto: ROV Texas Ranger

Taiksonprojects.blogspot.com
Afinando: Cuadricóptero Atropos

➔

Fonera 2201

➔

OpenWRT

➔

Programa de estabilización

➔

Telemetría y control HTML5

Taiksonprojects.blogspot.com
Lo básico de un cuadricóptero

Taiksonprojects.blogspot.com
Taiksonprojects.blogspot.com
Plataforma router: Puertos I2C
Buscar pines GPIO de la CPU

Taiksonprojects.blogspot.com
Plataforma router: Puertos I2C y serie
GPIO---> I2C / RS232

Puerto serie

Pines GPIO
Taiksonprojects.blogspot.com
Plataforma router: Carga de módulos

rm /etc/modules.d/59-i2c-gpio
echo "i2c-gpio-custom bus0=0,4,7 bus1=1,3,1" >/etc/modules.d/59-i2c-gpio-custom
echo "i2c-gpio" >/etc/modules.d/60-i2c-gpio
[reboot]
i2c-detect /dev/i2c0
Taiksonprojects.blogspot.com
Plataforma router: Puerto serie

stty -F /dev/ttyS0 raw
stty -F /dev/ttyS0 speed 115200

Taiksonprojects.blogspot.com
Plataforma router: Sensores - Giroscopio
Wii Motion Plus
Giroscopio triaxial
Puerto I2C

•

Nos dice a qué velocidad estamos girando en cada plano

•

No tan sencillo: Deriva

Taiksonprojects.blogspot.com
Plataforma router: Sensores - Acelerómetro
Wii Nunchuck
Acelerómetro triaxial
Puerto I2C

Mide la aceleración (g) en cada plano.

Taiksonprojects.blogspot.com
Plataforma router: Sensores - Magnetómetro

-Magnetómetro triaxial HMC5881L
-Gauss en cada plano

-El acelerómetro sólo anula la deriva en los planos de cabeceo y alabeo.
-El plano de guiñada (rumbo) se corrige obteniendo el rumbo actual en
grados, con respecto al norte.

Taiksonprojects.blogspot.com
Plataforma router: Leyendo los sensores
ID único para cada sensor. Ej Wii Motion+: 0x52
Petición de datos escribiendo al dispositivo
•
Lectura de datos en buffer
•

#include <linux/i2c-dev.h>
f_i2c0=open(I2C0, O_RDWR);
ioctl(f_i2c0, I2C_SLAVE, 0x52);
write(f_i2c0, buff_out, data_size);
--read(f_i2c0, buffer,size);

Taiksonprojects.blogspot.com
Obteniendo ángulos absolutos con respecto a la Tierra

acelerómetro

giroscopio
Imagen: “The Balance Filter” MIT

Taiksonprojects.blogspot.com
Mejor: Matriz de Cosenos Directores (DCM)

Taiksonprojects.blogspot.com
Con qué datos vamos a trabajar:

Velocidad angular : Directo de los giroscopios
➔
Aceleración angular: Derivada de la Velocidad angular.
➔
Ángulo absoluto: Resultado del filtro aplicado
➔

Taiksonprojects.blogspot.com
Controlador Proporcional Integral Derivativo

Taiksonprojects.blogspot.com
Worst bedtime story EVER!

Taiksonprojects.blogspot.com
Proporcional
error=valor_actual-valor_anterior
Salida_proporcional=Ganancia_proporcional*error

Taiksonprojects.blogspot.com
Integral
error_acumulado=error_acumulado+
(error*tiempo_entre_muestras)
Salida_integral=Ganancia_integral
*error_acumulado

Taiksonprojects.blogspot.com
Derivativo
velocidad_error=(errorvelocidad_error)/Tiempo_entre_muestras
• Salida_derivada=Ganancia_derivada*velo
cidad_error

Taiksonprojects.blogspot.com
PID anidado
Ángulo

Controlador P

Velocidad
angular

Controlador PID

Salida al puerto
serie
Taiksonprojects.blogspot.com
Plataforma router: placa de control
-Mínimos componentes externos: Sólo para generar señales PWM
-Válido cualquier microcontrolador con UART y un par de timers
Fonera
/dev/ttyS0

PIC16f876A

ESC
Motores

Taiksonprojects.blogspot.com
Plataforma router: programa estabilización IMU
Programa crítico que debe ejecutarse en intervalo de tiempo fijo

➔

setitimer(ITIMER_REAL,&i_int,NULL);
(void)signal(SIGALRM ,timeout_real);

Compite por el tiempo de CPU con el servidor web (telemetría y control)

➔

Cambiar la prioridad del proceso con nice no es suficiente: Real Time scheduling →
FIFO, Round Robin
➔

#include <sched.h>
schedule.sched_priority=sched_get_priority_max(SCHED_FIFO);
sched_setscheduler(pthread_self(), SCHED_FIFO,&schedule);

Taiksonprojects.blogspot.com
El proceso watchdog informa al kernel de que el sistema no está colgado.

Consume su parte de CPU
●
Si se cuelga el router en pleno vuelo:
●

➔

ioctl(“/dev/watchdog”, WDIOC_KEEPALIVE, &dummywd);

Taiksonprojects.blogspot.com
Hardware de actuación
Controladora electrónica de velocidad (ESC)

Motores sin escobillas. “Outrunner”.

Taiksonprojects.blogspot.com
Control HTTP
Las órdenes se transmiten a través de peticiones HTTP GET
-Desde eventos keydown keyup de javascript por AJAX
-Desde el proceso que lee del mando USB
http://atropos/cgi-bin/ajaxinput?QQZ[GAS]Z[ALABEO]Z[CABECEO]Z[GUIÑADA]Z

Deben ser muy fluidas y baratas en tiempo de CPU:
Httpd tweak:

Httpd.c:
[...]
if (strncmp(tptr, "cgi-bin/ajaxinput", 17) == 0) {
[...]
strcpy((char *)shmat(shmget(9998, 30, IPC_CREAT | 0666), NULL, 0),g_query);
exit(-1);
}
[...]

Taiksonprojects.blogspot.com
Control UDP desde mando USB
cat /dev/input/js0
---pad=open(“/dev/input/js0”,O_RDONLY);
reads=read(pad,msg,MSG);
(msg[7]==2)//gas
gas=((analog+127))*GAS_FACTOR;
[...]
(msg[7]==4)//guiñada
guinnada=-analog*GUINNADA_FACTOR;
[...]
(msg[7]==1)//cabeceo
cabeceo=-analog*CABECEO_FACTOR;
[...]
(msg[7]==0)//alabeo
alabeo=-analog*ALABEO_FACTOR;
[...]

Taiksonprojects.blogspot.com
DEMO
Taiksonprojects.blogspot.com
Gracias!

David Meléndez Cano
@TaiksonTexas

Taiksonprojects.blogspot.com

Taiksonprojects.blogspot.com

Más contenido relacionado

PPTX
Cruise control simulation using matlab
ODP
David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
PDF
Meetup Arduino Madrid - Plataforma IoT casera
PDF
JSDayES 2017 - ¿Plataforma casera?
PPTX
Sistema de estabilización de cámara para cartografía aérea
PDF
Arduino: Aplicaciones con hardware abierto para el Arduino
PDF
T3chFest 2017 - Plataforma casera para IoT
PDF
Diapositiva de Estudio: ppt - IoT Fácil con ESP8266.pdf
Cruise control simulation using matlab
David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
Meetup Arduino Madrid - Plataforma IoT casera
JSDayES 2017 - ¿Plataforma casera?
Sistema de estabilización de cámara para cartografía aérea
Arduino: Aplicaciones con hardware abierto para el Arduino
T3chFest 2017 - Plataforma casera para IoT
Diapositiva de Estudio: ppt - IoT Fácil con ESP8266.pdf

Similar a Trash Robotic Router Platform (TRRP) (20)

PPTX
Carro a control remoto Zigbee IEE802.15.4
PDF
2-CapaPercepción.pdf
PPT
UIMP: Redes de sensores, fundamentos y aplicaciones.
PDF
Perspectivas IoT con arduino
PDF
Campus pary julio_29_2011_v1
PDF
Chiang egaf10
PDF
Roboticamovil
ODP
Pampaseg 2015 - Drones
PDF
Arduino_RM.pdf
ODP
Pampaseg 2014 - Drones
PDF
raspeberry para domotica.pdf
PDF
Laboratorio de telecomonicaciones
PDF
Dynamics saturday madrid 2018 dynamics 365 y io t - daniel y enrique
PPTX
Carro a control remoto por Zigbee IEE802.15.4
PPTX
Domótica 2014
PDF
Uso de matlab en aplicaciones de roboticamovil
PPTX
Proyecto ultrahouse 3000 de Andrés Farías y Walter Noello
PPTX
Sistema para monitorizar y controlar instalaciones de forma remota utilizando...
PPTX
david chacon giraldez.pptx
PPTX
Implementación de una red de sensores inalámbrica para la monitorización de e...
Carro a control remoto Zigbee IEE802.15.4
2-CapaPercepción.pdf
UIMP: Redes de sensores, fundamentos y aplicaciones.
Perspectivas IoT con arduino
Campus pary julio_29_2011_v1
Chiang egaf10
Roboticamovil
Pampaseg 2015 - Drones
Arduino_RM.pdf
Pampaseg 2014 - Drones
raspeberry para domotica.pdf
Laboratorio de telecomonicaciones
Dynamics saturday madrid 2018 dynamics 365 y io t - daniel y enrique
Carro a control remoto por Zigbee IEE802.15.4
Domótica 2014
Uso de matlab en aplicaciones de roboticamovil
Proyecto ultrahouse 3000 de Andrés Farías y Walter Noello
Sistema para monitorizar y controlar instalaciones de forma remota utilizando...
david chacon giraldez.pptx
Implementación de una red de sensores inalámbrica para la monitorización de e...
Publicidad

Más de navajanegra (20)

PDF
Cryptography: The mathematics of secret codes is a game
PPTX
Automated and unified opensource web application testing
PDF
Offensive MitM
PDF
Cool Boot: It's cool!
PPT
El lado oscuro de TOR: La Deep Web
PDF
Telephaty: Harness the code
PDF
Economías criptográficas
PPTX
Where is my money? The evolution of Internet fraud
PDF
Divulgación del trabajo de la Brigada de Investigación Tecnológica
PDF
Adivina quién viene a CDNear esta noche
PDF
1100101001001110
PDF
Anteproyecto del código procesal penal: Análisis Técnico
PPTX
Zeus-R-Us
PPTX
Fuzzing browsers by generating malformed HTML/HTML5
PPTX
¿Nadie piensa en las DLLs?
PDF
SDR: Lowcost receiving in radio communications
PDF
LIOS: a tool for IOS Forensic
PPTX
A brief introduction to reversing code with OllyDbg and other tools
PDF
HASH COLLISIONS: Welcome to the (un)real World!
PDF
Show me your intents
Cryptography: The mathematics of secret codes is a game
Automated and unified opensource web application testing
Offensive MitM
Cool Boot: It's cool!
El lado oscuro de TOR: La Deep Web
Telephaty: Harness the code
Economías criptográficas
Where is my money? The evolution of Internet fraud
Divulgación del trabajo de la Brigada de Investigación Tecnológica
Adivina quién viene a CDNear esta noche
1100101001001110
Anteproyecto del código procesal penal: Análisis Técnico
Zeus-R-Us
Fuzzing browsers by generating malformed HTML/HTML5
¿Nadie piensa en las DLLs?
SDR: Lowcost receiving in radio communications
LIOS: a tool for IOS Forensic
A brief introduction to reversing code with OllyDbg and other tools
HASH COLLISIONS: Welcome to the (un)real World!
Show me your intents
Publicidad

Trash Robotic Router Platform (TRRP)