30 junio 2024

Piedralaves carrera de montaña 2024

Pues llevaba exáctamente 5 años sin correr nada, desde la San Silvestre de sotillo, allá por el 2019. Pero Laura me lió (y yo me dejé liar, las cosas como son) y me apunté. Si no conoceis la zona, simplemente pasear por allí es la caña. Bosques enormes, muchísima agua, una temperatura increible aún en pleno verano (de hecho puedes pasar hasta frío) y montaña de la de verdad, que te pone en tu sitio.

Póster de la carrera

Bueno, por cosas de la vida, Laura no pudo ir (porque tiene la espalda hecha un 7) así que para allá que me voy yo solo, a ver que pasa. He de reconocer que tenía un poco de canguelo porque hacía un montón que no corría cosas "serias".  12 Euros costó la inscripción, y ya os puedo decir que calidad precio, es de las mejores carreras que he corrido desde hace un montón. Si quereis ver más información, aquí está el Instagram, la página del evento y la página web del pueblo. 


El dorsal del capitán penurias. El número no es coña


Pues nada, lo bueno de vivir en un pueblo cerca de otros pueblos es que no tardas nada, así que antes de las 8 estoy recogiendo el dorsal y comiéndome la barrita porque no había ningún bar abierto, que bueno, vale que es domingo, pero que no abran hasta las 9 ... tela marinera. Me doy unas vueltas por el pueblo y echo un ojo por los sitios, y veo que el chiringuito de la plaza donde se dan los conciertos está abierto, pero bueno, vistas las horas que son, me salto el café y me pongo al lio.

El día la verdad es que nublado total y 16 grados


La bolsa del corredor la verdad es que está guay. Te dan la bolsa (of course) un silbato (la cosa azul con cordino azul) un brick de caldo de pollo aneto (entiendo que esto es por hacer la gracia y tradición, porque no creo que le guste ni al de Aneto). Un gel, un boli, una medalla grabada en madera que mola, una barrita que no estaba mala,  y un sobre naranja con una cosa con efecto calor, y evidentemente, la camiseta, que está bien. A parte, dos avituallamientos con un montón de cosas (agua, isotónico, fruta, frutos secos, gominolas) y uno final con lo mismo, pero además cocacola y ... torreznos. A parte que está muy bien organizado, muy bien indicado, y con un montón de gente animando.

La bolsa del corredor, que ya podía aprender, por ejemplo, la San Silvestre

Así que dan las 9 y salen los del trail largo (21.8 Km) aquí esta el track en wikiloc y a las 9:15 sale el cross, que es mas corto (12 Km) aquí está el track en wikiloc. A mi me salen 12.61 Km, entre pitos y flautas, así que está bien medido. Si no conocéis la zona, es que hay que venir a dar una vuelta por la charca de la nieta y la presa del horcajo, que es un paraje muy chulo. Los pinares son espectaculares, y luego se convierte en castañar y alta montaña, es un sitio que de verdad, hay que venir. A parte, tiene muchos sitios chulos para tomar una cerve y cenar, y se pueden hacer múltiples actividades (hay cerca barrancos, se puede correr, hacer trekking, montar en bici de montaña, bici de carretera ...) En fin, que no me pagan, pero que es una zona chula.


Entrando en meta.


A nivel de carrera, pues hacía como 1000 años que no corría una carrera de montaña, las cosas como son. He usado las kanadia tr6 arregladas por Reparación de Calzado Íbice, que me las ha dejado finas, cambiándoles la suela. Para mi son de lo mejorcito que hay, pero me he dado cuenta, según corría, que las cosas han cambiado (para bien) y que la tecnología ayuda un montón. Siempre he sido fan de subir mas que bajar, pero la tendencia ha cambiado y ahora se hace un poco más la cabra. Si que es verdad que las zapatillas modernas sujetan mucho más y amortiguan mogollón, así que ponen fácil el tema de bajar como un corzo. Si que es verdad que estas zapas pues para bajar son reguleras, a parte no tengo ni la técnica ni me gusta mucho, asi que bajo un poco rollo vieja, pero para ser unas zapas con 10 años, se han portado estupendamente, las cosas como son.


Adidas Kanadia TR6. Lo mejorcito después del pan con tomate.

Bueno, pues se empieza subiendo cruzando el pueblo, y nada mas empezar ya ves que la veteranía es un grado y hay que saber regular, porque si te sacudes nada más empezar, vendimias. Voy tirando bien sin andar hasta más o menos el km 3, que ya pasa de camino empinado a locura vertical, y no queda mas remedio que andar rápido. Sorteo un poco el tema hasta llegar a la bajada de la presa del Horcajo, que ya va indicando que aquí las bajadas van a ser empinadas y duras. Y dicho y hecho, para abajo por piedras, tierra suelta, y horquillas porque se salva buen desnivel. Hasta la presa del Horcajo la verdad es que me ha encantado muchísimo el cross (a nivel deportivo, por el tema del trazado). De la gente (corredores y organización) solo puedo hablar maravillas porque todo el mundo ha estado guay. Muchísima educación corriendo (pidiendo paso, dándolo, muy bien, igualito que en los madriles). Y la organización muy atenta, pendiente de la seguridad  y de que no faltase de nada. Muy, muy bien.

Perfil de altitud, RC y ritmo.


A partir de la presa del Horcajo el cross tira por una trocha vertical que no queda más remedio que andar (Km 9) que nos deja en un collado y luego te tiras para abajo en un mix de senda y pista que la verdad, no me ha gustado (si que es cierto que es una cosa personal porque no me gustan las bajadas locas) pero entiendo que no te puedes poner a dar vueltas para ir perdiendo desnivel poco a poco, porque si no te salen 20 Km y entonces pues no puede ser. Lo cierto es que no he entrenado nada el tema de las verticales, y bueno, con eso y con todo he hecho un 44 en la general, quedando el 19 en mi categoría (máster 40) con un tiempo oficial de 1:44:04 y 12,61 Km medidos por mi garmin, con 746 m de desnivel positivo. En serio, si podéis, pasar por Piedralaves y dar una vuelta porque el sitio mola todo y se come guay.



12 septiembre 2023

Riscos de Villarejo: Irene Castilla + Vegeta + Chicho Terremoto (18/08/2023)

Aprovechando que hacía bueno y que hacía muchísimo tiempo que no escalábamos juntos,  subimos a los riscos de villarejo para hacer algunas vías de clásica fáciles. Decidimos empezar por la Irene Castilla, a la Punta Amparo. Según la guía de Gabriel Martín (guía que si no tenéis, os tenéis que comprar), V+. Hay una variante, que comentaremos luego. 

NOTA: comprobar bien las fechas que hay restricciones de escalada por anidamiento de especies protegidas.


Irene Castilla (croquis via costraypus.blogspot.com.es)


Hay que dejar las cosas nada más llegar por la aproximación "standard" al cruce del zagúan (ver la guía) habrá unos 25-30 minutos andando normal. Ahí dejamos las mochilas, nos equipamos y accedemos por la canal que sube hasta la punta amparo (de nuevo, ver la guía, que para eso está). Subimos un poco y llegamos a una terracita, bajamos un poco ... y subimos por la canal de la derecha. Si vamos por la de la izquierda, pues tendremos que empezar la vía hacia la derecha. La argolla verde indica el comienzo.

