Por Fernando Koyanagi 1

Documentos relacionados
Por Fernando Koyanagi 1

Por Fernando Koyanagi. ESP32 + chip SX1276

Por Fernando Koyanagi

Por Fernando Koyanagi 1

Por Fernando Koyanagi

Por Fernando Koyanagi

Por Fernando Koyanagi

Por Fernando Koyanagi

Por Fernando Koyanagi

Por Fernando Koyanagi

Projeto No. 15 Sensor Óptico Reflexivo

Programação do Arduino. Parte 1. IDE Wiring

Por Fernando Koyanagi 1

Projeto No. 11 Display de Leds de 7 Segmentos

Podem ser substituídos pelo módulo P7-Sensor de Luminosidade da GBK Robotics.

Por Fernando Koyanagi

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Programação em Linguagem C

Prá$cas Arduino. Manoel Neto

Over the Air OTA. Por Fernando Koyanagi

Bravas shield sample app 2017

introdução Olá, Após alimentar você deve enviar comandos AT para verificar que o modulo está funcionando e comunicando via serial.

Por Fernando Koyanagi

Curso de robótica 2. Novos conceitos de programação

Por Fernando Koyanagi

Por Fernando Koyanagi 1

Curso introdutório de microcontroladores - Plataforma Arduino

Arduino: primeiros passos para aprender e configurar.

Disciplina: Laboratório de Fis26

Por Fernando Koyanagi

ROBÓTICA 1 INTRODUÇÃO A PROGRAMAÇÃO NO ARDUINO

Projeto No. 19 Contador Binário com Chave Rotativa

PME-ESP8266 Guia do Usuário V1.0

Kit controle remoto IR acionando 3 Led com Arduino

Discentes: Weverton Lima e Juliete Souza Disciplina: Sistemas Embarcados Professor Orientador: Ilton Barbacena

TUTORIAL ALTÍMETRO LAE - P

Projeto No. 17 Infravermelho

Por Fernando Koyanagi

Introdução ao Arduino ESCOLA DE ARTES VISUAIS DO PARQUE LAGE. Núcleo de Arte e Tecnologia. julio lucio martin. Aula 07

Alarma Aê Projeto de alarme com envio de alerta para aplicativo para Smartphone.

Por Fernando Koyanagi

MINICURSO ARDUINO AVANÇADO

Projeto No. 12 Display de Led de 7 Segmentos

Conhecendo o ARDUINO LEGENDA

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Bravas shield light sample app 2017

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

arduino = new roboticalivre(); Arduino Marcus Fazzi

MANUALDEGUSTAÇÃO ARDUINO KIT INICIANTE V4.0

#include <SoftwareSerial.h> SoftwareSerial myserial(2, 3); // RX, TX

Listagem dos programas de controle (sketch) para a placa Arduino utilizados no presente trabalho.

Manual Técnico Arduino Supervisório MODBUS & Conversor RS485

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

Entrada de dados com botões

ETAPAS PARA A CONSTRUÇÃO DA SONDA

Arduino - Primeiros Passos

Curso: Tecnologias educacionais de baixo custo. Conector Ciência:

Hacking Class Controlando tomadas da sua casa via Internet

Arduino Aula 4 SHIELDS: BLUETOOTH, ETHERNET E EMG

Arduino. Prof. Maurício Dias

Por Fernando Koyanagi

Introdução ao Arduino ESCOLA DE ARTES VISUAIS DO PARQUE LAGE. Núcleo de Arte e Tecnologia. julio lucio martin. Aula 01

Introdução ao Arduino

Descrição dos pinos de entrada e saída e de funções especiais. Descrição dos modos de acesso: individual e por porto

Projeto No. 10 Relógio com LCD

Projeto No. 2 Potenciômetro

CANAL ANALÓGICO

SENSOR DE LUMINOSIDADE Com indicador de intervalo

Manual Técnico Arduino Supervisório RTC (Real Time Clock)

Arduino. Gilmar Aquino

Arduino. Introdução aos Componentes Básicos. Leonardo Mauro P. Moraes. Universidade Federal de Mato Grosso do Sul - UFMS.

- Tarefas Práticas de Programação usando Arduino - Imagem do Robô com Legendas

MINICURSO - PLATAFORMA ARDUINO Eixo de Informação e Comunicação Gil Eduardo de Andrade

Atividade de laboratório 003. Prof: Carlos Eduardo de Brito Novaes 29 de abril de Alunos RA Nome Curso Semestre

Por Fernando Koyanagi

Projeto Final de Microcontroladores 2 Alarme de Temperatura

Este tutorial mostra como utilizar as ferramentas Send Mail e Web Commands.

Arduino como ferramenta de aquisição de Dados

MINICURSO ARDUINO BÁSICO

Oficina de Programação utilizando a plataforma Arduino

