Kit de proyecto Arduino Due: TFT, GPS, RTC, sensores, Bluetooth y joystick - Lista completa de componentes
Componentes y materiales
| Arduino Due | × | 1 | de https://www.arduino.cc |
| Módulo TFT 3.2" 400x240 SD Touch con Shield para Arduino Due | × | 1 | Usé el de Elechouse |
| RTC DS3231 | × | 1 | Reloj en tiempo real de eBay |
| GPS uBlox Neo 6M | × | 1 | Módulo GPS de eBay |
| Joystick PS2 para Arduino | × | 1 | de eBay |
| Sensor de temperatura DHT22 | × | 1 | Sensor de temperatura y humedad |
| Módulo Bluetooth HC-05 | × | 1 | Módulo Bluetooth HC-05 de eBay |
| DRV8825 | × | 2 | Drivers de motor paso a paso |
| Motores NEMA 17 SY42STH47-1684B | × | 2 | 44 N.cm torque |
| PCB | × | 1 | Placa prototipo electrónica |
| Correas y poleas | × | 2 | 2 poleas 40 dientes, 2 poleas 10 dientes, 2 correas para tu montura telescópica |
| Resistencia 1k ohm | × | 10 | |
| Condensador 100 µF | × | 1 | |
| Componentes electrónicos | × | 1 | Cables + Interruptores (x3) + Conectores (2x5pin RA & DEC, 12VDC y USB para programación) |
Sobre este proyecto





