Autonomous Robot Control via Web Interface

Project Overview

The project involves controlling an autonomous robot through a web interface. Users can interact with the robot in real-time, view live video feeds, monitor environmental data, and send movement commands.

User-Facing Features

  • Access the web portal at raybot.es to:
    • View the latest images captured by the robot's webcams or watch a live video stream.
    • Check the timestamp, temperature, and humidity readings for each captured image.
    • Request a new photo with updated environmental data.
  • Robot Control Options:
    • Move two robotic arms (horizontal and vertical axes).
    • Control two motors (forward/backward movement).
    • Adjust a single motor (forward/backward).
    • Steer left, right, or center.
  • Additional Features:
    • View a photo history log.
    • Review a command history log.
    • Watch live video streaming.
    • Measure ground distance (for future enhancements).
  • The web interface allows real-time robot control via command inputs.
  • Live video streaming via Twitch.tv, embedded in the web interface using Node.js.

Development Notes

Hardware Setup

  • Arduino Uno connected to:
    • 2x DHT11 temperature & humidity sensors.
    • 4x MG995 servo motors (for arm movement).
    • 1x DC motor (forward/backward motion).
    • 1x servo motor (steering left/right/center).
  • Raspberry Pi 3 powered by dual 6V lead-acid batteries (7Ah).
  • Ultrabook laptop with mobile internet (SIM card) for connectivity.
  • 2x USB webcams for live video feed.

Software & Automation

  • Python scripts on the laptop handle:
    • Serial communication with Arduino.
    • HTTP GET/POST requests to a remote database via a PHP backend.
  • Automated startup script (cron.sh) running on boot:
    • fswebcam - Captures hourly images.
    • Python scripts - Collect and log temperature/humidity data from Arduino.
    • Secure API calls - Send/receive commands via HTTPS (user/password authentication).
  • Live streaming via OBS → Twitch.tv, embedded in the web interface using an iframe.

Power & Electronics

  • 12V solar panel with charge controller.
  • Dual 6V lead-acid batteries (7Ah).
  • Voltage regulators:
    • 12V → 5V (for Raspberry Pi).
    • 12V → 6V (for servos/motors).
  • 12V DC to 200V AC inverter (for laptop power).
  • Additional components:
    • SIM808 module (GSM/GPRS connectivity).
    • USB 4G router (SIM card-based internet).
    • Arduino Sensor Shield V5.0.
    • HC-SR04 ultrasonic sensor (distance measurement).
    • Relays (motor control).

Software & System Architecture

Modules Developed

  1. Sensor & Camera Module
    • Collects temperature/humidity data.
    • Manages dual webcam feeds (latest image displayed by default).
  2. Robot Command Module
    • Controls servo positions (horizontal/vertical movement).
    • Handles motor commands (forward/backward, steering).
  3. Data Logging Module
    • Stores images, timestamps, sensor data, commands, and distance measurements.

Operating Systems & Tools

  • Raspberry Pi 3: Raspbian OS (Python, Arduino IDE).
  • Raspberry Pi 4: Ubuntu 22.04 ARM64 (Python, Arduino IDE).
  • Laptop: Ubuntu 22.04 (Python, Arduino IDE).
  • Live Streaming: OBS → Twitch.tv.
  • Web Backend:
    • Node.js/Python WebSocket server for real-time control.
    • Apache/PHP/MySQL for raybot.es web hosting.

Mechanical & Enclosure Design

  • Stainless steel frame with transparent polycarbonate panels (sealed with silicone).
  • Plastic casing for additional protection.
  • Toy car chassis (modified for motor/steering integration).

Future Improvements

  • AI integration for autonomous navigation.
  • Process automation (scheduled tasks, auto-adjustments).
  • IoT & Big Data for advanced analytics.

Proyecto raybot.es

raybot1 autónomo controlado por web


Versión 6 Próximamente.

Versión 5 con Brazos. Estructura y cubierta con caja plástico y escuadras metalicas.
Arriba Foto
ver


Versión 4 con Desbrozadora. Estructura y cubierta pendientes*
Arriba Foto
Frente Foto

Versión 3

Ir a versión 2
Ir a versión 1
Ultima Foto


Ver hitórico de Fotos

Ver hitórico de Órdenes


NOTAS: El proyecto consiste en controlar un robot autónomo por medio de una web.

