ESP32: conectando um controlador PS3

Eletrônica

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.

Fonte
https://techtutorialsx.com/2020/02/16/esp32-connecting-a-ps3-controller/
Mais Dicas