器材清单:
Arduino Mango*1
Arduino Nano*1 ( 这2个随便不一定用这两个 )
NRF2401*2
带字库的12864一块
LM35温度传感器*1
杜邦线若干
NRF2401
1:参数
NRF24L01是一款工作在2.4-2.5GHz世界通用ISM频段的单片收发芯片,无线收发器包括:频率发生器 增强型 SchockBurstTM 模式控制器 功率放大器 晶体放大器 调制器 解调器 输出功率频道选择和协议的设置可以通过SPI接口进行设置极低的电流消耗。
全球开放ISM频段,最大0dBm发射功率,免许可证使用。
支持六路通道的数据接收
1.低工作电压:1.9~3.6V低电压工作
2.高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置1Mbps或者2Mbps的空中传输速率)
3.多频点:125频点,满足多点通信和跳频通信需要
4.超小型:内置2.4GHz天线,体积小巧,15x29mm(包括天线)
5.低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。
2 引脚
这种类型的默认不标明引脚,需要看图
温度传感器 LM35
1.参数
LM35是由National Semiconductor所生产的温度感测器,其输出电压与摄氏温标呈线性关系,转换公式如式(1),0°C时输出为0V,每升高 1°C,输出电压增加10mV。
工作电压:直流4~30V;
•工作电流:小于133μA
•输出电压:+6V~-1.0V
•输出阻抗:1mA负载时0.1Ω;
•精度:0.5℃精度(在+25℃时);
•漏泄电流:小于60µA;
•比例因数:线性+10.0mV/℃;
•非线性值:±1/4℃;
•校准方式:直接用摄氏温度校准;
•封装:密封TO-46晶体管封装或塑料TO-92晶体管封装;
•使用温度范围:-55~+150℃额定范围。
2 引脚
引脚介绍: ①正电源Vcc;②输出;③输出地/电源地。
接线:
程序部分:
发射端:
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
//long temp;
float temp;
char st[5];
int potPin = 4; //设置模拟口4为LM35的信号输入端口
float temperature = 0; //设置temperature为浮点变量
long val=0;
void setup(){
Serial.begin(9600);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"clie1"); // 标记本地名,用于接收
Mirf.payload = 5; //对话的长度,用于约定双方对话的缓冲窗口大小,这个代表5个字节
Mirf.channel = 11; // 信道,测试了一下,不同的信道也能接收但即时性很差,不知是不是存在自动寻道匹配机制
Mirf.config();
}
void loop(){
// unsigned long time = millis();
//Mirf.send((byte *)&time);
val = analogRead(potPin); //val变量为从LM35信号口读取到的数值
temperature = (val*0.0048828125*1000); //把读取到的val转换为温度数值的10倍
temp=temperature / 10;
dtostrf(temp,4,2,st);//
unsigned long time = millis();
Mirf.setTADDR((byte *)"serv1"); // 标记对方的地址
//sprintf(st ,"%f",temp);
Sends(st); //发送了一个5字节的hello
delay(1000);
}
void Sends(const char *str)
{
int lens;
lens=strlen(str);
char msg[lens];
int i;
for (i=0;i<lens;i++)
{
msg[i]= int(str[i]);
}
Mirf.send((byte *)&msg);
while(Mirf.isSending())
{}
}
接收端:
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#include "U8glib.h"
U8GLIB_ST7920_128X64_1X u8g(2,3,4);
//U8GLIB_SSD1306_128X64 u8g(5, 6, 9, 10);// D0 , D1 , CS , DC
int i, flag;
String Temp;
void draw(void)
{
u8g.setFont(u8g_font_timB10);
u8g.drawStr( 0, 10, "NRF240l Receive");
//u8g.setFont(u8g_font_tpss);
if (flag == 1)
{
u8g.setPrintPos(1, 26);
u8g.print(Mirf.payload);
u8g.setPrintPos(1, 40);
u8g.print(Temp);
}
else
{
u8g.setFont(u8g_font_tpss);
u8g.drawStr( 1, 26, "NO Receive");
}
// u8g.setPrintPos(1, 36);
//u8g.print(Temp);
}
void setup(void)
{
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"serv1"); // 本地名
Mirf.payload = 4; // 长度
Mirf.channel = 11; // 信道
Mirf.config();
}
void loop(void) {
byte data[Mirf.payload];
if (!Mirf.isSending() && Mirf.dataReady())
{ //存在数据
Mirf.getData(data);
Temp="";
flag = 1;
for (i = 0; i < Mirf.payload; i++) //把收到的信息拼起来,到一个串里面
{
Temp += char(data[i]);
}
}
else
{
flag = 0;
}
u8g.firstPage();
do {
draw();
}
while ( u8g.nextPage() );
delay(50);
}
mirf 库下载地址:
http://playground.arduino.cc/uploads/InterfacingWithHardware/Mirf.zip
这个是官网的,新的1.5.5-r2 的IDE版本也可以拿来直接用
Sketch
U8glib库下载地址:
http://code.google.com/p/u8glib/wiki/u8glib
Arduino Mango*1
Arduino Nano*1 ( 这2个随便不一定用这两个 )
NRF2401*2
带字库的12864一块
LM35温度传感器*1
杜邦线若干
NRF2401
1:参数
NRF24L01是一款工作在2.4-2.5GHz世界通用ISM频段的单片收发芯片,无线收发器包括:频率发生器 增强型 SchockBurstTM 模式控制器 功率放大器 晶体放大器 调制器 解调器 输出功率频道选择和协议的设置可以通过SPI接口进行设置极低的电流消耗。
全球开放ISM频段,最大0dBm发射功率,免许可证使用。
支持六路通道的数据接收
1.低工作电压:1.9~3.6V低电压工作
2.高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置1Mbps或者2Mbps的空中传输速率)
3.多频点:125频点,满足多点通信和跳频通信需要
4.超小型:内置2.4GHz天线,体积小巧,15x29mm(包括天线)
5.低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。
2 引脚
这种类型的默认不标明引脚,需要看图
温度传感器 LM35
1.参数
LM35是由National Semiconductor所生产的温度感测器,其输出电压与摄氏温标呈线性关系,转换公式如式(1),0°C时输出为0V,每升高 1°C,输出电压增加10mV。
工作电压:直流4~30V;
•工作电流:小于133μA
•输出电压:+6V~-1.0V
•输出阻抗:1mA负载时0.1Ω;
•精度:0.5℃精度(在+25℃时);
•漏泄电流:小于60µA;
•比例因数:线性+10.0mV/℃;
•非线性值:±1/4℃;
•校准方式:直接用摄氏温度校准;
•封装:密封TO-46晶体管封装或塑料TO-92晶体管封装;
•使用温度范围:-55~+150℃额定范围。
2 引脚
引脚介绍: ①正电源Vcc;②输出;③输出地/电源地。
接线:
程序部分:
发射端:
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
//long temp;
float temp;
char st[5];
int potPin = 4; //设置模拟口4为LM35的信号输入端口
float temperature = 0; //设置temperature为浮点变量
long val=0;
void setup(){
Serial.begin(9600);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"clie1"); // 标记本地名,用于接收
Mirf.payload = 5; //对话的长度,用于约定双方对话的缓冲窗口大小,这个代表5个字节
Mirf.channel = 11; // 信道,测试了一下,不同的信道也能接收但即时性很差,不知是不是存在自动寻道匹配机制
Mirf.config();
}
void loop(){
// unsigned long time = millis();
//Mirf.send((byte *)&time);
val = analogRead(potPin); //val变量为从LM35信号口读取到的数值
temperature = (val*0.0048828125*1000); //把读取到的val转换为温度数值的10倍
temp=temperature / 10;
dtostrf(temp,4,2,st);//
unsigned long time = millis();
Mirf.setTADDR((byte *)"serv1"); // 标记对方的地址
//sprintf(st ,"%f",temp);
Sends(st); //发送了一个5字节的hello
delay(1000);
}
void Sends(const char *str)
{
int lens;
lens=strlen(str);
char msg[lens];
int i;
for (i=0;i<lens;i++)
{
msg[i]= int(str[i]);
}
Mirf.send((byte *)&msg);
while(Mirf.isSending())
{}
}
接收端:
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#include "U8glib.h"
U8GLIB_ST7920_128X64_1X u8g(2,3,4);
//U8GLIB_SSD1306_128X64 u8g(5, 6, 9, 10);// D0 , D1 , CS , DC
int i, flag;
String Temp;
void draw(void)
{
u8g.setFont(u8g_font_timB10);
u8g.drawStr( 0, 10, "NRF240l Receive");
//u8g.setFont(u8g_font_tpss);
if (flag == 1)
{
u8g.setPrintPos(1, 26);
u8g.print(Mirf.payload);
u8g.setPrintPos(1, 40);
u8g.print(Temp);
}
else
{
u8g.setFont(u8g_font_tpss);
u8g.drawStr( 1, 26, "NO Receive");
}
// u8g.setPrintPos(1, 36);
//u8g.print(Temp);
}
void setup(void)
{
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"serv1"); // 本地名
Mirf.payload = 4; // 长度
Mirf.channel = 11; // 信道
Mirf.config();
}
void loop(void) {
byte data[Mirf.payload];
if (!Mirf.isSending() && Mirf.dataReady())
{ //存在数据
Mirf.getData(data);
Temp="";
flag = 1;
for (i = 0; i < Mirf.payload; i++) //把收到的信息拼起来,到一个串里面
{
Temp += char(data[i]);
}
}
else
{
flag = 0;
}
u8g.firstPage();
do {
draw();
}
while ( u8g.nextPage() );
delay(50);
}
mirf 库下载地址:
http://playground.arduino.cc/uploads/InterfacingWithHardware/Mirf.zip
这个是官网的,新的1.5.5-r2 的IDE版本也可以拿来直接用
Sketch
U8glib库下载地址:
http://code.google.com/p/u8glib/wiki/u8glib