La argolla que muestra el comienzo de la vía

Los primeros metros son en placa que hay que darse si o si, porque el único seguro ... es la argolla que me temo que vale para bien poco. Nada mas superar unos bloques se puede meter alguna pieza pequeña, y desde ahí, ya vamos subiendo y se pueden meter un montón de cosas a cañón. Es un largo muy bonito, de unos 40-45m de longitud.

Justo antes de llegar a la primera reunión

El siguiente largo es un poco de transición, sube por unos bloques muy aterrazados, muy sencillo, que se puede proteger muy bien, sin problemas. Ojo que hay un bloque que se mueve muchísimo y hay que subirse encima, y si metes un seguro y te caes de ahí (cosa que es complicada) pues te vas a llevar el bloque, con la siguiente liada que va a ser eso, porque es del tamaño de una lavadora. 

La primera reunión vista desde el segundo largo

Seguimos progresando sin mucho lío hasta llegar a un pasito antes de llegar a la reunión de la vía, que igual, se protege muy bien. Hay buenas manos a la izquierda. Es un largo cortito de unos 30-35m.

El segundo largo. El bloque que se mueve es justo el de debajo de mi


En el tercer largo es donde está el paso de V+ que le da el grado a la vía. Justo encima de la reunión, hay un clavo con maillón que protege el paso para subirse a la fisura de la placa (V) que nos lleva la la reunión de la cima. 

Fernando llegando a la segunda reunión

Nosotros no lo vimos claro y lo que hicimos fue seguir hacia la derecha por unos bloques para conectar con el último largo de la Conspiración de Minerva, que sale IV+. Si vas a hacer esta variante, recomiendo no montar reunión en la instalación de la Irene Castilla, y seguir unos 8m más hacia la derecha por los bloques hasta montar la reunión de la Minerva.

Así que el tercer largo nuestro es el último largo de la conspiración de minerva, una placa muy bonita con muchos pies y manos y muy buenas posibilidades de autoaseguramiento. 

Último largo de la Conspiración de Minerva (IV+)

Fernando empezó por la placa, y como a la mitad mas o o menos empezó a tirar hacia la izquierda para coger la fisura del último largo original y salir directamente a la reunión. Para mi un largo muy bonito, pero habrá que volver para darnos el largo original.

Fernando en la última reunión

Desde la reunión, trepada fácil para quitarnos los pies de gato y salir por la derecha hacia la pradera del yelmito, que está justo detrás. La verdad es que la vía está muy chula, de grado fácil, pero ideal para subir a la punta amparo y practicar con el tema de los cacharros. Por el último largo original la cosa lo mismo se pone un poco más picante, pero la fisura se protege muy bien.

Fernando en la cima.

Bueno, pues después de la Irene Castilla nos dió por hacer un poco de "deportiva" de la zona, así que me metí en la Goku (V+) al Yelmito (la de las chapas blancas). En principio es una vía de deportiva "fácil" protegida por parabolts, así que no debería de haber mucho lío. Son dos largos, el primero de V+ y el segundo de IV+ / V. A partir de aquí ya no hay video porque la batería de la Gopro decidió morirse ahí mismo.

Goku (V+) hasta aquí era todo felicidad.

La cosa es que empieza con una entrada desplomada con buenas manos, pero que tiene un apretoncillo. Luego te vas a la izquierda por una repisilla roma sin manos, te subes a una especie de gendarme que rodeas por fuera ... y llegas a la placa donde están los paso de V+. Yo la verdad es que entre que hacía como 10 años que no venía a Villarejo y tenía un poco olvidada la roca y los alejes, y que para mí la cosa es bastante más de V+ de deportiva, paso un poco las de caín para chapar la primera chapa "seria". Para la segunda chapa, que hay que subirse de un par de regletas no muy malas, pero muy lejanas, lo paso un poco peor, y bueno, consigo chaparla. Lo que no veo claro es lo siguiente (me tiro un rato hasta que localizo la siguiente chapa blanca) y con mas miedo que vergüenza, pues no me siento capaz de afrontar los alejes que vienen y meto un maillón y me bajo. Luego vimos en la guía que a partir de esa chapa (la del maillón) la cosa se suaviza bastante y se vuelve mas amable ... pero vamos, que yo no fui capaz. Habrá que volver. Recuperar las cintas y la cuerda fue también memorable, porque la vía hace una travesía bastante gorda y desploma un poco. (en el croquis siguiente, la goku es la 14)

Vias de la cara sur del Yelmito

Así que para quitarnos un poco el mal cuerpo de no haber hecho la vía y encima haber abandonado un maillón, nos vamos un poco más a la izquierda que Fernando recordaba una vía más sencilla que también subía al Yelmito, así que para allá que fuimos. Se trata de empalmar el primer largo de la Chicho Terremoto (IV+) (marcada como 9 en el croquis) y el segundo largo de la Acción Mutante (V+) (indicada por la flechita que sale desde la reunión).

El largo de la chicho terremoto (IV+)

El primer largo comienza por unos canalizos fisurados en los que podemos proteger a cañón. Intenta gastar las piezas grandes aquí y guárdate algunas pequeñas. Vamos hacia la izquierda siguiendo las fisuras, y vamos viendo las vistas a la canal Sur Oeste del Yelmito, que tiene un ambiente y un patio bastante interesante. Vamos subiendo hasta abandonar las fisuras y nos metemos de lleno en la placa. No es difícil, pero las opciones de protección se vuelven escasas. Hay que ser creativo y voy metiendo algunas cosas pequeñas mientras que subimos sin perder de vista la reunión (que está a la izquierda). Hay que subir un poco hasta llegar a unos salientes y luego bajar hacia la reunión, haciendo travesía a izquierdas. Intenta meter lo que puedas, porque es fácil, pero es expuesto. La reunión la hacemos en una repisa pequeñita, pero cómoda.

El segundo largo que hacemos (Acción Mutante, V+) se lo da Fernando, y es V+ pero de verdad. Sigue la linea de chapas negras más a la izquierda que encontramos en la reunión, y es una escalada delicada, y fina. Tiene pies y manos, pero hay que ir con la cabeza fría, el culo apretado y con cuidado. Fernando da un recital de escalada clásica con unos nervios de acero y un temple que es digno de mención, porque encima es un largo de unos 40-45m. Cuando desaparecen las chapas, hay que tirar un poco hacia la derecha para buscar las fisuras y proteger con piezas medianas y grandes, esta vez a cañón. Un poco más arriba se monta reunión, y salimos andando por la cima del Yelmito (seguir los hitos hasta las mochilas por la canal de bajada).

En resumen, una muy buena actividad, hacía mucho que no lo pasaba tan bien, aunque el arranque "en frío" pues temple los nervios. Por otro lado, supongo que al no estar acostumbrado a la roca y los alejes me supo un poco mal bajarme de la Goku, pero bueno, habrá que volver. Ya sabeis, llevar el 6a/6a+ de deportiva muy asentado, la cabeza fría, porque las chapas no están cerca, y saber meter bien seguros de autoprotección. 

Video Resumen


07 septiembre 2021