Explicación en el lado del usuario

  • Entro en raybot.es y veo las últimas fotos realizadas por las webcams o el video en directo.
  • Tambien veo la fecha, hora, temperatura y humedad en la que se ha realizado la foto.
  • Se tiene la opción de hacer nueva foto con temperatura y humedad.
  • Opciones de mover 2 brazos horizontalmente y verticalmente.
  • Opciones de mover 2 motores, adelante y atrás.
  • Opciones de mover 1 motor, adelante y atrás.
  • Mover derecha, izquierda o centro
  • Ver histórico de fotos
  • Ver histórico de ordenes
  • Ver video
  • Mido distancia al suelo para futuras mejoras.
  • Es decir, desde la web se puede ver y mover el robot dándole ordenes.
  • Se emite en directo por medio de twitch.tv vídeo en vivo y directo.
  • Se emite en web con Node.js

Apuntes y explicación del desarrollo

En arduino tengo conectado 2 sensores de temperatura y humedad, 4 servos, 2 para cada brazo, y 1 motor para moverlo adelante, atrás, y un servo para derecha o izquierda.
Utilizo una rasberry alimentada por dos baterias,
Utilizo un pequeño pc portatil
que la conecto a internet con una tarjeta de internet movil tipo SIM
y dos webcam por usb.
En el PC dispone de un código python para comunicarse con arduino, envia y recibe datos a base de datos remota por medio de GET y POST, a un archivo php.
Edito el arranque de pc para ejecutar un cron.sh:
  • fswebcam para que haga fotos cada hora
  • ejecuta python para recoger los datos de temperatura y humedad que recibe con python desde serial que devuelve arduino.
  • ejecuta python para guardar esos datos con POST, tipo webservice con usuario/contraseña y certificado de seguridad.
  • ejecuta python para recoger ordenes con GET, tipo webservice con usuario/contraseña y certificado de seguridad.

Conectamos tw emisión en directo y aparece en la web con iframe.

Hardware:

  • Placa solar 12V
  • 2 baterias de plomo de 6V, 7 Amperios
  • Regulador de carga
  • Controlador CC de 12 a 5 V.
  • Controlador CC de 12 a 6 V.
  • Inversor 12V DC a 200V
  • Rasberry pi 3
  • Portatil Ultrabook
  • Tarjeta de microSD 32GB
  • SIM808, GSM,GPRS,IPX,... simcard*
  • USB tipo Router con SIM
  • Arduino uno
  • Arduino Sensor Shield V 5.0
  • 2 Sensores de temperatura y humedad DHT11
  • 4 Micro servo motor MG995
  • 2 Relés para avanzar y girar
  • Sensor de distancia HC-SR04 HCSR04

Módulos desarrollados:

  • Un modulo para los sentidos que recibimos del robot, es decir sensores de temperatura y humedad, y dos webcam que por defecto veremos imagen de la última foto realizada.
  • Un módulo para las órdenes que enviamos al robot. Inicialmete, por medio de dos servos, podemos mover la webcam horizontalmente y verticalmente a posiciones concretas o paso a paso.
  • Módulo para guardar datos como imagen, fecha/hora, temperatura, humedad, orden, distancia

Otros

  • Rasbian como sistema operativo para rasberry pi 3, utilidades como python, ide arduino...
  • Ubuntu 22.04, arm64, como sistema operativo para rasberry pi 4, utilidades como python, ide arduino...
  • Ubuntu 22.04, como sistema operativo para portatil, utilidades como python, ide arduino...
  • OBS para emitir en directo en Twitch las camaras web conectadas al portatil
  • Servidor WebSocket (Node.js/Python)

  • El actual servidor web con apache, php y mysql raybot.es

  • Estructura formada con escuadras de acero inox.
  • Se recubre con una tapadera de laminas de metracritato transparente en forma de cubo, unidas por silicona. Y se pinta con spray.
  • Se recubre con una caja de plástico transparente en forma de cubo y tapadera.
  • Coche juguete de plástico con motor y volante

Ideas futuras: IA, Automatización de procesos, loT y BigData

https://github.com/jgapp20/raybot

¡

Donaciones:

Donar

Puedes donar BitCoin en Address: bc1qqw8p6ujm67eq3w9pkydvjddtxu5m6ktey2gmtn