- Instalando pacotes necessários para comunicação Bluetooth:
- Dispositivos de emparelhamento com Raspberry Pi via Bluetooth:
- Selecionando o carro de brinquedo:
- Diagrama de circuito e explicação:
- Controlando o carro remotamente com Android App BlueTerm:
- Programação Python:
Raspberry Pi é muito popular para projetos de IoT devido à sua capacidade contínua de comunicação sem fio pela Internet. Raspberry Pi 3 tem Wi-Fi e Bluetooth embutidos, e Bluetooth é um protocolo de comunicação sem fio muito popular. Hoje vamos construir um carro com controle remoto usando Raspberry Pi 3 e Bluetooth, aqui vamos usar o Smart Phone como um controle remoto para controlar o carro. Anteriormente, criamos este carro RC usando o Arduino.
Aqui, estamos usando o Raspberry Pi 3, que tem Bluetooth embutido, portanto, não precisamos usar nenhum dongle USB Bluetooth externo. Aqui, estamos usando o protocolo RFCOMM Bluetooth para comunicação sem fio.
A programação para Bluetooth em Python segue o modelo de programação de soquete e a comunicação entre os dispositivos Bluetooth é feita através do soquete RFCOMM. RFCOMM (Radio Frequency Communication) é um protocolo Bluetooth que fornece portas seriais RS-232 emuladas e também chamado de Emulação de Porta Serial. O perfil da porta serial Bluetooth é baseado neste protocolo. O RFCOMM é muito popular em aplicativos Bluetooth devido ao seu amplo suporte e API disponível publicamente. Ele está vinculado ao protocolo L2CAP.
Se você tiver o Raspberry Pi 2, precisará usar um dongle Bluetooth externo ou um módulo Bluetooth HC-06. Verifique nossos projetos anteriores para usar esses dispositivos Bluetooth externos: Controlando o Raspberry Pi GPIO usando o aplicativo Android sobre Bluetooth e aparelhos domésticos controlados pelo Raspberry Pi.
Instalando pacotes necessários para comunicação Bluetooth:
Antes de começar, precisamos instalar algum software para configurar a comunicação Bluetooth no Raspberry Pi. Você deve ter um cartão de memória Raspbian Jessie instalado pronto com Raspberry Pi. Consulte este artigo para instalar o Raspbian OS e começar a usar o Raspberry Pi. Portanto, agora primeiro precisamos atualizar o Raspbian usando os comandos abaixo:
sudo apt-get update sudo apt-get upgrade
Então, precisamos instalar alguns pacotes relacionados ao Bluetooth:
sudo apt-get install bluetooth blueman bluez
Em seguida, reinicie o Raspberry Pi:
sudo reboot
BlueZ é um projeto de código aberto e pilha de protocolo Bluetooth oficial do Linux. Ele suporta todos os principais protocolos Bluetooth e agora se torna parte do kernel Linux oficial.
Blueman fornece a interface Desktop para gerenciar e controlar os dispositivos Bluetooth.
Finalmente, precisamos da biblioteca python para comunicação Bluetooth para que possamos enviar e receber dados por meio de RFCOMM usando a linguagem Python:
sudo apt-get install python-bluetooth
Instale também as bibliotecas de suporte GPIO para Raspberry Pi:
sudo apt-get install python-rpi.gpio
Agora, concluímos a instalação dos pacotes necessários para comunicação Bluetooth no Raspberry Pi.
Dispositivos de emparelhamento com Raspberry Pi via Bluetooth:
Emparelhar dispositivos Bluetooth, como um telefone celular, com o Raspberry Pi é muito fácil. Aqui, emparelhamos nosso smartphone Android com Raspberry Pi. Instalamos anteriormente o BlueZ in Pi, que fornece um utilitário de linha de comando chamado “bluetoothctl” para gerenciar nossos dispositivos Bluetooth.
Agora abra o utilitário bluetoothctl pelo comando abaixo:
sudo bluetoothctl
Você pode verificar todos os comandos do utilitário bluetoothctl digitando 'ajuda' . Por enquanto, precisamos inserir os comandos abaixo na ordem determinada:
# power on # agent on # detectable on # pairable on # scan on
Após o último comando “scan on”, você verá seu dispositivo Bluetooth (celular) na lista. Certifique-se de que seu celular esteja com o Bluetooth ligado e visível para dispositivos próximos. Em seguida, copie o endereço MAC do seu dispositivo e emparelhe-o usando o comando fornecido:
par
Em seguida, será solicitada a senha ou PIN no console do terminal e, em seguida, digite a senha e pressione Enter. Em seguida, digite a mesma senha no seu telefone celular quando solicitado e agora você está emparelhado com o Raspberry Pi. Também explicamos todo esse processo no vídeo fornecido no tutorial de controle GPIO anterior. Aqui está o link direto do YouTube.
Como dito anteriormente, você também pode usar a interface Desktop para emparelhar o telefone móvel. Depois de instalar o Blueman, você verá um ícone de Bluetooth no lado direito da área de trabalho do Raspberry Pi, conforme mostrado abaixo, com o qual você pode fazer o emparelhamento facilmente.
Selecionando o carro de brinquedo:
Neste projeto de carro controlado do Raspberry Pi, usamos um carro de brinquedo para demonstração. Aqui, selecionamos um carrinho de brinquedo RF com recurso de direção para a esquerda para a direita. Depois de comprar este carro, substituímos seu circuito RF pelo nosso circuito Raspberry. Este carro tem dois motores DC, um para girar duas rodas dianteiras e outro para girar duas rodas traseiras. O motor do lado frontal é usado para dar direção ao carro, significa virar para a esquerda ou direita (como o recurso de direção de um carro real). E o motor lateral traseiro é usado para dirigir o carro para frente e para trás. Um Bluetooth do Raspberry é usado para receber comandos sem fio do telefone Android para controlar o carro.
Você pode usar qualquer carro de brinquedo que tenha dois motores DC para girar as rodas dianteiras e traseiras.
Diagrama de circuito e explicação:
Neste carro com controle remoto, só precisamos conectar o Raspberry Pi a dois motores usando o módulo L293D. Para alimentar o Raspberry Pi e o carro, usamos um banco de energia móvel. O banco de energia móvel é suficiente para alimentar o Raspberry Pi e os motores do carro, mas quando colocamos o banco de energia sobre o carro, devido ao peso do banco de energia móvel, o carro não seria capaz de se mover corretamente. Portanto, recomendamos o uso de fonte de alimentação de baixo peso ou baterias de lítio para alimentar o sistema. Todas as conexões são mostradas no diagrama de circuito abaixo. Verifique também nossa seção de Robótica para aprender mais sobre como controlar motores com diferentes tecnologias.
Nota: não coloque mais do que 5v no pi de framboesa.
Este circuito foi feito em Perf Board para este projeto, para que haja menos peso no carro.
Controlando o carro remotamente com Android App BlueTerm:
Agora, depois de configurar todas as coisas e tentar emparelhar o smartphone com bluetooth com sucesso, precisamos instalar um aplicativo Android para comunicação com o Raspberry Pi usando um adaptador serial Bluetooth, para que possamos controlar os pinos GPIO do Raspberry Pi. Como dito anteriormente, o protocolo RFCOMM / SPP emula a comunicação serial por Bluetooth, então instalamos aqui o aplicativo BlueTerm que suporta este protocolo.
Você também pode usar qualquer outro aplicativo de terminal Bluetooth que ofereça suporte à comunicação por meio do soquete RFCOMM.
Agora, depois de baixar e instalar o aplicativo BlueTerm, execute o programa Python fornecido abaixo a partir do terminal e conecte o dispositivo raspberrypi emparelhado do aplicativo BlueTerm ao mesmo tempo.
Após a conexão bem-sucedida, você verá conectado: raspberrypi no canto superior direito do aplicativo, conforme mostrado abaixo:
Agora você pode apenas inserir os seguintes comandos do aplicativo BlueTerm para fazer o carro se mover na direção desejada. Pressione 'q' para sair do programa. Você pode usar o teclado de digitação Google Voice para controlar este carro usando sua voz. Confira a demonstração completa no Vídeo fornecido no final.
Comandos:
F - Movimento para frente
B - Movimento para trás
S - Pare
L - Avançar para a esquerda
R - Movimento para a direita para a frente
A - Movimento para trás à esquerda
P - Movimento para trás à direita
Q - Sair
Programação Python:
O programa Python para controlar Raspberry Pi GPIO com o aplicativo Android é muito simples e autoexplicativo. Apenas precisamos aprender um pouco sobre o código relacionado à comunicação RFCOMM do Bluetooth. Caso contrário, é o mesmo que controlar qualquer robô ou carro tornando o pino do motor alto ou baixo. O programa completo é fornecido abaixo na seção Código.
Primeiro, precisamos importar a biblioteca de soquetes Bluetooth, que nos permite controlar o Bluetooth com a linguagem Python; instalamos a biblioteca para o mesmo na seção anterior.
importar Bluetooth
Em seguida, incluímos mais alguns arquivos de cabeçalho e definimos pinos para motores, colocando-os como padrão baixo.
importar o tempo de importação do bluetooth importar RPi.GPIO como GPIO m11 = 18 m12 = 23 m21 = 24 m22 = 25 GPIO.setwarnings (False) 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) GPIO.output (m22, 0)
Abaixo está o código responsável pela comunicação Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Conexão aceita de", endereço
Aqui podemos entendê-los linha por linha:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Criando soquete para comunicação RFCOMM Bluetooth.
server_socket.bind (("", porta): - O servidor vincula o script no host '' à porta.
server_socket.listen (1): o servidor escuta para aceitar uma conexão por vez.
client_socket, address = server_socket.accept (): O servidor aceita a solicitação de conexão do cliente e atribui o endereço mac ao endereço da variável, client_socket é o soquete do cliente
Depois disso, criamos algumas funções que são responsáveis por mover o carro na direção desejada: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop () Essas funções serão chamadas respectivamente quando pressionamos L, R, F, A, P, B, S no aplicativo Mobile blueTerm e o carro se moverá de acordo.
data = "" while 1: data = client_socket.recv (1024) print "Recebido:% 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 ("Quit") break client_socket.close () server_socket.close ()
data = client_socket.recv (1024): Recebe dados através do socket do cliente client_socket e atribui-os aos dados variáveis. No máximo 1024 caracteres podem ser recebidos por vez.
Finalmente, após toda a programação, feche a conexão cliente e servidor usando o código abaixo:
client_socket.close () server_socket.close ()