- Instalación de los paquetes necesarios para la comunicación Bluetooth:
- Emparejamiento de dispositivos con Raspberry Pi a través de Bluetooth:
- Selección del coche de juguete:
- Diagrama de circuito y explicación:
- Controlar el coche de forma remota con la aplicación de Android BlueTerm:
- Programación Python:
Raspberry Pi es muy popular para proyectos de IoT debido a su perfecta capacidad de comunicación inalámbrica a través de Internet. Raspberry Pi 3 tiene Wi-Fi y Bluetooth incorporados, y Bluetooth es un protocolo de comunicación inalámbrica muy popular. Hoy vamos a construir un Auto a Control Remoto usando Raspberry Pi 3 y Bluetooth, aquí usaremos Smart Phone como control remoto para controlar el auto. Hemos construido previamente este coche RC utilizando Arduino.
Aquí estamos usando Raspberry Pi 3 que tiene Bluetooth incorporado, por lo que no necesitamos usar ningún dispositivo USB Bluetooth externo. Aquí estamos usando el protocolo RFCOMM Bluetooth para la comunicación inalámbrica.
La programación para Bluetooth en Python sigue el modelo de programación de socket y las comunicaciones entre los dispositivos Bluetooth se realizan a través del socket RFCOMM. RFCOMM (comunicación por radiofrecuencia) es un protocolo Bluetooth que proporciona puertos serie RS-232 emulados y también se denomina emulación de puerto serie. El perfil del puerto serie Bluetooth se basa en este protocolo. RFCOMM es muy popular en aplicaciones Bluetooth debido a su amplio soporte y API disponible públicamente. Está vinculado al protocolo L2CAP.
Si tiene Raspberry Pi 2, entonces necesita usar un dongle Bluetooth externo o el módulo Bluetooth HC-06. Consulte nuestros proyectos anteriores para el uso de estos dispositivos Bluetooth externos: Control de Raspberry Pi GPIO mediante la aplicación de Android a través de Bluetooth y electrodomésticos controlados por Raspberry Pi.
Instalación de los paquetes necesarios para la comunicación Bluetooth:
Antes de comenzar, necesitamos instalar algún software para configurar la comunicación Bluetooth en Raspberry Pi. Debería tener una tarjeta de memoria instalada Raspbian Jessie lista con Raspberry Pi. Consulte este artículo para instalar el sistema operativo Raspbian y comenzar con Raspberry Pi. Así que ahora primero necesitamos actualizar Raspbian usando los siguientes comandos:
sudo apt-get update sudo apt-get upgrade
Entonces necesitamos instalar algunos paquetes relacionados con Bluetooth:
sudo apt-get instalar bluetooth blueman bluez
Luego reinicia la Raspberry Pi:
sudo reiniciar
BlueZ es un proyecto de código abierto y una pila oficial de protocolos Bluetooth de Linux. Es compatible con todos los protocolos básicos de Bluetooth y ahora se convierte en parte del kernel oficial de Linux.
Blueman proporciona la interfaz de escritorio para administrar y controlar los dispositivos Bluetooth.
Finalmente, necesitamos Python Library para la comunicación Bluetooth para que podamos enviar y recibir datos a través de RFCOMM usando el lenguaje Python:
sudo apt-get install python-bluetooth
También instale las bibliotecas de soporte GPIO para Raspberry Pi:
sudo apt-get install python-rpi.gpio
Ahora hemos terminado con la instalación de los paquetes necesarios para la comunicación Bluetooth en Raspberry Pi.
Emparejamiento de dispositivos con Raspberry Pi a través de Bluetooth:
Emparejar dispositivos Bluetooth, como teléfonos móviles, con Raspberry Pi es muy fácil. Aquí hemos emparejado nuestro teléfono inteligente Android con Raspberry Pi. Ya hemos instalado BlueZ en Pi, que proporciona una utilidad de línea de comandos llamada "bluetoothctl" para administrar nuestros dispositivos Bluetooth.
Ahora abra la utilidad bluetoothctl con el siguiente comando:
sudo bluetoothctl
Puede comprobar todos los comandos de la utilidad bluetoothctl escribiendo "ayuda" . Por ahora, debemos ingresar los siguientes comandos en el orden dado:
# encendido # agente en # detectable en # emparejable en # escanear en
Después del último comando "escanear", verá su dispositivo Bluetooth (teléfono móvil) en la lista. Asegúrese de que su móvil tenga Bluetooth activado y sea visible para los dispositivos cercanos. Luego copie la dirección MAC de su dispositivo y vincúlelo usando el comando dado:
par
Luego, se le pedirá el código de acceso o el PIN en la consola de su terminal, luego escriba el código de acceso allí y presione enter. Luego, escriba el mismo código de acceso en su teléfono móvil cuando se le solicite y ahora estará emparejado con éxito con Raspberry Pi. También hemos explicado todo este proceso en el Video dado en el Tutorial de control GPIO anterior. Aquí está el enlace directo de YouTube.
Como se dijo anteriormente, también puede usar la interfaz de escritorio para emparejar el teléfono móvil. Después de instalar Blueman, verá un icono de Bluetooth en el lado derecho de su escritorio Raspberry Pi como se muestra a continuación, con el cual puede hacer el emparejamiento fácilmente.
Selección del coche de juguete:
En este proyecto de coche controlado de Raspberry Pi, hemos utilizado un coche de juguete para la demostración. Aquí hemos seleccionado un coche de juguete RF con función de dirección de izquierda a derecha. Después de comprar este coche hemos sustituido su circuito de RF por nuestro circuito Raspberry. Este automóvil tiene dos motores de CC, uno para girar dos ruedas delanteras y otro para girar dos ruedas traseras. El motor del lado delantero se usa para dar dirección al automóvil, significa girar hacia la izquierda o hacia la derecha (como la función de dirección de un automóvil real). Y el motor del lado trasero se utiliza para conducir el automóvil en dirección hacia adelante y hacia atrás. Un Bluetooth de Raspberry se usa para recibir comandos de forma inalámbrica desde un teléfono Android para controlar el automóvil.
Puede utilizar cualquier coche de juguete que tenga dos motores de CC para girar las ruedas delanteras y traseras.
Diagrama de circuito y explicación:
En este coche a control remoto, solo necesitamos conectar Raspberry Pi con dos motores usando el módulo L293D. Para alimentar la Raspberry Pi y el automóvil, hemos utilizado un banco de energía móvil. El banco de energía móvil es suficiente para alimentar la Raspberry Pi y los motores del automóvil, pero cuando colocamos el banco de energía sobre el automóvil, debido al gran peso del banco de energía móvil, el automóvil no podría moverse correctamente. Por lo tanto, recomendamos utilizar la fuente de alimentación de bajo peso o baterías de litio para alimentar el sistema. Todas las conexiones se muestran en el diagrama de circuito a continuación. Consulte también nuestra sección de Robótica para obtener más información sobre el control de motores con diferentes tecnologías.
Nota: no pongas más de 5v en la frambuesa pi.
Este circuito se ha realizado en Perf Board para este proyecto, por lo que hay menos peso en el coche.
Controlar el coche de forma remota con la aplicación de Android BlueTerm:
Ahora, después de configurar todas las cosas e intentar emparejar con éxito el teléfono inteligente a través de bluetooth, necesitamos instalar una aplicación de Android para comunicarnos con Raspberry Pi usando un adaptador serie Bluetooth, para que podamos controlar los pines GPIO de Raspberry Pi. Como se dijo anteriormente, el protocolo RFCOMM / SPP emula la comunicación en serie a través de Bluetooth, por lo que instalamos aquí la aplicación BlueTerm que admite este protocolo.
También puede utilizar cualquier otra aplicación de terminal Bluetooth que admita la comunicación a través de la toma RFCOMM.
Ahora, después de descargar e instalar la aplicación BlueTerm, ejecute el programa Python que se indica a continuación desde el terminal y conecte el dispositivo raspberrypi emparejado desde la aplicación BlueTerm al mismo tiempo.
Después de una conexión exitosa, verá conectado: raspberrypi en la esquina superior derecha de la aplicación como se muestra a continuación:
Ahora puede ingresar los siguientes comandos desde la aplicación BlueTerm para hacer que el automóvil se mueva en la dirección deseada. Presione 'q' para salir del programa. Puede usar el teclado de escritura por voz de Google para controlar este automóvil con su voz. Consulta la demostración completa en el vídeo que se incluye al final.
Comandos:
F - Movimiento hacia adelante
B - Movimiento hacia atrás
S - Detener
L - Movimiento hacia adelante a la izquierda
R - Movimiento hacia adelante a la derecha
A - Movimiento hacia atrás a la izquierda
P - Movimiento hacia atrás a la derecha
Q - Salir
Programación Python:
El programa Python para controlar Raspberry Pi GPIO con la aplicación de Android es muy simple y se explica por sí mismo. Solo necesitamos aprender un poco sobre el código relacionado con la comunicación Bluetooth RFCOMM. De lo contrario, es lo mismo que controlar cualquier robot o automóvil haciendo que el pin del motor sea alto o bajo. El programa completo se proporciona a continuación en la sección Código.
Primero, necesitamos importar la biblioteca de conectores Bluetooth que nos permite controlar Bluetooth con lenguaje Python; hemos instalado la biblioteca para el mismo en la sección anterior.
importar Bluetooth
Luego incluimos algunos archivos de encabezado más y definimos los pines para los motores y los colocamos en el valor predeterminado bajo.
importar bluetooth importar tiempo importar RPi.GPIO como GPIO m11 = 18 m12 = 23 m21 = 24 m22 = 25 GPIO.setwarnings (Falso) GPIO.setmode (GPIO.BCM) GPIO.setup (m11, GPIO.OUT) GPIO.setup (m12, GPIO.OUT) GPIO.setup (m21, GPIO.OUT) GPIO.setup (m22, GPIO.OUT) GPIO.output (m11, 0) GPIO.output (m12, 0) GPIO.output (m21, 0) Salida GPIO (m22, 0)
A continuación se muestra el código responsable de la comunicación Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) puerto = 1 server_socket.bind (("", puerto)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Conexión aceptada desde", dirección
Aquí podemos entenderlos línea por línea:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Creación de un conector para la comunicación Bluetooth RFCOMM.
server_socket.bind (("", puerto): - El servidor enlaza el script en el host '' al puerto.
server_socket.listen (1): el servidor escucha para aceptar una conexión a la vez.
client_socket, address = server_socket.accept (): el servidor acepta la solicitud de conexión del cliente y asigna la dirección mac a la dirección variable, client_socket es el socket del cliente
Luego de esto hemos creado algunas funciones que se encargan de mover el carro en la dirección deseada: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Estas funciones se llamarán respectivamente cuando presionemos L, R, F, A, P, B, S desde la aplicación Mobile blueTerm y el automóvil se moverá en consecuencia.
data = "" while 1: data = client_socket.recv (1024) print "Received:% s"% data if (data == "F"): forward () elif (data == "L"): left_side_forward () elif (data == "R"): right_side_forward () elif (data == "B"): reverse () elif (data == "A"): left_side_reverse () elif (data == "P"): right_side_reverse () elif data == "S": stop () elif (data == "Q"): print ("Salir") break client_socket.close () server_socket.close ()
data = client_socket.recv (1024): Reciba datos a través del socket del cliente client_socket y asígnelos a los datos variables. Se puede recibir un máximo de 1024 caracteres a la vez.
Finalmente, después de toda la programación, cierre la conexión del cliente y el servidor usando el siguiente código:
client_socket.close () server_socket.close ()