O documento apresenta uma agenda para um hackday sobre Internet das Coisas utilizando a plataforma Arduino. A agenda inclui introdução ao Arduino, motivação para o evento e exemplos de projetos como controle de persianas, aplicativos para Android e Chrome e controle via Kinect.
4. Agenda
● Introdução ao Arduino
● 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
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
10. 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
11. 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
18. 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();
}
}