O objetivo deste tutorial é explicar como conectar um controlador PS3 a um ESP32, usando o núcleo do Arduino e esta biblioteca. Os testes deste tutorial foram feitos usando o módulo ESP32 do DFRobot integrado a uma placa de desenvolvimento do ESP32 .
Introdução
O objetivo deste tutorial é explicar como conectar um controlador PS3 a um ESP32, usando o núcleo do Arduino e esta biblioteca. A conexão entre os dispositivos será estabelecida usando o protocolo Bluetooth.
Se você está procurando um tutorial semelhante, mas usando um controle PS4, acesse aqui .
Para obter instruções sobre como instalar a biblioteca, verifique aqui . Resumindo, a biblioteca está disponÃvel para instalação no Arduino Library Manager, pesquisando por "PS3 Controller Host" [1].
Antes de começarmos, é importante entender que um controlador emparelhado com um console PS3 possui o endereço MAC Bluetooth do console armazenado. Consequentemente, este é o único dispositivo ao qual o controlador se conectará [1].
Portanto, para poder conectar o controlador ao ESP32, precisamos descobrir qual é o endereço armazenado no controlador [1]. Para isso, podemos usar essa ferramenta (chamada SixaxisPairTool ), que permite encontrar o endereço armazenado no controlador e também alterá-lo.
Em seguida, podemos optar por usar o endereço já armazenado no controlador (a biblioteca permite usar um endereço personalizado) ou alterar o endereço armazenado para o do ESP32. No meu caso, eu escolhi usar o endereço já armazenado no controlador.
Para um tutorial detalhado sobre como usar o SixaxisPairTool , consulte a seção " Preparando o controlador " deste tutorial anterior . Esse tutorial explica como conectar um controlador PS4 ao ESP32, que precisa da mesma etapa para descobrir o endereço Bluetooth armazenado no controlador. O SixaxisPairTool funciona exatamente da mesma forma para os controladores PS3 e PS4.
Os testes deste tutorial foram feitos usando o módulo ESP32 do DFRobot integrado a uma placa de desenvolvimento do ESP32 .
O código
Começaremos incluindo a biblioteca instalada. Isso disponibilizará uma variável externa da classe Ps3Controller . Essa variável externa é chamada de Ps3 .
#include
Depois disso, iremos para a configuração do Arduino, onde começaremos abrindo uma conexão serial.
Serial.begin(115200);
Então, vamos chamar o método begin em nossa variável externa Ps3 . Como entrada desse método, precisamos passar o endereço Bluetooth armazenado no controlador como uma string.
O MAC precisa seguir a representação padrão: cada byte em hexadecimal, separado por dois pontos, como no exemplo abaixo:
"00:11:22:33:ff:ee"
Essa chamada de método retorna um valor booleano indicando que o procedimento foi bem-sucedido ou não. Por simplicidade, não faremos nenhum tratamento de erros, mas, em um cenário real de aplicativo, você deve fazê-lo.
Leve em consideração que essa chamada de método não conecta o ESP32 ao controlador. Em vez disso, é responsável por inicializar a camada Bluetooth do ESP32 e configurar os serviços para estar pronto para ouvir uma conexão do controlador PS3 de entrada.
Ps3.begin("YourDeviceAddress");
Após esse ponto, o ESP32 deve estar pronto para aceitar a conexão de um controlador. A configuração completa do Arduino pode ser vista abaixo,
void setup()
{
Serial.begin(115200);
Ps3.begin("YourDeviceAddress");
Serial.println("Initialization finished.");
}
Escreveremos o restante do código no loop principal do Arduino. Periodicamente, verificaremos se um controlador está conectado, chamando o método isConnected em nossa variável externa Ps3 .
Este método não aceita argumentos e retorna um valor booleano indicando se um controlador está conectado (verdadeiro) ou não (falso).
if (Ps3.isConnected()){
Serial.println("Controller connected!");
}
Observe que estamos seguindo esta abordagem de pesquisa mais simples neste tutorial introdutório, mas a biblioteca suporta o registro de um retorno de chamada para notificar quando uma conexão é recebida (o método a ser usado para registrar o retorno de chamada é chamado attachOnConnect ).
O loop completo pode ser visto abaixo. Adicionamos um pequeno atraso de 1 segundo para não estarmos pesquisando constantemente.
void loop()
{
if (Ps3.isConnected()){
Serial.println("Controller connected!");
}
delay(1000);
}
O código final pode ser visto abaixo.
#include
void setup()
{
Serial.begin(115200);
Ps3.begin("YourDeviceAddress");
Serial.println("Initialization finished.");
}
void loop()
{
if (Ps3.isConnected()){
Serial.println("Controller connected!");
}
delay(1000);
}
Testando o código
Para testar o código, basta compilá-lo e enviá-lo para o seu dispositivo. Após a conclusão do procedimento, abra o monitor serial do Arduino IDE. Você deverá ver a mensagem "Inicialização concluÃda", indicando que a inicialização foi concluÃda.
Depois disso, ligue o controlador PS3 clicando no botão PS. Você deve obter um "Controlador conectado!" mensagem impressa periodicamente no monitor, como mostra a figura 1.