Alia Extrema Ruta BTT Los Apalaches 2021 (04/09/2021)

El mapa del track

El sábado 4 de Septiembre se celebró la segunda marcha Alía Extrema, también conocida como Ruta de los Apalaches organizada por el club ciclista de Alía (Extremadura). Es una ruta bastante dura, con mucho desnivel, que discurre la mayoría del tiempo por pistas en buen estado. La organización es buenísima, así como las instalaciones y la comida. (Información general de la prueba) (tracks)


Altimetría

El 2021 ha sido un año muy complicado y la verdad es que de MTB he hecho bastante poco. Además que entre lo del hombro, y los dos platos, pues no he podido ir bien y me he tenido que contentar con acabar, que no es poco, la verdad. Hizo bastante mas calor que lo que dice Strava, a ratos cerca de 37 grados.
Datos

A los 13 Km mas o menos se me traba la cadena y tengo que parar a volverla a meter (es lo que tiene llevar dos platos con una piñonera de monoplato de 11) y pierdo algo de tiempo, por lo que me toca hacer el resto solo. La parte "interesante" de la carrera son las famosas "cuchillas" que son unas lomas con un desnivel bastante grande, en un paraje natural muy bonito. Los avituallamientos están muy bien organizados y hay de todo. Así que hidratarse y comer no es problema.

Dorsal

Y poco más, Quedo el 49 de la general (aquí están las clasificaciones) con un tiempo total de 05:24:58. A ver si el año que viene dejan de pasar cosas y puedo darle un poco mejor, porque bueno, este año he salvado los muebles, simplemente.


 

29 abril 2019

V Maratón Bajo Tietar Gredos Sur (27/04/2019)

El mapa del track
El sábado 27 se celebró el V maratón bajo tietar gredos sur, organizado por los chicos del centro BTT bajo Tietar. Estas marchas (yo ya he hecho unas cuantas con ellos)  se caracterizan por ser bastante duras, estar muy bien organizadas y siempre dejar buen sabor de boca. Allá que nos fuimos Carlos y yo a darle.

Altimetría
Este año la verdad es que he entrenado poco y sabía que iba un poco justo, pero no sabía que iba tan justo. Bueno, la cosa es que este año se salía de Monbeltrán, así que sabíamos que la llegada era en subida. Además este año teníamos 14 Km más (mas o menos)... así que al lío. Dan la salida y para allá que vamos.


Algunos datos
Nada más empezar las primeras cuestas me doy cuenta de que no hay mucho gas y que me encuentro regular. La meteo la verdad es que muy bien, pero me noto raro de cuerpo. Las patas bien, pero el pulso muy alto y pocos watios, y me cuesta la vida. Carlos va como un tiro, pero yo me voy quedando y no veo el momento de comer algo.

Subiendo la calzada romana
Cuando llegamos al primer avituallamiento, llego prácticamente out. Me meto dos bollos del tirón y tres trozos de plátano. Está claro que algo no está rulando y la idea de tirar de azúcar para andar no me mola nada, pero parece que es la única opción si no quiero abandonar. Salimos del avituallamiento y sigo remando regular, aunque la cosa va peor, pero es tendido y quedan bajadas, así que aprieto y a darle.

Carlos de relax total
Cuando llega la primera bajada la verdad es que me desquito. No la grabé, porque me tiré a lo Julián ladera abajo y oye, como se agradece la tija telescópica. Yo creo que es de las mejores bajadas que he hecho con la rígida la verdad. tengo flow, tengo power, pero se acaba la bajada y toca volver a remar, y ahora si que voy tocado de verdad. Con más pena de gloria como de nuevo en el avituallamiento, y me pillo un puñado de gominolas, porque voy a tener que ir gestionando los picos de azúcar como pueda.

Haciendo eses ya
Subo la Centenera como puedo y Carlos me saca como 10 minutos. Aprovecha para quitarse la térmica porque hace calor, aunque la verdad yo ya ni siento ni padezco. Voy a 160 subiendo a 180W, vamos, que no funciona. Coronamos la Centenera y tiramos por el asfalto "tendido" hasta las primeras bajadas donde recupero un poco y seguimos tirando. En las bajadas la verdad es que me llego a gustar un poco y todo.

Capitán, vas jodido.
Y llegamos a Areas de San Pedro donde ni comemos ya ni nada. Nos queda la parra con sorpresa final, porque parece que no, pero pica bastante. Con más pena que gloria coronamos y tiramos para el Castillo, dando por finalizado el Maratón. Los datos no son muy buenos este año pero ahí están: Dorsal 1189, Posición 262 de la general, 97 de mi categoría (master 40, donde los buenos). Tiempo total 05:29:39, neto 05:27:38, con una media de 16 Km/h. Carlos podría haberla metido en 20 minutos menos fácil. Tras probar las revolconas, Chuletón y más revolconas y para casa, que tenía el cuerpo raro, pero raro raro. Habrá que repetir, pero más entrenado.

Video Resumen

28 febrero 2019

Ahora si! MTB Gopro7 (27-02-2019)

El track.

Bueno, pues ahora ya si ! he conseguido fijar la cámara con el ángulo más o menos correcto, y ya puedo decir que graba buenos videos en la bici. Ayer salí a dar una vuelta por la parte del Pantano de Picadas. La idea era quitarme la espinita de la grabación de estos días, así que nada, un poco más de ángulo en el soporte, seleccionar el gran angular ... y la verdad es que queda bastante chulo. La bajada no es que sea gran cosa y además me pilló ya tarde y con poca luz, pero bueno, para probar vale.


Tampoco es que estuviera yo muy fino ayer

Al final he tenido que deshabilitar el GPS de la cámara, porque graba una información bastante mala. Depende de la "visibilidad" de los satélites, y si la montas al revés (por ejemplo, para llevarla en el arnés de pecho y que te de ángulo) pues tapas la antena y captura puntos inválidos todo el rato.

La bici no es gran cosa, pero la foto es épica
También aproveché para probar los modos ultrawide famosos y ver que tal fotos hacía. Todas están tiradas con el "Superphoto" activado, que básicamente lo que hace es un HDR más o menos moderado para capturar todo, y la verdad es que no lo hace nada mal. Quizás un poco oscuro, pero es que es tarde.

Mirada épica al monte
Todos los videos están grabados con el quickCapture, que la verdad es que en esta funciona muy bien (en la Hero3, por ejemplo, es imposible hacerlo funcionar sin tener que resetear la cámara un par de veces). La cámara se quedó un poco "rara" cuando hice la última bajada (no apagaba) pero al rato si lo hizo sin problemas, supongo que el contraste de pasar de calor a frío, o que el video era un poco más largo y tiene que procesarlo. Pero vamos, sin problemas.


Las vistas desde el cockpit
El angular la verdad es que da más sensación de inmmersión, pero deja todo más lejos. La sensación de velocidad queda un poco pastosa por la estabilización, pero hay que reconocer que la cámara hace un trabajo espectacular dejando el video fino (y mira que hay botes en esa bajada).


26 febrero 2019

Gopro7 y el GPS a la segunda no va la vencida (24-02-2019)

