Robô IoT com Raspberry Pi Pico Deixe um comentário

No dia 4 de maio (May the Fourth – May the force be with you) é comemorado o dia do Star Wars e, por isso, a FilipeFlop preparou uma BlueBox relacionada a esse tema. Você sabia que o Luke construía robôs quando era jovem? Agora imagine que o BLU9, nome do robô da BlueBox nº 9, é um projeto inacabado que o Luke esqueceu em seu laboratório e que agora você tem a responsabilidade de dar vida a essa máquina! Para isso, você terá apenas os componentes que estão dentro da caixinha azul que recebeu em sua casa e alguns outros materiais que estão em seu laboratório.

https://youtu.be/i8DUmXZtFqI

A ideia é que o BLU9 possa se movimentar em todas as direções, tenha movimento na cabeça e possa emitir alguns sons. Lembrando que tudo isso deverá ser controlado pelo seu smartphone! Está preparado? Então, que a força esteja com você!

Materiais Necessários

Para montar o BLU9 você vai precisar dos seguintes componentes:

Além disso, você vai precisar de algumas ferramentas extras:

Robô IoT com Raspberry Pi Pico

Raspberry Pi Pico na Arduino IDE

Abra a IDE e vá em Arquivo > Preferências.

 

 

 Robô IoT com Raspberry Pi Pico

Nessa janela, apenas copie e cole o link abaixo na caixa “URLs Adicionais para Gerenciadores de Placas” e depois clique em OK.

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

 Robô IoT com Raspberry Pi Pico

Agora vá em Ferramentas > Gerenciador de Placas, procure por RP2040 e instale o pacote Raspberry Pi Pico/RP2040. Aguarde a instalação finalizar e clique em fechar.

Robô IoT com Raspberry Pi Pico

Robô IoT com Raspberry Pi Pico

Vá novamente em Ferramentas > Placa > Raspberry Pi RP2040 Boards e selecione Raspberry Pi Pico.

Robô IoT com Raspberry Pi Pico

Instalação das bibliotecas

Vá em Ferramentas > Gerenciador de Bibliotecas, procure por Blynk e faça a instalação da biblioteca com esse nome.

Robô IoT com Raspberry Pi Pico

Robô IoT com Raspberry Pi Pico

Outra biblioteca que vamos precisar é a BlynkESP8266, que você encontra no GitHub. Faça o download da biblioteca e depois, na IDE, vá em Sketch > Incluir biblioteca > Adicionar biblioteca ZIP e selecione a biblioteca recém baixada.

 Robô IoT com Raspberry Pi Pico

Plataforma Blynk

No smartphone, faça o download do aplicativo Blynk e crie uma conta. Ao finalizar, clique em New Project e dê um nome para o projeto. Em Choose Device, selecione Generic Board e em Connection Type escolha Wi-Fi. Clique em Create. Um token será enviado para seu email e você vai precisar dele para programar a Pico.

 Robô IoT com Raspberry Pi Pico

Para controlar nosso robô, vamos precisar criar alguns botões. Quatro deles vão servir para movimentar as rodas do robô, um para controlar a cabeça e outro para ativar o buzzer. Clique no botão de Adicionar e acrescente 5 botões. Clique novamente no botão de Adicionar e clique em Slider. Organize os botões na tela da maneira que você achar melhor.

 Robô IoT com Raspberry Pi Pico

Agora vamos configurar cada um deles. Clique no botão que movimenta o BLU9 para frente. Dê um nome para o botão e em Output selecione Virtual e depois V0. Faça o mesmo para os botões de direção, sendo que o botão da direita deve ser V1, para baixo V2 e esquerda V3.

 Robô IoT com Raspberry Pi Pico

Configure o botão que acionará o buzzer como V4. O slider deve ser configurado como V5 e em valores você deve colocar de 0 a 180. Você pode customizar os botões da maneira que quiser, use sua criatividade!

Robô IoT com Raspberry Pi Pico

Código

Copie e cole o código abaixo na Arduino IDE.

#define BLYNK_PRINT Serial
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <Servo.h>

