Introdução ao uso do Raspberry Pi e integração com o Arduino.
1 of 40
Downloaded 62 times
More Related Content
Introdução ao Raspberry Pi e integração com Arduino
1. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
Introduc¸˜ao ao Raspberry Pi e intragrac¸˜ao com
o Arduino
FLISOL 2014
Prof. Walter Silvestre Coan, MSc.
Universidade da Regi˜ao de Joinville - UNIVILLE
2. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO ROB ˆO COM WEBCAM
Rede sem fio: RASPBERRYWIFI
Interface: http://10.1.1.100
3. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PRIMEIROS COMPUTADORES PESSOAIS
Altair 8800 - 1975:
Kit de eletrˆonica vendido na revista Popular Eletronics
Suportava as linguagens FORTRAN e BASIC
Arquitetura modular permitia a inclus˜ao de novas placas
para expandir as funcionalidades do computador como:
aumento da mem´oria principal, interface paralela,
interface serial RS232 e fica cassete.
Altair 8800
4. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PRIMEIROS COMPUTADORES PESSOAIS
Apple I - 1976:
Criado por Steve Wozniak e por Steve
Jobs
Linguagem de programac¸˜ao Basic como
principal forma de operar o computador
CPU 1 MHz - 4 `a 8KB - gr´aficos de 40x24
caracteres
Porta paralela e interface para fita
cassete
5. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PRIMEIROS COMPUTADORES PESSOAIS
BBC Micro - 1981:
Dois modelos: A 32KB mem´oria - B 128KB mem´oria
Gr´aficos 640x256 pixels
Interface: paralela, RS432 serial, Tube para um segundo
processador Zilog Z80
Linguagem de programac¸˜ao: BBC Basic, Pascal, Lisp,
Logo, Prolog, Cobol
BBC Micro
6. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
RASPBERRY PI
Raspberry Pi - 2012:
Projeto criado por um grupo de professores liderados por
Eben Upton;
Objetivo do projeto: recriar um computador para crianc¸as,
baseado no BBC Micro, para que possam se interessar
sobre programac¸˜ao;
Eben Upton
7. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
RASPBERRY PI
Raspberry Pi - 2012:
Modelos: B US$35 (fev/2012) - A US$ 25 (fev/2013) n˜ao
possui conex˜ao ethernet e apenas uma porta USB
• Modelo A Modelo B
CPU 700 MHz ARM11 700 MHz ARM11
GPU Broadcom VideoCore IV Broadcom VideoCore IV
SDRAM 256MB 512MB
(a) Modelo B (b) Modelo A
8. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
RASPBERRY PI
Raspberry Pi - 2012:
Diferenc¸a de componentes entre os dois modelos
9. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
RASPBERRY PI
Raspberry Pi - GPIO:
GPIO - General-purpose input/output
10. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
LISTA DE COMPRAS
Lista de Compras:
Cart˜ao SD de no m´ınimo 8GB classe 4;
Cabo conector com a TV: RCA ou HDMI;
Teclado e mouse USB;
Fonte de energia USB 5v com corrente m´ınima de 1000
milliamper
Raspberry Pi conectado
11. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJECT KANO
Projeto Kano:
Kit educacional composto pelo Raspberry Pi, os perif´ericos
necess´arios para utilizac¸˜ao do computador e um sistema
operacional customizado.
Projeto iniciou no KickStarter
Project Kano
12. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
SUPERCOMPUTADOR RASPBERRY PI
Universidade de Southampton - Reino Unido
64 n´os
Gerenciador da distribuic¸˜ao dos processos - Python
https:
//www.southampton.ac.uk/˜sjc/raspberrypi/
pi_supercomputer_southampton.htm
M´odulo lego
13. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
RADIO RASPBERRY PI
Transmissor de r´adio FM
GPIO
http://makezine.com/projects/
make-38-cameras-and-av/
raspberry-pirate-radio/
Transmissor de r´adio
14. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
SISTEMAS OPERACIONAIS
http://www.raspberrypi.org/downloads/
http://www.raspberrypi.org/documentation/
installation/installing-images/README.md
Sistemas Operacionais
15. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
CONFIGURAC¸ ˜AO B ´ASICA
Realizar o download do sistema operacional
Gravar a imagem no cart˜ao SD
Configurac¸ ˜oes b´asicas atrav´es do RASPI-CONFIG
1 - Expandir o tamanho da partic¸˜ao para o tamanho real do
cart˜ao
2 - Habilitar a interface gr´afica ap´os o boot (startx)
3 - Habilitar a conex˜ao SSH
16. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
CONFIGURAC¸ ˜AO B ´ASICA - EXPANDIR FILESYSTEM
raspi-config
17. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
CONFIGURAC¸ ˜AO B ´ASICA - BOOT OPTION INTERFACE
GR ´AFICA
raspi-config
18. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
CONFIGURAC¸ ˜AO B ´ASICA - HABILITAR SERVIDOR SSH
raspi-config
19. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
INSTALAR SERVIDOR VNC
HTTPS:
//LEARN.ADAFRUIT.COM/ADAFRUIT-RASPBERRY-PI-LESSON-7-REMOTE-CONTROL-WITH-VNC/INSTALLING-VNC
Configurac¸ ˜ao do VNCServer
20. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PIVIEW
Conversor HDMI para VGA
Modelo oficial / ”paralelo”
Necessidade de configurar a porta HDMI no arquivo
config.txt na raiz do cart˜ao SD ou no SO na pasta
/boot/config.txt para habilitar a porta HDMI
Pode ocorrer perda de ´area ´util da tela
hdmi force hotplug = 1
hdmi drive=2
hdmi group=1
hdmi mode=4
Conversor HDMI-VGA - Piview
21. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PIFACE
Formato de shield semelhante aos do arduino
Utiliza a GPIO
2 relˆes 110/220 10A
8 sa´ıdas digitais
8 entradas digitais
8 LEDs
4 PIN buttons
Programavel Python, Scratch ou C
Possui simulador e emulador para download
Conversor HDMI-VGA - Piview
22. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 1 - ROB ˆO INTEGRADO AO SCRATCH
Robˆo integrado ao Scratch
23. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 1 - ROB ˆO INTEGRADO AO SCRATCH
Habilita socket server na porta 42001
Habilitar conex˜ao sensor remoto
24. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 1 - ROB ˆO INTEGRADO AO SCRATCH
Configurando conex˜ao Bluetooth:
sudo apt-get update
sudo apt-get install bluetooth bluez-utils blueman
hciconfig #testar dispositivo
hcitool scan #procurar por dispositivos bluetooth
sudo nano /etc/bluetooth/rfcomm.conf
rfcomm0 {
# Automatically bind the device at startup
bind no;
# Bluetooth address of the device
device 00:11:02:FF:02:FF;
# RFCOMM channel for the connection
channel 1;
# Description of the connection
comment ”Carroduino”;
}
25. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 1 - ROB ˆO INTEGRADO AO SCRATCH
Configurando conex˜ao Bluetooth:
Script para conex˜ao bluetooth que cria a porta serial
/dev/rfcomm0
bluetooth-agent 1234 & #agente para informar a senha do bluetooth
sudo rfcomm connect rfcomm0 &
26. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 1 - ROB ˆO INTEGRADO AO SCRATCH
Programa python para integrar o socket com a porta serial
from array import array
import socket
import time
import signal
import sys
import serial
HOST = ’127.0.0.1’
PORT = 42001
def signal_handler(signal, frame):
print ("You pressed Ctrl+C!")
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
print("connecting SOCKET...")
scratchSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
scratchSock.connect((HOST, PORT))
print("connected SOCKET")
print("connecting SERIAL...")
sport = serial.Serial("/dev/rfcomm0",baudrate=9600,timeout=3.0)
print("connected SERIAL")
27. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 1 - ROB ˆO INTEGRADO AO SCRATCH
Programa python para integrar o socket com a porta serial
while True:
data = str(scratchSock.recv(1024)).lower()
if data.find(’frente’) > 0:
sport.write("1")
elif data.find(’atras’) > 0:
sport.write("2")
elif data.find(’direita’) > 0:
sport.write("3")
elif data.find(’esquerda’) > 0:
sport.write("4")
elif data.find(’lento’) > 0:
sport.write("5")
elif data.find(’rapido’) > 0:
sport.write("6")
else:
sport.write("0");
print("closing serial...")
sport.close()
print("closing socket...")
scratchSock.close()
28. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 1 - ROB ˆO INTEGRADO AO SCRATCH
C´odigo arduino
#include <AFMotor.h>
AF_DCMotor motor1(3);
AF_DCMotor motor2(4);
char command;
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
motor1.setSpeed(255);
motor2.setSpeed(255);
Serial.print("AT+NAMECarroDuinorn");
delay(4000);
motor1.run(RELEASE);
motor2.run(RELEASE);
}
29. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 1 - ROB ˆO INTEGRADO AO SCRATCH
C´odigo arduino
void loop() {
if(Serial.available()){
command = Serial.read();
if(command == ’1’){
motor1.run(FORWARD);
motor2.run(FORWARD);
}else{
if(command == ’2’){
motor1.run(BACKWARD);
motor2.run(BACKWARD);
}else{
if(command == ’4’){
motor1.run(FORWARD);
motor2.run(RELEASE);
}else{
if(command == ’3’){
motor1.run(RELEASE);
motor2.run(FORWARD);
}
}
}
}
delay(500);
motor1.run(RELEASE);
motor2.run(RELEASE);
}
delay(50);
}
30. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
Robˆo com Webcam
31. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
Instalac¸˜ao do Apache:
sudo apt-get update
sudo apt-get install apache2
Servidor de Stream mjpg streamer
http://blog.miguelgrinberg.com/post/
how-to-build-and-run-mjpg-streamer-on-the-raspberry
32. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
#! /bin/sh
# /etc/init.d/camera_mjpg
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting mjpg_streamkick script"
export LD_LIBRARY_PATH=/usr/local/lib
mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -y -r 320x240 -f 10" -o "/usr
;;
stop)
echo "Stopping webcam script"
killall mjpg-streamer
;;
*)
echo "Usage: /etc/init.d/mjpg_streamkick {start|stop}"
exit 1
;;
esac
exit 0
Registrar no update-rc.d para iniciar automaticamente ap´os o boot
sudo update-rc.d camera mjpg defaults
33. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
Servidor WebSocket em python escrito utilizando a biblioteca
TORNADO
import tornado.ioloop
import tornado.web
import tornado.websocket
import socket
import serial
from tornado.options import define, options, parse_command_line
define("port", default=8888, help="run on the given port", type=int)
sport = serial.Serial("/dev/ttyACM0",baudrate=9600,timeout=3.0)
print("connected SERIAL")
34. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
Servidor WebSocket em python escrito utilizando a biblioteca
TORNADO
class WebSocketHandler(tornado.websocket.WebSocketHandler):
def open(self, *args):
self.id = self.get_argument("Id")
#self.stream.set_nodelay(True)
def on_message(self, message):
print ("Client received a message " + message)
if(message == "frente"):
sport.write("1")
if(message == "atras"):
sport.write("2")
if(message == "direita"):
sport.write("4")
if(message == "esquerda"):
sport.write("3")
def on_close(self):
print("Close")
app = tornado.web.Application([
(r’/’, WebSocketHandler),
])
if __name__ == ’__main__’:
parse_command_line()
app.listen(options.port)
#sport = serial.Serial("/dev/ttyACM0",baudrate=9600,timeout=3.0)
print("connected SERIAL")
tornado.ioloop.IOLoop.instance().start()
35. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
P´agina HTML5 que recebe o stream de v´ıdeo e conecta via
WebSockets
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
window.addEventListener("load", function(event) {
var btnFrente = document.getElementById("btnFrente");
var btnAtras = document.getElementById("btnAtras");
var btnDireita = document.getElementById("btnDireita");
var btnEsquerda = document.getElementById("btnEsquerda");
var ws = null;
ws = new WebSocket("ws://10.1.1.100:8888/?Id=1");
ws.onopen = function() {
ws.send("ok");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
};
ws.onclose = function() {
alert("Vocˆe foi desconectado!!!");
};
36. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
P´agina HTML5 que recebe o stream de v´ıdeo e conecta via
WebSockets
btnFrente.addEventListener("click", function(event) {
ws.send(’frente’);
});
btnAtras.addEventListener("click", function(event) {
ws.send(’atras’);
});
btnDireita.addEventListener("click", function(event) {
ws.send(’direita’);
});
btnEsquerda.addEventListener("click", function(event) {
ws.send(’esquerda’);
});
});
37. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
P´agina HTML5 que recebe o stream de v´ıdeo e conecta via
WebSockets
</script>
<style type="text/css">
.side{
display:inline;
width: 20px;
padding:70px
}
#bl{
display:inline-block;
width: 20px;
padding: 10px;
padding-top: 30px;
}
input{
width:70px;
height: 60px;
font-size: 14px;
}
img{
padding: 0px 0px 0px 110px;
}
</style>
</head>
38. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
P´agina HTML5 que recebe o stream de v´ıdeo e conecta via
WebSockets
<body>
<img src=/slideshow/introduo-ao-raspberry-pi-e-integrao-com-arduino/33949698/"http:/10.1.1.100:8088/?action=stream" />
<p>
<div class="side">
<input type=’button’ id=’btnDireita’ value=’Direita’>
</div>
<div id=’bl’>
<input type=’button’ id=’btnFrente’ value=’Frente’>
<input type=’button’ id=’btnAtras’ value=’Atr´as’>
</div>
<div class="side">
<input type=’button’ id=’btnEsquerda’ value=’Esquerda’>
</div>
</body>
</html>
39. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
PROJETO 2 - ROB ˆO COM WEBCAM
#! /bin/sh
# /etc/init.d/websocketrasp
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting websocketrasp script"
python /home/pi/websocketserial.py
;;
stop)
echo "Stopping websocketrasp script"
killall python
;;
*)
echo "Usage: /etc/init.d/websocketrasp {start|stop}"
exit 1
;;
esac
exit 0
Registrar no update-rc.d para iniciar automaticamente ap´os o boot
sudo update-rc.d websocketrasp defaults
40. FLISOL 2014 PRIMEIROS COMPUTADORES PESSOAIS REINVENC¸ ˜AO DO BBC MICRO, O RASPBERRY PI INICIANDO COM O RASPBE
OBRIGADO!
Universidade da Regi˜ao de Joinville - UNIVILLE
Departamento de Inform´atica
Prof. Walter Silvestre Coan, MSc.
walter.s@univille.br - walter.coan@gmail.com
http://www.univille.br/deptoinformatica
http://www.faltoupontoevirgula.com.br
100% LATEX