精华内容
下载资源
问答
  • 行业资料-电子功用-具有可连接测试探头的测试端的无线通信模块,以及包含这种无线通信模块的电子装置
  • 行业资料-电子功用-具有可连接测试探头的测试端的无线通信模块,以及包含这种无线通信模块的电子装置的介绍分析.rar
  • 4G模块连接TCP

    万次阅读 2020-06-28 09:58:41
    Air724模组内置TCP/IP协议栈,提供TCP客户端和服务器服务(PS:模块没有公网IP所以服务端模式多用于专属VPN网络)。可使用AT指令,LUAT二次开发,CSDK,开源DTU等多种方式开发,开发者根据实际需求合理选择开发...

    作者:如果能编程回忆

    最后修改时间:2020年6月12日

    概述

    Air724模组内置TCP/IP协议栈,提供TCP客户端和服务器端服务(PS:模块没有公网IP所以服务端模式多用于专属VPN网络)。可使用AT指令,LUAT二次开发,CSDK,开源DTU等多种方式开发,开发者根据实际需求合理选择开发方式。

    AT指令

    通过AT指令使用TCP服务主要包含设备联网,配置连接,建立连接,发送数据等步骤,具体流程如图高清版TCP流程图.pdf

    ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9qcGVnLzE1OTAyMDgvMTU5MTk0Mjc0OTQ2OC03MDI1Y2FkZC02NGJjLTRhZmItOGQwZS1jMTlmZWNjMmI4MTEuanBlZw?x-oss-process=image/format,png#align=left&display=inline&height=964&margin=[object Object]&originHeight=964&originWidth=648&size=0&status=done&style=none&width=648)

    从连接方式上可分为SSL与非SSL,从连接路数可分为单路连接和多路连接,从数据收发方式可分为透传与非透传。

    连接网络

    开机

    通过拉低powerkey2秒进行开机,开机以后通过串口循环发送AT直到收到OK,如果90秒没有收到OK请拉低 RESET_IN_N 引脚 150ms 以上。或使用其他方法见开关机章节

    查询卡状态

    AT+CPIN?查询卡状态,直到收到+CPIN: READY,如果10s内没有收到建议重启模块

    查询网络注册情况

    AT+CGATT?查询是否注册网络收到+CGATT: 1值是1即为注册成功,正常情况下注册时间不会超过两分钟,如果超过两分钟没有注册可以进入飞行模式五秒后退出再查询,或者直接重启模块。

    激活网络

    AT+CSTT配置网络,非私有APN以外Cat1的固件支持根据卡自动配置APN,直接输入AT+CSTT即可,模块会按照自动获取的APN设置CSTT的APN。

    AT+CIICR激活网络,在IP START的状态使用AT+CIICR激活网络,激活以后通过AT+CIFSR查询是否获取IP,如果成功就可以开始配置TCP连接了,如果不成功使用AT+CIPSHUT关闭移动网络,从AT+CSTT重新进行。

    连接TCP

    此处使用的是非SSL连接,SSL见相关章节

    AT+CIPSTART建立连接

    命令类型语法返回和说明
    设置命令单 路 连 接 (+CIPMUX=0)时:AT+CIPSTART=,, 或 AT+CIPSTART=,,
    多路连接(+CIPMUX=1)时:AT+CIPSTART=,,< IP address>, 或 AT+CIPSTART=,,,如 果 格 式 正 确 且 处 于 IP INITIAL 或 者 IP STATUS或TCP/UDP CLOSE状态,返回: OK 否则返回: +CME ERROR

    紧接着会有URC上报,上报内容如下:
    如果连接已经存在,返回: ALREADY CONNECT
    如果连接成功(非透传),返回: CONNECT OK 如果连接成功(透传),返回: CONNECT
    否则返回: STATE: <sl_state>
    CONNECT FAIL如果格式正确且处于 IP STATUS或IP PROCESSING时,返回: OK 否则返回: +CME ERROR
    紧接着会有URC上报,上报内容如下:
    如果连接已经存在, 返回: ,ALREADY CONNECT
    如果连接成功,返回: ,CONNECT OK 否则返回: ,CONNECT FAIL |
    | 测试命令 | AT+CIPSTART=? | 单路连接(+CIPMUX=0)时返回: +CIPSTART: (取值列表),(IP address range),(port range)? +CIPSTART: (取值列表),(domain name),(port range)
    OK 多路连接(+CIPMUX=1)时返回: +CIPSTART: ( 取 值 列 表 ),( 取 值 列 表 ),(IP addressrange),(port range) +CIPSTART: (取值列表),( 取值 列表),(domain name),(portrange)
    OK |
    | 注意事项 | 此命令应用于建立 TCP/UDP 连接;
    当前状态可用 AT+CIPSTATUS 查询;
    单路连接时只当前状态为 IP INITIAL 或者 IP STATUS 或 TCP/UDP CLOSE 时可执行,多路连接时当 前状态为 IP STATUS 或 IP PROCESSING 时可执行;
    在当前状态不是上述可执行状态时,需执行 AT+CIPSHUT 后再开始建立连接;
    多路连接时,设置此命令前,必须先执行 AT+CSTT, AT+CIICR,AT+CIFSR 这三个命令。 |
    |

    参数定义

    参数参数取值对取值的说明
    Link No.0~5整数型,表示连接序号
    连接类型,字符串型
    (双引号可加可不加)“TCP”
    “UDP”建立TCP连接
    建立UDP连接
    远端服务器 IP 地址最大32个字节字符串参数(双引号可加可不加)
    远端服务器域名最大 32 个字节字符串参数(双引号可加可不加)
    远端服务端口1~65535整数型

    示例

    AT+CIPSTART=“TCP”,“120.76.201.131”,2000

    返回

    CONNECT OK表示连接成功

    发送数据

    AT+CIPSEND发送不定长数据,收到>以后就可以发送数据,然后发送十六进制1A结束发送,发送完1A以后设备会向服务器发送1A之前的所有数据。

    接收数据

    当连接服务器成功以后默认配置是服务器下发的数据会通过串口自动上报,直接就可以接收数据。

    状态机

    ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvMTU5MDIwOC8xNTkxOTQyNzQ5NDc3LTQzYzhiZWMwLTE4MzItNDg1ZS1hNmVkLWQ4OTgwODM2YWFlMy5wbmc?x-oss-process=image/format,png#align=left&display=inline&height=416&margin=[object Object]&originHeight=416&originWidth=736&size=0&status=done&style=none&width=736)

    ◆输入 AT+CIICR,会马上进入 IPCONFIG 状态,当返回 OK 后,会进入到 IPGPRSACT 状态;

    ◆输入 AT+CIPSTART 后,会立马进入 IP/UDPCONNECTING 状态,如果后续模块上报 CONNECTOK 这个 URC,
    表明连接服务器成功,此时进入 CONNECTOK 状态;

    ◆输入 AT+CIPCLOSE 后,立马进入 TCP/UDPCLOSING 状态,此时如果模块上报 CLOSEOK,则表明关闭与服务 器的连接成功,此时模块进入 TCP/UDPCLOSED 状态;

    ◆如果模块上报+PDPDEACT 这个 URC,则标志着模块释放 PDP 上下文,并进入了 PDPDEACT 状态;

    ◆在 IPGPRSACT,IPSTATUS,CONNECT OK 以及 TCP/UDPCLOSED 状态下,输入 AT+CGATT=0,则也可以使模 块释放上下文,进入 PDPDEACT 状态;

    ◆模块进入 PDPDEACT 状态,仍需要输入 AT+CIPSHUT,进入 IPINITIAL 状态; ◆模块在各个状态下均可以输入 AT+CIPSHUT,进入 IPINITIAL 状态。

    其他说明

    最新的AT固件支持开机直接发送AT+CIPSTART联网,不过不推荐使用,推荐根据状态机一步一步实现

    LUAT

    luat连接相比AT更为简单,只需要简单的配置即可连接,还可以灵活的对数据进行处理。

    需要从官网或者github下载luatask的脚本包,或者使用luatoolsv2会自动下载脚本资源,在工具根目录的\resource\8910_script中脚本资源会随官网同步更新,具体版本可能和本文不同,不过功能都是一致的。

    文档中用到的API接口见wiki的API章节。

    在脚本目录的demo/socket文件夹里有两种示例代码,async是异步socket,sync是同步socket

    同步:

    同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。

    异步:

    将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动,你可以关闭浏览器了。然后程序再慢慢地去写入数据库去。这就是异步。但是用户没有卡死的感觉,会告诉你,你的请求系统已经响应了。你可以关闭界面了。

    同步和异步本身是相对的

    同步就相当于是 当客户端发送请求给服务端,在等待服务端响应的请求时,客户端不做其他的事情。当服务端做完了才返回到客户端。这样的话客户端需要一直等待。用户使用起来会有不友好。

    异步就是,当客户端发送给服务端请求时,在等待服务端响应的时候,客户端可以做其他的事情,这样节约了时间,提高了效率。

    存在就有其道理 异步虽然好 但是有些问题是要用同步用来解决,比如有些东西我们需要的是拿到返回的数据在进行操作的。这些是异步所无法解决的。

    所以请根据实际需求选择。

    连接服务器

    luat的socket操作是一个面向对象的操作所以首先使用socket.tcp(ssl, cert)创建一个对象

    传入值类型释义
    bool可选参数,默认为nil,ssl,是否为ssl连接,true表示是,其余表示否
    table可选参数,默认为nil,cert,ssl连接需要的证书配置,只有ssl参数为true时,才参数才有意义,cert格式如下: { caCert = “ca.crt”, --CA证书文件(Base64编码 X.509格式),如果存在此参数,则表示客户端会对服务器的证书进行校验;不存在则不校验 clientCert = “client.crt”, --客户端证书文件(Base64编码 X.509格式),服务器对客户端的证书进行校验时会用到此参数 clientKey = “client.key”, --客户端私钥文件(Base64编码 X.509格式) clientPassword = “123456”, --客户端证书文件密码[可选] }

    c = socket.tcp()成功则c就是新建的对象。

    然后使用mt:connect(address, port, timeout)连接服务器

    • 参数
      | 传入值类型 | 释义 |
      | — | — |
      | string | address 服务器地址,支持ip和域名 |
      | param | port string或者number类型,服务器端口 |
      | number | 可选参数,默认为120,timeout 可选参数,连接超时时间,单位秒 |

    • 返回值

    bool result true - 成功,false - 失败 string ,id ‘0’ – ‘8’ ,返回通道ID编号

    mt:表示对象,也就是我们前面通过socket.tcp()新建的c

    使用c:connect()即可连接服务器。

    接收数据

    同步方式

    同步方式采用mt:recv(timeout, msg, msgNoResume)这个接口阻塞操作,程序运行到这里会进入等待直到满足条件才会退出。

    • 参数
      | 传入值类型 | 释义 |
      | — | — |
      | number | 可选参数,默认为0,timeout 可选参数,接收超时时间,单位毫秒 |
      | string | 可选参数,默认为nil,msg 可选参数,控制socket所在的线程退出recv阻塞状态 |
      | bool | 可选参数,默认为nil,msgNoResume 可选参数,控制socket所在的线程退出recv阻塞状态,false或者nil表示“在recv阻塞状态,收到msg消息,可以退出阻塞状态”,true表示不退出 |

    • 返回值

    result 数据接收结果,true表示成功,false表示失败 data 如果成功的话,返回接收到的数据;超时时返回错误为"timeout";msg控制退出时返回msg的字符串 param 如果是msg返回的false,则data的值是msg,param的值是msg的参数

    以demo的socket\sync\sendInterruptRecv\testSocket.lua为例,r就是result当退出原因是服务器下发数据时为true,其他情况均为false,s是data,当r是true的时候,data表示参数,当r为false时,data表示退出阻塞的原因,一种是timeout,一种是配置的msg ,当值为msg 的时候,p表示msg携带的参数。

    while true do
                r, s, p = c:recv(120000, "pub_msg")
                if r then
                    recv_cnt = recv_cnt + #s
                    log.info("这是收到的服务器下发的数据统计:", recv_cnt, "和前30个字节:", s:sub(1, 30))
                elseif s == "pub_msg" then
                    send_cnt = send_cnt + #p
                    log.info("这是收到别的线程发来的数据消息!", send_cnt, "和前30个字节", p:sub(1, 30))
                    if not c:send(p) then break end
                elseif s == "timeout" then
                    log.info("这是等待超时发送心跳包的显示!")
                    if not c:send("ping") then break end
                else
                    log.info("这是socket连接错误的显示!")
                    break
                end
            end
    

    在连接服务器成功以后,代码进入这个死循环,recv(120000, “pub_msg”)里的第一个参数表示最长阻塞时间,这个时间的主要作用是用于心跳维持连接,因为timeout退出阻塞的前提是在这个时间内没有发送和接收数据;第二个参数是控制退出的字符串,其原理类似于sys.subscribe(id, callback)msg就是id,用于订阅来自其他协程的数据,发送数据的方法就是sys.publish(…)触发时rev会退出并携带参数;

    异步方式

    异步采用mt:asyncRecv()接口接收数据,相对于同步方式,异步的参数及返回值相对简单,使用时无需传递参数,返回值直接就是收到的数据。

    发送数据

    同步方式

    使用mt:send(data)接口即可发送数据,因为同步方式大多数时间都是阻塞在接收部分的,所以根据前文同步接收数据的说明可以通过配置msg退出阻塞,然后发送数据。可以参考demo做法。在rev配置msg为pub_msg然后通过其他协程使用sys.publish向pub_msg发送数据,退出阻塞以后直接发送。

    -- 测试代码,用于发送消息给socket
    sys.taskInit(function()
        while not socket.isReady() do sys.wait(2000) end
        sys.wait(10000)
        -- 这是演示用sys.publish()发送数据
        for i = 1, 10 do
            sys.publish("pub_msg", string.rep("0123456789", 1024))
            sys.wait(500)
        end
    end)
    

    异步方式

    异步方式也相对简单直接使用mt:asyncSend(data)发送即可。需要说明的一件事是异步方式没有timeout所以心跳需要自己维护或者使用mt:asyncSelect(keepAlive, pingreq)配置心跳时间及内容。

    CSDK

    csdk请参考demo目录下的demo_socket.c

    相关教程可见csdk的tcp教程

    DTU固件

    对于只需要使用模块进行透传数据的常见,推荐使用合宙开源的dtu固件,只需要一条指令就可实现网络连接和服务器状态维护,还可使用web配置参数,方便又简单。

    相关教程

    SmartDTU 是集成远程物联网控制功能的固件,只需要配置几下就可以实现大部分场景所需要的功能和逻辑,方便传统业务快速联网。手册和固件下载在群文件!
    WEB配置:http://dtu.openluat.com
    注意:请用chrome或firefox等兼容浏览器。如果联网请求参数失败,请把ERP账号和IMEI给我添加。SmartDTU是什么:https://ask.openluat.com/article/997
    B站教程:https://www.bilibili.com/video/av41012302
    硬件教程:https://www.bilibili.com/video/av45341487
    工具教程:https://www.bilibili.com/video/av50453083
    Luat开发教程:https://www.bilibili.com/video/av50827315
    看懂Luat日志:https://ask.openluat.com/article/15
    源码:https://gitee.com/hotdll/iRTU

    展开全文
  • gprs模块itm100的服务器的gprs模拟接收程序。只需将此程序在一台连接internet的pc上运行,并将gprs模块终端的ip地址设为改pc的ip地址,就可检测gprs模块的数据是否正常发送和接收。可以选择tcp或udp的连接,十分...
  • 9910 部分:模块化插头端接链路布线规范)。ISO/IEC TR 11801-9910:2020 是一份技术报告,提供了模块化插头端接链路配置的定义和示例。 本文档提供了 D、E、EA、F、FA、I 和 II 类模块化插头端接链路的性能规范。 ...
  • 即CH340对应的号,这样才能起到检测串口模块的功能。) 2、给51V3最小系统下载对应程序 选择对应最小系统单片机型号 选择串口号打开程序软件(本次程序为单色流水灯)点击下载按钮将51V3最小系统跳线帽进行拔插...
  • 千兆模块能和 万兆模块能连接吗

    千次阅读 2019-04-08 14:37:09
    对于目前热插拔的模块来说,万兆光模块传输速率为10G,其封装形式为SFP+和XFP,应用于万兆以太网、SDH(同步数字系列)和SONET(同步光纤网)等;千兆光模块即传输速率为1.25G,其封装形式为SFP和SFF;从外形商看,...

    对于目前热插拔的模块来说,万兆光模块传输速率为10G,其封装形式为SFP+和XFP,应用于万兆以太网、SDH(同步数字系列)和SONET(同步光纤网)等;千兆光模块即传输速率为1.25G,其封装形式为SFP和SFF;从外形商看,XFP封装的模块明显要大些,不可能和千兆的混淆,SFP和SFP +外形大小相同,比较难区分。
    千兆模块能和 万兆模块能连接吗
    万兆光模块能连接千兆光模块吗?两者是否能同时正常工作?在传输距离和波长都符合的情况下,万兆光模块可以当做千兆光模块使用,并且绰绰有余,但会产生一些浪费,但是千兆光模块的传输速率达不到万兆模块的速率要求,所以千兆模块不能代替万兆模块的。如果用千兆光模块替代万兆光模块的话,产生的负荷太大,这样容易把机器击穿。所以建议在实际使用的时候最好能够上机测试一下。结合需求使用万兆光模块和千兆光模块。

    千兆光模块是SFP封装的热插拔小封装模块,接口为LC,主要由激光器构成,按照波长850nm/1310nm/1550nm/1490nm/1530nm/1610nm,波长为850nm为SFP多模,传输距离在2KM以下,波长是1310/1550nm的为单模,传输距离在2KM以上,相对来说这三种波长的价格较其他三种要便宜,一般厂家会在拉环的颜色上进行区分,比如:黑色拉环的为多模,波长是850nm;蓝色是波长1310nm的模块;×××则是波长1550nm的模块;紫色是波长1490nm的模块等。

    几乎所有的多模光纤尺寸均为50/125um或62.5/125um,并且带宽(光纤的信息传输量)通常为200MHz到2GHz。多模光端机通过多模光纤可进行长达5公里的传输。以发光二极管或激光器为光源。

    单模光纤的尺寸为9-10/125µm,并且较之多模光纤具有无限量带宽和更低损耗的特性。而单模光端机多用于长距离传输,有时可达到150至200公里。采用LD或光谱线较窄的LED作为光源。

    万兆光模块,SFP+光纤模块是一种可热插拔的,独立于通信协议的光学收发器,通常传输光的波长是 850nm, 1310nm 或1550nm。用于10G bps的SONET/SDH,光纤通道,gigabit Ethernet,10 gigabit Ethernet和其他应用中,也包括 DWDM 链路。XFP包含类似于 SFF-8472 的数字诊断模块,但是进行了扩展,提供了强大的诊断工具。

    转载于:https://blog.51cto.com/14117269/2375319

    展开全文
  • Arduino使用HC05蓝牙模块与手机连接

    万次阅读 多人点赞 2017-09-18 10:32:16
    利用 Andorid 蓝牙串口调试软件测试功能 进入 At 模式进行蓝牙基本参数设置想要使用 Arduino 的蓝牙模块,首先要对蓝牙模块进行基本参数设置。基本参数设置主要包含:蓝牙名称、模式以及匹配密码等。设置蓝牙模块...

    通过本文,可以了解到以下内容:

    • 进入 AT 模式进行蓝牙基本参数设置
    • Arduino 蓝牙控制 LED 电路设计以及代码编写
    • 利用 Andorid 蓝牙串口调试软件测试功能

    进入 At 模式进行蓝牙基本参数设置

    想要使用 Arduino 的蓝牙模块,首先要对蓝牙模块进行基本参数设置。基本参数设置主要包含:蓝牙名称、模式以及匹配密码等。设置蓝牙模块可以使用 USB-TTL 连接电脑使用串口调试软件进入 AT 模式进行设置,也可以使用 Arduino 连接蓝牙模块进行设置,本文主要介绍后一种方法。

    注意事项

    在连接蓝牙的时候,要注意线的连接是否正确,检查清楚再进行通电,除此之外,还要主要不要让针脚短路,我在首次使用蓝牙模块的时候,因为没注意接线,导致一个蓝牙模块损坏了,只能发信息不能收信息,所以为了避免不必要的损失,这里要注意。

    Arduino HC05 AT模式接线

    进入 AT 模式设置蓝牙的接线如下:
    Arduino 5V - VCC
    Arduino GND - GND
    Arduino Pin10 - TXD
    Arduino Pin11 - RXD
    在通电前检查接线是否正确连接
    hc05_at_mode.jpg

    Arduino 进入 AT 模式代码

    接下来,我们需要为使用 Arduino 设置蓝牙模块 AT 模式编写程序,这个程序是让我们可以通过 Arduino IDE 提供的串口监视器来设置蓝牙模块。详细的 Arduino 代码如下:

    #include <SoftwareSerial.h> 
    
    // Pin10为RX,接HC05的TXD
    // Pin11为TX,接HC05的RXD
    SoftwareSerial BT(10, 11); 
    char val;
    
    void setup() {
      Serial.begin(38400); 
      Serial.println("BT is ready!");
      // HC-05默认,38400
      BT.begin(38400);
    }
    
    void loop() {
      if (Serial.available()) {
        val = Serial.read();
        BT.print(val);
      }
    
      if (BT.available()) {
        val = BT.read();
        Serial.print(val);
      }
    }
    

    利用 Arduino IDE 串口监视器进行调试

    首先,将 Arduino 断电,然后按着蓝牙模块上的黑色按钮,再让 Arduino 通电,如果蓝牙模块指示灯按2秒的频率闪烁,表明蓝牙模块已经正确进入 AT 模式。
    打开 Arduino IDE 的串口监视器,选择正确的端口,将输出格式设置为 Both: NL & CR ,波特率设置为 38400 ,可以看到串口监视器中显示 BT is ready! 的信息。
    然后,输入 AT ,如果一切正常,串口显示器会显示 OK
    接下来,我们即可对蓝牙模块进行设置,常用 AT 命令如下:

    AT+ORGL    # 恢复出厂模式
    AT+NAME=<Name>    # 设置蓝牙名称
    AT+ROLE=0    # 设置蓝牙为从模式
    AT+CMODE=1    # 设置蓝牙为任意设备连接模式
    AT+PSWD=<Pwd>    # 设置蓝牙匹配密码
    

    正常情况下,命令发送后,会返回 OK ,如果没有返回任何信息,请检查接线是否正确,蓝牙模块是否已经进入 AT 模式,如果上述两点都没有问题,可能是蓝牙模块的问题,可以找蓝牙模块供应商咨询。
    设置完毕后,断开电源,再次通电,这是,蓝牙模块指示灯会快速闪烁,这表明蓝牙已经进入正常工作模式。

    利用 Andorid 手机连接 Arduino 并控制 LED灯开关

    我们完成了对蓝牙模块的设置后,我们将做一个可以通过手机蓝牙连接,控制 Arduino 开关 LED 灯的小实验。

    Arduino 电路设计

    这里的电路设计比较简单,主要是两部分:

    • Arduino 与 HC05 模块连接
    • Arduino 与 LED 连接

    这里有两点需要注意,Arduino 上的 TXD 应与 HC05 模块上的 RXD 端连接,Arduino 上的 RXD 应与 HC05 模块上的 TXD 连接。
    在下面的图例中,我的 LED 是直接连接在 Arduino Pin13 上,而实际电路连接中,因根据连接的 Led 灯的设计考虑是否需要串联电阻。
    Hc05_Led.jpg

    Arduino 蓝牙控制 LED 灯 程序设计

    Arduino 程序代码如下:

    void setup()
    {
      // 设置波特率为 38400
      Serial.begin(38400);
      pinMode(13, OUTPUT);
    }
    
    
    void loop()
    {
      while(Serial.available())
      {
        char c=Serial.read();
          if(c=='1')
          {
            Serial.println("BT is ready!");
            // 返回到手机调试程序上
            Serial.write("Serial--13--high");
            digitalWrite(13, HIGH);
          }
         if(c=='2')
         {
           Serial.write("Serial--13--low");
           digitalWrite(13, LOW);
         }
      }
    }
    

    Android 手机端调试

    在 Android 端上进行调试,需要下载蓝牙串口调试 APP,可以根据喜好在各大应用商场搜索下载。
    下载安装完成 APP 后,我们先打开手机的蓝牙设置,搜索并匹配好我们的蓝牙模块。然后打开 蓝牙串口调试APP ,让 APP 连接上蓝牙模块,然后我们可以在 APP 中输入 1,接下来可以看到 LED 等亮了,并且能在 APP 中看到 Serial--13--high 的返回(有些 APP 返回值可能不是返回在同一行)。我们再在 APP 中输入 2,可以看到 LED 熄灭, APP 中返回 Serial--13--low

    小结

    在这篇文章中,我们了解了在 Arduino 中使用 HC05 蓝牙模块的两个主要步骤,首先是进入 AT模式 对蓝牙模块进行设置,这里要注意接线的正确性,设置完成后,就可以将蓝牙模块的 TXArduino RX 连接,RXArduino TX 连接,再通过 Arduino 程序中的 Serial 来实现数据的传输与读取。最后,在通过 Android 上的蓝牙串口调试APP,来测试我们的试验是否成功。

    参考资料

    蓝牙模块HC05
    Arduino Bluetooth Basic Tutorial


    本文为原创内容,由同一作者于早前发表于简书,Arduino使用HC05蓝牙模块与手机连接

    展开全文
  • Arduino连接GPS模块

    千次阅读 热门讨论 2020-10-29 15:53:50
    根据说明书我设置了模块串口通信波特率为9600,只显示GNGGA信息,刷新频,1Hz(也就是一秒刷新一次)。 模块连接Arduino: ● 模块GND引脚连接到Arduino的GND引脚 ● 模块RX引脚连接到Arduino引脚3 ● 模块TX引脚连接...

    Arduino连接GPS模块

    本次实验使用的是正点原子ATK-1218-BD 北斗GPS模块

    根据模块配套的说明书和软件我测试没有问题之后,设置了模块串口通信波特率为9600,只显示GNGGA信息,刷新频1Hz(也就是一秒定位一次)。

    模块连接Arduino:

    ● 模块GND引脚连接到Arduino的GND引脚

    ● 模块RX引脚连接到Arduino引脚3
    ● 模块TX引脚连接到Arduino引脚4

    ● 模块VCC引脚连接到Arduino的5V引脚

    我使用的是Arduino Uno。在Arduino Uno上,所有引脚都可设置为RX接收端。但是在Arduino MEGA上能被设置为RX的引脚有10,11,12,13,50,51,52,53,62,63,64,65,66,67,68,69。在Arduino Leonardo上能被设置为RX的引脚有8,9,10,11,14(MISO),15(SCK),16(MOSI)。
    所以使用Arduino MEGA和Arduino Leonardo板子的话需要注意一下。

    编写程序(使用软串口通信):
    #include <SoftwareSerial.h>
     
    // The serial connection to the GPS module
    SoftwareSerial ss(4, 3);  // RX,TX
     
    void setup(){
      Serial.begin(9600);
      ss.begin(9600);
    }
     
    void loop(){
      if (ss.available() > 0){
        // get the byte data from the GPS
        byte gpsData = ss.read();  //read是剪切,所以不加延迟。加延迟反而会影响数据读取
        Serial.write(gpsData);
      }
    }
    
    输出:
    $GNGGA,120644.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*76
    $GNGGA,120645.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*77
    $GNGGA,120646.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*74
    $GNGGA,120647.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*75
    $GNGGA,120648.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*7A
    $GNGGA,120649.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*7B
    
    处理GPS数据
    GNGGA数据的解析如下图所示:
    image-20201014162100710

    要想解析数据,首先是要把GNGGA字符串分割。Arduino没有Java等语言自带的字符串分割函数,所以只能自己写程序进行分割。

    编写程序:
    #include <SoftwareSerial.h>
    
    SoftwareSerial ss(4, 3); // RX,TX
    
    String gpgga = "";
    
    void setup(){
      Serial.begin(9600);
      ss.begin(9600);
    }
     
    void loop(){
      gpgga = "";
      while (ss.available() > 0){
        gpgga += char(ss.read());  
        delay(10);  // 延时,不延时的话就会跳出while循环,因为Arduino处理速度比串口传输快多了
      }
      
      if(gpgga.length() >0){
        //Serial.println(gpgga);
        //在这里进行数据的解析
        for (int i = 0; i < 15; i++) {
          commaPosition = gngga.indexOf(',');
          if (commaPosition != -1)
          {
            Serial.println(gngga.substring(0, commaPosition));
            gngga = gngga.substring(commaPosition + 1, gngga.length());
          }
          else {
            if (gngga.length() > 0) {  // 最后一个会执行这个
              Serial.println(gngga);
            }
          }
      }
    }
    

    分割字符串如下:

    $GNGGA,115955.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*F
    $GNGGA
    115955.000
    0000.0000
    N
    00000.0000
    E
    0
    00
    0.0
    0.0
    M
    0.0
    M
    
    0000*F
    

    本想在Arduino做数据解析的,但是Arduino的类型转换真是麻烦,所以还是传出经纬度等数据再用其他语言转换吧。

    最终程序如下:

    #include <SoftwareSerial.h>
    
    SoftwareSerial ss(4, 3);  // RX,TX
    
    // 变量声明
    String gngga = "";  // 读取到的GNGGA信息
    String info[15];  // 用字符数组存储
    int commaPosition = -1;
    
    //函数声明
    String getTime(); // 获取北京时间
    String getLat(); // 获取纬度dd.mmssss
    String getLng(); // 获取经度dd.mmssss
    String getStatus(); // 获取当前定位状态,0=未定位,1 = 非差分定位,2=差分定位
    
    void setup() {
      Serial.begin(9600);
      ss.begin(9600);
    }
    
    void loop() {
      gngga = "";
      while (ss.available() > 0) {
        gngga += char(ss.read());
        delay(10);  // 延时,不延时的话就会跳出while循环
      }
    
      if (gngga.length() > 0) {
        //Serial.println(gngga);
        //在这里进行数据的解析
        for (int i = 0; i < 15; i++) {
          commaPosition = gngga.indexOf(',');
          if (commaPosition != -1)
          {
            //Serial.println(gngga.substring(0, commaPosition));
            info[i] = gngga.substring(0, commaPosition);
            gngga = gngga.substring(commaPosition + 1, gngga.length());
          }
          else {
            if (gngga.length() > 0) {  // 最后一个会执行这个
              info[i] = gngga.substring(0, commaPosition);
              //Serial.println(gngga);
            }
          }
        }
        Serial.println("time: " + getTime());
        Serial.println("lat: " + getLat());
        Serial.println("lng: " + getLng());
        Serial.println("status: " + getStatus());
      }
    }
    
    String getTime(){
       return info[1];
    }
    
    String getLat(){
       return info[2];  
    }
    
    String getLng(){
       return info[4];  
    }
    
    String getStatus(){
       return info[6]; 
    }
    
    展开全文
  • 使用无底板的HC-05蓝牙模块,包括连线,通过SSCOM32进行配置,编写安卓的程序实现和蓝牙模块的通信,数据传输
  • 51单片机与蓝牙模块连接

    万次阅读 多人点赞 2018-02-22 12:17:38
    不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。此次学习用到...
  • 简介 压力主要负责压力的产生,以及压力
  • ESP8266 WiFi 模块连接乐为物联云实现PM2.5测试系统1.关于ESP8266 安信可科技推出的ESP8266 WiFi 模块可以以极低的成本把传统单片机系统入物联网。内置WiFi前端和高性能的32位ESP32MCU,内置无线网络协议IEEE802....
  • GPS 模块测试

    2018-02-03 16:19:00
    飞凌-MX6UL GPS 模块测试方法,请先确保已经连接 GPS 天线(最好将天线的接收放到窗外)。运行 GPS 测试程序
  • 在实际测试中,随便了跟电线,传输能达到5米,无丢包现象。这个射频模块的穿墙效果,应该会比2.4G的好很多。我家里以前一套315Mhz的报警器,全屋传输无压力。 接线很简单,只有三个脚,两个是电源,一个是数据。 ...
  • 构建 Spring Boot 项目并通过登录 DEMO 打通前后的联系,为下一步开发打下基础。
  • 控制通过指派多个phoenix_node方式执行测试用例。通过使用phoenix_develop开发用例代码的示例, 用例如果在本地调试时没有问题,那么就可以放到控制进行执行了。 平台网站: 中文搜:测完啦 最新版本:1.2.7 ...
  • Django+vue前后分离自动化测试平台 这次更新了一点干活给大家分享,并且该平台的所有功能都比较符合各公司的接口使用而开发出来,并且供大家以后开发平台提供一个参考。 前后主要环境 1.django=2.1 2....
  • HC-05蓝牙模块PC调试软件及指令文件:蓝牙模块用USB转串口连接到电脑后,打开调试软件,选择USB转串口在电脑上的COM号,在调试软件的命令栏输入指令即可对蓝牙模块配置参数。
  • 的结果实际上是另一个数据库连接进行查询的结果,每个连接都是在自己的缓存模块中进行查询。所以对更新功能的sql语句,在同一个数据 库连接中,进行数据库更新之后在进行查询之前一定要进行commit操作(也就是说...
  • GPRS模块实现的打电话和收发短信

    热门讨论 2012-05-09 15:32:40
    本代码是用c++语言编写的利用qt 做的前台界面利用gpts模块实现打电话和收发短信的功能。有精美的界面,而且测试通过的可用的程序。适合开发者学习gprs的一些相关的内容和知识。相信你能够学到很多的...
  • 通过按KEY0键选择此模式...同时,开发板液晶会 显示相关提示信息,方便大家测试信息包括: IP地址:如果是服务器模式,那么IP地址表示ATK-RM04模块的IP地址。如果是客户端模式,则表示模块将 要连接到的目标IP地址。
  • NB-IoT模块 移远BC26入OneNET

    万次阅读 热门讨论 2018-06-05 11:15:34
    NB-IoT模块 移远BC26测试 - OneNET1.OneNET接入流程图 OneNET平台接入分为平台端接入和设备端接入。2.OneNET平台创建NB-IoT设备 这里IMEI及IMSI是BC26模组的值,可以通过AT指令获取,具体指令在之前章节已有解释,...
  • ESP8266WiFi模块接入乐为物联平台

    万次阅读 多人点赞 2018-02-08 17:59:33
    前段时间利用手边的ESP8266小WiFi模块尝试入了Yeelink平台,今天想尝试把ESP8266入乐为物联平台。有了上次的基础,所以今天一个上午就初步调通了。下面分享一下我们调试过程。 0.了解乐为物联 ...
  • 单片机编码 无线模块发送与接收 程序模块型号,可在万能的某宝搜索【超再生无线模块】接收距离:空旷200米[这是卖家说的,有待考验]接收在没有收到讯号,会生成间歇性尖状脉冲,dataLED负极,5VLED正极,可...
  • 接线,先将电源线入物联网开关的输入使之通电,然后再把土壤湿度传感器入物联网开关的IO口。2.用手机登录o8y.net,或者在app“疯狂物联”登录。登录完成后进入界面。因为在第二讲中,光敏电阻入AIN0,现在...
  • Arduino 连接JDY-08蓝牙模块

    千次阅读 2020-09-28 21:16:28
    Arduino 连接JDY-08蓝牙模块 文章目录Arduino 连接JDY-08蓝牙模块简介一、基本连接二、软件连接三、手机连接 简介 从蓝牙4.0开始包含两个蓝牙芯片模块:传统/经典蓝牙模块(Classic Bluetooth,简称BT)和低功耗蓝牙...
  • ESP8266 WIFI串口通信模块应该是使用最广泛的一种WIFI模块之一了。为什么呢? 因为ESP8266模块是一款高性能的WIFI串口模块,可以不用知道太多WIFI相关知识就可以很好的上手。说白了,只是个WIFI转串口的设备,你...
  • HC-05蓝牙模块连接与自匹配

    千次阅读 2018-05-05 15:02:02
    工作状态:A:正常工作,未连接配对:LED每一秒...进入状态A3、成功配对后进入状态B4、按住按键后电源,进入状态C(AT模式) 收发测试:1、模块通过USB转TTL入电脑,电脑打开串口助手(相关设置如下,波特率根...
  • ESP8266模块接线篇 (正常运行&烧录固件)

    万次阅读 多人点赞 2017-03-28 14:43:49
    刚拿到这个模块时,连上线一会能用,一会不能用,开始也一直不知道是什么原因,后来仔细了解了8266的引脚功能,算是解决了这个问题,不仅学会了模块正常工作下的调试,还学会了如何烧录固件,现在把我的学习心得与...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 228,214
精华内容 91,285
关键字:

信息模块端接检测