打印
[AVR单片机]

【快乐分享】+无线传感组网技术

[复制链接]
8676|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
                                                                                    无线传感组网技术
   
【整体设计概述】:
                                    
主要是设计一套无线传输设备产品,负责压力、温度、液位、角度、速度值的传输与处理。
输入是4-20mA的标准电流信号,所要设计的产品把这种模拟信号转换成数字信号,并处理成相应的标准数值,通过无线传输把其发送至PLCCAN总线上。
    采用先进安全的无线射频技术,无线射频技术(RF)是一种可通过无线电讯号识别特定目标并读写相关数据,而无需通过在系统与特定目标之间建立机械或光学接触来识别信号的通信技术。射频识别技术是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无接触信息传递并通过所传递的信息达到识别目的的技术。本产品就是利用这种先进的技术实行数据传输。
传输协议采用自主研发的传输协议,可靠性高,经加密处理,可以防止数据被监听。

【系统流程图】:
              
原理设计说明】:
               
本产品主要是由ATMEGA16L单片机、CAN控制器SJA1000、CAN收发器TJA1050、VM1100M无线模块、LM2596-5AS1117-3.3稳压电源以及一些基本的外围电路构成。
1、电源部分
本产品外接电源采用DC+24V供电,通过LM2596-55.0VAS1117-3.3稳压电源至3.3V达到各部分所需供电电压。
2CAN发送接收
通过ATMEGA16L单片机发送给CAN控制器SJA1000,经过TJA1050收发器发送到CAN总线上。
3、各数据无线发送
各无线数据通过VM1100M无线模块433MHZ频段将无线数据传送至无线收发控制器。

功能说明书
】:

1、写入串口ID功能

连接硬件学码设备,打开串口ID下载器,打开串口,填入需下载的ID号,点击“写入”,会显示“下载成功”。
2、指示灯状态功能

   左起第一个红灯D1为电源灯,当电源正常接通时,该灯会长亮。
   中间的D2灯为CAN数据发送指示灯,该灯有两个功能:
(1)、该灯闪烁代表CAN数据正在发送。
    (2)、灯的闪烁频率代表CAN数据上报的频率。
   最后一个指示灯闪烁表示给节点下发频点。

部分原理图】:

            CC1101RF电路                SJA1000CAN电路                     mega16MCU电路



主要程序文件】:

//******************************SJA1000初始化***********************************
void SJA1000_Init(void)
{
    uchar i,a,b,i_temp=0,TempData,j_temp=0;
    CLI();
SJA100HardWareRest();                   //硬件复位
    //Read_SJA1000(CAN_IR);                 //读中断寄存器,清除中断位
SJAEntryResetMode();                    //进入复位模式
DelayUs(5);
SR_status = Read_SJA1000(CAN_SR);          //读状态
//进入Pelican模式
    Write_SJA1000(CAN_CDR,0xc0);        //选择Pelican模式,CBP=1,激活RX0; 关闭TX1中断与时钟输出。
  SR_status = Read_SJA1000(CAN_SR);          //读状态
DelayUs(5);

//自检模式,自发自收检测
//Write_SJA1000(CAN_MOD,0x04); //配置模式寄存器,双滤波,自发自收

    //接收所有报文  
    Write_SJA1000(CAN_AMR0,0xff);    //配置验收屏蔽AMR0=0FFH
    Write_SJA1000(CAN_AMR1,0xff);    //配置验收屏蔽AMR1=0FFH
    Write_SJA1000(CAN_AMR2,0xff);    //配置验收屏蔽AMR2=0FFH
    Write_SJA1000(CAN_AMR3,0xff);    //配置验收屏蔽AMR3=0FFH
    Write_SJA1000(CAN_ACR0,0x00);    //配置验收代码ACR1=0:
Write_SJA1000(CAN_ACR1,0x00);    //配置验收代码ACR1=0:
Write_SJA1000(CAN_ACR2,0x00);    //配置验收代码ACR1=0:
    Write_SJA1000(CAN_ACR3,0x00);    //配置验收代码ACR3=0;


Write_SJA1000(CAN_TXERR,0x00);  
Write_SJA1000(CAN_RXERR,0x00);
Write_SJA1000(CAN_ECC,0x00);
Write_SJA1000(CAN_RBSA,0x00);

//设置波特率(16MHZ晶振,125Kb)
    Write_SJA1000(CAN_BTR0,0x03);    //配置总线定时--1255kbps    0x6e  03
    Write_SJA1000(CAN_BTR1,0x1C);                         //     0xff  af
    Write_SJA1000(CAN_OCR,0xaa);     //配置输出控制
    Write_SJA1000(CAN_EWLR,0xff);    //配置错误报警限制为255
Write_SJA1000(CAN_CMR,0x0c);     // 清楚数据溢出和释放接收缓冲器

// 退出复位模式,进入工作模式
SJAQuitResetMode();
SR_status = Read_SJA1000(CAN_SR);          //读状态
//Write_SJA1000(CAN_TXB+4,ID3);            //配置发送缓冲区的ID3-
   // Write_SJA1000(CAN_IER,0x01);            //配置SJA10000中断-错误报警/发送/接收中断  0x07
    Write_SJA1000(CAN_IER,0x81);             //使能SJA1000接收中断位,和总线错误中断位
    SEI();

}

