nRF24L01 + com ATtiny85 3 pinos
Componentes e suprimentos
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Sobre este projeto
Esta seria a continuação do meu projeto anterior de Programação ATtiny85 com Arduino Uno. Agora, com o ATtiny85 mais barato instalado, eu estava procurando maneiras mais baratas de transmitir os dados do sensor. O que me trouxe ao nRF24L01 + um transceptor RF barato e de baixa potência. Esta parecia ser a melhor solução para mim. Mas havia um problema, a limitação do número de pinos no ATtiny85. Não consigo conectar o nRF24L01 + e o sensor nele. Eu estava procurando por soluções e me deparei com "controle nrf24l01 + com 3 pinos ATtiny85". Aqui, discuto como o implementei.
Módulos
Haverá dois módulos aqui, transmissor e receptor. O transmissor seria um ATtiny85 enviando alguns dados e o receptor seria o Arduino Uno recebendo os dados via nRF25L01 +. Eu utilizo a biblioteca RF24 (http://tmrh20.github.io/RF24/). Siga as instruções fornecidas e adicione-o ao Arduino IDE antes de começar. Não vou explicar muito sobre o RF24, pois há uma documentação muito boa sobre ele.
Transmissor
O transmissor transmite um número crescente a cada segundo. O ATtiny85 enviará os dados via nRF24L01 + usando apenas 3 pinos. Sigo as instruções dadas por Ralph Doncaster para implementá-lo.
Os componentes necessários seriam
- ATtiny85
- nRF24L01 +
- Capacitor de cerâmica - 10nF
- Resistor de filme de carbono - 22kΩ
- Diodo de comutação - 1n4148
Carregue o código abaixo para ATtiny85 (consulte meu projeto anterior Programando ATtiny85 com Arduino Uno se quiser saber como)
sender.ino
Conecte os componentes conforme mostrado abaixo
Quando a fonte de alimentação for conectada, o transmissor começará a enviar sequência de números a cada 1 segundo.
Receptor
O receptor recebe os dados enviados pelo transmissor e os dados recebidos podem ser vistos no Monitor Serial.
Os componentes necessários seriam
- Arduino Uno
- nRF24L01 +
- nRF24L01 + Adaptador de soquete (opcional)
Faça upload do código abaixo para o Uno
receiver.ino
Conecte os componentes conforme mostrado abaixo
Se isso não estiver claro, consulte o arquivo fritzing anexado a este projeto. Observe que o Vcc deve ser sempre 3v3. Em alguns clones do Arduino Uno, a potência 3v3 pode não ter corrente suficiente, o que faz com que o nRF24L01 + não funcione. Qualquer um dos métodos abaixo são recomendados para resolver este
- Use uma fonte de alimentação 3v3 separada
- Adicione um capacitor de 10uF entre Vcc e Gnd no próprio módulo.
- Use um adaptador de soquete nRF24L01 +
Com o transmissor e o receptor prontos, agora é hora de testar. Certifique-se de que a fonte de alimentação do transmissor esteja LIGADA. Conecte o Arduino Uno ao PC e abra o monitor serial no arduino ide. Deve funcionar como abaixo
Tornando-o permanente
Com meu pouco conhecimento em soldagem, tornei-o permanente usando perfboard.
Este é um módulo mais simples para demonstrar como o nRF24L01 + e como podemos utilizar apenas 3 pinos do ATtiny85 para conectá-lo de forma que o resto dos pinos fiquem disponíveis para leitura dos dados do sensor. Feedbacks / sugestões são bem-vindos.
Código
- Transmissor
- Destinatário
Transmissor C / C ++
#define CE_PIN 3 # define CSN_PIN 3 // Como estamos usando a configuração de 3 pinos, usaremos o mesmo pino para CE e CSN # include "RF24.h" rádio RF24 (CE_PIN, CSN_PIN); endereço de byte [11] ="SimpleNode"; carga útil longa sem sinal =0; configuração void () {radio.begin (); // Inicie o rádio radio.setAutoAck (1); // Certifique-se de que o autoACK esteja ativado radio.setRetries (15,15); // Atraso máximo entre novas tentativas e número de tentativas radio.openWritingPipe (endereço); // Grava no endereço do dispositivo 'SimpleNode'} void loop (void) {payload ++; radio.write (&payload, sizeof (unsigned long)); // Envia dados para 'Receptor' a cada segundo de atraso (1000);}
Receptor C / C ++
#define CE_PIN 7 # define CSN_PIN 8 # inclui#include "RF24.h" rádio RF24 (CE_PIN, CSN_PIN); endereço de byte [11] ="SimpleNode"; carga útil longa sem sinal =0; vazio setup () {Serial.begin (115200); radio.begin (); // Inicie o rádio radio.setAutoAck (1); // Certifique-se de que o autoACK esteja ativado radio.setRetries (15,15); // Atraso máximo entre novas tentativas e número de tentativas radio.openReadingPipe (1, endereço); // Grava no endereço do dispositivo 'SimpleNode' radio.startListening ();} void loop (void) {radio.stopListening (); radio.startListening (); radio.read (&payload, sizeof (unsigned long)); if (carga útil! =0) {Serial.print ("Carga obtida"); Serial.println (carga útil); } atraso (1000);}
Esquemas
nRF24L01% 2B (com% 20Socket)% 20Attiny85.fzz nRF24L01% 2B% 20Arduino% 20Uno.fzzProcesso de manufatura
- Circuito com interruptor
- Rolling Pin
- Ler a temperatura com DS18B20 | Raspberry Pi 2
- Medindo a temperatura com RASPBERRY PI
- Monitorando a temperatura com Raspberry Pi
- Postura Pal com Walabot
- Reconhecimento de dígitos AI com PiCamera
- Introdução ao TJBot
- Construindo um segway com Raspberry Pi
- GoPiGo v2 com Windows IoT