收藏 分销(赏)

无线传感组网技术模板.docx

上传人:精**** 文档编号:4754019 上传时间:2024-10-12 格式:DOCX 页数:11 大小:212.81KB 下载积分:8 金币
下载 相关 举报
无线传感组网技术模板.docx_第1页
第1页 / 共11页
无线传感组网技术模板.docx_第2页
第2页 / 共11页


点击查看更多>>
资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 无线传感组网技术 时间: -07-22 来源: 21ic 作者: zhao3462910 关键字: 无线传感   组网技术       【整体设计概述】: 主要是设计一套无线传输设备产品, 负责压力、 温度、 液位、 角度、 速度值的传输与处理。 输入是4-20mA的标准电流信号, 所要设计的产品把这种模拟信号转换成数字信号, 并处理成相应的标准数值, 经过无线传输把其发送至PLC的CAN总线上。 采用先进安全的无线射频技术, 无线射频技术(RF)是一种可经过无线电讯号识别特定目标并读写相关数据,而无需经过在系统与特定目标之间建立机械或光学接触来识别信号的通信技术。射频识别技术是一项利用射频信号经过空间耦合(交变磁场或电磁场)实现无接触信息传递并经过所传递的信息达到识别目的的技术。本产品就是利用这种先进的技术实行数据传输。 传输协议采用自主研发的传输协议, 可靠性高, 经加密处理, 能够防止数据被监听。 【系统流程图】:   【原理设计说明】: 本产品主要是由ATMEGA16L单片机、 CAN控制器SJA1000、 CAN收发器TJA1050、 VM1100M无线模块、 LM2596-5、 AS1117-3.3稳压电源以及一些基本的外围电路构成。 1、 电源部分 本产品外接电源采用DC+24V供电, 经过LM2596-5到5.0V, AS1117-3.3稳压电源至3.3V达到各部分所需供电电压。 2、 CAN发送接收 经过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总线两大块, 功能都能实现。部分代码如上所示, 若网友希望进一步了解, 能够站内信联系。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服