//******************************SJA1000发送程序*********************************
void send_sja1000(void)
{   
    uchar s,i,canstatus,canstatus1,canstatus2,canstatus3,canstatus4;
//CLI();
canstatus  = Read_SJA1000(CAN_SR);          //读状态
    canstatus1 = Read_SJA1000(CAN_MOD);    //读模式
    canstatus2 =  Read_SJA1000(15);    //TX错误计数
    canstatus3 =  Read_SJA1000(14);    //RX错误计数
    canstatus4 =  Read_SJA1000(12);    //错误代码捕捉
   for( i=0;i<5;i++ );  
   {
    canstatus = Read_SJA1000(CAN_SR);
   }
   
   if((canstatus & 0x0C)== 0x0C)    //查询SJA1000是否处于接收状态,当SJA1000不处于接收状态时才可继续执行
   {                                //SR.3=0,发送请求未处理完,等待直到SR.3=1
       goto SJA1000;                //SR.2=0,发送缓冲器被锁
   }
   else  
   {  
      LEDSysMode = 0;
      return;
   }

SJA1000:   
  
//发送数据写进发送缓冲区中
  WriteSJARegBlock(16,Send_CAN_Info_ID,5); //扩展帧,向发送缓冲区写入5个识别码
     Write_SJA1000(21,DataText[0]);     //扩展帧,向发送缓冲区写入8个数据
  Write_SJA1000(22,DataText[1]);
  Write_SJA1000(23,DataText[2]);
  Write_SJA1000(24,DataText[3]);
  Write_SJA1000(25,DataText[4]);
  Write_SJA1000(27,DataText[6]);
  Write_SJA1000(26,DataText[5]);
  Write_SJA1000(28,DataText[7]);
// 启动发送
     Write_SJA1000(CAN_CMR,0x01);//使能发送请求,发送数据。(0x03,单次发送,有错误不重新发送;0x01发送请求命令,当错误时可重发;0x10产生一次自接收性质的报文发送)
     SEI();
  DataText[7]=0x00;
     while((canstatus&0x08) ==0)        //  检测是否发送完毕                                
     {
      canstatus = Read_SJA1000(CAN_SR);   //读状态
     }
      LEDSysMode = 1;
  
}

【总结】:
          本系统主要是RF无线和CAN总线两大块,功能都能实现。部分代码如上所示,若网友希望进一步了解,可以站内信联系。

          若网友有更好的建议和意见,欢迎拍砖!谢谢!


:) 感谢楼主分享!本帖已被管理员推荐到应用频道。详情:http://www.21ic.com/app/control/201307/186924.htm
评分
参与人数 1威望 +2 收起 理由
地瓜patch + 2 赞一个!

相关帖子