El otro día procesando un video de la Gopro nueva, vi que había varias pistas dentro del fichero de video (MP4). Como sabía que Quik sacaba algunos metadatos del video, me dió por investigar ... y con un poco de editor hexadecimal, un poco de python y echarle un rato... pues he escrito un script.

La Gopro7 la verdad es que hace buenas fotos

El programa lee un video de la gopro (yo he probado con una 7 pero funciona a partir de la 5) y saca los datos de los acelerómetros, los giróscopos y los datos de GPS (posición, velocidad y tiempo). Lo mezcla un poco y saca dos ficheros (por ahora). Uno con un KML (Google Earth) y otro con un GPX (Para el Basecamp, o Strava).

Un recorte

La cosa es que necesitaba un track para procesar los datos y probar que funciona la GoPro7 asi que me subí a hacer un par de bajadas por la zona de la mira. Me llevé el arnés de pecho y bueno, pues la primera vez salió el tubo de la bici muy bonito, así que no valió para nada. Además, llevaba la cámara en quickcapture ... y así no usa el gps.

Pues al final si que he podido sacar la información del GPX. En rojo la bajada por el cortafuegos

Así que el domingo volví a rehacer la ruta con el arnés de pecho bien puesto, la captura en manual ... y bueno, pues he grabado un poco menos de tubo, y datos de gps, así que éxito parcial. La ruta bastante chula, esta es la versión corta (no subo a las canteras de Cadalso) pero el resto es igual.

El track

Y algunos datos de potencia y eso. No llevo autostop, y cuento ceros en las medias.

Hay que subir más la cámara, clarísimamente. El video es una morralla de cuidado, pero bueno, me ha valido para probar los soportes de la cámara y el final cut pro X, que al final me ha tocado pasarme para el tema de los 64 bits.


Más info aquí del software aquí:
https://github.com/juanmcasillas/gopro2gpx

08 febrero 2019

Probando la GoPro7 en la MTB ... y destalono (07/02/2019)

Salida express a probar la GoPro7 en la bici ... y destalono. Como estoy relativamente cerca de casa no monto cámara y me vuelvo a patita. Si no me pasaran estas cosas, no sería el Capitán Penurias, no? Tengo que volver a pasar por el sitio a revisar que pasó, pero una vez arreglado en casa, resulta que "algo" ha perforado hasta el fondo de llanta de la rueda. La gente va dejando por ahí regalitos en forma de clavos y chapas ... y pasa lo que pasa. Nada, cinta americana, moco nuevo y a rodar.



En el aspecto deportivo pues hasta que pinché, pues bien, claro. A ver si adivináis donde fue la cosa.



La verdad es que es un privilegio poder montar por el barrio, porque tienes un montón de caminos y paisajes espectaculares. A ver si el próximo video está un poco mejor hecho y tiene un poco más de contenido (y no pincho)


07 febrero 2019

Running (probando la Gopro7 Black Edition) (06/02/2019)

Hacía bastante que no publicaba nada, la verdad, pero creo que ha es hora de volver a publicar cosas.  He estado corriendo y montando en bici, básicamente, y claro eso pues la verdad es que no da mucho de si para poner un post.

Lo bueno es que me ha dado tiempo a escribir algo de software para hacer videos con overlays, un gestor de tracks ... pero bueno, que a lo que vamos. Gopro7.  La verdad es que en estos 10 años las cosas han cambiado una barbaridad y la nueva cámara es una pequeña maravilla. Entre el HyperLapse, la estabilización por software y los nuevos algorítmos de codificación de video, se pueden hacer cosas chulas. Hay muchísimas diferencias entre la Gopro3 que tenía como primaria (ahi la sigo teniendo y aguantando como una campeona) y esta nueva Gopro7 (black edition). La verdad es que es bastante cara, pero simplemente por el estabilizador, ya merece la pena cambiar. Eso si, hay que hacerse con un par de baterías extra, y una tarjeta hermosa (de 128 GB para arriba).

Os dejo aquí un video trotando por el monte, a ver que os parece. La estabilización es la que da la cámara, no está estabilizado el clip. También hay que decir que lo grabé todo con Protune y la corrección de color es un poco así, pero la idea era probar. Dará muchas alegrías.


En el aspecto "deportivo" pues la verdad es que la ruta mola bastante, porque corres todo por campo, alguna cuesta majilla y  buenas trialeras. No es para sacar mucho tiempo (aunque bueno, depende de quien lo corra, claro).


También tened en cuenta que iba haciendo el tonto con la cámara y que bueno, tampoco es que apriete mucho, la verdad.


Y aquí finalmente el mapa del "por donde"


Y el perfil, que no puede faltar!


26 abril 2017

Raspberry PI + Arduino = TwichDrone

Introducción

English readers note: This blog entry in written in spanish, but I provide a "README_ENGLISH.txt" with the installation procedure in english. Also see the section "For the Impatient" to learn how to boot the Raspberry with the custom image. For any question, feel free of contact me.  See the video of the drone working at the bottom of the page.

Si quieres saltarte todo el rollo y tener el drone funcionando lo antes posible vete a la sección "For the Impatient" está en inglés, pero se entiende bien. Aunque recomiendo que te leas todo y hagas una instalación desde cero. Puedes ver el video del drone funcionando al final de la entrada.

Pues llevaba un tiempo intentando integrar una raspberry pi, con un arduino... y dado que llevo un tiempo jugando a RainbowSix, pues pensé ... y por qué no hacemos un drone de esos que usan los personajes para buscar la posición ? así que decidí empezar el proyecto ... TwichDrone!. Para los que no hayan jugado a RainbowSix, lo explico brevemente: los jugadores cuando atacan tienen una fase inicial para localizar el objetivo, y utilizan unos coches radiocontrol para localizarlo. Para manejarlo unan un dispositivo móvil que bien podría ser un teléfono o un tablet. Twich (uno de los personajes) tiene uno un poco especial que lanza descargas con un taser.  Esta es la pinta que tiene en el juego:



Evidentemente, el drone no va a dar descargas (porque tampoco me he puesto, las cosas como son, jeje). La pinta que tiene  físicamente es esta, para que os hagáis una idea de lo que quiero implementar:

El Drone de Twich "de verdad"

Como veis en el modelo, el drone se impulsa con dos motores y tiene ruedas que le permiten desplazarse lateralmente. También tiene unos leds "infrarrojos" y un sistema de cámaras. En mi implementación no voy a usar este tipo de ruedas, porque son muy caras y la idea es que sea barato de construir. Por otro lado, no vamos a usar tampoco los iluminadores infrarrojos (aunque hubiera sido sencillo meter unos leds). Y por supuesto, no da descargas eléctricas.

Nuestro TwichDrone. Close enough!

For the Impatient

This section explains you how to get your TwichDrone up and running quickly. I recommend you that read all the documentation, if you're english reader, start with README_ENGLISH.txt file. If you're brave enough, let's start. Remember you need: Arduino UNO, Raspberry Pi 3 Model B, 2 DC motors, and a battery. Optional a GoPro3.

1. Configure ARDUINO.