Projeto 01. Adriano Joaquim de Oliveira Cruz Instituto de Matemática UFRJ 2015 Adriano Cruz. 30 de agosto de 2015

Oficina de Programação utilizando a plataforma Arduino

BEC- Bafômetro Embutido em Carros

ARDUINO BÁSICO E T A P A 1 O QUE É ARDUINO? Prof. Amadeu Zanon Neto

Manual Técnico Módulo Ponte H Dupla

Semáforo de 3 cores com interatividade (para carros e pedestres)

Arduino e Processing. Professor: Paulo Marcos Trentin Escola CDI Videira

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO PROJETO SCATMAN S DIMMER

InteropMix Arduino e Internet das Coisas. Leandro Ramos Leonardo Toledo Robson Machado

Sistemas Embebidos II Semestre de Verão de 2012/2013 Segunda atividade prática

Introdução ao Arduino. Pessanha Santos ASPOF EN-AEL

WEMOS D1 e MQTT Acionando Cargas pela Rede IoT

Roteiro de Comunicação Raspberry Arduino/ESP8266 com I2C

Programação Básica em Arduino Aula 2

Introdução. O que é o Arduino?

Lista de Exercícios A2

Comunicação Serial 1

Transcrição:

Por Fernando Koyanagi 1

Objetivo Nosso objetivo será criar um projeto no qual teremos dois ESP32 Lora se comunicando, um (EMISSOR) ligado ao sensor de barreira infravermelho e outro (RECEPTOR) ligado á um módulo relé. A cada um segundo, o EMISSOR envia um código para o RECEPTOR com o estado atual da barreira. 2

Lora Esp32 Olé 3

Módulo Relé 4

Sensor Infravermelho Ativo (IVA)

Características Sensor Infravermelho Ativo (IVA) -Feixe duplo -Ajuste por mira -Esse sensor infravermelho emite luz infravermelha através de um ponto e recebe esse sinal em outro ponto. -É como se houvesse uma linha invisível e ao atravessá-la é disparado o alarme. -Devido a essa característica, o sensor ativo é também chamado de sensor de barreira ou sensor perimetral. -Em relação a distância de funcionamento, ela pode variar de acordo com as características e fabricante do sensor. -Importante notar que esta distância deve ser informada pelo fabricante do Sensor Infravermelho Ativo (IVA). -Em caso de presença da chuva e da neblina a distância de operação cai consideravelmente (aprox. pela metade). 6

Sensor Infravermelho Ativo (IVA) Funcionamento -O Sensor Infravermelho Ativo(IVA) é um par de transmissor e receptor de sinais de luz infra-vermelha invisível ao ser humano. -Onde o transmissor emite sinais de luz infra-vermelha e o receptor recebe esses sinais, formando uma linha invisível. -A interrupção deste sinal de luz aciona uma central de alarme ou aciona qualquer outro comando que se faça necessário. -A fim de evitar alarmes falsos causados pela interrupção acidental do feixe de luz, existem sensores IVA com dois feixes de luz, que devem ser interrompidos simultaneamente para gerar um alarme. 7

Demonstração

Em www.fernandok.com Seu e-mail 9

Não conectado Montagem

Montagem

Bibliotecas Adicione a seguinte biblioteca Adafruit SSD1306. Basta acessar Sketch >> Incluir Bibliotecas >> Gerenciar Bibliotecas...

Programas Criaremos dois programas, um para o ESP32 Lora que trabalhará como EMISSOR e outro programa para o ESP32 Lora que trabalhará como RECEPTOR. 13

Programa EMISSOR O programa EMISSOR ficará configurado para verificar o estado da barreira. A cada 1 segundo enviará o estado atual da barreira para o RECEPTOR, além de sempre atualizar no display. 14

#include <SPI.h> #include <LoRa.h> #include <Wire.h> #include "SSD1306.h" //pino rele #define PIN_RELAY 23 Programa EMISSOR // Pin definetion of WIFI LoRa 32 // HelTec AutoMation 2017 support@heltec.cn #define SCK 5 // GPIO5 -- SX127x's SCK #define MISO 19 // GPIO19 -- SX127x's MISO #define MOSI 27 // GPIO27 -- SX127x's MOSI #define SS 18 // GPIO18 -- SX127x's CS #define RST 14 // GPIO14 -- SX127x's RESET #define DI00 26 // GPIO26 -- SX127x's IRQ(Interrupt Request) #define PABOOST true //frequencia de comunicação long int frequency = 433000000; //estato do relé int statusrelay = LOW; SSD1306 display(0x3c, 4, 15); 15

