Postagens

Mostrando postagens de agosto, 2014

Câmera na janela

Estou ajudando alguns alunos lá no Automação no Parque a fazerem uma "casa domótica", que nada mais é do que uma casa comandada pelo celular. Um dos requisitos do projeto é o monitoramento remoto através de câmeras instaladas pela casa. Estamos usando o Raspberry Pi pelo fato do Arduino não conseguir lidar bem com imagens, e o Raspberry tem inclusive uma câmera feita prá ele que já foi usada por aqui em outros projetos . Começamos a trabalhar no projeto em maio, e na época pesquisamos várias alternativas para "publicar" as imagens da câmera na net. O fato é que, depois de muito apanhar, não conseguimos um resultado satisfatório. Aí os caras sumiram, foram cuidar de outras coisas como o protótipo da casa etc. Semana passada eles voltaram, e a gente fez a parte relativa ao sensor PIR que inclusive já foi publicada cá no último post . Voltamos então a pesquisar o assunto câmera-net e não é que achamos uma solução perfeita para a nossa necessidade? Basicamen

Sensor PIR de movimento

Imagem
Ontem no Automação do Parque uma turma que está fazendo um projeto de automação residencial reapareceu. Uma das demandas que tem o projeto deles é um sensor de presença, para funcionar como um alarme. Aí nos dedicamos a entendê-lo e usá-lo a partir do Raspberry. Como eu também tenho um, resolvi usá-lo também num projeto de MQTT que vou escrever mais tarde. O sensor de presença mais barato e comum é o PIR (Passive InfraRed), ou sensor passivo baseado em infravermelho. O sensor propriamente dito é esse aí: Dois pinos para alimentação e um para o sinal. Para usar em projetos normalmente se usa um dispositivo "inteligente", que já vem com um amplificador de sinal e também permite ajuste da sensibilidade e da latência (o que possibilita o sistema parar de dar alarme depois de um tempo se o movimento continua. Fica assim: Foi um esses daí que a gente usou ontem na brincadeira, e também é muito semelhante ao que eu tenho. Essa parte branca de plástico é uma lente coloc

MQTT - O protocolo da IoT (Internet das Coisas) II

Imagem
Primeiros exemplos de software Nesse post vamos ver como é fácil trocar mensagens usando-se o MQTT, em diferentes linguagens e sistemas operacionais. 1) O Broker Para os nossos testes usaremos o broker do Eclipse, que é publicado pelo site iot.eclise.org . É muito fácvil usá-lo, vc não tem que fazer inscrição nem nada, basta acessar o endereço iot.eclipse.org na porta 1883 com um cliente MQTT e pronto. Na realidade é um broker Mosquitto que os caras deixaram "aberto ao público". Outros clientes MQTT públicos podem ser encontrados aqui . 2) Python no PC Vamos começar com o Python para aprender como conectar coisas através do MQTT. Importante:  todos os exemplos em Python desse blog são em Python 2.7. Devem funcionar para versões mais recentes. O que precisamos: 1) Instalar o Python no Windows. Para isso, aqui tem um bom roteiro em português. 2) Instalar o cliente MQTT Python para que esteja disponível para nosso uso. Para isso, siga o roteiro abaixo.  Se v

MQTT - O protocolo da IoT (Internet das Coisas) I

Imagem
Srs frequentadores deste, Nos próximos posts vou fazer uma série sobre MQTT. A ideia é fazer como na série que fiz sobre PID , que até hoje são dos posts mais acessados desse blog. Seguiremos as mesmas premissas, a saber: - Rigor na teoria, abordando com precisão os conceitos envolvidos. - Apesar disso, uso de uma linguagem mais coloquial, facilitando o entendimento. - Abuso de exemplos práticos, relacionando o MQTT com outros assuntos. Boralá? O que é MQTT MQTT "stands for" (como dizem os conterrâneos do Obama)  Message Queue Telemetry Transport, ou Fila de Mensagem para Transporte de Telemetria.  É um protocolo (mais um!) do tipo publicar/subscrever, o que significa que "algo" publica mensagens em algum lugar e outro "algo" subscreve (assina, no sentido de assinatura de jornal/revista), recebendo as mensagens publicadas. Nesse tipo de protocolo não há comunicação direta entre o emissor e o receptor da mensagem, ou seja, não é "peer-to

Comunicação Serial no Arduino - dica

Nesse blog tem coisa de 90 posts, a grande maioria deles tratando de Arduino. Já são mais de três anos trabalhando com o Arduino e a gente ainda tem a aprender... Estou trabalhando de consultor na área de inovação de um cliente. Uma das demandas que apareceu ultimamente foi acessar através de comunicação serial um equipamento. Acontece que a saída do equipamento é RS-232 , e os processadores e computadores trabalham com TTL , então torna-se necessário converter os sinais entre eles. Resolvi testar o circuito que montei para isso no Arduino. Precisava então ver os dados que estariam sendo recebidos e também enviar dados. Quando fui fazer um programa para ler dados de uma serial e enviar para a serial default do Arduino o chefe, que tem a manha, me disse: "é só fazer um programa que não faça nada e enviar para o Arduino. Quando isso acontece o Arduino vira uma "ponte serial", lendo dados da porta e replicando o que chega na tela de terminal. O programa então fica assim:

Trinket, o menor Arduino-like II

Para testar a nossa plaquinha (depois de rodar o Blink, claro), resolvi acionar um servo. A lib de servo que vem com o Arduino não rola, porque o ATtiny não tem timer de 16 bits. Para "tocar" um servo precisamos então de uma outra lib, compatível. O povo da Adafruit fez uma, que vc pode baixar daqui . Essa lib tem um pequeno inconveniente: vc tem que chamar a rotina de refresh dela a intervalos de no máximo 20 milissegundos. Vamos analisar cá um exemplo. É o que vem com a lib, simplificado: #include <Adafruit_SoftServo.h> #define SERVO1PIN 0   Adafruit_SoftServo myServo1; void setup() { // Seta a rotina de interrupção (ver depois do loop)   OCR0A = 0xAF;     TIMSK |= _BV(OCIE0A);   myServo1.attach(SERVO1PIN); } void loop()  {   myServo1.write(0);   delay(2000);         myServo1.write(90);   delay(2000);         myServo1.write(180);   delay(2000);       } // Essa rotina é chamada de 2 em 2ms, então ajustamos para chamá-la a cada 20ms. SIGNAL(TIMER0_COMPA_v

Trinket, o menor Arduino-like I

Imagem
Dia desses comprei três Trinkets  na Amazon, mas no fim só chegaram dois, :(. Dei um pro Euclas e fui brincar com o meu. Eis aí as primeiras impressões. O hardware Essencialmente o Trinke é uma plaquinha baseada no ATTiny85 , processador de 8Kb de memória flash (para programas), 512 bytes EEPROM e 512 bytes SRAM. Com o bootloader (programa que recebe os programas que mandamos pela serial os "roda" no processador) sobra-nos pouco mais de 5k para trabalhar. Não dá para desenvolver nenhum Excel, mas dá para fazer aplicativos simples de automação residencial ou mesmo pequenos robôs. Vou fazer alguns para postar por aqui. Aqui, a plaquinha mais de perto: Dá prá ver aqui as características da bichinha. Existem dois modelos: 5V e 3V3, me arrependi de não tem comprada nenhuma de 3V3 para conectar direto do Raspberry. - Conector mini-USB para conexão ao PC e também para alimentação. Isso é muito legal, porque dá prá programar diretamente no PC e enviar o programa sem te