You need to install Nanpy Firmware in your arduino. Follow these steps:

  1. Download ARDUINO IDE for your platform. Install it.
  2. Download the Nanpy code and prepare the sketch. Issue these commands.
  3. git clone https://github.com/nanpy/nanpy-firmware.git
    cd nanpy-firmware
    cp sample_cfg.h Nanpy/cfg.sh
  4. Connect the Arduino UNO via USB to your computer. If using a "clone" with a CH340/CH341 usb2serial, see the blog for the required drivers for your platform (Linux works, mac & windows need drivers).
  5. Copy Nanpy directory under your "sketchbook" Arduino IDE directory, start your Arduino IDE, open Sketchbook/Nanpy, select the right board (Arduino UNO) and "Upload". Done.
2. Mount the hardware.
  1. See below "Diagrama de Bloques"
  2. See below "Parte III. Montaje Hardware"
You should mount the motors with the right polarity (see photos) and build a custom wiring to power the raspberry. Then, mount everything into the desired platform, connect all the things.

3. Download raspberry image.

I prepare a ready to run image for the raspberry, with everything working. Just download the TwichDrone_Raspberry_Image to your disk, and burn it into the SD. Yo will ned at least 4.4 GB free, so a 8GB card will do the trick.

Run the following command (check directories and sd device)

gzip -dc TwichDrone_Raspberry.img.gz | dd of=/dev/yoursdcardhere


