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

基于 nRF24L01+ 与 ATtiny85 的三引脚无线传感器传输

组件与供应

nRF24L01+ 模块 ×2
ATtiny85 ×1
Arduino UNO(用作接收端) ×1
陶瓷电容 10nF ×1
碳膜电阻 22kΩ ×1
开关二极管 1N4148 ×1
3.3V 电源 ×1
nRF24L01+ 插座适配板(可选) ×1

项目简介

这是我之前“使用 Arduino UNO 编程 ATtiny85”项目的延续。采用更便宜的 ATtiny85 后,我寻找低成本传输传感器数据的方案,选中了廉价低功耗的 nRF24L01+ 收发模块。但 ATtiny85 引脚极少,无法同时连接 nRF24L01+ 和传感器。经过研究,发现“用 3 个 ATtiny85 引脚控制 nRF24L01+”的方案,本文记录实现过程。

模块划分

系统分为发射端和接收端。发射端:ATtiny85 通过 nRF24L01+ 发送递增数字;接收端:Arduino UNO 通过 nRF24L01+ 接收并在串口监视器显示。使用 RF24 库(官网),请先按说明安装到 Arduino IDE。

发射端

每秒发送一个递增的无符号长整型数值。ATtiny85 仅用 3 个引脚驱动 nRF24L01+,参考 Ralph Doncaster 的方法。所需元件:ATtiny85、nRF24L01+、10nF 电容、22kΩ 电阻、1N4148 二极管。

将代码上传至 ATtiny85(编程方法见前一项目)。连接如下图:

基于 nRF24L01+ 与 ATtiny85 的三引脚无线传感器传输
基于 nRF24L01+ 与 ATtiny85 的三引脚无线传感器传输
基于 nRF24L01+ 与 ATtiny85 的三引脚无线传感器传输

上电后发射端每秒发送一次递增数值。

接收端

接收发射端数据并在串口监视器打印。所需元件:Arduino UNO、nRF24L01+、插座适配板(可选)。上传接收代码,按下图连接:

基于 nRF24L01+ 与 ATtiny85 的三引脚无线传感器传输
基于 nRF24L01+ 与 ATtiny85 的三引脚无线传感器传输

注意:VCC 必须接 3.3V。部分 Arduino UNO 克隆板 3.3V 供电电流不足,导致 nRF24L01+ 无法工作。解决方法:

  1. 使用独立 3.3V 电源;
  2. 在模块 VCC 和 GND 间并联 10μF 电容;
  3. 使用 nRF24L01+ 插座适配板(自带稳压)。

测试:发射端上电,接收端连接电脑打开串口监视器(115200 波特率),应看到接收到的递增数值。

永久化制作

使用洞洞板焊接固化,如图所示:

基于 nRF24L01+ 与 ATtiny85 的三引脚无线传感器传输
基于 nRF24L01+ 与 ATtiny85 的三引脚无线传感器传输
基于 nRF24L01+ 与 ATtiny85 的三引脚无线传感器传输

本模块演示如何用仅 3 个 ATtiny85 引脚驱动 nRF24L01+,释放其余引脚读取传感器数据。欢迎反馈建议。

代码

发射端

#define CE_PIN 3
#define CSN_PIN 3 // 3引脚模式下 CE 和 CSN 共用同一引脚
#include "RF24.h"
RF24 radio(CE_PIN, CSN_PIN);
byte address[11] = "SimpleNode";
unsigned long payload = 0;
void setup() {
  radio.begin();
  radio.setAutoAck(1);
  radio.setRetries(15,15);
  radio.openWritingPipe(address);
}
void loop(void){
  payload++;
  radio.write(&payload, sizeof(unsigned long));
  delay(1000);
}

接收端

#define CE_PIN 7
#define CSN_PIN 8
#include <SPI.h>
#include "RF24.h"
RF24 radio(CE_PIN, CSN_PIN);
byte address[11] = "SimpleNode";
unsigned long payload = 0;
void setup() {
  Serial.begin(115200);
  radio.begin();
  radio.setAutoAck(1);
  radio.setRetries(15,15);
  radio.openReadingPipe(1, address);
  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);
  }
  delay(1000);
}

原理图

Fritzing 文件:

制造工艺

  1. 擀面杖:从伊特鲁里亚起源到现代工艺的演变
  2. 现代保龄球瓶的演变与工艺
  3. 柔软纸巾:乳液如何提升舒适度与性能
  4. 树莓派2上使用DS18B20读取温度完整指南
  5. 树莓派结合 Maxim 1-Wire 传感器与 DS2482 I2C 桥接器的多点温度测量
  6. 树莓派精准监测机柜温度:DS18B20 多点部署实战
  7. Posture Pal:Walabot 实时距离监测,预防颈背疼痛
  8. 树莓派手写数字识别:TensorFlow 与 OpenCV 实战部署
  9. TJBot 入门指南:构建、配置与语音控制您的 AI 机器人
  10. 树莓派自平衡Segway搭建全攻略
  11. 在树莓派 3 上扩展 GoPiGo v2 的 Windows 10 IoT Core 应用
  12. 开关控制电路实战:从原理图到面包板的基础电路构建