熊掌五十块 发表于 2017-8-1 13:51:03

【转】51 单片机接入 oneNET

|倒序浏览 |阅读模式   
一、单片机电路图 电路由STC11F04E单片机、max232TTL转串口集成电路,编解码集成电路PT2272、T2262和相应的无线收发模块组成。MAX232的作用是把单片机的串口数据TTL电平转换成232电平送到串口转wifi模块。单片机的作用是收发数据,并通过无线接收模块检测报警数据,通过无线发送模块控制家用电器。
http://upfiles.heclouds.com/forum-app/2016/04/11/00c7175c2647c63703928c0ba986e76d.jpg 二、 HLK-RM04串口转WIFI模块 有关HLK-RM04的资料请到http://www.hlktech.com/网站下载。我用的是如下图所示的带底板的模块。
http://upfiles.heclouds.com/forum-app/2016/04/11/3c937fd5a2c8772902725542ad2f43a2.jpg 如果是自己设计电路板也可购买如下图所示模块。
http://upfiles.heclouds.com/forum-app/2016/04/11/c1cb6ff67ac840a750ab851592b0905e.jpg 使用的时候可下载HLK-RM04_CONFIG_V1.2.exe软件,来配置该模块。连接好串口线,打开该软件,进行配置如下图:
http://upfiles.heclouds.com/forum-app/2016/04/11/025f8c2fdec7252698beaba97ea86fa1.jpg 1、选择串口号 2、点击搜索模块,如果连接成功左侧待发送命令框和命令执行与恢复框有显示 3、选择工作模式,串口以太网模式是网线连接,无线网卡模式是无线wifi连接 4、网络协议选TCP客户端 5、无线参数就是要连接的无线AP参数(你家的wifi名称、密码) 6、远端IP填写183.230.40.39,远端端口填写876 7、串口参数填写波特率应与单片机的串口波特率一致9600 8、不启用DHCP 9、点击提交配置 10、            可以点击查询配置来查看是否配置成功 三、 HLK-RM04模块连接oneNET 给HLK-RM04模块上电后如果能连上oneNET的ip地址183.230.40.39,说明配置正确,如果配置正确,但还连接不上,这需要检查你家的路由器是否进行了端口映射,是否打开了防火墙,有关端口映射的方法请参考有关资料,也可在我的博文中找。 在确认HLK-RM04已能连上oneNET后,打开串口工具,把HLK-RM04的串口连接到微机串口上,就可以发送数据到oneNET上了。 四、接收程序 接收oneNET设备发送来的数据采用中断方式,程序代码如下:注意接收数据的格式是16进制数,而不是ASII码,开始我用ASII码格式接收调试不成功,改成16进制接收就好了。 S:   PUSH ACC

[*]      PUSH PSW
[*]      PUSH DPH
[*]      PUSH DPL
[*]   CLR TR0
[*]   MOV 20H,#0

复制代码
JS0:    CLR ES

[*]    CLR EA
[*]    SETBREN;允许接收
[*]LCALL PDRI;等待下一个串口数据
[*]MOV   A,   SBUF    ;读输入缓冲区
[*]MOV B,A

复制代码
S1:   MOV A,B

[*]    XRL A,#40H          ;连接断开
[*]JNZ JS
[*]    CLR FLAG                   ;置连接断开标志
[*]MOV R2,#3                  ;接收长度是2个字符长度
[*]AJMP JS2

复制代码
JS:   MOV A,B

[*]    XRL A,#20H      ;连接成功
[*]JNZ JS1
[*]    MOV R2,#02H      ;接收长度是2个字符长度
[*]AJMP JS2

复制代码
JS1:    MOV R2,#16               ;接收16个字节数据 JS2:    MOV R0,#2CH      ;2CH接收缓冲区首址

[*]SETBREN    ;允许接收

复制代码
S2:   LCALL PDRI;等待下一个串口数据

[*]MOV   A,   SBUF    ;读输入缓冲区
[*]CLR RI;软件清除串口中断标记
[*]MOV @R0,A
[*]    INC R0
[*]    DJNZ R2,S2

复制代码
SEND1:SETB FLAG_0            ;置接收到数据标志 SEND:    POP DPL

[*]          POP DPH
[*]          POP PSW
[*]          POP ACC
[*]    SETB ES
[*]    SETB EA

复制代码
SD:         RETI
五、发送数据程序 向oneNET设备发送数据的程序如下: FSZJ:   MOV R2,#14 FSZJ1:   MOV DPTR,#SJA                     ;WIFI FS:       CLR EA                              ;ONENET

[*]      ANL AUX,#07FH      ;p3.0p3.1当串口

复制代码
FSZJ2:    MOV A,#0H

[*]      MOVC A,@A+DPTR
[*]      MOV SBUF,A
[*]      JNB TI,$
[*]      CLR TI
[*]      INC DPTR
[*]      DJNZ R2,FSZJ2
[*]      SETB EA
[*]      RET

复制代码
PDRI:            SETB REN             ;占用R4/R5/R1

[*]         MOV R1,#300         ;20;300毫秒超时退出!

复制代码
PBZ:         MOV R4,#75          ;50;100;67 DY2:         MOV R5,#6            ;4;8 DY1:         JB RI,KKQ            ;检测到RI变1就退出

[*]DJNZ R5,DY1         ;25微秒检测一次
[*]JB RI,KKQ             ;检测到RI变1就退出
[*]SETB C                  ;程序正常时C=1
[*]         DJNZ R4,DY2         ;内循环50毫秒
[*]DJNZ R1,PBZ         ;超时退出
[*]CLR C                  ;对串口接收超时退出C=0
[*]         CLR RI                   ;清除有串口数据标志

复制代码
KKQ:         RET 3、连接0neNET程序 GN01:   JB FLAG,GNF             ;当接收到连接断开信号后,FLAG=0,重新连接

[*]MOV R2,#49                   ;否则发送1111心跳信号,保持连接
[*]MOV DPTR,#LJA
[*]      CALL FS
[*]      LCALL DELAY2
[*]      LCALL DELAY2
[*]      SETB FLAG

复制代码
GNF:      LCALL FSZJ            ;发送心跳标志4个1
http://upfiles.heclouds.com/forum-app/2016/04/11/2a22e6058bff672b6f8d21745640ad15.jpg ;连接到设备xxxxxxx上的数据,49个字节,需要换成自己的设备连接数据 SJA:DB 30H,0CH,00H,06H,37H,3xH,3xH,32H,3xH,37H,31H,31H,31H,31H;发4个1 SJB:DB 30H,0CH,00H,06H,37H,37H,37H,32H,3xH,37H,32H,32H,32H,32H ;发送4个2 SJC:DB 30H,0CH,00H,06H,37H,3xH,37H,3xH,3xH,37H,31H,32H,33H,34H   ;14个




v

笑你像狗 发表于 2017-8-1 14:14:31

这模块太贵

fire 发表于 2017-8-1 14:40:56

帮顶                        
页: [1]
查看完整版本: 【转】51 单片机接入 oneNET