亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

nRF24L01+ with ATtiny85 3 Pins

组件和用品

nRF24L01+
× 2
ATtiny85
× 1
Arduino UNO
× 1
陶瓷电容 - 10nF
× 1
碳膜电阻 - 22kΩ
× 1
开关二极管 - 1n4148
× 1
电源 - 3v3
× 1
nRF24L01+ 插座适配器
可选
× 1

关于这个项目

这将是我之前使用 Arduino Uno 编程 ATtiny85 项目的延续。现在有了更便宜的 ATtiny85,我正在寻找更便宜的方法来传输传感器数据。这让我想到了 nRF24L01+ 一种廉价、低功耗的射频收发器。这对我来说似乎是更好的解决方案。但是有一个问题,ATtiny85 中的引脚数量限制。我无法同时连接 nRF24L01+ 和其中的传感器。所以我一直在寻找解决方案并遇到“nrf24l01+ control with 3 ATtiny85 pins”。我在这里讨论我是如何实现它的。


模块

这里将有发射器和接收器两个模块。发射器是 ATtiny85,发送一些数据,接收器是 Arduino Uno,通过 nRF25L01+ 接收数据。我使用 RF24 库 (http://tmrh20.github.io/RF24/)。在开始之前按照那里给出的说明将其添加到 Arduino IDE。我不会对 RF24 做太多解释,因为有关于它的非常好的文档。


发射器

发射器每秒发送一个递增的数字。 ATtiny85 将仅使用 3 个引脚通过 nRF24L01+ 发送数据。我按照 Ralph Doncaster 给出的说明进行实施。

所需的组件是

  • ATtiny85
  • nRF24L01+
  • 陶瓷电容器 - 10nF
  • 碳膜电阻器 - 22kΩ
  • 开关二极管 - 1n4148

将以下代码上传到 ATtiny85(如果您想知道如何操作,请参阅我之前的项目“使用 Arduino Uno 对 ATtiny85 进行编程”)

发件人.ino

如下图连接组件

接通电源后,发射器将开始每 1 秒发送一次数字序列。

接收器

接收端接收发送端发送的数据,在串口监视器中可以看到接收到的数据。

所需的组件是

  • Arduino Uno
  • nRF24L01+
  • nRF24L01+ 插座适配器(可选)

将以下代码上传到 Uno

接收器.ino

如下图连接组件


如果这不清楚,请参阅此项目附带的 fritzing 文件。请注意,Vcc 应始终为 3v3。在某些 Arduino Uno 克隆中,3v3 电源可能没有足够的电流,从而导致 nRF24L01+ 无法工作。建议使用以下任何一种方法来解决此问题

  1. 使用单独的 3v3 电源
  2. 在模块本身的 Vcc 和 Gnd 之间添加一个 10uF 电容器。
  3. 使用 nRF24L01+ 插座适配器


准备好发射器和接收器后,现在是时候进行测试了。确保变送器的电源处于 ON 状态。将 Arduino Uno 连接到 PC 并在 arduino ide 中打开串行监视器。它应该如下工作

使其永久化

由于我对焊接知之甚少,我使用穿孔板使其永久化。

这是一个更简单的模块,用于演示 nRF24L01+ 如何以及我们如何仅使用 ATtiny85 的 3 个引脚来连接它,以便其余引脚可用于读取传感器数据。欢迎提供反馈/建议。

代码

  • 发射器
  • 接收器
发送器C/C++
#define CE_PIN 3#define CSN_PIN 3 //由于我们使用的是 3 pin 配置,我们将对 CE 和 CSN 使用相同的 pin#include "RF24.h"RF24 radio(CE_PIN, CSN_PIN);byte address[11] ="SimpleNode";unsigned long payload =0;void setup() { radio.begin(); // 启动收音机 radio.setAutoAck(1); // 确保启用 autoACK radio.setRetries(15,15); // 重试和重试次数之间的最大延迟 radio.openWritingPipe(address); // 写入设备地址 'SimpleNode'}void loop(void){ payload++; radio.write( &payload, sizeof(unsigned long) ); //将数据发送到“接收器”每秒钟延迟(1000);}
接收器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设置(){ Serial.begin(115200);收音机。开始(); // 启动收音机 radio.setAutoAck(1); // 确保启用 autoACK radio.setRetries(15,15); // 重试和重试次数之间的最大延迟 radio.openReadingPipe(1, address); // 写入设备地址 '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(payload); } 延迟(1000);}

示意图

nRF24L01%2B(With%20Socket)%20Attiny85.fzz nRF24L01%2B%20Arduino%20Uno.fzz

制造工艺

  1. 带开关的电路
  2. 擀面杖
  3. 保龄球瓶
  4. 带乳液的纸巾
  5. 使用 DS18B20 读取温度 |树莓派 2
  6. 使用 RASPBERRY PI 测量温度
  7. 使用 Raspberry Pi 监测温度
  8. Walabot 的姿势伙伴
  9. 使用 PiCamera 进行 AI 数字识别
  10. TJBot 入门
  11. 使用 Raspberry Pi 构建赛格威
  12. GoPiGo v2 与 Windows IoT