palestra sobre arduino e raspberry pi (totvs)

69
Prof. Walter Silvestre Coan, Ms. Departamento de Informática Universidade da Região de Joinville - UNIVILLE

Upload: walter-coan

Post on 04-Jul-2015

3.591 views

Category:

Technology


4 download

DESCRIPTION

Palestra realizada dia 14/02/2013 na empresa Totvs em Joinville/SC sobre Arduino e Raspberry Pi

TRANSCRIPT

Page 1: Palestra sobre Arduino e Raspberry Pi (Totvs)

Prof. Walter Silvestre Coan, Ms.

Departamento de Informática

Universidade da Região de Joinville - UNIVILLE

Page 2: Palestra sobre Arduino e Raspberry Pi (Totvs)

O que é o arduino?◦ Instalação

◦ Projetos

◦ Internet das coisas...

◦ Robótica

O que é o Netduino?◦ Projetos

Raspberry Pi◦ Instalação e configuração

◦ Desenvolvimento de jogos

Page 3: Palestra sobre Arduino e Raspberry Pi (Totvs)

Claudio Montenegro

Glauco Vinicius Scheffel

Page 4: Palestra sobre Arduino e Raspberry Pi (Totvs)

Arduino é uma plataforma aberta e livre que simplifica a prototipação de dispositivos eletrônicos capazes de medir aspectos físicos (sensores), realizar ações (atuadores) ou se comunicar com outros dispositivos.

Plataforma do Arduino◦ Placa◦ Linguagem de Programação◦ Plataforma de Desenvolvimento

Page 5: Palestra sobre Arduino e Raspberry Pi (Totvs)

Idealizador: Massimo Banzi

2005

Interaction Design Institute Ivrea – Milano

David Cuartielles, Gianluca Martino, Tom Igoe, David Mellis e Massimo Banzi

Page 6: Palestra sobre Arduino e Raspberry Pi (Totvs)

Aberto, Livre e expansível◦ Linguagem de Programação Similar ao C/C++, permite construção de bibliotecas em

C++

Hardware◦ Microcontrolador Atmel ATMEGA

“Barato”

Cross-Plataform

Ambiente simples de programação

ATmega 328Memória Flash: 32 Kb

CPU: 8-bit AVREEPROM: 1024 BytesTensão: 1.8v to 5.5v

Duemilanove

Page 7: Palestra sobre Arduino e Raspberry Pi (Totvs)

Qual a diferença de um Microcontrolador para um Microprocessador?

Microcontrolador ATMEGA 328

MEGA

Page 8: Palestra sobre Arduino e Raspberry Pi (Totvs)

http://arduino.cc http://blog.arduino.cc

Page 9: Palestra sobre Arduino e Raspberry Pi (Totvs)

Palestra Massimo Banzi no TED

http://www.youtube.com/watch?v=UoBUXOOdLXY

Page 10: Palestra sobre Arduino e Raspberry Pi (Totvs)

Arduino UNO Arduino Leonardo

Arduino MEGA

Arduino LilyPad

Arduino MiniPro

Netduino

Page 11: Palestra sobre Arduino e Raspberry Pi (Totvs)

Arduino DUE

Arduino ESPLORA

Page 12: Palestra sobre Arduino e Raspberry Pi (Totvs)

Linux◦ sudo apt-get install arduino

Page 13: Palestra sobre Arduino e Raspberry Pi (Totvs)

Windows◦ É necessário instalar o driver para a interface FTDI USB que

permite a comunicação direta entre o computador e o arduino.

◦ Windows 7 não 64bits O driver encontra-se na pasta driver da IDE de programação do

arduino

◦ Windows 7 64bits É necessário fazer o download da ultima versão do driver.

http://www.ftdichip.com/Drivers/VCP.htm

Passos◦ Conectar o arduino ao computador utilizando o cabo USB.◦ Aguarde o sistema operacional encontrar o novo hardware.◦ Apontar o caminho onde o driver foi baixado.

Page 14: Palestra sobre Arduino e Raspberry Pi (Totvs)

Configuração do Software Arduino◦ Windows

Acessar o gerenciador de dispositivos, verifique em que porta COM o driver FTDI foi instalado.

Informar no Software Arduino a versão do seu Arduinoe a porta de comunicação.

Page 15: Palestra sobre Arduino e Raspberry Pi (Totvs)

Configuração do Software Arduino◦ Linux

Comando para listar os dispositvos USB: lsusb