沙发
zhao3462910|  楼主 | 2013-7-19 15:18 | 只看该作者
https://bbs.21ic.com/forum.php?mod=attachment&aid=MTkyMTQwfDg1NmI0MjkxNzgwYjMyMmZlNDgwY2RiMzFhMjgxNWQ2fDE3MzUxMTkxMDk%3D&request=yes&_f=.zip CC1101.zip (5.06 KB)

【补充说明】:
     
          1.   帖中的系统流程图之前传上去了。。不知道什么原因没显示出。。现在重新传上,如下图



2.  上传433MHZ的无线芯片CC1101的收发程序:
  如附件!






使用特权

评论回复
板凳
O狂且O| | 2013-7-19 15:30 | 只看该作者
我是来支持的.

使用特权

评论回复
地板
qin552011373| | 2013-7-19 15:34 | 只看该作者
不错

使用特权

评论回复
5
zhao3462910|  楼主 | 2013-7-19 15:55 | 只看该作者
针对有大侠提出来的433MHZ干扰问题。现在补充一点:

          本系统是采用的跳频方式通讯,主控制器会不定时对频点进行测量,选择最优频段进行无线通讯。在选择完频点过程后,主控制器会以50MS为周期发送两次提取数据指令,其他管理的节点应将对这个频点进行锁定。节点从0频段开始停留保持100MS 如果有收到数据并且ID匹配表示无线收发控制器处于这一个频点,如果没有切换到下一频点2等待100MS,以此类推。节点需要对本频点进行统计,如果长达1S没有接受到无线收发控制器数据则表示频点已经更改,需要重新锁定频点。

使用特权

评论回复
6
zhao3462910|  楼主 | 2013-7-19 15:56 | 只看该作者
这样就大大降低了通信的干扰问题。保证了通信的稳定性。

使用特权

评论回复
7
jiangdong_027| | 2013-7-19 16:11 | 只看该作者
8
zhao3462910|  楼主 | 2013-7-19 23:11 | 只看该作者
自己再顶个....

使用特权

评论回复
9
efen| | 2013-7-21 23:45 | 只看该作者
支持

使用特权

评论回复
10
zhao3462910|  楼主 | 2013-7-22 08:24 | 只看该作者
efen 发表于 2013-7-21 23:45
支持

谢谢!!可以提点意见

使用特权

评论回复
11
HORSE7812| | 2013-7-22 16:27 | 只看该作者

使用特权

评论回复
12
21小跑堂| | 2013-7-22 17:33 | 只看该作者
本帖已被管理员推荐到应用频道。详情:http://www.21ic.com/app/control/201307/186924.htm

使用特权

评论回复
13
zhao3462910|  楼主 | 2013-7-22 20:23 | 只看该作者
21小跑堂 发表于 2013-7-22 17:33
本帖已被管理员推荐到应用频道。详情:http://www.21ic.com/app/control/201307/186924.htm ...

感谢21小跑堂的支持!!!有好的建议和意见可以提出!这样才有进步!

使用特权

评论回复
14
Frank2013| | 2013-7-23 07:52 | 只看该作者
定好一个

使用特权

评论回复
15
zhao3462910|  楼主 | 2013-7-23 08:03 | 只看该作者
Frank2013 发表于 2013-7-23 07:52
定好一个

谢谢!

使用特权

评论回复
16
beanandpeach| | 2013-7-24 19:50 | 只看该作者
谢谢分享!!

使用特权

评论回复
17
zhao3462910|  楼主 | 2013-7-25 08:12 | 只看该作者
beanandpeach 发表于 2013-7-24 19:50
谢谢分享!!

谢谢!

使用特权

评论回复
18
laserpic| | 2013-7-25 14:23 | 只看该作者
速度有多快??

使用特权

评论回复
19
zhao3462910|  楼主 | 2013-7-25 14:43 | 只看该作者
laserpic 发表于 2013-7-25 14:23
速度有多快??

50ms

使用特权

评论回复
20
摘桃花换酒| | 2013-7-25 21:39 | 只看该作者
谢谢分享!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:物联网改变世界,提高生活品质!

342

主题

1189

帖子

6

粉丝