- Explicação de trabalho:
- Componentes necessários:
- Diagrama de circuito:
- Trabalhando com nRF24L01 + Módulo Transceptor Sem Fio:
- Programando os Arduinos:
- Programa de processamento:
- Teste:
Criar uma rede local para compartilhar dados pessoais e confidenciais tornou-se quase impossível para um homem comum em nosso mundo moderno. Isso ocorre principalmente porque todos os métodos de chat comuns como Whatsapp, Facebook, Hangout e quase tudo envolve uma conexão com a internet.
E se pudéssemos compartilhar dados sem o meio da Internet ?
Não seria legal se você pudesse se comunicar com pessoas dentro de sua casa ou local de trabalho sem um pacote de rede ou conexão com a Internet?
E se pudéssemos personalizar nossa tela de chat com nossa própria imaginação?
Tudo isso é possível com um microcontrolador e um meio de transmissão sem fio. Esta sala de chat do Arduino usando o projeto nRF24L01 irá guiá-lo na configuração de uma sala de chat de baixo custo em sua área local.
Então, vamos pular e ver como funciona.
Explicação de trabalho:
Basicamente, para fazer isso funcionar, precisaremos de um par de placas Arduino e módulos wireless baratos. Os módulos wireless que usaremos aqui são nRF24L01. A razão para escolher esses módulos é que eles são os sucessores do Zigbee e são fáceis de trabalhar com uma conexão configurada. Além disso, esses módulos funcionam em 2,4 GHz (banda ISM) com espectro de propagação de salto de frequência e opções de burst de choque, o que nos deixa relaxados quanto a problemas de interferência.
Nosso Arduino e NRF24L01 são conectados para estabelecer uma comunicação serial para que eles possam se comunicar. Os NRF24L01 são módulos transceptores half duplex, portanto podem enviar e receber dados. Os dados são coletados do usuário e transmitidos; esses dados podem ser recebidos por qualquer (ou um determinado) módulo e exibidos em sua tela.
Mas!!!!! Vamos bater um papo usando a tela de depuração do Arduino? Claro que não. Vamos construir e personalizar nossa própria tela de bate-papo com a ajuda de 'Processamento'. O Processing é um software capaz de se comunicar com o Arduino usando o UART. Vamos criar um arquivo.exe com linguagem de processamento, que pode rodar em qualquer computador com Java Runtime. Para conversar, basta conectar nosso Arduino e abrir esse arquivo.exe e Booooom !! estamos em nossa própria sala de bate-papo Privatizada totalmente gratuita.
Este projeto está limitado a apenas adicionar dois membros à sala de chat, mas o nRF24L01 tem 6 pipelines e, portanto, pode haver no máximo 6 membros em nossa sala de chat. Esta sala pode funcionar dentro do intervalo de 100 metros, dependendo dos módulos nRF24L01.
Então vamos às compras !!!!
Componentes necessários:
- Arduino (qualquer versão ou modelo) - 2Nos
- Módulo transceptor sem fio nRF24L01 + - 2Nos
- 3.3 Regulador de tensão - 2Nos. (Não obrigatório)
- Fios de conexão
- Interesse (risos)
Diagrama de circuito:
Arduino Mega com nRF24L01:
Arduino Nano com nRF24L01:
Nosso projeto não envolve nenhuma conexão complexa. Usei um Arduino Mega e um Arduino Nano e suas conexões com nRF24L01 são mostradas acima. Você pode usar qualquer modelo Arduino.
Trabalhando com nRF24L01 + Módulo Transceptor Sem Fio:
No entanto, para que nosso nRF24L01 funcione sem ruído, devemos considerar o seguinte. Venho trabalhando neste nRF24L01 + há muito tempo e aprendi que os seguintes pontos podem ajudá-lo a não ser atingido em uma parede.
1. A maioria dos módulos nRF24L01 + disponíveis no mercado são falsos. Os baratos que podemos encontrar no Ebay e Amazon são os piores (não se preocupe, com alguns ajustes podemos fazê-los funcionar)
2. O principal problema é a fonte de alimentação, não o seu código. A maioria dos códigos on-line funcionará corretamente. Eu mesmo tenho um código que testei pessoalmente. Avise-me se precisar deles
3. Preste atenção porque os módulos que são impressos como NRF24L01 + são na verdade Si24Ri (sim, um produto chinês).
4. Os módulos clone e falsos vão consumir mais energia, portanto, não desenvolva seu circuito de energia com base no nRF24L01 + datasheet, porque o Si24Ri terá alto consumo de corrente em torno de 250mA.
5. Cuidado com ondulações de tensão e picos de corrente, esses módulos são muito sensíveis e podem queimar facilmente. (;-(fritou 2 módulos até agora)
6. Adicionar dois capacitores (10uF e 0,1uF) em Vcc e Gnd do módulo ajuda a tornar sua alimentação pura e isso funciona para a maioria dos módulos.
Mesmo assim, se você tiver problemas, relate a seção de comentários ou leia isso.
Programando os Arduinos:
O programa para Arduino Nano e Mega será semelhante para a alteração dos pinos CE e CS. Explicarei o programa dividindo-o em pequenos segmentos.
Como o Arduino e o nRF24L01 se comunicam por meio do SPI, chamamos a biblioteca SPI. Também incluímos nossa lib Maniacbug RF24 para que nossos módulos RF funcionem. Baixe o arquivo aqui e adicione-o ao seu IDE.
#incluir
Nossos módulos NRF são conectados aos pinos 8 e 10 para CE e CS, respectivamente.
RF24 myRadio (8, 10);
Criamos um pacote de dados estruturados chamado pacote . O texto variável será usado para transmitir dados no ar.
pacote de estrutura {texto char; // Texto para transmitir no ar}; typedef struct package Package; Dados do pacote;
Na função void setup () , inicializamos a taxa de transmissão para 9600 e configuramos nossos módulos para 115 com consumo mínimo de energia e velocidade de 250 KBPS. Você pode brincar com esses valores mais tarde.
void setup () {Serial.begin (9600); atraso (1000); //Serial.print("Setup Initialized "); myRadio.begin (); myRadio.setChannel (115); // 115 bandas acima de sinais WIFI myRadio.setPALevel (RF24_PA_MIN); // Potência mínima de baixa raiva myRadio.setDataRate (RF24_250KBPS); // Velocidade mínima}
O módulo é feito para funcionar no modo de transmissão se os dados forem recebidos através do buffer serial, caso contrário, estará no modo receptor procurando por dados no ar. Os dados do usuário são armazenados em um Array char e enviados para WriteData () para transmiti-los.
void loop () {while (Serial.available ()> 0) // Obter valores do usuário {val = Serial.peek (); if (index <19) // Um a menos que o tamanho do array {inChar = Serial.read (); // Lê um caractere inData = inChar; // Armazena o índice ++; // Incrementa onde escrever a seguir inData = '\ 0'; // Nulo termina a string} if (val == '#') {strcpy (data.text, inData); WriteData (); // Coloca o módulo no modo de transmissão enquanto (índice! = 0) {inData = ''; índice--; }}} ReadData (); // Colocar o modo de recebimento do módulo}
A função void WriteData () grava os dados no endereço 0xF0F0F0F0AA, este endereço é usado como canal de gravação em outro módulo.
void WriteData () {myRadio.stopListening (); // Parar de receber e começar a transminar myRadio.openWritingPipe (0xF0F0F0F066); // Envia dados neste endereço de 40 bits myRadio.write (& data, sizeof (data)); atraso (300); }
A função void ReadData () grava os dados em 0xF0F0F0F066 neste endereço, este endereço é usado como tubo de leitura em outro módulo.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Qual tubo ler, endereço de 40 bits myRadio.startListening (); // Parar a transmissão e iniciar o Reveicing if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
É isso, nossa parte de programação acabou. Se você não consegue entender algumas coisas aqui, verifique os dois programas para ambos os Arduinos, fornecidos na seção Código abaixo, adicionei linhas de comentários para explicar as coisas muito melhor.
Programa de processamento:
'Processing' é um software de código aberto usado por artistas para design gráfico. Este software é usado para desenvolver software e aplicativos Android. É muito fácil de desenvolver e muito semelhante ao IDE de desenvolvimento Android. Portanto, encurtei a explicação.
O código de processamento para ambas as telas de bate - papo é fornecido aqui:
- Código de processamento da tela de bate-papo 1
- Código de processamento da tela de bate-papo 2
Clique com o botão direito sobre eles e clique em 'Salvar link como..' para baixá-los e abri-los em seu computador após configurar os Arduinos. Você precisa instalar o software 'Processing' para abrir esses arquivos *.pde e, em seguida, 'Executar' para abrir as caixas de bate-papo. A seção de comentários está aberta para consultas. O esboço de processamento para o módulo transmissor e receptor são idênticos.
Na seção de código a seguir, a "porta = new Serial (this, Serial.list (), 9600); // Lê a 4ª PORTA a 9600 baudrate" é importante, pois decide de qual porta os dados serão fornecidos .
configuração vazia () {tamanho (510.500); porta = novo Serial (isto, Serial.list (), 9600); // Lê a 4ª PORTA a 9600 baudrate println (Serial.list ()); fundo (0); }
Aqui, li dados da 4ª porta do meu Arduino.
Então, por exemplo, se você tiver COM COM COM COM COM
Então, o código acima lerá os dados do COM.
Teste:
Agora que nosso esboço de processamento e Arduino está pronto, basta fazer o upload do programa para o Arduino e deixá-lo conectado ao seu laptop. Abra seu sketch de Processing e comece a digitar e pressione "Enter", sua mensagem será transmitida para o outro Arduino que exibirá o texto recebido em outro aplicativo de Processing conectado a outro computador. Além disso, verifique o vídeo abaixo para uma demonstração completa.
Portanto, é assim que você pode conversar com seus amigos e familiares em sua área local sem ter nenhuma conexão com a Internet, usando a barata sala de chat do Arduino.