Comando para encontrar a porta de comunicação no linux: ls /dev/ttyUSB*

Page 16: Palestra sobre Arduino e Raspberry Pi (Totvs)

Porta USB: para alimentação de energia e comunicação com o computador.External DC:alimentação de energia externa, somente necessário quando o campo USB não esta conectadoReset Switch: reinicia o microcontroladoPower LED: indica que o Arduino esta em funcionamento.

Serial LEDS: indicam a troca de informações entre o computador e o Arduinoou atividade das portas digitais 0 (RX) e 1 (TX).Pin 13 LED: indica atividade na porta digital 13.

Page 17: Palestra sobre Arduino e Raspberry Pi (Totvs)

Light Emitting Diode (LED)

Cor Tensão Corrente

Infravermelho < 1.9v 20mA

Vermelho 1.63v ≈ 2.03v 20mA

Amarelo 2.10v ≈ 2.18v 20mA

Verde 1.9v ≈ 4.0v 20mA

Azul 2,48v ≈ 3.7 20mA

Branco 3.5v 20mA

LEDs:-São Polarizados, se você inverter o Catodo e o Anodo ele não funciona.-Um dos terminais sempre tem o tamanho maior indicando que é o catodo.-Adoram corrente, quanto mais voce passar para ele, mais ele irá tentar absorver até que ele superaqueça e queime.

Page 18: Palestra sobre Arduino e Raspberry Pi (Totvs)

Primeiro teste: Blink◦ Entrar no Software Arduino

◦ Selecionar: File -> Examples -> Basics -> Blink

Page 19: Palestra sobre Arduino e Raspberry Pi (Totvs)

Primeiro teste: Blink

Anodo(PIN13)Catodo (Grd)

Page 20: Palestra sobre Arduino e Raspberry Pi (Totvs)

Primeiro teste: Blink◦ Realizar a montagem do esquema elétrico

◦ Conectar o arduino na porta USB

◦ Carregar o programa para o Arduino

Page 21: Palestra sobre Arduino e Raspberry Pi (Totvs)

Porta Digitais e Analógicas:utilizadas para a conexão decomponentes eletrônicos queserão controlados pelomicrocontrolador.Portas Digitais 0 a 13: portrabalhar no sistema digitalelas suportam os valores HIGH(1) e LOW (0) que representamligado e desligado. Cada portaproveuma corrente de 5v,exceto a porta 13 que já possuium resistor e um LEDconectado de forma serial,reduzindo a tensão para 1.7v.Essas portas podem serutilizadas tanto no modoENTRADA como SAIDA.

ENTRADA: mede se existe ou não uma corrente.SAIDA: prove ou retira correnteDICA: Sempre utilize resistores nas portas digitais diferentes de 13

Page 22: Palestra sobre Arduino e Raspberry Pi (Totvs)

Porta Digitais utilizadas para saída:-No bloco de SETUP do programa arduino utilizar o comando pinMode(<numPorta>, OUTPUT);-No bloco de LOOP utilizar o comando digitalWrite(<numPorta>,<LOW/HIGH>); para habilitar ou desabilitar o sinal na porta.

Page 23: Palestra sobre Arduino e Raspberry Pi (Totvs)

Porta Digitais utilizadas para Entrada:-No bloco de SETUP do programa arduino utilizar o comando pinMode(<numPorta>, INPUT);-No bloco de LOOP utilizar o comando digitalRead(<numPorta>); verificar o status da porta igual a LOW ou HIGH.

Page 24: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo1

Page 25: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo2◦ Python

Instalar os módulos

Serial

Twitter

Oauth2

Page 26: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo 3◦ Twitter

É nécessário acessar https://dev.twitter.com

Criar um aplicativo para obter as chaves de acesso

Page 27: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo 3◦ Twitter

Chaves de acesso

API Twitter: suporta 350 consultas por

hora

Page 28: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo 4◦ Código Python

import serial

import twitter

import time

ser = serial.Serial(port = 'COM23', baudrate=9600, timeout = None)

#Conexao sem autenticaçao api = twitter.Api()

api = twitter.Api(consumer_key='AAA',consumer_secret='BBB',

access_token_key='CCC', access_token_secret='DDD')

while True:

pass

message = api.GetUserTimeline("@waltercoan")[0]

if message.text.find("arduino") == -1:

message = api.GetMentions()[0]

print "Mension >>> "

else:

print "Message >>> "

if message.text.find("arduino") != -1:

if message.text.find("on") != -1: ser.write('l'.encode('ascii'))

if message.text.find("off") != -1: ser.write('d'.encode('ascii'))

print message.text

print "Sleep...\n"

time.sleep(5)

Page 29: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 30: Palestra sobre Arduino e Raspberry Pi (Totvs)

https://cosm.com/

Page 31: Palestra sobre Arduino e Raspberry Pi (Totvs)

const int inPin = 0; // analog pin

void setup()

{

Serial.begin(9600);

}

void loop()

{

int value = analogRead(inPin);

float millivolts = (value / 1024.0) * 5000;

float celsius = millivolts / 10;

// sensor output is 10mV per degree Celsius

int rate = map(celsius,20,30,0,255);

delay(500); // wait for one second

Serial.println(celsius);

delay(500); // wait for one second

}

Passo 1◦ Transistor LM35 (sensor de temperatura linear)

Page 32: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo 2◦ Configurar uma chave de acesso no COSM

Page 33: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo 3◦ Fonte de dados

Page 34: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo 3◦ Fonte de dados

Importante anotar o ID do Feed

Page 35: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo 4◦ Programa Python

Bibliotecas: txCosm, zope.interface, pyOpenSSL

from twisted.internet import defer, reactor

import txcosm

from txcosm.HTTPClient import HTTPClient

import sys

import serial

import time

ser = serial.Serial(port = 'COM23', baudrate=9600, timeout = None)

# Paste your Pachube API key here

API_KEY = "AAAA"

# Paste you feed identifier here

FEED_ID = "BBB"

feed_data = """<?xml version="1.0" encoding="UTF-8"?>

<eeml xmlns="http://www.eeml.org/xsd/0.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1

http://www.eeml.org/xsd/0.5.1/0.5.1.xsd">

Continua...

Page 36: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo 4◦ Programa Python

Bibliotecas: txCosm, zope.interface, pyOpenSSL

<environment>

<title>ArduinoTemp</title>

<status>live</status>

<description>Temperatura da sala</description>

<tag>arduino</tag>

<tag>Temperatura</tag>

<data id="temp">

<current_value>novatemperatura</current_value>

<max_value>50.0</max_value>

<min_value>-30</min_value>

</data>

</environment>

</eeml>"""

def demo():

client = HTTPClient(api_key=API_KEY, feed_id=FEED_ID)

result = client.update_feed(format=txcosm.DataFormats.XML,

data=feed_data.replace("novatemperatura",ser.readline()))

Só mais um...

Page 37: Palestra sobre Arduino e Raspberry Pi (Totvs)

Passo 4◦ Programa Python

Bibliotecas: txCosm, zope.interface, pyOpenSSL

if result:

print "Feed updated"

else:

print "Error updating feed"

reactor.callLater(10, demo)

defer.returnValue(True)

reactor.callWhenRunning(demo)

reactor.run()

Page 38: Palestra sobre Arduino e Raspberry Pi (Totvs)

Porta Analógicas: utilizadas para conectar sensores, possibilitando a conversão do sinal Analógico do componente sensor para valores Digitais (0-1023). Essas portas possuem apenas a opção de ENTRADA de sinal.

Porta Gnd: As portas GROUND são utilizadas para completar os circuitos construídos provendo o aterramento.

Page 39: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 40: Palestra sobre Arduino e Raspberry Pi (Totvs)

Sensores Tem por objetivo medir grandezas físicas que são

transformadas em sinais elétricos.

Sensor de Cor Sensor de Luminosidade Sensor de presença deGás

Page 41: Palestra sobre Arduino e Raspberry Pi (Totvs)

Atuadores Tem por objetivo modificar o estado de algo, transformando

sinais elétricos em uma grandeza física.

Motor DC Motor de passo Servo Motor

Page 42: Palestra sobre Arduino e Raspberry Pi (Totvs)

//Código Fonte (Fading):

int ledPin = 9;

void setup() {

// nao faz nada

}

void loop() {

for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {

analogWrite(ledPin, fadeValue);

delay(30);

}

for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {

analogWrite(ledPin, fadeValue);

delay(30);

}

}

Componentes:- Arduino

- Transistor BC 548

- Resistor 1K ohms

- Motor DC 3v

- Duas pilhas AA (1,5v)

Page 43: Palestra sobre Arduino e Raspberry Pi (Totvs)

Ponte H - L293B / L293D

Page 44: Palestra sobre Arduino e Raspberry Pi (Totvs)

Ponte H - L293B / L293D◦ Gilberto Santos – 3º ano de Sistemas de Informação da

UNIVILLE

Page 45: Palestra sobre Arduino e Raspberry Pi (Totvs)

GPS Shield XBee Shield Ethernet Shield

Motor Shield Game Shield

Page 46: Palestra sobre Arduino e Raspberry Pi (Totvs)

Ethernet WIFI

Motor

Page 47: Palestra sobre Arduino e Raspberry Pi (Totvs)

//http://www.ladyada.net/make/mshield/use.html

#include <AFMotor.h>

int sensorPin = A0;

double sensorVolts = 0;

double distance = 0;

AF_DCMotor motordir(3, MOTOR12_1KHZ);

AF_DCMotor motoresq(4, MOTOR12_1KHZ);

void setup() {

motoresq.setSpeed(255);

motordir.setSpeed(255);

Serial.begin(9600);

}

void loop() {

motoresq.run(FORWARD);

motordir.run(FORWARD);

sensorVolts = analogRead(sensorPin) * 0.0048828125;

distance = 65 * pow(sensorVolts, -1.10);

Serial.println(distance);

if (distance < 25) {

motoresq.run(RELEASE);

delay(3000);

motoresq.run(FORWARD);

}

delay(80);

}

Page 48: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 49: Palestra sobre Arduino e Raspberry Pi (Totvs)

Start

A Group of Apps

Netduino

Page 50: Palestra sobre Arduino e Raspberry Pi (Totvs)

.NET Micro Framework (Apache License 2.0) ◦ 2009◦ Dispositivos com 256KBytes flash e 64KBytes RAM◦ Netduino Criado pela Secret Labs 32 bits Microcontroller www.netduino.com

Page 51: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 52: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 53: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 54: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 55: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 56: Palestra sobre Arduino e Raspberry Pi (Totvs)

Criado por Prof. Eben Christopher Upton –2006 – Universidade de Cambridge

Objetivo:◦ Plataforma de Hardware e Software abertos para

ensinar crianças do reino unido a programar.

Raspberry Pi Foundation – 2012◦ Mais de 1 MILHÃO de unidades vendidas Model A - $25

Model B - $35

◦ Brasil http://www.farnellnewark.com.br

R$ 170,50 + Frete

BBC Micro Computer

Page 57: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 58: Palestra sobre Arduino e Raspberry Pi (Totvs)

Acessórios obrigatórios◦ Cartão de memória SD (8 giga)

◦ Fonte de alimentação USB (Tensão: 5v – Corrente 800 a 1000 mA)

◦ Teclado e Mouse

◦ Cabo HDMI / RCA

Mais informações◦ http://www.raspberrypi.org/

Page 59: Palestra sobre Arduino e Raspberry Pi (Totvs)

Instalação◦ Passo 1 – Download do Sistema Operacional

Page 60: Palestra sobre Arduino e Raspberry Pi (Totvs)

Instalação◦ Passo 2 – Gravar a imagem do Sistema Operacional

no cartão SD

Win32 DiskImager

http://sourceforge.net/projects/win32diskimager/

Page 61: Palestra sobre Arduino e Raspberry Pi (Totvs)

Instalação◦ Passo 3 – piconfig

Aplicativo de configuração do Raspberry Pi

Executado automaticamente na primeira inicialização ou pode ser chamado pelo console

Page 62: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 63: Palestra sobre Arduino e Raspberry Pi (Totvs)

Interface para simplificar e proteger as GPIO do Raspberry Pi◦ Portas digitais e analógicas

◦ Dois Reles

◦ Leds e Pin Buttons

Page 64: Palestra sobre Arduino e Raspberry Pi (Totvs)

PyGames◦ API para desenvolvimento de jogos

Page 65: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 66: Palestra sobre Arduino e Raspberry Pi (Totvs)
Page 67: Palestra sobre Arduino e Raspberry Pi (Totvs)

http://www.facebook.com/groups/383294078370453/

Page 68: Palestra sobre Arduino e Raspberry Pi (Totvs)

http://blog.univille.br/joinuino

Page 69: Palestra sobre Arduino e Raspberry Pi (Totvs)

Prof. Walter Silvestre Coan, Ms.Departamento de Informática

Universidade da Região de Joinville – UNIVILLEhttp://www.univille.br/deptoinformatica

http://www.facebook.com/BSIUnivillehttp://blog.univille.br/joinuino

e-mail: [email protected] – Twitter: waltercoanhttp://www.faltoupontoevirgula.com.br