void setup() { pinmode(16,output); pinmode(2,output); Serial.begin(115200); pinmode(pin_relay, INPUT); digitalwrite(16, LOW); // set GPIO16 low to reset OLED delay(50); digitalwrite(16, HIGH); // while OLED is running, must set GPIO16 in high Setup display.init(); display.flipscreenvertically(); display.setfont(arialmt_plain_10); delay(1500); display.clear(); SPI.begin(SCK,MISO,MOSI,SS); LoRa.setPins(SS,RST,DI00); if (!LoRa.begin(frequency,PABOOST)) { display.drawstring(0, 0, "Starting LoRa failed!"); display.display(); while (1); LoRa.enableCrc(); display.drawstring(0, 0, "LoRa Initial success!"); display.display(); delay(1000);

Loop void loop() { //recupera o estado do relé statusrelay = digitalread(pin_relay); //se o relé ativou if( statusrelay == HIGH ) { refreshdisplay( Ativar Alarme ); else{ refreshdisplay( Estado Normal ); display.drawstring(0,45,"freq: "+String(frequency)); display.display(); sendpacket(statusrelay); //acende LED interno para indicar que enviou o pacote e da um delay digitalwrite(2, HIGH); // turn the LED on (HIGH is the voltage level) delay(500); // wait for a second digitalwrite(2, LOW); // turn the LED off by making the voltage LOW delay(500); // wait for a second

sendpacket e refreshdisplay //envia o pacote na rede Lora //parâmetro: status da barreira (HIGH LOW) void sendpacket(int status) { // envia um pacote LoRa.beginPacket(); LoRa.print("="); //delimitador LoRa.print(status); //1(ativo) ou 0(inativo) LoRa.print("#"); //delimitador LoRa.endPacket(); //atualiza as informações no display void refreshdisplay(string str) { display.clear(); display.settextalignment(text_align_left); display.setfont(arialmt_plain_16); display.drawstring(0, 0, str); display.display();

Programa RECEPTOR O programa RECEPTOR ficará escutando a rede Lora e caso receba um pacote com o seguinte formato: =S# Onde: S pode ser 1 (ativado) ou 0 (desativado) = e # são delimitadores De acordo com S, vamos ativar ou desativar o relé ligado a ele.

Programa RECEPTOR #include <SPI.h> #include <LoRa.h> #include <Wire.h> #include "SSD1306.h // Pin definetion of WIFI LoRa 32 // HelTec AutoMation 2017 support@heltec.cn #define SCK 5 // GPIO5 -- SX127x's SCK #define MISO 19 // GPIO19 -- SX127x's MISO #define MOSI 27 // GPIO27 -- SX127x's MOSI #define SS 18 // GPIO18 -- SX127x's CS #define RST 14 // GPIO14 -- SX127x's RESET #define DI00 26 // GPIO26 -- SX127x's IRQ(Interrupt Request) #define PABOOST true #define PIN_RELAY 23 SSD1306 display(0x3c, 4, 15); String rssi = "RSSI --"; String packsize = "--"; String packet ; long int frequency = 433000000; int statusrelay = LOW;

void setup() { Serial.begin(115200); pinmode(pin_relay, OUTPUT); pinmode(16,output); digitalwrite(16, LOW); // set GPIO16 low to reset OLED delay(50); digitalwrite(16, HIGH); // while OLED is running, must set GPIO16 in high display.init(); display.flipscreenvertically(); display.setfont(arialmt_plain_10); Setup delay(1500); display.clear(); SPI.begin(SCK,MISO,MOSI,SS); LoRa.setPins(SS,RST,DI00); if (!LoRa.begin(frequency,PABOOST)) { display.drawstring(0, 0, "Starting LoRa failed!"); display.display(); while (1); LoRa.enableCrc(); display.drawstring(0, 0, "LoRa Initial success!"); display.drawstring(0, 10, "Wait for incomm data..."); display.display(); delay(1000); LoRa.receive();

Loop e parserpacket void loop() { int packetsize = LoRa.parsePacket(); //imprime na tela a frequencia atual que está configurada display.drawstring(0,45,"freq: "+String(frequency)); display.display(); if (packetsize) { parserpacket(packetsize); //faz o parser do pacote recebido para tratar os dados void parserpacket(int packetsize) { packet =""; packsize = String(packetSize,DEC); for (int i = 0; i < packetsize; i++) { packet += (char) LoRa.read(); rssi = "RSSI " + String(LoRa.packetRssi(), DEC) ; parserdata(); loradata();

parserdata e loradata void parserdata() { // lembrando formato do pacote: =S# -> onde S é o estado da barreira (1 ou 0) String c1 = String(packet.charAt(0)); // delimitador 1 if(c1 == "="){ int c2 = String(packet.charAt(1)).toInt(); // status String c3 = String(packet.charAt(2)); // delimitador 2 if(c3 == "#"){ digitalwrite(pin_relay,c2); void loradata(){ display.clear(); display.settextalignment(text_align_left); display.setfont(arialmt_plain_16); display.drawstring(0, 5, rssi); display.drawstring(0, 20, packet); display.display();

Em www.fernandok.com Download arquivos PDF e INO do código fonte 24