【转】51 单片机接入 oneNET-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4457|回复: 0

【转】51 单片机接入 oneNET

[复制链接]
发表于 2017-8-1 13:51 | 显示全部楼层 |阅读模式
|倒序浏览 |阅读模式   
一、单片机电路图 电路由STC11F04E单片机、max232TTL转串口集成电路,编解码集成电路PT2272、T2262和相应的无线收发模块组成。MAX232的作用是把单片机的串口数据TTL电平转换成232电平送到串口转wifi模块。单片机的作用是收发数据,并通过无线接收模块检测报警数据,通过无线发送模块控制家用电器。
二、 HLK-RM04串口转WIFI模块 有关HLK-RM04的资料请到http://www.hlktech.com/网站下载。我用的是如下图所示的带底板的模块。
如果是自己设计电路板也可购买如下图所示模块。
使用的时候可下载HLK-RM04_CONFIG_V1.2.exe软件,来配置该模块。连接好串口线,打开该软件,进行配置如下图:
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
  •     SETB  REN  ;允许接收
  • 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接收缓冲区首址
  • SETB  REN    ;允许接收

复制代码
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  
;连接到设备xxxxxxx上的数据,49个字节,需要换成自己的设备连接数据 SJAB 30H,0CH,00H,06H,37H,3xH,3xH,32H,3xH,37H,31H,31H,31H,31H  ;发4个1 SJBB 30H,0CH,00H,06H,37H,37H,37H,32H,3xH,37H,32H,32H,32H,32H ;发送4个2 SJCB 30H,0CH,00H,06H,37H,3xH,37H,3xH,3xH,37H,31H,32H,33H,34H   ;14个




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-28 03:34 , Processed in 0.073220 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表