Pesquisar

AFSmartRadio Tranceiver 915Mhz Lora

AFSmartRadio Tranceiver 915Mhz Lora Módulo AFsmart Lora V1.0 montado Arduino Pro-Mini e Rádio Rf4463PRO A Internet das coisas (...

Rede LoRa: o que é? quais são as aplicações?

Se é amante de tudo que é relacionado a IoT, possivelmente já deve ter ouvido falar sobre rede LoRa, certo?
É mais uma das mais populares dentre as redes de conectividade, é uma tecnologia de radiofrequência que cumpre com as expectativas de empresas que necessitam de um sinal em locais com baixa penetração de RF buscando praticidade no dia a dia.
O baixo consumo de energia e a possibilidade de atuar em grandes distâncias 5 Km nas áreas urbanas e até 15 Km nas áreas rurais, desta forma dão uma cara atrativa à rede, no entanto, apesar de ser bastante usado, antes de instalar o protocolo é preciso saber que o investimento não é dos mais baixos.
Umas vez que se faz necessário antenas de transmissão espalhadas pelo ambiente, além da estrutura completa de IoT. Sem contar que a LoRa só se comunica com dispositivos LoRa e não suporta conexões com sistemas que trabalham com outros portocolos WiFi, ZigBee e Bluetooth Low Energy (BLE).
Mesmo assim, o custo benefício vale a pena para negócios que se identificam com a rede e a instalação, apesar de um tanto cara, não é difícil de ser realizada.
Confira onde usar LoRa!
Aplicações da rede LoRa
Flexível, esse protocolo atende  muito  bem locais bastante povoados, como áreas rurais, cujo sinal de celular não tem alcance.
Mas, sua capacidade de transmitir informações é relativamente baixa, fazendo com que sua melhor performance é melhor aproveitada em aplicações que utilizam poucos dispositivos IoT em concentração, bem com baixa taxa de transmissão de informações.
Mesmo assim, ela se torna muito útil na agricultura, em ambientes hospitalares, cidades inteligentes e porque não logística de negócios, que necessitam automatizar processos que não dependam do recebimento – ou tratamento – de dados em frequência de tempo curta (ou em tempo real).
As frequências de transmissões possuem uma relação diretamente inversa entre distância e capacidade de transmissão. Assim, quanto mais longe uma radiofrequência alcança, menos sua capacidade de transmissão de dados.
Se sua empresa precisa de uma solução de baixa dependência de provedores e que tenha ótimo alcance, mas que não dependa de um volume de informações relevante, exemplo  envio de informações de temperatura de 200 dispositivos a cada 15 minutos, vale a pena investir no Lora sem maiores problemas.
Com isso a AFEletronica desenvolveu o equipamento para realização de um concentrador Lora utilizando-se de um Raspberry pi 3
 
O LoRa Shield é baseado no chip Semtech SX1276, destinado a aplicações de redes de sensores sem fio profissionais, como sistemas de irrigação, medição inteligente, cidades inteligentes, detecção de smartphones, automação predial e etc...
 
Características:
Módulo LoRa1276
Chip: SX1276
Frequência Central de operação: 915MHz
Sensibilidade: -139dBM (máximo)
Tensão de Alimentação do Shield: 9 ~ 12Vdc @ 1A
Corrente de consumo Lora 1276: 10,8mA (RX - recepção) e 120mA (TX - transmissão)
Potência máxima: 20dBM
Modo de modulação: LoRa, FSK, GFSK e OOK
Taxa de transferência: 0,018 à 37,5 Kbps (LoRa)
Interface de comunicação: SPI
Temperatura de trabalho: -40 à +85°C
Dimensões: 65 x 56 x 20 mm (sem antena)
Conector Antena tipo SMA




CLP AFSmart PIC16F877A

Precisando de um controlador lógico programável? O AFSmart PIC16F877a é uma opção, um produto desenvolvido pela AFEletronica no Brasil, a proposta entregar um produto de custo reduzido, mas com qualidade, o produto.

Os CLP’s são ferramentas muito úteis, por apresentar versatilidade na aplicação de sistemas de acionamentos e controle, utilizado em grande escala no ambiente industrial, mas também em geral são equipamentos eletrônicos utilizados em sistemas de automação flexível. O CLP AFSmart permite desenvolver e alterar facilmente a lógica para acionamento das saídas em função de suas entradas, assim, com o CLP AFSmart é possível associar diversos sinais de entrada para controlar diversos atuadores ligados em suas saídas.
O CLP AFSmart é projetado para substituir antigos quadros de comando de relés, possibilitando flexibilidade para possíveis mudanças na lógica de controle. O CLP AFSmart trabalha manipulando saídas conforme o estado de suas entradas, o usuário elabora um programa, normalmente por software que dá os resultados desejados. Praticamente qualquer aplicação que utiliza algum tipo de controle pode usar um CLP.
Exemplos:
  • Estações de bombeamento de fluidos;
  • Transportadores de cargas;
  • Máquinas de lavar veículos;
  • Sistemas de empacotamento;
  • Automação predial;
  • Sistema de alarme com monitoramento remoto.
A estrutura do CLP AFSmart pode ser dividida em três partes: entrada, processamento e saída, ao qual, os sinais de entrada e saída dos CLPs AFSmart em geral podem ser digitais ou analógicos. O CLP é basicamente um pequeno computador dedicado, onde se encontra uma unidade central de processamento na estrutura física, memória do tipo ROM para armazenamento do FIRMWARE, memória RAM para armazenamento de dados e programas do usuário, e dispositivos de entrada e saída para a comunicação com o exterior. A linguagem de programação do CLP AFSmart PIC16F877a é similar à linguagem de diagramas lógicos de acionamento desenvolvido por eletrotécnicos e profissionais da área de controle, cuja, linguagem é denominado linguagem de contatos ou simplesmente LADDER. No entanto o CLP AFSmart também pode ser programado em linguagem C.


Controle saída Módulo AFSmart ESP8266 ESP-01


Controle saída Módulo AFSmart ESP8266 ESP-01


Exemplo de Aplicação Web com a placa Desenvolvimento AFSmart 1 Rele um pulsador ESP8266 ESP-01 desenvolvido pela AFEletrônica 


Módulo Desenvolvimento ESP8266 ESP-01

Especificações Módulo Desenvolvimento
Tensão de operação: 100~240Vac @ 50-60Hz
Contatos: NA, 1 NF e o Comum.
Corrente Contatos Rele: 28 VDC ~ 10A ou 125VAC ~ 10A.
Led’s indicadores: Alimentação/Rele acionado
Dimensões: 47,2mm x 47,7mm x 20mm

Este módulo possibilita conexão direta do Conversor USB-Serial ao módulo de Desenvolvimento, sem necessidade de conexão de jumpers. Conexões muito mais limpa e rápida para desenvolvimento de suas aplicações, isso usando os conversores fornecidos pela AFEletrônica, mas caso já possua um conversor, basta seguir a pinagem TX/RX/GND e conectar ao módulo..

Botão Reset e Program direto na placa, tudo o que você precisa em uma única placa para você pensar no desenvolvimento do software e não perder tempo com montagens e mau contatos.
Cuidado
Energia Elétrica pode matar, desligue a alimentação geral para manuseio, use os equipamentos de segurança individual



Proposta de Conexão de Carga ao módulo AFSmart 1Rele e 1 Pulsador



Instalando o Driver PL2303 caso adquirido junto com o produto AFSmart - procedimento para o driver em específico. Para demais driver realize a instalação conforme orientação do fabricante.
Abra propriedades de seu computador/Gerenciador de Dispositivos, para verificar se o mesmo não foi reconhecido automaticamente pelo Windows.




Importante.Caso tenha reconhecido automaticamente, procure enviar sua aplicação pela IDE do Arduino, se não houver sucesso no envio, o mesmo pode estar desatualizado, desinstale e instale a versão mais atual do driver. Sempre atente para a versão de seu Windows, 32 ou 64 bits, de forma a instalar do driver correto. Instale o driver sem a placa estar conectada ao computador, uma vez realizada a instalação do driver, caso necessário reinicie o computador, após conecte a placa para o reconhecimento automático da mesma. Escolhendo a Placa na IDE Escolha a placa ESP8266 conforme imagem abaixo.

Em porta escolha a serial que foi atribuída à placa. Caso apareça mais de uma COM em Porta, Vá até gerenciador de dispositivos do Windows, desconecte a placa, conecte novamente para verificar a serial a ser escolhida em Porta


Módulo desenvolvido e testado na  versão IDE Arduino 1.6.12, versões superiores não testado.

Se sua IDE não possuir a placa ESP8266, instale seguindo o seguinte procedimento:

  1. Em Arquivos\Preferências no em laranja adicione o seguinte caminho: http://arduino.esp8266.com/stable/package_esp8266com_index.json


1.1-    Em Ferramentas\BoadManager clique na opção em laranja:


1.2-    Vá até ao final, clique para realizar a instalação das placas ESP8266



Pronto sua IDE esta pronta para trabalhar com módulos ESP8266

Para enviar seu código para o módulo, a mesma deve estar alimentada, não basta somente conectar  à porta USB do computador.

Enviando sua aplicação ao módulo AFsmart ESP8266 ESP-01
1. Pressione e segure simultaneamente os botões RESET e PGM
2. Solte o Botão RESET mantendo PGM pressionado
3. Solte Botão PGM
4. ... Pronto envie sua aplicação, o módulo já esta no modo de receber sua aplicação.
5. Nota Atente à pinagem de seu conversor USB-Serial que pode ser diferente se não foi adquirido junto com o produto.


Pinout Módulo



PIN
Descrição
Função
Leitura/Escrita
1
TX
TX
Comunicação Serial
2
GND
GND
-
3
CH_PD
CHPD
-
4
GPIO_2
PULSADOR
Leitura Nível Baixo
5
RESET
RESET
-
6
GPI0_0
RELE
Aciona Nível Baixo
7
Vcc
Vcc
3V3
8
RX
RX
Comunicação Serial

Código exemplo controle Rele com o módulo AFSmart.

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>


const char *ssid = "SSID da sua rede"; //  SSID da sua rede
const char *password = "senha da sua rede"; // senha da sua rede

IPAddress ip(192,168,1,33); // ip atribuido ao módulo
IPAddress gateway(192,168,1,1); // base ip da sua rede
IPAddress subnet(255,255,255,0);

WiFiServer server(80); // porta para entrada externa
const int rele1 = 0;
const int  pulsador = 2;
boolean estado_pulsador = HIGH;
String header;

const char* APssid = "AF ELETRONICA"; // para mudar o nome da placa na rede
const char* APpassword = "12345678"; // senha para conexão à placa

// the following variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 50;    // the debounce time; increase if the output flickers
int buttonState;             // the current reading from the input pin
int lastButtonState = LOW;   // the previous reading from the input pin


void setup ( void ) {

  pinMode ( rele1, OUTPUT );
  digitalWrite ( rele1, 1 );
  
  pinMode(pulsador,INPUT);

// Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("creating ");
  Serial.println(APssid);
  
  //WiFi.softAP(APssid);
  int channel = 2;
  WiFi.softAP(APssid, APpassword, channel);
  WiFi.begin(ssid, password);
  WiFi.config( ip,  gateway,  subnet);
  

  Serial.begin ( 115200 );
  delay(10);

  Serial.println();
  Serial.println();
  Serial.print("Conectando a...");
  Serial.println();
  Serial.println(ssid);
  
  
WiFi.begin ( ssid, password );
Serial.println ( "" );

// Wait for connection
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}

Serial.println ( "" );
Serial.print ( "Connected a " );
  Serial.println();
Serial.println ( ssid );

  server.begin();
  Serial.print ( "Server Inicializado" );
  Serial.println();
Serial.print ( "IP address: " );
Serial.println ( WiFi.localIP() );

  

}

void loop ( void ) {
   int estado_pulsador= digitalRead(pulsador);
   //String buf = "";
    int estado_rele1 = digitalRead(rele1);
   // Serial.println(estado_rele1);


    // If the switch changed, due to noise or pressing:
   if (estado_pulsador != lastButtonState) {
    // reset the debouncing timer
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:

    // if the button state has changed:
    if (estado_pulsador != buttonState) {
      buttonState = estado_pulsador;

      // only toggle the LED if the new button state is HIGH
      if (buttonState == LOW) {
        digitalWrite(rele1,!digitalRead(rele1));
      }
    }
  }

  lastButtonState = estado_pulsador;

 // Listenning for new clients
  WiFiClient client = server.available();


  if (client) {
    Serial.println("Novo Cliente");
       
    // bolean to locate when the http request ends
    boolean blank_line = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        header += c;
      // String req = client.readStringUntil('\r');
      // Serial.print(req);
  
        if (c == '\n' && blank_line) {
              // Serial.print(header);
          
                    client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println("Connection: close");
            //client.println("Refresh: 10");  // refresh the page automatically every 10 sec
            client.println();
            client.println("<!DOCTYPE HTML>");
            client.println("<html>");

            client.println("");
            
               
                
                 String buf = "";
                
                  
                  //buf += "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n";
                
                    buf += "<head>\r\n";
                    buf += "   <title>esp8266 webserver</title>\r\n";
                    buf += "</head>\r\n";
                    buf += "<body>\r\n";
                    buf += "<h1><a href=\"http://www.afeletronica.com.br/wireless-ct-8f6da\"><span style=\"color:#000000;\">ESP8266</span></a></h1>\r\n";
                
                  
                  buf += "<h3> ESP8266 Web Server by AFELetronica</h3>";
                  buf += "<p>RELE1 <a href=\"?function=Rele1_on\"><button>ON</button></a> <a href=\"?function=Rele1_off\"><button>OFF</button></a></p>";
                 // buf += "<p>RELE2 <a href=\"?function=Rele2_on\"><button>ON</button></a> <a href=\"?function=Rele2_off\"><button>OFF</button></a></p>";
                  buf += "<h4>AFELetronica</h4>";
                  buf += "</html>\n";
                  
                 //  client.println ("<button style=\"width:300px;height:40px;color:green;background-color:#87CEFB\"");
                 client.print(buf);
                
               // buf +=("<button style=\"width:300px;height:40px;color:green;background-color:#87CEFB\"");
                // client.println("<button style=\"width:120px;height:40px;color:green;background-color:#87CEFB\"");
           
                  //client.flush();

                  if (header.indexOf("Rele1_on") != -1){
                    digitalWrite(rele1, 0);
                     }
                     
                  else if (header.indexOf("Rele1_off") != -1){
                    digitalWrite(rele1, 1);
                     }

                  else {
                    Serial.println("invalid request");
                  //  client.stop();
                  }
                 // Serial.println("Client disonnected");
            
        header = "";
        break;
        }
        if (c == '\n') {
          // when starts reading a new line
          blank_line = true;
        }
        else if (c != '\r') {
          // when finds a character on the current line
          blank_line = false;
        }
      }
    }  
    // closing the client connection
    delay(1);
    client.stop();
    Serial.println("Client disconnected.");

  }
                   
                 
  }