Tabla de contenido:

Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi: 15 pasos (con imágenes)
Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi: 15 pasos (con imágenes)

Video: Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi: 15 pasos (con imágenes)

Video: Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi: 15 pasos (con imágenes)
Video: TODO ESTO PUEDES HACER CON UNA RASPBERRY PI 😈💻 2024, Mes de julio
Anonim
Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi
Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi
Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi
Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi
Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi
Construya su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi

Soy @RedPhantom (también conocido como LiquidCrystalDisplay / Itay), un estudiante de 14 años de Israel que está aprendiendo en la Escuela Secundaria Max Shein de Ciencias y Matemáticas Avanzadas. ¡Estoy haciendo este proyecto para que todos puedan aprender y compartir!

Es posible que hayas pensado para ti mismo: hmm… Soy un geek… Y mis hijos quieren que haga un proyecto con ellos… Quería construir un robot. Quería disfrazarlo como un cachorrito. ¡Es un buen proyecto de fin de semana!

La Raspberry Pi es perfecta para todos los usos: hoy explicaremos las habilidades de esta microcomputadora para hacer un robot. Este robot puede:

  • Conduzca y sea controlado a través de LAN (WiFi) utilizando cualquier computadora conectada a la misma red WiFi que Raspberry Pi.
  • Transmita video en vivo usando el módulo de cámara Raspberry Pi
  • Enviar datos del sensor usando Arduino

Para ver lo que necesita para este bonito proyecto de luz, simplemente lea el siguiente paso (advertencias) y luego el paso Se busca: componentes.

Aquí está el repositorio de GitHub: GITHUB REPO BY ME

Aquí está el sitio del proyecto: SITIO DEL PROYECTO POR MÍ

Paso 1: Advertencia: tenga cuidado al intentar esto en casa

PRECAUCIÓN:

EL AUTOR DE ESTE TUTORIAL ASUME QUE TIENE SUFICIENTES CONOCIMIENTOS SOBRE ELECTRICIDAD Y FUNCIONAMIENTO BÁSICO DE EQUIPOS ELÉCTRICOS. SI NO TIENE CUIDADO Y NO SIGUE LAS INSTRUCCIONES DE ESTE TUTORIAL PUEDE: DAÑAR EL EQUIPO ELECTRÓNICO, QUEMARSE O PROVOCAR UN INCENDIO. Tenga cuidado y use el sentido común. Si no tiene los conocimientos necesarios para este tutorial (soldadura, conceptos básicos de electrónica), actúe con una persona que los tenga. Gracias.

EL AUTOR DE ESTE INSTRUCTABLE QUITA CUALQUIER RESPONSABILIDAD DE SÍ MISMO POR DAÑOS CAUSADOS O PÉRDIDA DE PROPIEDAD O DAÑO FÍSICO. USA EL SENTIDO COMÚN

Paso 2: componentes

Conexiones
Conexiones
Conexiones
Conexiones
Conexiones
Conexiones
Conexiones
Conexiones

Antes de calentar el soldador, debemos repasar qué debería estar conectado a qué. Hice esta tabla simple (MS Paint nunca me decepciona) que describe dónde se encuentran determinadas partes dentro del robot.

La imagen está diseñada para que pueda acercar y ver en resolución completa y leer el texto.

Paso 6: dirección para el Pi

El Arduino habla con el Pi según el plan. Y el Pi habla con la computadora, entonces, ¿cómo funciona todo esto?

Veamos nuestra secuencia de inicio de conexión:

  1. Arranca Raspberry Pi
  2. Arduino comienza
  3. Raspberry Pi inicia el cliente TCP. Dispara su dirección IP a través de un LED.
  4. Raspberry Pi inicia el servicio de comunicaciones en serie y se conecta a Arduino

Por lo tanto, hemos establecido algún tipo de comunicación:

Computadora Raspberry Pi Arduino

He usado Visual Basic. NET (Microsoft Visual Studio 2013 Community) para escribir el programa que habla con Raspberry Pi y Python para escribir el protocolo Arduino / Raspberry Pi.

Todo lo que necesita hacer para conocer la dirección IP de su Pi es conectarla a una pantalla HDMI, iniciar sesión en el Shell y escribir el comando:

nombre de host -I

Paso 7: el plan

Ahora que tenemos la dirección IP de Pi, ingresaremos por SSH (SSH es Secure Shell; nos conectamos de forma remota al shell de Linux) y escribimos un archivo que muestra la dirección IP del servidor. El Pi, en el inicio, también lo hará y escribirá el puerto que está escuchando. Aquí solo daré algunos ejemplos del código, pero está disponible para descargar desde este paso y desde la rama de GitHub que he creado. Detalles sobre eso más tarde.