4. Configure your GOPRO (if you're planning to use it)

The image comes with the following settings:

AP_SSID: TwichDrone01
AP_IP: 192.168.2.1
AP_PASSWD: rainbow6
GOPROWIFI_SSID: GOPROR6
GOPROWIFI_PASSWD: rainbow6


You need to configure the GOPRO3. Go Here and choose a method (via Capture APP or via Web Update). if you don't set the SSID and PASSWD to the given values, the GOPRO3 won't work.

5. Start & Enjoy

Start the raspberry PI3, wait 15-35 seconds to load, and then look for the wifi TwichDrone01 with your portable device (phone/tablet). Login with the given password, and point your browser to the 192.168.2.1. You should be there. Enjoy.

Análisis y Objetivos

Bueno, pues vamos a construir un chisme de estos, a ver si somos capaces. Antes de ponernos a comprar cosas y programar como un loco, lo mejor es definir unos objetivos y establecer un plan de acción, para tener las cosas mas o menos claras. El objetivo de este proyecto de ciencias es construir un drone que cumpla lo siguiente:
  • Barato de implementar
  • Reutilizar al máximo posible lo que tengamos por casa
  • Que se controle mediante un teléfono móvil / tablet
  • Que tenga visión en tiempo real desde el drone (para que se vea como el del juego).
  • Que sea sencillo de realizar.
  • Implementar todo.
Bueno, pues tampoco son tantas cosas. Ahora iremos abordando cada una de ellas, para ver como lo resolvemos. La idea es no gastar mucha pasta en el proyecto, así que vamos a tirar de una plataforma sencilla (nada de comprar un kit rc) y adaptarla para nuestras necesidades. Lo de reutilizar viene al hilo de que tengo una raspberry pi y algún arduino, y me apetece integrarlos juntos. Además tengo una motor shield, así que miel sobre hojuelas. A la hora de controlar el dispositivo me apetece probar a realizar un interface HTML para el control, así de este modo podremos controlar el drone desde casi cualquier dispositivo. Lo que nos lleva a que el enlace tiene que ser WIFI (podría ser bluetooth, pero así es mas sencillo). Para tener una vista en tiempo real, vamos a usar la cámara de la raspberry, y como bonus pack, vamos a montar una gopro  con la que hacer grabaciones chulas. Que sea sencillo. Si tenemos que hacer un desarrollo complejísimo esto pierde gracia. Así que vamos a intentar programar todo en python y HTML (con algo de JS). Y naturalmente, hacerlo todo desde cero teniendo que implementarlo, nada de comprar un kit.

Manos a la obra. Diagramas HW & SW.

A grandes rasgos, voy a usar lo siguiente: una raspberry pi 3 que se encargará del control y del interface de la cámara. Un arduino con un motor shield para encargarse de los motores. Una bateria de lipo de 7.4v (2S) junto con un BEC para sacar 5V limpios (alimentación principal), un kit de motores de amazon para arduino de los baratos, y un desarrollo custom en Python para el control de los motores (backend), y otro en HTML + JS para el interface gráfico de control (frontend). Para probarlo todo desarrollaré un simulador en python para ajustar algunas cosillas.


Diagrama de bloques
En la imagen anterior tenemos el diagrama de bloques hardware del Drone. Como podemos ver, la alimentación la tomamos de una batería LIPO 2S, que nos facilita 7.4V. Como este voltaje es muy alto para alimentar la Raspberry, que además es muy sensible, utilizamos un BEC (uBEC) para transformar esos 7.4V en 5V. Estos dispositivos se usan mucho en RC y admiten un rango de entrada de voltaje bastante alto (además con bastante intensidad).  En nuestro caso, hemos utilizado una batería Zippy  Flightmax 1600mAh (2S1P 20C). El BEC usado es un X5Pro de 5V con una carga de salida de 5A (suficiente para esto). Para encender/apagar hemos usado un switch que conmuta la linea positiva. De aqui se saca una linea directa a la alimentación del motorshield (para mover los motores). La salida de 5V alimenta la Raspberry, que a su vez alimentará al arduino (5V) por USB. Es necesario CORTAR el puente "Vin Connect" de la placa motorshield (ver este enlace). De este modo, la alimentación del arduino es independiente de la del motor shield (5V vs 7.4V).

Finalmente, los motores se conectan al motor shield usando los pines correspondientes, como veremos más adelante. La cámara de la raspberry se conecta utilizando la faja nativa al puerto CSI, como veremos. La GoPro se controla mediante Wifi, por eso aparece sin ningún cableado.

Diagrama de bloques de software
Por otro lado está claro que tenemos que meter algo de software para que todo esto funcione. La idea es sencilla; utilizar la Raspberry PI 3 como ordenador principal, y el arduino para el control de motores. Para conectarnos vamos a utilizar WiFi, aprovechando una característica que tiene la Raspberry, y es actuar como AP (Access Point).

Eligiendo el Access Point del TwichDrone


Así que para conectarnos a ella, basta con buscar la WiFi del Drone (TwichDrone01) en nuestro tablet/teléfono y conectarnos. Esto nos asignará una IP dinámica (DHCP) y nos permitirá conectarnos al drone mediante la IP configurada (192.168.2.1). No os pongáis nerviosos que luego vendrá un documento detallado sobre como montar todo esto paso a paso.

Metiendo la ip del drone en el navegador del movil


Bien, una vez conectados a la red del Drone, basta con apuntar el navegador al servidor web (192.168.2.1) desde el cual se cargará el interface HTML que nos permite controlar al drone.

El interface web cargado y funcionando. Si, ese soy yo.

Este interface es bastante sencillo, por un lado, tiene un joystick en la parte inferior derecha que nos permite manejar el drone (adelante, atrás, girar). Un botón en la parte inferior izquierda nos permite activar/desactivar la grabación de la goPro. En la parte superior izquierda tenemos una "consola" que nos muestra el estado del drone (consumo de los motores, estado de la batería de la gopro y si está grabando o no) y finalmente, a pantalla completa se ve la imagen de la cámara de la raspberry, actualizada en tiempo real.

Detalle del log de consola


El interface realiza la comunicación por dos puertos. Por un lado, el estándar HTTP (80) por el que recibe la página web, el "stream" de la imagen y el JavaScript. Por otro lado, usamos el puerto 8000 para abrir una conexión webSocket al servidor de control (controlserver.py) que es el encargado de controlar el drone (a través de controlar el arduino para los motores, y la gopro para activar/desactivar la grabación). Este servidor está implementado en Python, y utiliza un par de librerías, como veremos posteriormente.


Parte I. Configuración de la Raspberry

Lo primero que tenemos que realizar es configurar la Raspberry. Para los más prisillas he generado una imagen de la raspberry del drone que tengo actualmente funcionando, por lo que debería de valer para arrancar y jugar con el drone. Pero para documentarlo todo, lo mejor es realizar la configuración paso por paso para entender como funciona el asunto. Para encontrar los productos necesarios ver la Lista de la Compra más abajo

Lo primero que necesitamos es una Raspberry Pi 3 Model B, con una tarjeta SD con al menos 8 GB.
para instalarla y configurarla, necesitas estas cosillas además:

  • Ratón y teclado USB
  • Un Adaptador de Corriente MiniUSB bueno
  • Un cable HDMI y un monitor.
  • Un cable de red / Wifi (mejor cable de red). 

Si piensas hacerlo todo de golpe y le quieres pinchar ya la cámara, necesitas la Raspberry PI CAM 2.1 (necesaria la segunda versión, porque tiene otro sensor (Soy IMX219 de 8MP) y se gestiona de manera distinta.

1. Grabar la imagen, arrancar la Raspy


La distribución que vamos a usar es la DEBIAN JESSIE (RASPBIAN) que te puedes bajar desde aqui, naturalmente. Yo he usado la que trae el GUI (Pixel) porque es más cómodo, aunque luego lo vamos a deshabilitar. Te descargas la imagen a tu PC, y la grabamos en la tarjeta. Yo estoy en MacOS asi que he usado dd. En linux es similar.

Como tostarla:
  1. Buscas el disco (df -h)   (/dev/disk6s1   3.7Gi  4.1Mi  3.7Gi   1%   0   0  100%   /Volumes/TWICHDRONE)
  2. Lo desmontas:  sudo diskutil unmount /dev/disk6s1
  3. Descomprimes la imagen
  4. Lo tuestas con dd:   sudo dd bs=1m if=2017-03-02-raspbian-jessie.img of=/dev/rdisk6
  5. Conectamos el HDMI, el teclado y el ratón.
  6. Rebotamos y esperamos hasta que salga el prompt (la partición de la tarjeta se reajusta)

Usuario por defecto:    pi (passwd raspberry)
Supersuario (ROOT):  root (no password, usa sudo su -)

En este punto deberías de tener la raspberry arrancada en el escritorio de PIXEL (GUI) sin problemas.

2 Configuración inicial (Red, etc).

La imagen va comprimida para que entre en una tarjeta pequeña (ocupa 4.4 GB) si quieres utilizar todo el espacio disponible de la partición (por ejemplo, porque hayas metido la imagen en una tarjeta de 16GB) hay que expandir el sistema de ficheros. Lanzas estos dos comandos como root, y fuera,  tras rebotar lo tendrás.

raspi-config --expand-rootfs
shutdown -r now

Lo primero que necesitamos es tener una salida a internet operativa. Usa el cable Ethernet para pinchar la raspberry a tu router, o conectala via WiFi. La cosa es poder salir a internet. Mejor el cable, porque vamos a andar trasteando con la WiFi.

Instalamos los siguientes paquetes:

  • apt-get install hdparm
  • apt-get install hostapd dnsmasq
  • apt-get install cmake libjpeg8-dev

Ahora actualizamos el firmware de la raspberry. Tarda unos 10 minutos, no te pongas nervioso.

Lanzamos este comando como root.


Tras actualizar el firmware y rebotar, si lanzamos este comando, veremos que se carga el módulo de la cámara correctamente.

  • # modprobe bcm2835-v4l2

Una vez actualizado el firwmare, nos podemos poner a configurar la red. Recuerda, queremos que la Raspberry funcione como un AP (Access Point) para permitir conectarnos al drone desde el movil/tablet y un cliente WiFi para poder controlar la GoPro (versiones 3, la 4 funciona distinta).

Para ello, tenemos que configurar dnsmasq, los interfaces de red, y el firewall para que haga masquerading. La configuración de red del drone queda como sigue:

  • AP_SSID:            TwichDrone01
  • AP_IP:              192.168.2.1
  • AP_PASSWD:          rainbow6
  • GOPROWIFI_SSID:     GOPROR6
  • GOPROWIFI_PASSWD:   rainbow6

Empezamos a configurar. Descomenta  y edita estas lineas en /etc/dnsmasq.conf

    interface=lo,uap0
    no-dhcp-interface=lo,wlan0
    dhcp-range=192.168.2.100,192.168.2.200,12h

edita /etc/hostapd/hostapd.conf y donde pone la variable mas abajo, mete estos parámetros:

SSID_OF_AP                          = TwichDrone01
SAME_CHANNEL_NUMBER_AS_WIFI_CLIENT  = 1
WIFI_AP_PASS                        = rainbow6

SAME_CHANNEL_NUMBER_AS_WIFI_CLIENT tiene que ser EL MISMO que el canal de la WiFi a la que te quieras conectar, porque si no, no funciona. Mira el canal WIFI con WifiAnalyzer, por ejemplo, para comprobar el canal. En el caso de la gopro es fácil, porque es el 1. (si te quieres conectar a la wifi de tu casa en vez de a la gopro, tienes que poner el mismo número)

    interface=uap0
    ssid=[SSID_OF_AP]
    hw_mode=g
    channel=[SAME_CHANNEL_NUMBER_AS_WIFI_CLIENT]
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=2
    wpa_passphrase=[WIFI_AP_PASS]
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP

Edita y añade esto en el /etc/network/interfaces

    auto uap0
    iface uap0 inet static
    address 192.168.2.1
    netmask 255.255.255.0

Crea un fichero nuevo /usr/local/bin/hostapdstart y añade:

    iw dev wlan0 interface add uap0 type __ap
    service dnsmasq restart
    sysctl net.ipv4.ip_forward=1
    iptables -t nat -A POSTROUTING -s 192.168.2.0/24 ! -d 192.168.2.0/24 -j MASQUERADE
    ifup uap0
    hostapd /etc/hostapd/hostapd.conf

Cambia los permisos de /usr/local/bin/hostapdstart

    chmod 667 /usr/local/bin/hostapdstart

Edita y añade esta linea al  /etc/rc.local

    hostapdstart >1&

Añade esto al fichero  /etc/network/interfaces (quita todas las referencias al adaptador wlan0) y cambia [SSID_OF_NETWORK_TO_CONNECT], [PSK_KEY_OF_NETWORK_TO_CONNECT] con los valores de la red que te interese. (Te puedes conectar a mas redes, pero acuérdate que el canal tiene que ser el mismo).

    auto wlan0
    iface wlan0 inet dhcp
    wpa-ssid [SSID_OF_NETWORK_TO_CONNECT]
    wpa-psk [PSK_KEY_OF_NETWORK_TO_CONNECT]

Reemplaza PSK_KEY_OF_NETWORK_TO_CONNECT con esto:

    SSID_OF_NETWORK_TO_CONNECT: SSID network a conectar (e.g. GOPROWIFI)
    PSK_KEY_OF_NETWORK_TO_CONNECT: wpa_passphrase GOPROWIFI PasswordEnTextoPlano

el comando wpa_passphrase devuelve tres campos. Quédate con el más largo. Algo como esto:
a03133ea3333471b0d33dbd1b2b19233294649968537c35904eb3389a7df65ba (e.g. wpa_passphrase GOPROR6 rainbow6)

Rebotamos la Raspberry, y en este punto, deberías de poder conectarte al TwichDrone mediante su red WiFi. Compruébalo con un teléfono móvil o una tablet. Lo de la GoPro lo vemos ahora mismo:

  1. Arranca la GoPro con la configuracion WIFI seleccionada, y enciende la WiFi (modo remote app)
  2. Rearranca la Raspberry (así comprobamos en el log que se arranca y se conecta bien)
  3. Tras arrancar, deberías de tener la red bien configurada con esta pinta:

    # ifconfig -a
    # en0   -> cable        [Adapter IP: if plugged, DHCP asigned]
    # wlan0 -> GoPro Wifi   [Adapter IP: 10.5.5.x]
    # uap0  -> Ap Wifi      [Adapter IP: 192.168.2.1]

  1. Ahora hacemos ping a la gopro, que siempre tiene la misma IP: ping 10.5.5.9
  2. Podemos comprobar que podemos acceder a su puerto HTTP http://10.5.5.9:8080
  3. De hecho, podemos ver el live stream con un navegador: http://10.5.5.9:8080/live/amba.m3u8

Y con esto tenemos comprobado que podemos acceder a la raspberry como un access point, y que la raspberry accede correctamente como cliente a la WiFi de la GOPRO. Nota sobre la GOPRO: solo funciona con las GOPROs que tengan este tipo de  interface WIFI, es decir, las 3 y las 3+. La 4 funciona de otra manera distinta, así que esto solo funciona con la GOPRO 3 y 3+.

Now, were are going to configure the PI for DEVELOPING. Turn off the gopro for
now, change the WLAN to your WIFI AP, or use a cable to connect (better).

2. Configuración de parámetros de sistema, contraseñas, SSH y RSYNC.

En esta sección configuramos algunos parámetros para que vaya más suave la Raspberry, y configuramos un par de servicios para poder conectarnos a la raspberry bajar ficheros de un modo más cómodo. Ni que decir tiene que si no piensas toquetear nada, lo del SSH y el RSYNC te lo puedes saltar.

Edita el fichero /etc/sysctrl.conf y añade:

    vm.swappiness=15
    vm.vfs_cache_pressure=50
    vm.dirty_background_ratio=15
    vm.dirty_ratio=20
    vm.min_free_kbytes = 16384

Edita  /lib/systemd/system/networking.service.d/network-pre.conf
(Si no lo encuentras créalo, pero debería de estar) y añade:

    [Service]
    TimeoutStartSec=15

De esta manera no espera 60 segundos en buscar una red WiFi en caso de que no la encuentre.

Ahora lanza el script raspi-config y configura las siguientes opciones:

  1. Arrancar el CLI
  2. Configura el teclado en tu idioma (ES)
  3. Autologin to Pi User disabled (que pida login)
  4. Establece la zona horaria (Europe/Madrid, GMT+1)
  5. Habilita estos servicios (deshabilita el resto):  camera, ssh, serial
  6. Cambia el nombre al host a TwichDrone01    
  7. Establece el pais de la Wifi (para el canal)

Ahora vete a la shell y configuramos la password del usuario pi:

        #sudo su -
        #passwd pi [pon rainbow6]

Edita /etc/ssh/sshd_config y añade "UseDNS no". De este modo no se queda "colgado" esperando el login. (resolviendo DNS). Rebota la raspberry, y deberías de poder entrar en la Raspberry.

A partir de aquí, esto es opcional y solo se usa en caso de que vayas a andar subiendo y bajando ficheros a la raspberry.  Básicamente esto sirve para configurar el acceso por ssh con certificado, y que no te pida password (lo que facilita el rsync). Para ello debe de funcionar el acceso SSH, así que pruébalo desde tu equipo antes. Una vez que funcione:

1) En la raspberry hacemos esto:
    #ssh -l pi 192.168.2.1
    Haz login (esto crea el directorio .ssh)

2) En tu equipo de desarrollo:
    #ssh-keygen -t rsa      (passphrase y password vacío)
    #cat .ssh/id_rsa.pub    (copia el contenido)