Descripción
El primer control de telescopio GOTO autónomo basado en Arduino del mundo.
Todos los controles de telescopio open source disponibles usan Raspberry Pi, que consume mucha energía, o usan Arduino como extensión de una computadora, smartphone o tablet. rDUINOScope es el primer dispositivo autónomo basado en Arduino que permite a los astrónomos aficionados disfrutar del cielo nocturno.
La idea inicial era crear una alternativa barata y fácil de construir a los productos GOTO comerciales como los de SkyWatcher, Orion, Vixen y otros. Así, la arquitectura hardware se basa en una placa Arduino DUE y sensores baratos disponibles en el mercado. En el corazón del sistema hay una placa Arduino DUE cargada con software en constante desarrollo para añadir funcionalidad.
rDUINOScope con Stellarium:
Detalles
rDUINOScope es un Sistema de Control de Telescopio (GOTO) open source, basado en Arduino Due. Diseñado como sistema autónomo, rDUINOScope no necesita PC, tablet, móvil, ni conexión a Internet para operar y ofrecer vistas impresionantes.
Básicamente tiene una base de datos con LOS MEJORES 250 objetos estelares (catálogos Messier y Hidden Treasures) y 200 estrellas, calcula su posición en el cielo y apunta el telescopio. Los procedimientos de alineación implementados permiten una experiencia "siempre en el ocular" al ir a objetos seleccionados y una vez el objeto está en el ocular, el sistema lo sigue trackeando.
En caso de que quieras aprovechar tus dispositivos electrónicos, rDUINOScope utiliza comunicación Bluetooth (configuración sin cables) para conectar con todos los dispositivos electrónicos y aceptar comandos basados en el protocolo de comunicación MEADE LX200.
El sistema funciona con motores paso a paso de todo tipo y puede montarse tanto en monturas DIY como en productos comerciales como SkyWatcher, MEADE, Orion, Vixen, etc.
Funcionalidad:
¿Qué hay dentro del rDUINO SCOPE?
- rDUINOScope Github
- Instrucciones de construcción
PASO 1: Preparación
Antes de empezar, es importante que entiendas cómo funciona el software para poder hacer cambios y personalizarlo. ¡Esta es una de las fortalezas más significativas del proyecto!
Para entender esta parte necesitas descargar el código desde los Archivos del Proyecto, junto con los archivos de "librerías"... o simplemente descarga el paquete completo desde: https://rduinoscope.co.nf/downloads.php. Todos los números de línea referenciados son según el código de la V2.1 Boiana EQ.
Debes saber cómo funciona el código Arduino. Normalmente los programas Arduino tienen 2 secciones: SETUP() y LOOP(). SETUP() se ejecuta al inicio y básicamente inicializa el sistema; LOOP() es un bucle constante que se ejecuta múltiples veces por segundo. Para asegurar que tenemos pantallas, entradas táctiles, etc. y la pantalla no parpadea por el LOOP(), necesitamos inventar un mecanismo para que Arduino sepa qué espera el usuario. Así en la sección LOOP() verás una porción muy pequeña que solo dice "Considerar Touch.. o Considerar Tiempo..." y el resto de actividades ocurren dentro de esas funciones, lo que nos permite alterar el flujo del programa para que las pantallas no se refresquen múltiples veces por segundo.
Cálculos: Usé información de internet sobre cómo calcular la posición de objetos estelares. La mayor parte la recogí de: https://www.stargazing.net/kepler/altaz.html - Describe fórmulas y enfoque para calcular Ángulo Horario (HA), conociendo ubicación, hora actual, y AR y DEC del objeto estelar.
Una vez creé el código para calcular HA /línea 678: void calculateLST_HA() /, usé esta página para verificar: https://www.jgiesen.de/astro/astroJS/siderealClock/, y luego cuando añadí la BD con Objetos Messier usé Stellarium (https://www.stellarium.org/) para las mismas comprobaciones.
El principal problema no eran las fórmulas, sino cómo Arduino maneja los tipos de variables y en particular la precisión de los cálculos.
Ahora, una vez tenemos HA y DEC calculados para un objeto, queremos que la montura apunte el telescopio. Para ello necesitamos saber la relación tornillo sin fin / engranaje: cuántas vueltas debe dar el tornillo para que el engranaje haga 360°. Tengo una Vixen Super Polaris y una búsqueda rápida reveló que usa engranaje de 144 dientes para ambos ejes RA y DEC. Creé un archivo Excel simple (*.XLS - https://rduinoscope.co.nf/downloads/Gears_Stepper_Calculation.xlsx) para calcular cuánto deben girar los motores una vez calculados HA y DEC, y también con qué frecuencia "disparar" los motores para compensar la rotación terrestre.

El mismo modelo matemático del XLS está implementado en el código, así que solo necesitas sustituir los valores de tu montura al principio del código (líneas 34-37):
// AQUÍ VA LA INFO DE MONTURA, ENGRANAJES Y DRIVE
// ... usada para calcular ratio HourAngle a microPasos
// ACTUALIZA ESTA PARTE según TU CONFIGURACIÓN
// ---------------------------------------------
// NB: RA y DEC usan la misma ratio de engranaje (144 dientes en mi caso)!
//----------------------------------------------
int WORM = 144;
int REDUCTOR = 4; // Reducción 1:4
int DRIVE_STP = 200; // Driver paso a paso: 200 pasos/rev
int MICROSteps = 16; // Modo 1/16 micro-pasos para velocidad sideral
Una vez calculadas las ratios, el código sabrá cuánto girar los motores para apuntar el telescopio a las coordenadas correspondientes y también cuál es la velocidad de reloj para que la montura trackee el objeto. Las funciones que se encargan de esto empiezan en la línea 906 y 917:
void Sidereal_rate(){ }
void cosiderSlewTo(){ }
Consideraciones: Esto no es un producto listo para consumidor. Permite personalizarlo para tus necesidades y es muy flexible, pero con la flexibilidad vienen inconvenientes. Incluí esta sección para asegurar que no se olviden en tu lista de tareas.
- Montaje de motores: Tarea simple que impacta cómo deben funcionar los cálculos. En mi caso Vixen Super Polaris tiene los engranajes originales en el lado derecho del eje del tornillo. Los encontré cortos para reemplazar con poleas y moví las poleas al lado opuesto (izquierdo). Esto hizo que el motor deba girar hacia atrás para aumentar la posición del telescopio y tuve que revisar el código original. ¡Definitivamente revisa las direcciones que giran tus motores o terminarás con conteo de pasos erróneo y posición incorrecta!
if (SLEW_RA_microsteps > RA_microSteps){
digitalWrite(RA_DIR, STP_BACK);
digitalWrite(RA_STP, HIGH);
digitalWrite(RA_STP, LOW);
RA_microSteps += RA_mode_steps;
}else{
digitalWrite(RA_DIR, STP_FWD);
digitalWrite(RA_STP, HIGH);
digitalWrite(RA_STP, LOW);
RA_microSteps -= RA_mode_steps;
}
ACCIÓN: Revisa: void consider_Manual_Move(int xP, int yP), void cosiderSlewTo() y void Sidereal_rate().
- Hemisferio Norte VS Sur: El código también invierte el movimiento ADELANTE según el hemisferio. Esto se hace en la parte que maneja entradas táctiles. Podrías necesitar revisar esa sección.
- Engranajes en ejes DEC y RA: Mi código asume que ambos usan engranaje de 144 dientes (caso Vixen Super Polaris). Si tienes configuración diferente, podrías necesitar revisar partes del código. Si tienes problemas identificándolas, contáctame e intentaré ayudarte.
Planifica tus actividades: Ahora necesitamos planear para construir el sistema rDUINO Scope GoTo. Estimación aproximada: 2-3 días si tienes todo (HW, herramientas, materiales). A mí me tomó 4-5 meses trabajando solo de noche y haciendo mucha investigación. Juntar todo me tomó:
- 1 día para construir la Shield board y dar vida al sistema
- 1 día para meter todo en la caja
- 1 día para fijar motores y poleas a la montura
PASO 2: Materiales
Ahora que sabemos cómo funciona básicamente el programa, planifica la adquisición de materiales.
Lista de materiales (BOM): La mayoría los compré a proveedores chinos por internet. Algunos localmente para evitar retrasos: GPS, Bluetooth y Joystick. Costó unos 190 USD en total, muy barato comparado con sistemas comerciales. Lista con precios y dónde comprar en la web del proyecto: https://rduinoscope.co.nf/rDUINO_step2.html, también en la sección "COMPONENTES".
Si los encuentras más barato o con entrega más rápida, hazlo.
Según tu diseño, podrías necesitar cable de 40 pines con conectores para el TFT, tornillos plásticos para el joystick, cable USB para que el Arduino Due siga siendo programable dentro de la caja, ventilador, etc.
Si no los tienes (como yo), compra también material de soldadura, estaño, alicates, multímetro digital, etc.
Software necesario:
- Descarga Arduino IDE: https://www.arduino.cc/en/Main/Software. Instala (incluye drivers).
- En Arduino IDE: Herramientas → Placa → Gestor de placas, descarga e instala "Arduino SAM Boards (32-bit ARM Cortex-M3)".
- Descarga el paquete de librerías que usé y cópialo en la carpeta "libraries" de tu instalación Arduino IDE. (NOTA: "libraries" es una carpeta en tu PC, pero también dentro del PAQUETE COMPLETO en https://rduinoscope.co.nf/downloads.php. Descarga el paquete, renombra a .ZIP, abre y copia el contenido de "_libraries" a tu carpeta "libraries").
- Reinicia IDE y abre el archivo principal "_02_Boiana_EQ.ino". Se abrirán 4 archivos más en pestañas separadas (archivos de soporte).
Ahora deberías poder compilar y cargar el código al Arduino Due tras conectarlo.
Nota: Si no sabes cómo funciona Arduino IDE, consulta: https://www.arduino.cc/en/Tutorial/HomePage
PASO 3: Ensamblaje
Para instrucciones detalladas: https://rduinoscope.co.nf/rDUINO_step3.html
Hora de crear la Shield board. Es una placa con pinouts que se apila sobre el Arduino DUE. Algunos componentes van en esa placa y otros en la caja. Mi distribución:
- Shield Board: ambos drivers DRV8825, RTC3231, Bluetooth HC-05, altavoz piezo, conector 12V y pinouts para el resto.
- En la caja: GPS NEO 6M (RX hacia el cielo), DHT22 fuera de la caja por un agujero, joystick PS2, pantalla TFT y todos los interruptores (ON/OFF y Día/Noche). También agujeros para conectores de motores, 12V y puerto USB al puerto nativo del Due para actualizaciones sin abrir la caja.
Cómo conectar componentes a ARDUINO DUE:
| Componente | Pin Hardware | Pin Arduino |
|---|---|---|
| GPS | ||
| GPS NEO 6M | RX | 16 |
| GPS NEO 6M | TX | 17 |
| RTC | ||
| RTC DS3231 | SDA | A4 |
| RTC DS3231 | SCL | A5 |
| Bluetooth | ||
| BT HC-05 | TXD | 14 |
| BT HC-05 | RXD | 15 |
| DHT | ||
| DHT22 | out | 3 |
| Altavoz | ||
| Piezo Speaker | - | 2 |
| PS2 Joystick | ||
| PS2 joystick | VRx | A1 |
| PS2 joystick | VRy | A0 |
| DRV8825 Declinación | ||
| DEC DRV8825 | STEP | 6 |
| DEC DRV8825 | DIR | 7 |
| DEC DRV8825 | M0 | 10 |
| DEC DRV8825 | M1 | 9 |
| DEC DRV8825 | M2 | 8 |
| DEC DRV8825 | RESET / SLEEP | - |
| DRV8825 Ascensión Recta | ||
| RA DRV8825 | STEP | 4 |
| RA DRV8825 | DIR | 5 |
| RA DRV8825 | M0 | 11 |
| RA DRV8825 | M1 | 13 |
| RA DRV8825 | M2 | 12 |
| RA DRV8825 | RESET / SLEEP | - |
| Pantalla TFT | ||
| TFT Shield | pines (22-53) + SPI | - |
| Día/Noche Switch | - | A3 |
Bien, ahora ensamblamos la Shield Board. Consigue una PCB de prototipado y evalúa cómo cortarla para que quepa todo con espacio para cableado y pinouts soldados para apilar sobre el Arduino. Nota: suelda todos los pines usados por Arduino y conéctalos a componentes en la Shield o a conectores en esta Shield para que los componentes en la caja también se conecten.



Una vez hecho, conecté la placa y probé la shield. ¡No funcionaba! :( Revisé el cableado y resultó que había creado un puente entre 2 conexiones y tuve que arreglarlo. Desde ese momento empecé a revisar cada soldadura. NB: ¡Verifica todas las conexiones! Sigue el diagrama de cableado para DRV8825 y motores, es importante.

Usa adaptador de alimentación adecuado (12V, 1.6A) y conecta los drivers de motor ANTES de encender. NB: Nunca conectes drivers de motor cuando el DRV8825 está bajo carga, ¡podría quemarlos!
Ahora que todos los componentes están soldados, sugiere también conectar los drivers de motor, cargar el software al Arduino y probar todo. Debería funcionar sin fallos en este punto.
Ahora puedes jugar con el software y conocer la interfaz de usuario. Para ayudar con la interfaz creé una GUÍA DE USUARIO en la web: https://rduinoscope.co.nf/guide.html


PASO 4: Montar todo en la caja
Una vez lista la Shield, toma la caja y coloca los componentes restantes, planifica dónde taladrar agujeros. La mejor forma es con una navaja pequeña. No importa si es redondo o cuadrado. Para la pantalla necesitas un agujero largo, uniforme y cuadrado; pedí ayuda a mi padre con sus máquinas de corte.
Una vez contento con el diseño, empieza a taladrar. Es largo y crea lío, pero no más de 2-3 horas. A veces usé taladro para agujeros circulares: conector 12V, conectores RA y DEC.

Prepara la pistola de silicona caliente y pega componentes a la caja:




Todo conectado y encajado, excepto los componentes de la cara frontal: pantalla TFT, joystick PS2 e interruptor Día/Noche. Para la pantalla hice una conexión de cable plano con conectores macho/hembra, pero no funcionó: los pines quedaron espejados. Así que ideé una conversión 2D a 3D complicada con los conectores del cable plano para resolverlo.
Historia corta: No es ciencia espacial, pero me dio dolores de cabeza hasta encontrar solución. Una solución fea, pero funciona hace un año. Básicamente:



- Cable plano (ribbon cable)
- Conectores hembra 40 pines
- Pines para soldar en PCB cortada formando array (2 x 20 pines)
Funcionó perfecto y me permitió completar la caja.




PASO 5: La montura ecuatorial alemana
No puedo compartir cómo conectar los drivers de motor a tu montura porque cada fabricante tiene su diseño. Uso Vixen Super Polaris de los 80s y el método below funciona para ella. Recuerda que las decisiones del PASO 1 (cambiar valores en el código) afectan ahora. Abajo mi configuración de poleas y correas.
Compré 2 sets: uno con reducción 1:4 y otro 1:3. El tamaño de correa también difiere por la reducción. Con buen diseño se puede decidir antes y ahorrar dinero, pero tenía prisa. ¡Necesitaba que funcionara!

Tras tener poleas, correas y montura delante, decidí usar reducción 1:4 porque todo encajaba perfecto y empecé a trabajar en la carcasa del motor. Tras medio día:


Probé todo y tuve que cambiar software (actualizar variable a 4 en línea 35) para reflejar mi decisión final. Probé de nuevo y todo funcionó perfecto.
Esperé una noche estrellada para probarlo bien, pero me di cuenta que algo no cuadraba. Tenía el mejor sistema GOTO para telescopio, mejor que lo que mi presupuesto de aficionado podía comprar, pero no se veía bien. Necesitaba toques finales, algo que luego me hizo sentir orgulloso de mi rDUINOScope.

¡Finalmente, mi rDUINOScope Vixen SP con look Ferrari como siento que debe verse!



Archivos
- _READ_ME.txt: Descripción de la release final v.2.1 Boiana EQ con FAQ.
- _02_Boiana_EQ.ino: Archivo principal Arduino
- graphic_screens.ino: Archivo de gráficos - enlazado al principal
- touch_inputs.ino: Archivo de entradas táctiles - enlazado al principal
- BT.ino: Comunicación Bluetooth - enlazado al principal
- regular_updates.ino: Actualizaciones de tiempo - enlazado al principal
Código
Fragmento de código #1 (Texto plano)
// AQUÍ VA LA INFO DE MONTURA, ENGRANAJES Y DRIVE
// ... usada para calcular ratio HourAngle a microPasos
// ACTUALIZA ESTA PARTE según TU CONFIGURACIÓN
// ---------------------------------------------
// NB: RA y DEC usan la misma ratio de engranaje (144 dientes en mi caso)!
//----------------------------------------------
int WORM = 144;
int REDUCTOR = 4; // reducción 1:4
int DRIVE_STP = 200; // Driver stepper: 200 pasos/rev
int MICROSteps = 16; // Modo 1/16 micro-pasos para velocidad sideral
Fragmento de código #3 (C/C++)
if (SLEW_RA_microsteps > RA_microSteps){
digitalWrite(RA_DIR, STP_BACK);
digitalWrite(RA_STP, HIGH);
digitalWrite(RA_STP, LOW);
RA_microSteps += RA_mode_steps;
}else{
digitalWrite(RA_DIR, STP_FWD);
digitalWrite(RA_STP, HIGH);
digitalWrite(RA_STP, LOW);
RA_microSteps -= RA_mode_steps;
}
GitHub
https://github.com/dEskoG/rDUINOScope
Esquemáticos
Cómo cablear motores paso a paso y DRV8825 y conectarlos a Arduino DUE

Cómo cablear todos los sensores y conectar a Arduino DUE

Proceso de manufactura
- Captura Gotas de Agua en Acción con Arduino Nano: Fotografía de Alta Velocidad DIY
- Construye un Spybot controlado por Bluetooth con Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Generador de Ondas JX – Oscilador DDS Compatible con Arduino con Pantalla OLED
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Construye un Skateboard VR Casero con Arduino, Google Cardboard y Bluetooth
- Conectar Arduino Mega a módulo GPS NEO‑6M: Guía paso a paso
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón