nRF24L01 + con ATtiny85 3 pines
Componentes y suministros
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Acerca de este proyecto
Esta sería la continuación de mi proyecto anterior Programando ATtiny85 con Arduino Uno. Ahora, con un ATtiny85 más barato, estaba buscando formas más económicas de transmitir los datos del sensor. Lo que me llevó a nRF24L01 +, un transceptor de RF barato y de baja potencia. Esta parecía ser la mejor solución para mí. Pero había un problema, la limitación en el número de pines en ATtiny85. No puedo conectar el nRF24L01 + y el sensor que contiene. Así que estaba buscando soluciones y encontré "nrf24l01 + control con 3 pines ATtiny85". Aquí hablo de cómo lo implementé.
Módulos
Habrá dos módulos aquí transmisor y receptor. El transmisor sería un ATtiny85 enviando algunos datos y el receptor sería Arduino Uno recibiendo los datos vía nRF25L01 +. Utilizo la biblioteca RF24 (http://tmrh20.github.io/RF24/). Siga las instrucciones que se dan allí y agréguelo a Arduino IDE antes de comenzar con esto. No explicaré mucho sobre RF24 ya que hay una muy buena documentación al respecto.
Transmisor
El transmisor transmite un número creciente cada segundo. El ATtiny85 enviará los datos a través de nRF24L01 + usando solo 3 pines. Sigo las instrucciones dadas por Ralph Doncaster para implementarlo.
Los componentes necesarios serían
- ATtiny85
- nRF24L01 +
- Condensador cerámico - 10nF
- Resistencia de película de carbono - 22kΩ
- Diodo de conmutación - 1n4148
Sube el siguiente código a ATtiny85 (consulta mi proyecto anterior Programando ATtiny85 con Arduino Uno si quieres saber cómo)
sender.inoConecte los componentes como se muestra a continuación
Cuando la fuente de alimentación está conectada, el transmisor comenzará a enviar una secuencia de números cada 1 segundo.
Receptor
El receptor recibe los datos enviados por el transmisor y los datos recibidos se pueden ver en el Monitor de serie.
Los componentes necesarios serían
- Arduino Uno
- nRF24L01 +
- nRF24L01 + Adaptador de enchufe (opcional)
Sube el siguiente código a Uno
receptor.inoConecte los componentes como se muestra a continuación
Si esto no está claro, consulte el archivo de fritzing adjunto con este proyecto. Tenga en cuenta que Vcc debe ser siempre 3v3. En algunos clones de Arduino Uno, es posible que la potencia 3v3 no tenga suficiente corriente, lo que hace que nRF24L01 + no funcione. Se recomienda cualquiera de los métodos siguientes para resolver este problema.
- Utilice una fuente de alimentación 3v3 separada
- Agregue un capacitor de 10uF entre Vcc y Gnd en el módulo mismo.
- Utilice un adaptador de enchufe nRF24L01 +
Con el transmisor y el receptor listos, ahora es el momento de probar. Asegúrese de que la fuente de alimentación del transmisor esté encendida. Conecte el Arduino Uno a la PC y abra el monitor serial en arduino ide. Debería funcionar como se muestra a continuación
Haciéndolo permanente
Con mi poco conocimiento en soldadura, lo hice permanente usando perfboard.
Este es un módulo más simple para demostrar cómo el nRF24L01 + y cómo podemos utilizar solo 3 pines de ATtiny85 para conectarlo de modo que el resto de los pines estén disponibles para leer los datos del sensor. Los comentarios / sugerencias son bienvenidos.
Código
- Transmisor
- Receptor
Transmisor C / C ++
#define CE_PIN 3 # define CSN_PIN 3 // Como estamos usando una configuración de 3 pines, usaremos el mismo pin para CE y CSN # incluye "RF24.h" Radio RF24 (CE_PIN, CSN_PIN); dirección de byte [11] ="SimpleNode"; carga útil larga sin firmar =0; configuración vacía () {radio.begin (); // Inicie la radio radio.setAutoAck (1); // Asegúrese de que autoACK esté habilitado radio.setRetries (15,15); // Retraso máximo entre reintentos y número de reintentos radio.openWritingPipe (address); // Escribe en la dirección del dispositivo 'SimpleNode'} void loop (void) {payload ++; radio.write (&payload, sizeof (unsigned long)); // Enviar datos a 'Receiver' cada segundo de retraso (1000);}
Receptor C / C ++
#define CE_PIN 7 # define CSN_PIN 8 # include#include "RF24.h" RF24 radio (CE_PIN, CSN_PIN); byte address [11] ="SimpleNode"; unsigned long payload =0; void setup () {Serial.begin (115200); radio.begin (); // Inicie la radio radio.setAutoAck (1); // Asegúrese de que autoACK esté habilitado radio.setRetries (15,15); // Retraso máximo entre reintentos y número de reintentos radio.openReadingPipe (1, address); // Escribe en la dirección del dispositivo 'SimpleNode' radio.startListening ();} void loop (void) {radio.stopListening (); radio.startListening (); radio.read (&payload, sizeof (unsigned long)); if (payload! =0) {Serial.print ("Got Payload"); Serial.println (carga útil); } retraso (1000);}
Esquemas
nRF24L01% 2B (con% 20Socket)% 20Attiny85.fzz nRF24L01% 2B% 20Arduino% 20Uno.fzzProceso de manufactura
- Circuito con un interruptor
- Rodillo
- Pin de bolos
- Leer temperatura con DS18B20 | Raspberry Pi 2
- Medición de temperatura con RASPBERRY PI
- Supervisión de la temperatura con Raspberry Pi
- Posture Pal con Walabot
- Reconocimiento de dígitos AI con PiCamera
- Introducción a TJBot
- Construyendo un segway con Raspberry Pi
- GoPiGo v2 con Windows IoT