3) Nos volvemos a la raspberry y hacemos esto:
    # cd .ssh (/home/pi)
    # vi authorized_keys [pega el contenido del .ssh/id_rsa.pub]
   
4) Si probamos en el equipo de desarrollo:
    # ssh -l pi 192.168.0.163 (no debería de pedir contraseña)

3. Resto del Software.

3.1 Instalación del MJPEG-STREAMER

Tras probar con NINGX-RTMP, UVL4, FFMPEG, AVCONV, VLC y GStreamer, encontré que la mejor solución es MJPEG-Streamer. Por que? pues porque necesitamos muy baja latencia y una calidad no demasiado alta de imagen. Las soluciones de streaming puro de video no funcionan porque:
  1. El video en adroid necesita codificarse en WebM o MP4  para verlo dentro del tag video
  2. La latencia es muy alta.
Así que tras múltiples pruebas, acabamos usando MJPEG-STREAMER, que es un fork del MJPEG-STREAMER original que sirve imágenes JPEGS  continuamente. Así que nosotros en el HTML lo que hacemos es usar un tag en vez del tag.

Para instalarlo:

    # apt-get install cmake libjpeg8-dev
    # git clone https://github.com/jacksonliam/mjpg-streamer.git
    # cd mjpg-streamer-experimental
    # make

Tras compilarlo se lanza fácil:

# export LD_LIBRARY_PATH=.
# ./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so -x 768 -y 432 -fps 25"


3.2. Python WebSockets

Para poder implementar los servicios de control del dron, he usado una implementación de WebSockets para python 2.7. Python3.0 la trae nativa, pero como estábamos usando la 2.7... pues eso.
Utilizo simple-websocket-server, una implementación rápida, ligera y fácil de usar. (ver su github para más detalles). La instalación es bien sencilla:

    #pip install git+https://github.com/dpallot/simple-websocket-server.git

3.3 ControlServer y Simulator

Estos dos programillas en python es lo que he desarrollado para el control de los motores del arduino. Están escritos en Python2.7 y tienen algunas cosas chulas, por ejemplo soporta curvas de mapeo no lineales (potencia y dirección) ajuste del ángulo de giro, etc. Además el controlServer funciona desacoplado de la entrada, lo que permite comprobar el estado con una frecuencia determinada, de forma asíncrona.

El simulator es básicamente una consola en pygame en la que se muestran los diversos parámetros físicos del drone, y nos permiten controlar una simulación desde el interface web. Gracias a este simulador se pudieron optimizar los ángulos de giro, la potencia aplicada, etc. Además permitió escribir el código de control antes de tener montado el drone.


