Upload
joao-paulo-barraca
View
865
Download
0
Tags:
Embed Size (px)
Citation preview
DomusImagem: Flickr, zarprey
RobóticaImagem: Flickr, si-mocs
Do it Your SelfImagem: Flickr, johanneshjensen
Do it Your Selfcréditos: Nuno Ferreira
Do it Your Self
M2M
IoT
Objetivos
Melhorar conforto
Temperatura, luz…
Facilitar a vida
Automação portões, rega…
Alarmística
Arquitectura
1. Gateway !
3. Dispositivos !
5. Comunicações !
7. Plat. Agregação !
9. Visualização
Soluções Comerciais
Muita fragmentação
São “estáveis”
São verticais
Não interoperam
Algo caras
Soluções DIY
Não são estáveis!
Adaptadas aos casos de utilização
Limitadas pelo conhecimento de quem as desenvolve
Crescem à medida das necessidades
Soluções DIY
Muito mais baratas
Altamente educativas
Possibilidade de interagir com soluções comerciais ;)
Primeiros Passos
Interagir com sistemas existentes
Lista de material:
Campainha com RF
Arduino
Receptor 433Mhz
Campainha
Compostas por 2 sistemas: !
Detetor-Emissor Botão ou sensor magnético !
Rádio Alto-Falante
Campainha
Comunicação via RF 433.92Mhz
Sistema barato = comunicação simples :)
Modulação On Off Keying (OOK)
Nome complexo para enviar 1s e 0s de forma simples
Campainha OOKO nossa melhor amiga: Dongle USB DVB-T
Recebe RF entre 24Mhz e ~1700Mhz
Permite visualizar sinais
Campainha OOK
Campainha OOK
01
OOK em detalhe
OOK em detalhe
Campainha OOK
1 0 0 0 0 1 1 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 0
01
Campainha OOK
1 0 0 0 0 1 1 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 0
01
!
!
Na realidade não sabemos se um impulso longo é 0 ou 1
!
Mas para uma campainha isso não interessa :)
!
Campainha OOKDispositivos diferentes emitem identificadores diferentes
Campainha OOKFiabilidade? Claro, Múltiplas transmissões!
2, 6, 8, 10 vezes…. ou um CRC no final
Mensagem 1 Mensagem 2 …
RX/TX 433 OOK
Fornece/Aceita dados num único pin
Não necessita de configuração
Receptor Emissor
Código
pulseIn(pin, tipo, timeout)
!
Devolve o tempo de um impulso num pin
tipo HIGH: tempo que esteve a 1
tipo LOW: tempo que esteve a 0
timeout: tempo limite para esperar
Devolve zero se não for detectado um impulso
Código#define RX_PIN 3 #define MAX_VALORES 50 !uint16_t valores[MAX_VALORES]; byte num_valores = 0; !void setup(){ pinMode(RX_PIN, INPUT); Serial.begin(9600); }
Códigovoid loop(){ !! uint16_t tempo = pulseIn(RX_PIN, HIGH, 10000); valores[num_valores++] = tempo; if(num_valores == MAX_VALORES || tempo == 0){ imprime(valores, num_valores); num_valores = 0; } !!}
Códigovoid imprime(uint16_t valores[], byte num_valores){ ! for(int i = 0;i< num_valores; i++){ ! if(valores[i] < 800) Serial.print(0); else Serial.print(1); Serial.println(); } !}
Activar a campainha
Material necessário
Arduino
Rádio TX de 433Mhz
Processo:
Repetir os dados que ouvimos
Código
#define TX_PIN 4 #define TBASE 400 #define TTOTAL TBASE * 3 !void setup(){ pinMode(TX_PIN, OUTPUT); } !
Outras ideias, mesmo conceito
Interruptores remotos
Lâmpadas com controlo variável
Alarmes
Abertura de portas
Sinalização variada
Sensores variáveisAlguns dispositivos enviam dados variáveis
Estações metrológicas
Sensores de temperatura/corrente
Balanças
Necessária alguma “esperteza”
Sensores variáveisNecessário identificar tempo de bit!
Dicas:
Descartar um preâmbulo no início (~8 bits)
Procurar um identificador no início (8-16 bits)
Prever um CRC no final (1-8bits)
Variar valores e ver o que aparece
Valores fracionários são multiplicados por 10 ou 100
Desenvolver sistemas nossos
O suspeito do costume
Sensores e atuadores
RádioUSB Power Ou baterias
Imagens pertença dos autores respetivos
Longevidade?Usar ATMega328p diretamente
Desenvolve-se como um Arduino Menor velocidade (1-8Mhz) Muito menor consumo Meses ou anos a baterias
Ideias?
http://playground.arduino.cc/projects/ideas
!
http://duino4projects.com/projects/home-automation-projects/
!
Ebay.com, Arduino Sensors, search :)
Evoluir !
Acção directa -> Coordenação por serviços
OOK/FSK/ASK radios 315/433/868Mhz alguns kbits/s 1.5-20 euros
nRF24L01+ 2.4Ghz
até 2Mbits/s 0.8-5 euros
BLE até 1Mbit/s 5-15 euros
2.4Ghz até 250kbits/s 0.8-12 euros
nRF24L01+SPI, 3.3V, 5V tolerante
Interrupções
EnhancedShockburst: Endereçamento e CRC
2 versões:
Amplificada: 1km, 120mA TX/RX, 6 euros
Normal: 50m, 12mA TX/RX, 0.8 euros
Sensor Temperaturacusto < 5€, duração > 1 ano com uma bateria de 1000mA
ManiacBug SensorsImagem reproduzida sem autorização do autor.
Maniacbug: You are a source of inspiration for all of us!
RF24NetworkImagem reproduzida sem autorização do autor.
Maniacbug: You are a source of inspiration for all of us!
Monitorização estruturasPonte Crasto, Universidade de Aveiro
Agregação
Gateway
- Interliga sensores a serviços externos - Pode processar
localmente !
- Interface rádio local !
- Interface Ethernet WAN
Processamento
Várias plataformas
!
!
!
!
Maioritáriamente usando HTTP
Plataforma DIYProblemas comuns
Como adiciono mais um sensor?
modelo de dados
Como adiciono regras?
Como interagir com sistemas
Notificações para IOS, Android, etc…
Plataforma DIYCapaz de lidar com muitos eventos
Múltiplas fontes
Número não determinado de sensores
!
Usar MQTT em vez de HTTP
Arquitectura publish/subscribe
Plataforma DIYProdutores publicam mensagens em tópicos
ex: Open -> /casa/sala/porta
ex: 30% -> /casa/quarto/iluminação
!
Consumidores consomem mensagens e processam-nas
subscrever /casa/#
Plataforma DIY
Gateway
Plataforma DIY
Gateway
Bus Eventos
Plataforma DIY
Gateway
Bus Eventos
Persistência
Plataforma DIY
Gateway
Bus Eventos
Persistência Agentes de processamento
Plataforma DIY
Gateway
Bus Eventos
Persistência Agentes de processamento
Notificações
Plataforma DIY
Gateway
Bus Eventos
Persistência Agentes de processamento
Portais Notificações
Plataforma DIY
Gateway
Bus Eventos
Persistência Agentes de processamento
Portais Notificações
Serviços
Gateway
mosquitto
sqlite mqttwarn
Freeboard EmonCMS Pushbullet
IPMA
Prowl GTalk Email
IMDB FacebookOwntracks
VisualizaçãoEventos
Freeboard
EmonCMS
Owntracks
Imagem: Flickr, jvc