Slide 1

Slide 1 text

Juliana Karoline de Sousa | @julianaklulo PROGRAMANDO UM ROBÔ IOT USANDO MICROPYTHON E RASPBERRY PI PICO

Slide 2

Slide 2 text

JULIANA KAROLINE DE SOUSA | @JULIANAKLULO ➔ Cientista da Computação | UFSCar ➔ PyLadies São Carlos | co-fundadora e organizadora ➔ Grupy-Sanca | co-fundadora e organizadora ➔ Software Engineer | Omnivector Solutions ➔ IoT, robótica, impressão 3D e gatinhos :3

Slide 3

Slide 3 text

AGENDA Escolha do robô Por que esse robô? 01 Specs do robô Componentes e esquemático 02 Montagem Fotos do robô sendo preparado e montado 03 Controlando o robô Configurando e utilizando o Blynk 04 Programando o robô Código em Arduino vs MicroPython 05 Demonstração Mostrando o robô em funcionamento 06

Slide 4

Slide 4 text

A ESCOLHA DO ROBÔ Por que esse robô em específico? 01

Slide 5

Slide 5 text

ROBÔS QUE EU JÁ TINHA INTEL EDISON INTEL GALILEO ARDUINO MEGA ARDUINO UNO NODE MCU

Slide 6

Slide 6 text

POR QUE ESSE ROBÔ? POR QUE ESSE ROBÔ?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

ESPECIFICAÇÕES DO ROBÔ Lista de componentes do projeto 02

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

MICROCONTROLADOR?

Slide 11

Slide 11 text

COMPONENTES DO MICROCONTROLADOR MICRO PROCESSADOR MEMÓRIA I/O TIMERS ADC SERIAL I/O

Slide 12

Slide 12 text

➔ Raspberry Pi Pico + Barra de Pinos ➔ Módulo WiFi ESP8266 ESP-01 ➔ LED RGB Difuso ➔ Buzzer Ativo 5 V ➔ Micro Servo 9g SG90 TowerPro ➔ 2 Motores DC com Caixa de Redução e Eixo Duplo + Ponte H L298n ➔ 2 Rodas para Robô ➔ Bateria Li-Po 450 mAh + Módulo de Carga TP4056 ➔ Chave Liga-Desliga 10 A ➔ Case impresso em 3D LISTA DE COMPONENTES DO ROBÔ

Slide 13

Slide 13 text

CIRCUITO DO ROBÔ

Slide 14

Slide 14 text

CONTROLE DO ROBÔ App Mobile Cabeça Slider para girar o servo motor (0-180º) Buzzer Botão para fazer o buzzer funcionar LED RGB Zebra Selector para criar cores RGB Rodas Botões para controlar a direção das rodas

Slide 15

Slide 15 text

MONTANDO O ROBÔ Preparando, soldando e interligando os componentes 03

Slide 16

Slide 16 text

SOLDA DA BARRA DE PINOS

Slide 17

Slide 17 text

CONEXÃO DO MÓDULO DE CARGA

Slide 18

Slide 18 text

CONEXÃO DA PONTE H NOS MOTORES

Slide 19

Slide 19 text

TESTE DOS COMPONENTES

Slide 20

Slide 20 text

CONEXÃO DOS JUMPERS

Slide 21

Slide 21 text

FINALIZAÇÃO DA MONTAGEM

Slide 22

Slide 22 text

CONTROLANDO O ROBÔ Configurando o Blynk 04

Slide 23

Slide 23 text

PLATAFORMA INTEGRADA PARA IOT?

Slide 24

Slide 24 text

Blynk Cloud Blynk Library Blynk IoT Aplicativo customizável para controlar e exibir dados Nuvem com comunicação bi-direcional entre app e dispositivo Biblioteca para interação com o dispositivo

Slide 25

Slide 25 text

Pros ➔ Fácil de usar ➔ Suporta várias plataformas ➔ Permite conexão remota ➔ Possui plano grátis Cons ➔ Protocolo proprietário ➔ Erros de comunicação intermitentes ➔ Número limitado de dispositivos ➔ Documentação escassa

Slide 26

Slide 26 text

USANDO O BLYNK

Slide 27

Slide 27 text

COMPONENTES DO BLYNK Template Device Datastreams Widgets

Slide 28

Slide 28 text

CRIANDO UM TEMPLATE

Slide 29

Slide 29 text

CRIANDO UM DATASTREAM

Slide 30

Slide 30 text

CRIANDO UM DEVICE

Slide 31

Slide 31 text

CRIANDO UM WIDGET NO APP

Slide 32

Slide 32 text

CONFIGURANDO O BLYNK NA PLACA Conexão com a internet Conexão com a Blynk Cloud Configuração dos callbacks (virtual pins) Lógica da aplicação

Slide 33

Slide 33 text

PROGRAMANDO O ROBÔ Código em Arduino vs código em MicroPython 05

Slide 34

Slide 34 text

FIRMWARES DISPONÍVEIS PARA A RASP PI PICO Arduino MicroPython

Slide 35

Slide 35 text

ARDUINO (C/C++) VS MICROPYTHON Arduino (C/C++) MicroPython Modo de execução Compilado Interpretado Linguagem Baixo nível Alto nível Tratamento de Erros Não possui Built-in Performance Mais rápido Mais lento

Slide 36

Slide 36 text

Código #1: Arduino

Slide 37

Slide 37 text

CONFIGURANDO O FIRMWARE

Slide 38

Slide 38 text

CONFIGURAÇÃO DAS BIBLIOTECAS

Slide 39

Slide 39 text

INICIALIZAÇÃO DOS MÓDULOS

Slide 40

Slide 40 text

INICIALIZAÇÃO DO BLYNK

Slide 41

Slide 41 text

EXEMPLOS DE CALLBACKS

Slide 42

Slide 42 text

Como portar o código para MicroPython?

Slide 43

Slide 43 text

PROBLEMA ESSAS BIBLIOTECAS NÃO POSSUEM IMPLEMENTAÇÃO EM MICROPYTHON

Slide 44

Slide 44 text

COMO CONECTAR A RASP PI PICO NA INTERNET USANDO O MÓDULO ESP8266-01?

Slide 45

Slide 45 text

Checking ESP module COMMAND: AT LINE: AT LINE: OK Connecting to WiFi COMMAND: AT+CWMODE=1 LINE: AT+CWMODE=1 LINE: OK COMMAND: AT+CWJAP="SSID","PASSWORD" LINE: AT+CWJAP="SSID","PASSWORD" LINE: WIFI DISCONNECT LINE: WIFI CONNECTED LINE: WIFI GOT IP LINE: OK WiFi connected Making request COMMAND: AT+CIPSTART="TCP","jsonplaceholder.typicode.com",80 LINE: AT+CIPSTART="TCP","jsonplaceholder.typicode.com",80 LINE: CONNECT LINE: OK COMMAND: AT+CIPSEND=61 LINE: AT+CIPSEND=61 LINE: OK FUNCIONAMENTO DO ESP8266-01 https://github.com/julianaklulo/socket-esp/

Slide 46

Slide 46 text

NÃO FUNCIONOU ):

Slide 47

Slide 47 text

TENTATIVA DE SOCKET https://github.com/julianaklulo/socket-esp/

Slide 48

Slide 48 text

SOLUÇÃO?

Slide 49

Slide 49 text

RASPBERRY PI PICO W

Slide 50

Slide 50 text

RASP PI PICO X RASP PI PICO W Rasp Pi Pico Rasp Pi Pico W Wireless + Bluetooth Microcontrolador RP2040 @ 133MHz, 256kB RAM RP2040 @ 133MHz, 256kB RAM GPIOs 26 26 PWMs 16 Canais 16 Canais

Slide 51

Slide 51 text

Código #2: MicroPython

Slide 52

Slide 52 text

CONFIGURANDO O FIRMWARE

Slide 53

Slide 53 text

CONFIGURANDO A BLYNK LIBRARY #1 - Baixar o arquivo blynklib_mp.py do GitHub do Blynk #2 - Renomear para blynklib.py #3 - Criar uma pasta /lib no sistema de arquivos da placa #4 - Copiar o arquivo para a pasta /lib https://github.com/blynkkk/lib-python/blob/master/blynklib_mp.py

Slide 54

Slide 54 text

CONECTANDO À INTERNET

Slide 55

Slide 55 text

ABSTRAÇÃO DO MOTOR

Slide 56

Slide 56 text

ABSTRAÇÃO DO SERVO

Slide 57

Slide 57 text

PWM: PULSE WIDTH MODULATION 0 - 65535 EQUIVALE A 0 - 100%

Slide 58

Slide 58 text

ABSTRAÇÃO DO SERVO - VALOR PWM

Slide 59

Slide 59 text

ABSTRAÇÃO DO SERVO - MOVIMENTO

Slide 60

Slide 60 text

ABSTRAÇÃO DO LED RGB

Slide 61

Slide 61 text

ABSTRAÇÃO DO LED: VALOR PWM

Slide 62

Slide 62 text

ABSTRAÇÃO DO LED RGB: SET COLOR

Slide 63

Slide 63 text

ABSTRAÇÃO DO LED RGB: COLOR BY NAME

Slide 64

Slide 64 text

ABSTRAÇÃO DO BUZZER

Slide 65

Slide 65 text

ABSTRAÇÃO DO ROBÔ - STARTUP

Slide 66

Slide 66 text

ABSTRAÇÃO DO ROBÔ

Slide 67

Slide 67 text

INICIALIZAÇÃO DO BLYNK

Slide 68

Slide 68 text

CALLBACKS DO BLYNK

Slide 69

Slide 69 text

DEMONSTRAÇÃO Mostrando o robô em funcionamento 06

Slide 70

Slide 70 text

https://www.youtube.com/watch?v=yhgqU4OrT1o

Slide 71

Slide 71 text

CONCLUSÃO Por que MicroPython? 07

Slide 72

Slide 72 text

POR QUE MICROPYTHON? Alto Nível Permite escrever código orientado a objetos Produtividade Sintaxe mais simples que C/C++, dá para escrever mais código em menos tempo Abstração É possível abstrair a camada de hardware de acordo com a aplicação Python Segue a filosofia da linguagem Python

Slide 73

Slide 73 text

OBRIGADA! → @julianaklulo https://github.com/julianaklulo/pybr-2023-robo-bb9