Simulator.py funcionando.
El interface web es bastante sencillo. Se presenta una página web que tiene un tag img de fondo y a través de un poco de javascript y usando la librería NippleJS se capturan los comandos y se mapean al servidor a través de WebSockets.

Lo mejor es que si tenéis curiosidad os deis una vuelta por el código del controlserver.py y el simulator.py.


Parte II. Interface con el Arduino

Para controlar los motores, vamos a utilizar un Arduino Uno con su Motor Shield, que es lo que tenía por casa.

Arduino Uno "clone" con el CH341

 Además, el arduino que vamos a utilizar, es un "clone" que se caracteriza a parte de por ser muy barato, por usar un driver serial basado en el chip CH341, lo que hace que tengamos que instalar un driver en nuestro sistema operativo para poder conectarnos con el arduino. La buena noticia es que en linux y en la raspberry está soportado nativamente, pero en MacOS y en Windows necesitamos el driver. c'est la vie.

Arduino MotorShield R3

El arduino Motor shield que vamos a utilizar es el original, revisión 3. Este shield se monta encima del Arduino y nos permite controlar dos motores DC, o bien uno paso a paso. No tiene mucho misterio. Los motores se conectan en las bornas azules que se ven en la parte inferior izquierda de la foto, junto con su alimentación. Es necesario CORTAR el puente "Vin Connect" de la placa motorshield (ver este enlace). De este modo, la alimentación del arduino es independiente de la del motor shield (5V vs 7.4V). Si no cortamos el puente, freímos el arduino, porque lo vamos a alimentar externamente.

Una vez montado el shield encima del arduino, tenemos que instalar el NanPy en la raspberry Y en el Arduino. Nanpy permite controlar via python todos los componentes del arduino (via puerto serie sobre el USB). Por esta razón, tenemos que descargar el firwmare de NanPy en el arduino.

Lo primero es que si estás en MacOS, necesitas los drivers; El Capitán, Sierra. Si estás en Windows, entonces estos son los tuyos. Los descargas, y los instalas.

En la raspberry no tenemos que hacer nada, porque vienen los paquetes preinstalados. Lo que si tenemos que hacer es poner el firmware en el Arduino, y esto lo podemos hacer desde el equipo de desarrollo.

Lo primero es instalarse el Arduino IDE para tu plataforma. Nos hace falta para compilar el código y descargarlo al arduino. Lo descargas y lo instalas. No lo abras todavía.

Desde una shell, ejecutamos lo siguiente:

git clone https://github.com/nanpy/nanpy-firmware.git
cd nanpy-firmware
cp sample_cfg.h Nanpy/cfg.sh
Ahora conectamos el Arduino UNO via USB al equipo de desarrollo. Comprobamos que funciona el IDE y podemos descargar un sketch sencillo (e.g. blink). Cuando nos hayamos asegurado de que esto funciona, cerramos el IDE y:
  • Copiamos el directory Nanpy al directorio de sketches del Arduino IDE.
  • Arrancamos el Arduino IDE, seleccionamos nuestra placa (Arduino UNO).
  • Abrimos el sketch Nanpy
  • Le damos a "upload". Si todo va bien, ya lo tenemos instalado.


Para montar el drone, lo primero que tenemos que agenciarnos es un recipiente adecuado para meter toda la electrónica. Yo he usado un tupper del mercadona, en concreto de helado. Se puede utilizar la base en la que vienen las ruedas (ver más adelante) o bien un maleta estanca... yo no me quería complicar porque era una prueba. Eso si, el tupper lo pinté en negro, para que quedara más aparente.

La caja
En realidad, el montaje del drone es bastante sencillo, y de lo único que nos tenemos que encargar es de que entren todos los componentes. En mi caso tuve que taladrar la caja para sacar las ruedas y atornillar los motores ya que no usé la pletina que viene con el kit. Aquí cada uno que haga un poco lo que le cuadre. El kit que compré en amazon incluye un portapilas, los motores, las ruedas y una rueda jockey. Como véis en la foto, se puede usar la pletina para realizar el montaje. No quedará tan pintón, pero es más rápido. El portapilas y los cables no los usamos.
Car Kit

El montaje de los motores es importante para encontrar la polaridad correcta. En mi caso, los he puesto de manera que las bornas vayan hacia dentro de la caja, y poder identificar así correctamente el polo positivo y el negativo. En nuestro montaje, el motor B es el izquierdo y el motor A es el derecho.  Es importante establecer esto correctamente porque si no luego el código de control no va a identificar correctamente la polaridad y los motores, y no va a funcionar.

Motor derecho A
Como podéis ver en las fotos la borna superior es la positiva (cable ROJO) y la borna inferior es la negativa (cable NEGRO).

Motor Izquierdo B
Estas bornas van conectadas a las bornas del arduino SHIELD marcadas a tal efecto en la foto. Vamos, el B a las de arriba (marcada como B) y el A a la del medio (marcada como A) respetando la polaridad. El de la parte de abajo del todo (más abajo a la izquierda) es la entrada de corriente.

Conexiones de los motores al arduino shield
El siguiente paso es conectar el arduino con la raspberry, esto es fácil, porque se hace a través del cable USB. De este modo se alimenta el arduino, y se le pasan los comandos de control via serie. Y ya queda poco.

Ahora es el momento de soldar otro rato y crear el sistema de alimentación. Yo he usado una batería LIPO de 2S (7.4V). Para conectarla he usado un conector estándar XT60 (el naranja que se ven las fotos). Como estos conectores son muy duros, he metido un switch que conmuta el positivo para no andar quitando y poniendo el conector. El esquema eléctrico es el siguiente:
Esquema eléctrico.


Acordaros que la alimentación del shield se toma ANTES del UBEC ya que necesitamos 7.4V. El UBEC convierte la tensión a 5V, que es la que usamos para alimentar la Raspberry. Para ello, soldamos la salida del UBEC a un conector MiniUSB macho que en teoría luego se puede meter en su conector. Yo no fui capaz, así que le metí termoretráctil y cola caliente.  Tened cuidado que es delicado.


Como conectar los pines de alimentación al conector MiniUSB.
Y con eso tenemos las conexiones eléctricas. Nos queda conectar el MiniUSB a la raspberry, esta a la cámara (que se hace con la faja CSI, es sencillo pero con cuidadito) y el USB que conecta con el arduino. Al final tiene que quedar algo parecido a esto:

La raspberry con el Switch de encendido, el USB, la cámara y la alimentación

Y esta es la pesadilla de cables que se ve dentro. Como veréis tampoco es para tanto. Se ve elUBEC (perdió la pegatina) y el conector XT60. Lo que se ve azul debajo del UBEC es la batería LIPO.

Cableado interior
Solo nos quedaría encenderlo, conectar el teléfono/tablet a la WiFi del Drone, y apuntar el navegador a la  dirección http://192.168.2.1 Con esto debería de estar funcionando sin problemas.

Si quereís una información más detallada sobre el proceso de instalación a mano, podéis consultar el fichero README_ENGLISH.txt





Lista de la compra

Estos son los componentes principales y donde comprarlos.