Funciona así:

  1. Se inicia RPi.
  2. RPi inicia el programa Tcp en su IP local y un puerto designado.
  3. RPI comienza a transmitir video
  4. RPI se apaga.

Paso 8: Actuación física

Ahora, estamos listos para comenzar a construir físicamente todo. Si no ha leído el paso 1 (texto de advertencia y licencia), hágalo antes de continuar. No soy responsable de ningún daño causado. Y en caso de duda, este robot no debe utilizarse con fines militares a menos que sea un apocalipsis zombi. E incluso entonces use el sentido común.

Se sugiere que lea las instrucciones para escuchar en la Lista de lectura.

Descargue el esquema de conexión del paso "Conexiones".

MOTORES

Los motores que ha comprado probablemente se vean así, y está bien si no es así: si solo tienen dos cables (negro y rojo en la mayoría de los casos), debería funcionar. Busque su hoja de datos en línea para ver su voltaje y corriente de funcionamiento. No dude en hacer preguntas en la sección de comentarios. Siempre los leo.

PUENTE H

Nunca antes había trabajado con un H-Bridge. Busqué un poco en Google y encontré un buen instructivo que explica los principios de un HB. También puede mirar allí (consulte el paso Lista de lectura) y enganchar el suyo también. No explicaré mucho. Puedes leer allí y saber todo lo que debes sobre este circuito.

DIRIGIÓ

Esta pequeña bombilla puede funcionar con voltaje lógico solo porque casi no requiere corriente y un voltaje de 3V-5V 4mA-18mA. Opcional.

ARDUINO

Arduino recibirá señales y comandos a través de una conexión en serie desde Raspberry Pi. Usamos Arduino para controlar nuestros motores porque Raspberry Pi no puede generar valores analógicos a través del GPIO.

Paso 9: inicio automático de Raspberry Pi

Cada vez que encienda Raspberry Pi, deberá escribir el nombre de usuario y la contraseña. No queremos hacer eso porque a veces simplemente no podemos conectar un teclado al Pi, por lo que seguiremos estos pasos de este tutorial para iniciar automáticamente el programa que prepara el Pi. Si se pega en un bucle, siempre podemos Ctrl + C para interrumpirlo.

  • sudo crontab -e
  • Y luego ingresaremos el comando que agrega ese archivo al inicio automático en el administrador cron.

Llamaremos al archivo pibot.sh que dará comandos para iniciar todo tipo de scripts de Python para operar el robot. Repasemos esto: (Sudo con programas de Python de cortina para permitir que el programa acceda al GPIO)

rasposo -o - -t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv stream: /// dev / stdin --sout '#rtp {sdp = rtsp: //: 8554}': demux = h264

El código que hace todo el trabajo del lado del pi se llamará upon_startup.sh.

Es un script de shell simple que lo ejecuta todo.

Paso 10: Houeston, hemos tenido un problema … Los motores de CC no son del mismo modelo

Ya probé el H-Bridge y funciona bien, pero cuando engancho los motores que obtuve de la plataforma del robot que pedí en línea, esos dos motores giran a diferentes velocidades y hacen diferentes ruidos. Cambié el acelerador al 100% en los motores. Ambos no podían correr a su máxima capacidad.

Parece que estos son dos motores diferentes. Uno tiene un par de torsión más grande, lo que es excelente para este tipo de robot, pero el otro simplemente no movería el robot. Entonces gira en círculos.

En este punto, lo que tengo es que el programa serial en el Arduino funciona totalmente bien, pero el servidor Tcp en la PC y el Cliente Tcp en el Pi aún no están codificados. En Necesito completar esta entrada para la competencia. ¿Qué debo hacer?

  1. Primero, triplico el voltaje de los motores. La hoja de datos decía que 3V, 6V no los movió. Entonces son 9V. Conecté teo baterías en paralelo para duplicar la corriente y el voltaje sigue siendo el mismo.
  2. ¿Tengo otros motores que encajen en el soporte de la plataforma? Quizás pueda ver si son modelos similares.
  3. Puedo reemplazar a Servos si el chocolate realmente golpea el ventilador.

Comenzó la escuela. Tendré que ver qué hacer.

Nota: ¿Por qué diablos escribo aquí los problemas que encuentro? Entonces, si tiene menos experiencia y también tiene los mismos problemas, sabrá qué hacer.

La solución:

Así que hice otra prueba. He adaptado la diferencia de velocidad en el código Arduino.

NOTA: ¡los motores pueden girar a diferentes velocidades para usted! Cambie los valores en el boceto de Arduino.

