26
Trilha: Internet das Coisas Arduino Legacy Marcondes Maçaneiro Luiz Avila

TDC2014 - Arduino Legacy

Embed Size (px)

Citation preview

Page 1: TDC2014 - Arduino Legacy

Trilha: Internet das CoisasArduino Legacy

Marcondes MaçaneiroLuiz Avila

Page 2: TDC2014 - Arduino Legacy

Marcondes Maçaneiro

Twitter: @marcondesmE-mail: [email protected] at: UNIDAVIHobby Arduino

Page 3: TDC2014 - Arduino Legacy

Marcondes Maçaneiro

Twitter: @lapavilaE-mail: [email protected] at: EFICIDGrupos de usuários: GUJavaSC, GDG Floripa

Page 4: TDC2014 - Arduino Legacy

Agenda

● Introdução ao Arduino● Motivação para Hackday● Persiana Control● Android Control● Chrome Control● Kineckt Control

Page 5: TDC2014 - Arduino Legacy

Introdução ao Arduino

● Plataforma baseada em Atmel da AVR (ATMega168);● Oferece um IDE e bibliotecas de programação de alto

nível;● Open-source hardware e software● Ampla comunidade● Programado em C/C++● Transferência de firmware via USB● MCU com bootloader● Placa controladora com entradas e saídas

Page 6: TDC2014 - Arduino Legacy

História

● Mássimo Banzi (Institute Ivrea, em 2005)● Nasceu para programação, computação física e gráfica● Baseou-se no Processing para criação da IDE● Possui inúmeras variantes● Utiliza linguagem Wiring (baseado em C++)● Licença Creative Commons

Page 7: TDC2014 - Arduino Legacy

Simplicidade

Page 8: TDC2014 - Arduino Legacy

Aplicações Práticas

● Robôs● Roupas eletrônicas● Máquinas de corte e modelagem 3D de baixo custo● Segway open-source● Desenvolvimento de celulares customizados● Instrumentos musicais● Paredes interativas● Instrumentação humana

Page 9: TDC2014 - Arduino Legacy

Tipo

● Mega● Lilypad● Nano● Uno● Pro● Arduino BT● Freeduino● Severino● Program-ME

Page 10: TDC2014 - Arduino Legacy

Atmega

● Características do ATmega 168○ RISC○ 20 MIPS (20 Milhões de instruções por segundo)○ 16Kb Flash / 512 b EEPROM / 1Kb RAM Estática○ 10.000 ciclos na Flash e 100.000 na EEPROM○ 2 contadores / temporizadores de 8bits○ 1 contador / temporizador de 16bits○ 1 temporizador de tempo real com clock a parte○ 14 portas digitais○ 6 portas analógicas

Page 11: TDC2014 - Arduino Legacy

Características Técnicas

● 6 canais PWM● 6 conversores analógico/digital de 10 bits● 1 serial programável (USART)● 1 interface SPI (Serial Peripheral Interface)● 1 interface serial a 2 fios (I2C)● 1 watch dog timer programável● 1 comparador analógico no chip● Interrupção ou wake-up na alteração de

estado dos pinos

Page 12: TDC2014 - Arduino Legacy

Características Técnicas

Page 13: TDC2014 - Arduino Legacy

Program-me v.20

Page 14: TDC2014 - Arduino Legacy

Program-me v.20

Page 15: TDC2014 - Arduino Legacy

Program-me v.20

Page 16: TDC2014 - Arduino Legacy

Persiana Control

Page 17: TDC2014 - Arduino Legacy

Programação Arduino#include <SPI.h>#include <Ethernet.h>EthernetServer server(80); byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x40, 0x02 };IPAddress ip(192,168,100, 110);int ligaVermelho;int ligaAmarelo;int ligaVerde;void setup(){ Ethernet.begin(mac, ip); server.begin(); pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(9,OUTPUT); ligaVermelho = 0; ligaAmarelo = 0; ligaVerde = 0; }

Page 18: TDC2014 - Arduino Legacy

Programação Arduinovoid loop(){ EthernetClient client = server.available(); if(client){ //Se tiver cliente conectado String get; //Cria um String essa String armazenará o que vem do cliente while(client.connected()){ //Inicia um laço, que repetirá enquanto houver o cliente conectado if(client.available()){ //Se tiver conexão com cliente char c = client.read(); //Le o que vem do cliente (neste caso vem Char por Char) get.concat(c); //Vai concatenando cada char que vem na String get

if (c == '\n') { if(get.substring(6,10) == "ve=1") { ligaVermelho = 1; }else{

if(get.substring(6,10) == "ve=0") { ligaVermelho = 0; }

} client.stop(); }

}

Page 19: TDC2014 - Arduino Legacy
Page 20: TDC2014 - Arduino Legacy

Cliente Android

Page 21: TDC2014 - Arduino Legacy
Page 22: TDC2014 - Arduino Legacy

#include "Device.h"#include "etherShield.h"#include "ETHER_28J60.h"#include "Ethernet.h"Device homeDevice=Device("central-device");Ethernet ethernet=Ethernet(&homeDevice);

void setup() { homeDevice.add("buzz", PWM, 6); homeDevice.add("fan", PWM, 9); homeDevice.add("pwm-aux1", PWM, 3); homeDevice.add("pwm-aux2", PWM, 5); homeDevice.add("speaker", DIGITAL, 4); homeDevice.add("relay1", DIGITAL, 7); homeDevice.add("relay2", DIGITAL, 8);

homeDevice.add("relay3", DIGITAL, 15); homeDevice.add("relay4", DIGITAL, 14); homeDevice.add("light", ANALOG, 3); homeDevice.add("temp", ANALOG, 2); //Starting booth communication! Serial.begin(115200); int ip[]={192,168,100,115}; ethernet.startNetwork(ip);}

void loop() { homeDevice.loop(); ethernet.loop();}

Page 23: TDC2014 - Arduino Legacy

Proposta para Nova Placa

Page 25: TDC2014 - Arduino Legacy

@marcondesm