Trilha: Internet das Coisas
Arduino Legacy
Marcondes Maçaneiro
Luiz Avila
Marcondes Maçaneiro
Twitter: @marcondesm
E-mail: marcondesmacaneiro@gmail.com
Work at: UNIDAVI
Hobby Arduino
Marcondes Maçaneiro
Twitter: @lapavila
E-mail: lapavila@gmail.com
Work at: EFICID
Grupos de usuários: GUJavaSC, GDG Floripa
Agenda
● Introdução ao Arduino
● Motivação para Hackday
● Persiana Control
● Android Control
● Chrome Control
● Kineckt Control
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
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
Simplicidade
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
Tipo
● Mega
● Lilypad
● Nano
● Uno
● Pro
● Arduino BT
● Freeduino
● Severino
● Program-ME
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
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
Características Técnicas
Program-me v.20
Program-me v.20
Program-me v.20
Persiana Control
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;
}
Programação Arduino
void 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();
}
}
Cliente Android
#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();
}
Proposta para Nova Placa
Source Code
http://goo.gl/JpogTy
http://goo.gl/w7CCkX
@vsenger
@marcondesm
@lapavila

TDC2014 - Arduino Legacy

  • 1.
    Trilha: Internet dasCoisas Arduino Legacy Marcondes Maçaneiro Luiz Avila
  • 2.
    Marcondes Maçaneiro Twitter: @marcondesm E-mail:marcondesmacaneiro@gmail.com Work at: UNIDAVI Hobby Arduino
  • 3.
    Marcondes Maçaneiro Twitter: @lapavila E-mail:lapavila@gmail.com Work at: EFICID Grupos de usuários: GUJavaSC, GDG Floripa
  • 4.
    Agenda ● Introdução aoArduino ● Motivação para Hackday ● Persiana Control ● Android Control ● Chrome Control ● Kineckt Control
  • 5.
    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
  • 6.
    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
  • 7.
  • 8.
    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
  • 9.
    Tipo ● Mega ● Lilypad ●Nano ● Uno ● Pro ● Arduino BT ● Freeduino ● Severino ● Program-ME
  • 10.
    Atmega ● Características doATmega 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
  • 11.
    Características Técnicas ● 6canais 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
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
    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; }
  • 18.
    Programação Arduino void loop(){ EthernetClientclient = 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(); } }
  • 20.
  • 22.
    #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(); }
  • 23.
  • 24.
  • 25.
  • 26.