Paso 11: [TCP]: ¿Por qué Tcp y no Secure Shell? ¿Qué es TCP?

Tengo dos explicaciones de por qué usar Tcp y no SSH para el P. C. - Comunicación Pi.

  1. En primer lugar, SSH (Secure Shell, ver Explicaciones) está destinado a ejecutar comandos desde una computadora remota. Hacer que el Pi responda con la información que queremos es más difícil porque nuestra única opción para analizar los datos es a través de un procesamiento de cadenas tedioso y difícil.
  2. En segundo lugar, ya sabemos cómo utilizar SSH y queremos aprender más formas de comunicación entre dispositivos en este tutorial.

TCP, o Transmission Control Protocol, es un protocolo central de Internet Protocol Suite. Se originó en la implementación inicial de la red en la que complementaba el Protocolo de Internet (IP). Por lo tanto, la suite completa se conoce comúnmente como TCP / IP. TCP proporciona una entrega confiable, ordenada y con verificación de errores de un flujo de octetos entre aplicaciones que se ejecutan en hosts que se comunican a través de una red IP.

(De Wikipedia)

Entonces los pros de TCP son:

  • Seguro
  • Rápido
  • Funciona en cualquier lugar de una red
  • Proporciona métodos para verificar la transmisión de datos correcta.
  • Control de flujo: tiene protección en caso de que el remitente de datos envíe datos demasiado rápido para que el cliente los registre y procese.

Y los contras son:

  • En TCP no se puede transmitir (enviar datos a todos los dispositivos en una red) y multidifusión (lo mismo pero un poco diferente, da la capacidad de que cada dispositivo transmita como un servidor).
  • Errores en las bibliotecas de su programa y sistema operativo (que administran por sí mismos la comunicación TCP, su enrutador no hace casi nada excepto conectar los dos [o más] dispositivos)

¿Por qué no utilizar UDP? Bueno, a diferencia de TCP, UDP no se asegura de que su cliente obtenga los datos antes de enviar más. Como enviar un correo electrónico y no saber si el cliente lo recibe. Además, UDP es menos seguro. Para obtener más información, lea esta publicación de Stack Exchange Super User

Este artículo es bueno y recomendado.

Paso 12: [TCP]: ¡Hagamos un cliente

El cliente (Raspberry Pi en nuestro caso), que recibe los datos del servidor (Nuestro PC en nuestro caso) obtendrá datos para enviar al Pi (comandos seriales que se realizarán en el Arduino) y los recibirá de vuelta (Lecturas del sensor) y retroalimentación directamente del Arduino El esquema adjunto muestra la relación entre los tres.

El artículo de Python Wiki TcpCommunication muestra que es muy sencillo realizar dicha comunicación con unas pocas líneas de código utilizando el módulo de socket incorporado. Tendremos un programa en la PC y otro programa en la Pi.

Trabajaremos con interrupciones. Obtenga más información sobre ellos en el paso Explicaciones. Lea allí también sobre búferes. Ahora, podemos leer los datos que tenemos usando data = s.recv (BUFFER_SIZE) pero será la cantidad de caracteres que hemos definido con bocados vacíos. ¿Podemos usar interrupciones? Otra pregunta: ¿el búfer estará vacío o esperará a que el servidor envíe más datos, en cuyo caso el servidor / cliente lanzará una excepción de tiempo de espera?

Abordemos eso uno a la vez. Antes de hacerlo, busqué este artículo de Wikipedia que enumera los puertos TCP y UDP usados. Después de un vistazo rápido, he decidido que este proyecto se comunicará en el puerto 12298 porque no es utilizado por el sistema operativo y los servicios locales.

Paso 13: Pruebe nuestras comunicaciones Tcp

Para ver si podemos usar interrupciones, creemos un cliente y un servidor simples usando la línea de comandos de Python. Lo haré en los siguientes pasos:

  1. Inicie un programa que envíe un texto a través de Tcp en un bucle a través de un puerto de cortina
  2. Inicie otro programa (en paralelo) que lea todo el texto en un bucle y lo imprima en la pantalla.

Solo se mostrarán segmentos del programa. Todos los programas se ejecutan con Python 3. Todo lo que hacen estos programas es enviar el comando en serie desde el teclado del usuario de la PC al Arduino a través del Pi.

  • SBcontrolPC.py: para ejecutar en la PC. Inicia una conexión TCP en la dirección local y en el puerto especificado (yo uso el puerto 12298, vea el paso anterior por qué)
  • SBcontrolPi.py: para ejecutar en el Pi. Lee su búfer cada medio segundo (0,5 segundos). Inicia un script de shell que administra cosas como la transmisión de video, etc.

Recomendado: