Introdução A Arduino e Raspberry Pi
Introdução A Arduino e Raspberry Pi
Raspberry Pi
Prof. Marcel Silva
DCC/IM/UFRRJ
https://vimeo.com/174411588
Sistema embarcado ou embutido
Sistema embarcado
Memória Processador
Atuadores
Sensores
Mundo Mundo
real real
Timers,
Interfaces
ADC,
(portas)
DAC, etc
Sistemas embarcados - exemplos
● MP3 player ● console de vídeo game
● relógio digital ● lavadora de roupas
● calculadora ● marca-passo
● injeção eletrônica ● quadricóptero (VANT)
● navegador com GPS ● forno de micro-ondas
● ‘maquininha’ de cartão ● tablet
● robô ● medidor de pressão arterial
● semáforo ● televisão
● roteador wireless ● e vários outros...
● DVD ou BD player
● controles aviônicos
● mísseis teleguiados
Sistemas embarcados - exemplos
Futuro? - Internet das Coisas
● Internet of Things (IoT) → TUDO possuirá um sistema embarcado, com
possibilidade de comunicação
● Possibilitará aplicações inovadoras
● Exemplos
○ Telemedicina
○ Controle de estoque
○ Ambientes inteligentes (smart cities)
● Microcontrolador: ATmega328
● Tensão de operação: 5V
● Tensão de entrada (recomendada): 7-12V
● Pinos digitais de E/S: 14 (6 podem ter sinal PWM)
● Pinos com entrada analógica: 6
● Corrente máxima por pino de E/S: 40 mA
● Memória Flash (de programa): 32 kB, com 0,5 kB usados pelo bootloader
● Memória SRAM: 2 kB - EEPROM: 1 kB
● Frequência de clock: 16 MHz
Arduino - Hardware - Detalhes do Mega2560
● Microcontrolador: ATmega2560
● Tensão de operação: 5V
● Tensão de entrada (recomendada): 7-12V
● Pinos digitais de E/S: 54 (15 podem ter sinal PWM);
● Pinos com entrada analógica: 16
● Corrente máxima por pino de E/S: 40 mA
● Memória Flash (de programa): 256 kB, com 8 kB usados pelo bootloader
● Memória SRAM: 8 kB - EEPROM: 4 kB
● Frequência de clock: 16 MHz
Arduino - Hardware - Microcontrolador
● Chip - “coração” do sistema
● CPU de pequeno porte, capaz de executar um conjunto de instruções
○ Ou seja, possui um microprocessador!
● Instruções simples e rápidas
● Possui memória(s)
● Possui periféricos
● Pode se comunicar com outros periféricos
Arduino - Hardware - Microcontrolador
● Arduino - Família MegaAVR (ATMEL)
○ http://www.atmel.com/pt/br/products/microcontrollers/avr/megaAVR.aspx
○ Existem outras famílias produzidas por outros fabricantes (Intel, Motorola, Texas Instruments,
Microchip, etc)
● Exemplos de MegaAVR usados em arduinos:
○ ATmega168: Diecimila, Duemilanove, Nano, LilyPad
○ ATmega328P: Duemilanove, Nano, Fio, LilyPad, Uno
○ ATmega1280: Mega
○ ATmega2560: Mega2560
○ ATmega32u4: Leonardo, Esplora, LilyPad USB, Yún, Robot
○ AT91SAM3X8E: Due
Ardunio - Hardware - shields Site com uma lista de shields:
http://shieldlist.org
● Shields → placas de extensão para o arduino
○ Permitem adicionar funcionalidades nas placas convencionais
● Exemplos:
○ WiFi shield
○ Ethernet shield
○ GSM shield
○ Motor shield
○ GPS shield
Arduino - Software
● Microcontrolador executa instruções
armazenadas em sua memória
○ Linguagem AVR (um tipo de assemble)
○ Difícil programar!
● Programação facilitada através de IDE
open source disponibilizada pelos
desenvolvedores do arduino → plataforma
Wiring (http://wiring.org.co/)
○ Linguagem de mais alto nível → semelhante a
C/C++
○ IDE faz a conversão do código para AVR e
compila no formato aceito pelo microcontrolador
Arduino - software - etapas de desenvolvimento
compilador arquivo.hex
pr
og
ra
m
E ad
ID or
Arduino - software - “hello LED”
Arduino - software - “hello LED”
‘Setup’ - executado
apenas uma vez
quando a placa é
iniciada
Arduino - software - “hello LED”
‘Setup’ - executado
apenas uma vez
quando a placa é
iniciada
‘Loop’ - executado
infinitas vezes após
a execução da parte
de inicialização
Arduino - software - “hello LED”
Arduino - software - “hello LED”
pinMode() → Pino 13
configurado como
saída (OUTPUT)
Arduino - software - “hello LED”
pinMode() → Pino 13
configurado como
saída (OUTPUT)
digitalWrite() →
escreve nível lógico
(HIGH ou LOW) no
pino especificado
Arduino - software - “hello LED”
pinMode() → Pino 13
configurado como
saída (OUTPUT)
digitalWrite() →
escreve nível lógico
(HIGH ou LOW) no
pino especificado
delay() → espera
por um inteiro em
milisegundos
Arduino - “hello LED” - simulação
● Exemplo usando plataforma online de simulação - circuits.io
○ Protoboard, LED, Resistor e Arduino UNO
https://circuits.io/circuits/2436819-hello-led/embed
Arduino - “hello LED” - detalhes
● O que acontece na prática?
○ digitalWrite(13,HIGH) → faz o nível de tensão no pino 13 igual à 5V
○ induz passagem de corrente no circuito
○ diagrama no quadro
● Para que serve o resistor?
○ evita uma corrente muito alta no circuito → poderia ‘queimar’ o LED
● V=R.I (tensão igual a resistência multiplicada pela corrente)
○ com V=5V e R=220 Ohms, qual o valor da corrente?
○ aproximadamente 22,7 mA
○ quanto maior a corrente, mais intenso o brilho do LED
○ qual o limite?
Arduino - “hello LED” - detalhes
● Todo componente eletrônico possui uma documentação que o descreve →
dataSheet
○ Informa em detalhes o comportamento do componente em cada situação
○ Limites máximos toleráveis para o bom funcionamento
● Ex.: datasheet LED 5mm (https://www.sparkfun.com/datasheets/Components/LED/COM-09590-YSL-R531R3D-D2.pdf)
Arduino - “hello LED” - detalhes
● Como usar um componente que eu não conheço?
○ Primeiro passo → encontrar o dataSheet!
○ De posse dos detalhes do seu funcionamento, podemos construir circuitos utilizando o
componente
○ Faremos isso bastante nas próximas aulas!
Raspberry Pi
Raspberry Pi - www.raspberrypi.org
● Produzido originalmente para ser um computador de baixo custo
○ Computador completo por apenas 35 dolares (no Brasil, 250-300 reais)
○ Totalmente open source (hardware e software (Linux))
○ Com propósito de facilitar o ensino de informática (programação) para crianças
● Diferente do arduino, é um computador mais completo em um único chip
○ GPU (com capacidade de reproduzir vídeos em 1080p, saída HDMI e interface dedicada
para conexão de display LCD)
○ Interface de áudio (com saída P2)
○ Interface de rede (Ethernet 10/100 Mbps e também WiFi+Blutooth na versão 3)
○ Interface dedicada para câmera
○ Portas USB (recebe qualquer tipo de dispositivo USB)
○ Comunicação serial (SPI) e paralela (DPI)
○ Interface GPIO (pinos semelhantes aos do arduino que podem ser usados para controlar
outros tipos de hardware!)
Raspberry Pi - versões
Raspberry Pi - versão 3 modelo B
Raspberry Pi - comparação entre versões
Raspberry Pi - comparação entre versões
Raspberry Pi - software
● Executa sistema linux própio para arquitetura ARM
○ Instalado no cartão de memória
● Diferentes distribuições:
Raspberry Pi - software
● Noobs → Ferramenta para facilitar a
instalação do SO
○ Já possui uma instalação básica do
Raspbian
○ Outras distros podem ser baixadas pela
Internet
● Interface gráfica permite escolher o
sistema a ser instalado
○ Permite multiboot
○ Interface acessível sempre que desejar
Raspberry Pi - software - como programar?
● Importante: Arquitetura é ARM!!!
○ Programas devem ser compilados adequadamente (Cross-compiling)
○ Maioria das distros Linux possuem ferramentas adequadas
● Alternativa é compilar diretamente no raspberry
○ Mais lento do que num computador convencional
● Linguagens interpretadas não tem este problema
○ Raspberry tem suporte para uma vasta gama de linguagens
Raspberry Pi - GPIO General Purpose Input/Output
Raspberry Pi - GPIO
● Várias bibliotecas disponíveis
● WiringPi fornece o comando gpio
● Exemplo: blink.sh
#! /bin/bash
while true; do
gpio write 0 1
sleep 1
gpio write 0 0
sleep 1
done
Raspberry Pi - GPIO
● Mesmo exemplo de antes, mas em linguagem C (wiringPi.h)
● Exemplo: blink.c
#include <wiringPi.h>
int main (void)
{
wiringPiSetup () ;
pinMode (0, OUTPUT) ;
for (;;)
{
digitalWrite (0, HIGH) ; delay (500) ;
digitalWrite (0, LOW) ; delay (500) ;
}
return 0 ;
}
Raspberry Pi - Node-red - http://nodered.org/
● Ferramenta para programar tarefas no raspberryPi
○ Na verdade, roda em qualquer máquina
● Permite criar fluxos de tarefas a serem realizadas
● Exemplo: controle do LED