char auth[] = "insira-aqui-o-token-enviado-para-seu-email";
char ssid[] = "insira-aqui-o-nome-da-rede-wifi";
char pass[] = "insira-aqui-a-senha-da-rede-wifi";

#define EspSerial Serial1
#define ESP8266_BAUD 115200
ESP8266 wifi(&EspSerial);

Servo servo;

#define MOTORA_1     2
#define MOTORA_2     3
#define MOTORB_1     4
#define MOTORB_2     5
#define SERVO        6
#define BUZZER       7
#define RED          8
#define GREEN        9
#define BLUE         10

void setup(){
  
  Serial.begin(115200);
  delay(5000);

  pinMode(MOTORA_1, OUTPUT);
  pinMode(MOTORA_2, OUTPUT);
  pinMode(MOTORB_1, OUTPUT);
  pinMode(MOTORB_2, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
  pinMode(RED, OUTPUT);
  
  digitalWrite(MOTORA_1, LOW);
  digitalWrite(MOTORA_2, LOW);
  digitalWrite(MOTORB_1, LOW);
  digitalWrite(MOTORB_2, LOW);
  
  digitalWrite(GREEN, LOW);
  digitalWrite(BLUE, HIGH);
  digitalWrite(RED, HIGH);

  //Prepara servo
  servo.attach(SERVO);
  servo.write(90);
  delay(2000);
  servo.write(0);
  delay(2000);
  servo.write(180);
  delay(2000);
  servo.write(90);
  
  EspSerial.setPinout(0,1);
  EspSerial.begin(ESP8266_BAUD);
  delay(10);

  Blynk.begin(auth, wifi, ssid, pass);

  //Pisca LED vermelho
  for (int i=0; i<5; i++){
    digitalWrite(RED,LOW);
    delay(1000);
    digitalWrite(RED,HIGH);
    delay(1000);
  }
  
  digitalWrite(GREEN, LOW);
  digitalWrite(BLUE, HIGH);
  digitalWrite(RED, HIGH);
}

void loop(){
  Blynk.run();
}

// FORWARD
BLYNK_WRITE(V0) {
  int button = param.asInt();
  if (button == 1) {
    digitalWrite(MOTORA_1,HIGH);
    digitalWrite(MOTORA_2,LOW);
    digitalWrite(MOTORB_1,LOW);
    digitalWrite(MOTORB_2,HIGH);
  }
  else {
    digitalWrite(RED,HIGH);
    digitalWrite(GREEN,LOW);
    digitalWrite(BLUE,HIGH);
    digitalWrite(MOTORA_1,LOW);
    digitalWrite(MOTORA_2,LOW);
    digitalWrite(MOTORB_1,LOW);
    digitalWrite(MOTORB_2,LOW);
  }
}

//RIGHT
BLYNK_WRITE(V1) {
  int button = param.asInt();
  if (button == 1) {
    digitalWrite(MOTORA_1,LOW);
    digitalWrite(MOTORA_2,HIGH);
    digitalWrite(MOTORB_1,LOW);
    digitalWrite(MOTORB_2,HIGH);
  }
  else {
    digitalWrite(RED,HIGH);
    digitalWrite(GREEN,LOW);
    digitalWrite(BLUE,HIGH);
    digitalWrite(MOTORA_1,LOW);
    digitalWrite(MOTORA_2,LOW);
    digitalWrite(MOTORB_1,LOW);
    digitalWrite(MOTORB_2,LOW);
  }
}

// BACKWARD
BLYNK_WRITE(V2) {
  int button = param.asInt();
  if (button == 1) {
    digitalWrite(MOTORA_1,LOW);
    digitalWrite(MOTORA_2,HIGH);
    digitalWrite(MOTORB_1,HIGH);
    digitalWrite(MOTORB_2,LOW);
  }
  else {
    digitalWrite(RED,HIGH);
    digitalWrite(GREEN,LOW);
    digitalWrite(BLUE,HIGH);
    digitalWrite(MOTORA_1,LOW);
    digitalWrite(MOTORA_2,LOW);
    digitalWrite(MOTORB_1,LOW);
    digitalWrite(MOTORB_2,LOW);
  }
}

// LEFT
BLYNK_WRITE(V3) {
  int button = param.asInt();
  if (button == 1) {
    digitalWrite(MOTORA_1,HIGH);
    digitalWrite(MOTORA_2,LOW);
    digitalWrite(MOTORB_1,HIGH);
    digitalWrite(MOTORB_2,LOW);
  }
  else {
    digitalWrite(RED,HIGH);
    digitalWrite(GREEN,LOW);
    digitalWrite(BLUE,HIGH);
    digitalWrite(MOTORA_1,LOW);
    digitalWrite(MOTORA_2,LOW);
    digitalWrite(MOTORB_1,LOW);
    digitalWrite(MOTORB_2,LOW);
  }
}

//BUZZER
BLYNK_WRITE(V4)
{ 
  int button = param.asInt();
  if (button == 1) {
    digitalWrite(BLUE,LOW);
    tone(BUZZER, 330);
    delay(100);
    noTone(BUZZER);
    delay(100);
    tone(BUZZER, 330);
    delay(100);
    noTone(BUZZER);
    delay(100);
    tone(BUZZER, 330);
    delay(500);
    noTone(BUZZER);
    delay(100);
  }
  else {
    noTone(BUZZER);
    digitalWrite(RED,HIGH);
    digitalWrite(GREEN,HIGH);
    digitalWrite(BLUE,HIGH);
  }
}

//SERVO
BLYNK_WRITE(V5)
{
 servo.write(param.asInt());
}

Em Token Blynk, cole o token do app Blynk que foi enviado para seu email. Em nome da rede, digite o nome da rede WiFi que o robô vai estar conectado. Depois, em senha da rede, digite a senha da rede WiFi.

Robô IoT com Raspberry Pi Pico

Segure o botão BOOTSEL da Raspberry Pi Pico e conecte o cabo USB na placa e no computador e depois solte o botão. Carregue o código para a placa.

Solda dos componentes

Separe a Raspberry Pi Pico e a barra de pinos 180º. Divida a barra de pinos exatamente na metade, 20 pinos para cada lado. Depois, solde a barra de pinos na Pico. Você pode usar uma protoboard para ajudar.

Robô IoT com Raspberry Pi Pico

Separe 1 jumper macho-fêmea preto, 1 jumper fêmea-fêmea vermelho, a bateria 9V, o conector de bateria, a chave liga e desliga e o conversor DC-DC. Corte o jumper vermelho ao meio e o conector de uma das pontas. Corte também o conector macho do jumper preto. Desencape e estanhe todas as pontas dos jumpers, incluindo do conector de bateria. Solde o jumper vermelho do conector de bateria na entrada positiva do conversor e o jumper preto do conector na entrada negativa. Solde o jumper preto na saída negativa do conversor. Solde o jumper vermelho sem conectores na saída positiva do conversor e em um dos pinos da chave liga e desliga. Solde o outro jumper vermelho no outro pino da chave.

Robô IoT com Raspberry Pi Pico

Agora precisamos ajustar a saída do conversor: conecte a bateria no conector e, usando a chave de fenda e multímetro, ajuste a saída para 3,3 V.

 Robô IoT com Raspberry Pi Pico

Agora separe os 2 motores DC, o mini driver de motores e alguns jumpers fêmea-fêmea: 2 amarelos, 2 verdes, 1 vermelho, 1 preto, 1 branco, 1 cinza, 1 roxo e 1 azul. Corte todos os conectores dos jumpers amarelos, verdes e vermelho. Corte apenas um dos conectores do jumper preto, branco, cinza, roxo e azul. Estanhe todas as pontas. Solde os jumpers verdes e amarelos no motores DC e nas saídas: motor A e motor B do driver. Solde o jumper vermelho na entrada positiva e o jumper preto na entrada negativa do driver. Depois solde os jumpers branco, cinza, roxo e azul nas entradas IN1, IN2, IN3 e IN4 respectivamente.

 Robô IoT com Raspberry Pi Pico

Para o buzzer, precisamos separar jumpers fêmea-fêmea nas cores preto e amarelo, 1 resistor de 220 ohms e 3 centímetros de tubo termo retrátil φ2mm. Corte uma das pontas do jumper amarelo e corte ele ao meio. Corte uma das pontas do jumper preto. Também corte na metade os terminais do resistor. Desencape e estanhe todas pontas dos jumpers. Solde o jumper preto no terminal negativo do buzzer, que é o terminal menor. No terminal positivo, solde a metade do jumper amarelo. Depois solde um dos terminais do resistor na ponta desse jumper amarelo. Passe o termo retrátil na outra metade do jumper e solde na outra extremidade do resistor. Posicione o termo retrátil em cima do resistor e esquente usando um ferro de solda.

Robô IoT com Raspberry Pi Pico

Agora separe o LED RGB, 3 resistores de 220 ohms, jumpers fêmea-fêmea nas cores vermelho, laranja, azul e verde e três partes de 3 centímetros de tubo termo retrátil φ2mm. Corte os terminais de todos os resistores pela metade. Corte o conector de um dos lados de todos os jumpers. Desencape e estanhe todas as pontas. Perceba que o LED RGB possui terminais de diferentes tamanhos, sendo que o maior deles é a alimentação, por isso nele vamos soldar o jumper vermelho. Nos outros terminais vamos soldar os resistores. Passe os pedaços de termo retrátil pelos jumpers e solde os jumpers nas extremidades dos resistores. O primeiro terminal corresponde à cor vermelha, mas vamos soldar o jumper laranja apenas para não confundir com a alimentação. O terceiro e quarto terminal são as cores verde e azul, respectivamente. Depois, posicione o termo retrátil acima do resistor e aqueça usando o ferro de solda.

Robô IoT com Raspberry Pi Pico

Para o servo motor, você só vai precisar separar jumpers macho-fêmea nas cores marrom, vermelho e laranja. Corte o conector fêmea do jumper vermelho e depois corte ele pela metade. Guarde esse pedaço para o procedimento final. Desencape e estanhe todas as pontas. Conecte nas cores correspondentes.

Robô IoT com Raspberry Pi Pico

Chegou a hora do módulo ESP8266. Separe jumpers fêmea-fêmea nas cores azul, verde, preto e vermelho. Corte o jumper vermelho pela metade. Desencape e estanhe as pontas. Conecte o jumper preto no pino GND, jumper verde no pino TX, vermelho no CH-PD, azul no RX e vermelho no 3.3 V.

 Robô IoT com Raspberry Pi Pico

Separe 2 centímetros de tubo termo retrátil φ3mm e o pedaço do jumper vermelho que separamos anteriormente. Junte todos os jumpers vermelhos dos componentes que soldamos, com exceção dos jumpers do ESP8266. Passe o termo retratil pelo pedaço de jumper vermelho e depois solde ele nos outros jumpers vermelhos.

Robô IoT com Raspberry Pi Pico

Repita o procedimento acima para os jumpers vermelhos do ESP8266.

Circuito

Agora vamos conectar todos os componentes na Raspberry Pi Pico. Para isso, basta seguir o esquemático eletrônico abaixo.

Robô IoT com Raspberry Pi Pico

Antes de seguirmos para a parte de montar o BLU9, é recomendável testar se tudo está funcionando corretamente.

Robô IoT com Raspberry Pi Pico

Montagem

Com tudo testado, chegou a hora de montar o robô. Encaixe os componentes como mostram as imagens abaixo. Durante a montagem, utilize cola quente ou cola universal quando achar necessário. Caso algum dos componentes não encaixe perfeitamente, você pode lixar um pouquinho a estrutura impressa em 3D.

Robô IoT com Raspberry Pi Pico

Robô IoT com Raspberry Pi Pico

 Robô IoT com Raspberry Pi Pico

 Robô IoT com Raspberry Pi Pico

 Robô IoT com Raspberry Pi Pico

Funcionamento

Agora é só se divertir! Conecte o robô ao aplicativo Blynk e mova ele para a direção que quiser. Você também pode mover a cabeça e emitir sons.

Robô IoT com Raspberry Pi Pico

E então, gostou do projeto da 9ª edição da BlueBox? Conte o que achou nos comentários abaixo. Se tiver alguma sugestão de projeto, pode escrever também 😉

 

Faça seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *