Air800模块M4是一款支持GPRS+GPS的开发版。Air800M4支持lua、C、AT,开发者可根据需求灵活选择。
Air800M4稳定、专业、高效。仅银行卡大小的身材,集成了Air800模块运行所需要的必要外设,如SIM卡座、GPS天线、GSM天线、供电等。开发者仅需使用microUSB数据线正确连接到开发板,即可使系统运行。
同时,Air800M4还提供了丰富的接口,开发者可用于调试各种外接设备。
2、开发板配置
PCB封装尺寸:65.5*53.5mm;
板载GSMPCB天线,实现“插卡即用”;
可改GSMSMA天线座,满足对天线性能要求高的应用需求;
多种供电方式:电池、串口、microUSB;
内置DCDC降压,使开发板运行更稳定;
电池连接插口,可使用锂电池或者直流电源供电;
内置充电芯片,可为电池充电;
支持UART、SPI、I2C等;
UART1内置串口电平转换电路,支持3.3V,5V外设串口电平
标准2.54mm19PIN*2排针;
内置串口转换芯片,可直接使用microUSB数据线连接开发板,调试更方便;
拨杆供电开关;
内置1个开机按键,1个复位按键;
内置3个LED指示灯:开机状态指示、充电状态指示、通用指示(默认为网络状态指示);
内置驻极体mic;
1路Speaker音频输出
内置25*25mmGPS陶瓷天线(可改外置有源GPS天线);
内置看门狗芯片,实现硬件复位;
简易式SIM卡座;
上电自动开机焊点(开发者可根据需要自行焊接)
二、外设布局
(正)
(背)
三、排针管脚定义
四、功能介绍
1、供电方式
Air800M4开发板支持多种供电方式:
1.5V排针供电;
2.USB接口5V供电;
3.电池端排针供电(3.4~4.2V)。
使用USB供电
Air800M4有1个USB连接器,开发者可以使用microUSB数据线连接PC,或使用5V充电器为Air800M4供电。
打开电源后,将Air800M4的拨杆开关拨到上方,长按开机键(正面左侧微动开关,按住超过2秒后松开),Air800M4的红色LED亮起时表示供电成功。
使用5v串口线供电
将串口线的VCC和GND分别与开发板的5V和GND排针相连。
打开电源后,将Air800M4的拨杆开关拨到上方,长按开机键(正面左侧微动开关,按住超过2秒后松开),Air800M4左下角的红灯亮起时表示供电成功。
请注意
1、5V串口线供电和USB供电,不要同时接线;
2、当VBAT端悬空时,充电灯会闪烁,这是正常现象。接入电池后,LED不再频闪。
锂电池或外接直流电源供电
Air800M4提供了锂电池供电接口。开发者可通过接口,使用电池或者直流电源为开发板供电(亦可为锂电池充电)。
VBAT供电电压范围为3.4~4.2v,建议使用18650并联,或者相应规格的锂聚合物电池。
1、电池输出电流峰值能应达到2A,以满足GSM射频需求;
2、电池应配有对应的保护板,以保证电池不会出现过热等情况;
3、接线时应注意正负极,避免接反的情况。
4、切勿使用不合格的电池。
将电池(直流电源)按照图中标注针脚,正确连接到开发板。
电池连接完成后,将Air800M4的拨杆开关拨到上方,长按开机键(正面左侧微动开关,按住超过2秒后松开),Air800M4左下角的红灯亮起时表示供电成功。
普通PC的USB口供电电流峰值最大只有500mA,远低于GSM系统的2A供电能力要求。
2、开机关机
开机
正确连接供电后,长按Air800M4的开机键大于2S后松开,此时红色开机指示灯常亮,随后绿色网络指示灯闪烁,表示开机成功。
开发者也可以拉低PWRKEY超过2s实现开机。
开机自动上电
Air800M4开发板支持上电自动开机。开发者可将开发板上的JP4断点用锡短接。开发板上电后会自动开机。
配置成自动开机后,无法通过软件调用关机接口的方式实现关机,只能通过切断开发板供电实现关机
关机
在开机状态下将PWRKEY针脚拉低或者长按开机键2S以上,开发板会进入软件关机流程。当网络指示灯不再闪烁时关机流程完成。
另一种方式是通过将RESET针脚拉低实现硬件关机,这种关机方式为硬件关机,通常用于在开发板死机或异常状态时恢复用。
RESET针脚是硬件关机功能,不能实现重启功能,但是在自动开机配置下,拉低RESET针脚会将开发板关机,随后硬件自动上电开机,从而间接实现重启功能。
RESET按键按下后,要等2S左右系统会完全关闭,开机指示灯熄灭。
3、串口连接及下载调试
串口连接
Air800M4内置了CP2102串口转USB芯片,它可以将模块的串口转成USB接口,通过USB连接器引出。
开发者仅需用普通microUSB数据线连接开发板即可实现供电、下载、调试等操作。
连接方式如下:
开机上电状态,才能进行下载、调试操作;
部分操作系统没有CP2102驱动程序(下载地址),开发者需要安装驱动程序后,才能正常识别开发板串口,使用下载工具进行调试;
2个跳线帽必须都在HOST位置,才可以正常下载、调试;
如果是开机自动上电,无法触发下载握手流程,请短按RESET键,或者拉低RESET。
Air800M4有两路通用串口和一路HOST串口。开发板只能通过HOSTUART进行底层软件下载或者lua脚本下载。通用串口(UART1/UART2)均不支持下载、调试。
Air800M4开发板正面有串口选择排针。开发者可以通过跳线帽来选择相应的串口,使之连接到串转换芯片上,实现HOSTUART、UART1切换。
如下图所示,跳线帽短接上面两个针脚,即HOSTUART。此时HOST串口连接串口芯片,USB连接的是HOST口。USB可用于下载、调试,不可用于UART1操作。
Air800M4的UART1内置了电平转换电路,可以兼容5V,3.3V电平的MCU串口电平,开发者无需考虑串口电平匹配问题。
1、当跳线帽设置为UART1时,开发板上的UART1_TX和UART1_RX将不可用;如果需要使用UART1排针,请将跳线帽改为HOSTUART,或者拔掉跳线帽;
2、跳线帽必须两个都正确设置,才能使用。单独接一个跳线帽,或者跳线帽在两个不同位置,均无法正常工作;
3、HOSTUART固定波特率为921600,输出数据有加密,必须使用专用工具查看Trace(下载地址)
下载/调试
Air800M4开发板拥有串口转换芯片,开发者可以直接使用microUSB数据线链接到电脑,通过“下载调试工具”进行开发板调试、下载等操作。
必须使用优质microUSB数据线才可以正常调试、下载;劣质的数据线可能产生较大压降,导致开发板工作异常。
串口转换芯片CP2102驱动程序下载
下载调试工具下载
安装驱动及硬件配置
首先,开发者需要正确安装CP2102串口转换芯片驱动,然后,把开发板正面的跳线帽设置为HOSTUART;最后使用microUSB数据线连接电脑和开发板。
查看Trace
打开“Luat下载调试工具”,正确选择串口,点击软件中“打开串口”按钮;最后长按Air800M4开机键,使开发板上电开机,即可在软件中查看Trace、Event信息。
(下载调试工具-打开串口)
(下载调试工具-查看Trace)
下载
开发者可以使用“下载调试工具”下载底层软件LOD,或者二次开发代码lua。
(下载调试工具-下载LOD)
(下载调试工具-下载lua脚本)
下载调试工具使用教程
GSM天线
Air800M4开发板采用内置的PCBGSM天线。助力开发者,力争做到方便使用、便捷开发,减少成本的目的。
同时,Air800M4支持连接外置天线,以满足开发者对天线性能要求较高的应用需求。
PCBGSM天线
Air800M4开发板默认使用PCBGSM天线.。
该天线具有体积小、效果好的特点,适合大多数使用场景。开发者无须额外改动,可以实现开发板“到手就用”。
(背-PCBGSM天线)
IPEX3代同轴射频座
Air800M4开发板支持使用IPEX3代射频座。
如果需要使用IPEX座子,开发者仅需将PCB通路上的0欧姆电阻拿掉,再将GSM天线通过连接线,接驳到该座子上即可。
该种连接方式,适用于信号差,或者金属壳体的情况。开发者可以使用IPEX转SMA线,将天线外接到壳体外。
(去掉图示的0欧电阻)
(修改后)
(修改前)(修改后)
SMA天线座子
Air800M4开发板支持使用SMA天线座子。
如果开发者需要使用SMA座子,需要将串联的0欧电阻的位置修改到下图位置:
(修改0欧电阻位置)
改好后,即可在Air800M4开发板正面的SMA座上安装天线,进行GSM通信。适用于开发、调试过程中,PCBGSM信号不够强,需要天线增强信号的情况。
切勿同时使用多种GSM天线连接方式;
虽然GSM天线外观和WiFi的天线外观极为相似,但是二者的频率不同(WiFi频率为2.4GHz,5.8GHz,GSM频率为800MHz),故此不可混用。
GPS天线
Air800M4默认采用25*25mm无源陶瓷天线;同时,Air800M4支持外接GPS有源天线连接器。
无源陶瓷天线
Air800M4板载无源陶瓷天线,具有能耗低,便携性强,可靠性高,二次开发简单等特点。
(正-陶瓷天线)
有源外接天线
Air800M4支持有源外GPS接天线,开发者可以通过开发板上的IPEX1代座子外接有源GPS天线,减少搜星速度,增强跟踪能力。
使用有源GPS天线,开发者需改动开发板背面的0欧电阻位置,如图所示:
0欧电阻修改完成后,开发者还需要使用代码打开该IPEX座子供电,就可以使用外接有源GPS天线了。
适用于对GPS性能要求较高的场景,或者开发板封装在壳体内,需要外接天线的情况。
代码>
pmd.ldoset(7,pmd.LDO_VIB)--打开3.3V输出
pmd.ldoset(0,pmd.LDO_VIB)--关闭输出
切勿同时使用有源、无源GPS天线;
外接GPS有源天线为IPEX1代座子;
使用外接GPS有源天线时,请注意开发板至多只能提供3.3v供电。
5、LED指示灯
Air800M4内置3个LED指示灯。分别是充电指示灯,开机状态指示灯,通用指示灯。
充电指示灯(橙):
充电指示灯由充电IC控制。充电时,充电指示灯常亮,当充满后,指示灯熄灭。充电插针悬空时,充电指示灯闪烁。
开机状态指示灯(红):
当系统进入充电开机模式或正常开机模式时,就会常亮。此灯由硬件控制,软件无法控制。
通用指示灯(绿):
此灯由模块的GPIO28控制。开发者可以通过修改代码控制此灯的行为。该指示灯默认为网络指示灯。
Luat出厂默认软件,闪灯规则如下:
网络模式闪灯规则
飞行模式常灭
未检测到SIM卡亮0.3秒,灭5.7秒
检测到SIM卡,未注册上GSM网络亮0.3秒,灭3.7秒
注册上GSM网络,未附着上GPRS网络亮0.3秒,灭0.7秒
附着上GPRS网络,未连接上服务器亮0.3秒,灭1.7秒
连接上服务器亮0.1秒,灭0.1秒
网络指示灯闪烁,仅为GSM网络注册状态,GPRS附着情况的标识,并非表示当前存在数据传输。
6、音频接口
Air800M4支持一路MIC输入和一路SPEAKER输出,以方便开发者进行录音或语音播报方面的开发与调试。MIC为内置驻极体MIC;音频输出由排针引出,可接8欧姆喇叭。
MIC拾音效果有限;SPEAKER为单声道输出,推荐搭配8Ω0.8W喇叭。
音频输入、输出,如果有更高需求请根据硬件设计手册进行修改。
7、充电功能
Air800M4内部集成充电功能。开发板通过充电IC控制充电,无需软件控制,默认恒流充电电流为350mA左右。
电池接在VBAT和GND。开发板使用5V供电时,即可为电池充电。
Air800M4内置充电LED指示灯,充电时会持续亮起,充满后熄灭。注意,当电池接口悬空而USB口有供电时,充电灯会闪烁。
8、硬件看门狗
Air800M4开发板内置了一颗luat专用看门狗芯片。它可以在系统死机时,对系统进行自动恢复。
详情请参考《Luat专用看门狗芯片设计手册》
连接JP1、JP2、JP3、JP5后,开发板的GPIO11和GPIO6会被占用,请不要另作他用。
请注意,如果启用看门狗芯片,那么需要添加如下代码,否则看门狗将间隔240秒左右重启一次模块。如果您使用的是AT版,请不要启用看门狗。
--请添加到main.lua
require"wdt"
由于芯片底层代码调整,目前Air800M4(A10硬件版本)的硬件看门狗功能无法使用。请勿连接JP1、JP2、JP3、JP5断点。
后续A11硬件版本会调整此电路。
五、lua二次开发
本模块只可使用官方提供的下载工具进行程序下载、调试工作。
1、名词释义(lua版)
底层软件
底层软件:也称为基础软件(core)。
底层lod由合宙提供,用户不可以进行修改。它是由用C语言开发完成,内嵌了Lua虚拟机,支持上层软件的运行。
不同功能的lod,可为开发者提供不同的额外功能(如TTS可提供语音朗读,UI可提供显示屏支持)。
上层软件
上层软件由合宙提供DEMO示例代码,用户可进行修改,实现二次开发。
上层软件分为两个部分,分别是基础运行库(lib)和二次开发代码(lua脚本)构成。
2、下载工具
Luat下载调试工具是合宙推出的对Air系列模块/开发板的调试工具。
该工具有如下功能:
1、对模块打印trace进行输出分析;
2、下载合宙官方lod底层;
3、lua、AT版本互相转化(修改底层lod);
4、下载Lua脚本进行二次开发;
5、使用App验证开发板是否为良品;
6、生成量产文件进行远程升级/批量生产。
开发者下载前,应先选择适合的底层软件和上层软件。如果上层软件调用了底层软件不支持的功能,将出现错误。
日常开发中,仅需下载上层软件即可。但是如果重新下载了底层软件,那么上层软件也必须更新。
3、代码编辑
开发者可以从github或者wiki下载例程,并根据自己的需求进行修改。开发者可使用任何编辑器书写代码(如vim、notepad++,vscode等)。
lua代码修改后,无需编译文件,请直接添加到下载工具中,下载到模块内即可。
基于安全设计,代码下载到模块后,无法再从模块中提取。开发者应注意源代码的备份。
4、Debug
开发者需要根据下载工具的trace内容(或报错),修改lua代码,再下载调试,重复此步骤直到实现需求。
开发者应该根据Trace输出的内容进行调试。
如需求助,请提供完整的Trace数据。
5、API
合宙提供多个API以助开发者更轻松书写代码。具体内容情况请参阅:
六、Q&A
Q:什么是底层软件,上层软件,lib,lua?
A:举个栗子
模块是电脑,底层软件是Windows。所有的程序都是在Windows上运行的。用户可以调用Windows提供的API,但是不能修改Windows的代码。
上层软件是应用程序。上层软件中lib是运行环境,lua是开发者写的代码。开发者可以直接调用lib提供的API进行开发,也可以自己修改lib代码,实现其他需求。甚至可以自己根据底层软件提供的API重构代码。
这样一来,应该可以明白这几者对应的关系了。
Q:下载上层软件后,为什么无法正常运行?
A:请检查代码是否有错误,或者模块剩余空间是否不足。
print("mem:",base.collectgarbage("count"))--实时打印已占用的空间。
Q:为什么开发板无法使用GPS定位呢?
A:有以下几种情况可能导致无法GPS定位。
1、开发板所处环境GPS信号弱,无法接收到足够强度的GPS信号;
4、供电问题导致模块运行不稳定;
5、硬件修改GPS天线后,导致开发板无法收到GPS信号;
6、有其他干扰源导致。
Q:代码可以在什么环境上编译调试?
A:lua代码可以在任何操作系统编辑。但是目前仅可在windows平台使用下载工具,下载到模块中。
Q:不同的底层软件,有什么区别呢?
A:如下图所示:
剩余空间中“脚本+资源”指:通过烧写工具烧写的文件,例如lua脚本文件,mp3音频文件,图片文件;剩余空间中“文件系统”指:例如脚本运行过程中创建的参数文件,录音文件,远程升级文件等。
如果用到远程升级功能,一定要为远程升级文件预留足够用的空间,至少保留升级bin文件大小+“所有脚本和资源的原始大小之和”的文件系统空间。
Q:模块的主频是多少?RAM和ROM又是多少呢?
A:模块主频312MHZ,RAM为32MB,ROM为32MB。
Q:为什么主频达到312M,却还不如单片机实时性强
Lua脚本中的定时器,支持的最小时长是1毫秒,但是1毫秒的肯定不准确,1秒以内的都不准确。
如果要利用定时器精确地采集外部的输入脉冲,脉冲频率高于1Hz都不精确;如果对脉冲的采集精度没有要求,则可以根据自己的需求,实际采集一下试试能否满足需求
Q:可否使用充电宝为开发板供电?
A:不推荐。模块自动休眠后,电流过小。充电宝会认为充电充满了,就会关掉输出。开发者可以接到5V充电器,也可以接到电脑USB口。
Q:为什么配置GPIO出错?
A:首先请检查代码是否有错。如果代码没错,那么请检查是否和其他代码冲突(如同时配置了gpio和UART)。
一旦配置了UART,对应的cts、rts、txd、rxd均不可以再设置为gpio
Air800M4A10批次开发板,UART1_CTS/GPIO_3与SPI1_DI/GPIO_12在硬件上短路,导致这两个无法使用,请注意软件上不要配置这两个管脚,以免发生无法预测的问题。
后续A11以及以后的版本会对此问题进行修复。
Q:GPIO支持输出吗?
A:所有GPIO均支持输入、输出和中断。
Q:待机情况下,功耗大约多少?
A:详见下表:
Q:我需要微安级别待机,可行吗?
A:请完全断电。需要开机时再拉低PWRKEY上电。
Q:模块是否支持录音?
A:模块支持录音。
Q:如何计算录音文件大小?
A:录音文件为amr格式文件,码率为12.2kbps。amr文件头有6字节。每秒有1600字节数据。
录音文件总大小为:6+录音秒数*1600。
Q:能否使用代码获取流量卡的号码?
A:不可以。
Q:如何读取imsi、iccid、imei、mnc、mcc等数据?
A:请使用如下代码:
require"misc"
require"sim"
print(misc.getimei())
print(sim.getimsi())
print(sim.geticcid())
print(sim.getmcc())
print(sim.getmnc())
开机后,立即执行此代码,不能正确打印数据;请稍候片刻,初始化成功后才能正确打印数据。
Q:模块支持什么运营商的卡?
A:目前支持移动和联通的流量卡。不支持电信卡。
Q:为什么我的手机卡插到模块中,不能正常使用?
A:需要修改APN才可以。
Q:如何修改APN?
Q:如何设置飞行模式?
misc.setflymode(true)--进入飞行模式
misc.setflymode(false)--退出飞行模式
Q:如何获取小区信息?
require"net"
print(net.getcellinfoext())
Q:能否获得电池电量?
A:开发板默认支持测量电池电压。代码如下:
print(misc.getvbatvolt())
该代码不可以获取电池电量,电池充放电状态。开发者需要使用其他电源管理模块才可以实现该功能。
Q:SN、IMEI、IMSI、CCID的区别?
A:SN即SerialNumber,模块私有的序列号。长度可变,由设备生产商生成并写入模块。开发者可以读取、重写该序列号;
IMEI即InternationalMobileEquipmentIdentity,设备识别码,用以识别设备身份。长度固定为15位,由设备生产商根据GSM标准写入模块,全球唯一。它不会随着SIM卡改动而变化,可以用作设备鉴权等;
ICCID即Integratecircuitcardidentity,集成电路识别码,用以识别SIM卡。长度固定为20位,由SIM卡生产商写入卡中,全球唯一。可以用作SIM卡识别、鉴权、识别运营商等;
IMSI即InternationalMobileSubscriberIdentificationNumber,国际移动用户识别码,长度固定,用以识别该SIM卡在网络中的身份。可用作SIM卡识别、鉴权、识别运营商等。
SN、IMEI和设备绑定,IMSI、ICCID和SIM卡绑定;其中ICCID为SIM卡离线身份验证,不参与数据交换;IMSI需要传输到GSM网络进行SIM卡身份识别、验证。
模块内部默认没有sn号,用户调用misc.setsn()写入之后才有。
Q:LuatAir模块的“浅休眠”和“深休眠”有什么区别?
A:深休眠:
代码中调用misc.setflymode(true)进入深休眠,调用misc.setflymode(false)退出深休眠。深休眠状态下,会关闭语音和数据业务的协议栈,所以不能收发短信,不能通话,不能上网进行数据传输,可以正常操作GPIO,可以正常操作定时器。深休眠状态下的单模块功耗为1mAh,如果还有GPS,UART等外设在运行,功耗另算。
浅休眠:
一般情况下,用户是不需要写代码去控制进入或者退出浅休眠状态,系统自动控制进入和退出浅休眠浅休眠状态下,不会关闭语音和数据业务的协议栈,所以可以收发短信,可以通话,可以上网进行数据传输,可以正常操作GPIO,可以正常操作定时器进入浅休眠状态后,收发短信时,会自动退出浅休眠,收发短信结束后,会立即自动进入浅休眠。进入浅休眠状态后,通话时,会自动退出浅休眠,通话结束后,会立即自动进入浅休眠。进入浅休眠状态后,数据传输时,会自动退出浅休眠,数据传输结束后,会立即自动进入浅休眠。浅休眠状态下的单模块功耗为3.3mAh,如果还有GPS,UART等外设在运行,功耗另算。
进入浅休眠状态后,UART无法正常工作,必须先退出浅休眠,UART才能正常收发数据
Q:Trace中,OPENAT_NetworkStatusChangeInd后面跟的状态字是什么意思?
[network]OPENAT_NetworkStatusChangeIndstate0:
[network]OPENAT_NetworkStatusChangeIndstate1:
网络已连接表示GPRS网络可用,可以进行链路激活
[network]OPENAT_NetworkStatusChangeIndstate2:
链路正在激活
[network]OPENAT_NetworkStatusChangeIndstate3:
链路已经激活PDP已经激活,可以通过socket接口建立数据连接
Q:Air800M4卫星接收通道有多少个?支持多少个卫星?
A:通道有复用,32个跟踪通道,96个捕获通道,支持卫星总数196个。
Q:如何分辨我手中的开发板是AT还是Luat?
A:请使用下载调试工具查看:
Q:为什么发送AT指令没有任何响应?
A:首先,请检查TX、RX是否接线错误,是否打开了错误的串口,供电是否正常,是否为AT底层,是否开机。
如果您使用microUSB连接到开发板,需要确认是否安装了CP2102驱动程序,开发板的跳线是否设置为UART1。
如果您使用排针上的UART1_TX,UART1_RX进行测试,那么请把跳线设置为HOST_UART。
最后,请确定您的串口调试助手可以发送”\r”。如果不行,请尝试更换其他串口调试助手。
Q:如何把lua转换为AT版?
A:开发板正确连接到电脑后,使用下载工具转换即可。
lua版可以通过这个方式转换为AT版;同理,下载lua的底层软件(lod)即可变为lua版。
Q:为什么使用USB2TTL线连接开发板UART1失败?
A:首先,请确定您的串口线驱动是否安装正确;然后,请您查看是否插错了vcc、gnd、tx、rx,是否已经上电开机;最后,请您根据自己的开发板类型(AT/lua)进行调试。
如果是lua,请使用代码中设定的波特率。否则会出现乱码等情况。
部分串口转换芯片可能稳定性不够好,导致识别失败;推荐使用ft232、ch340等芯片。
Q:如何查看GPS输出的原始数据?
A:使用USB2TTL的RX线接开发板的GPS_TX排针,然后开发板上电开机,就可以收到数据了。
Q:PCB天线的设计有什么标准吗?
Q:Air800M4支持什么运营商的卡?是否支持境外的运营商?
A:目前开发板支持中国移动、中国联通的4G/3G/2G流量卡。
Q:为什么我的卡放到手机上可以用,但是放到开发板却无法联网?
A:请您修改APN后再尝试。
如果仍然无法解决该问题,请您使用手机尝试强制使用2G网络,查看是否有信号,能否使用网络。
(因为基站覆盖问题,部分地区的2G网络可能覆盖不够好,所以会出现此类问题)
Q:为什么我的开发板不断重启?
A:请您查看重启的规律,如果是间隔4分钟左右重启一次,那么是由于您的代码没有正常驱动看门狗芯片,导致硬件重启。请您下载最新版lib进行开发。
如果是无规律重启,甚至是启动中途就自动重启,那么请您根据Trace检查lua代码是否有问题。
必须在main.lua中require“wdt”才可以避免规律性重启;
代码错误导致的重启,必须根据Trace输出内容修改代码,重新下载。
Q:为什么我的开发板开机后,没有打印任何Trace,开机失败?
按动开机键超过2s后松开,才可以正常开机。
Q:为什么我发送AT,却返回一堆乱码?
A:一般遇到这种情况,请检查模块是否为AT版,是否正确连接到UART1。
luat版的HOST_TX,HOST_RX波特率为921600,必须使用专用的下载工具查看Trace,普通的串口调试助手均会乱码。
Q:如何使用UART1发送HEX给单片机?
A:对于串口来说,不论发HEX、OCT还是DEC,结果都是一样的,转为BIN(二进制)发出去。所以仅需在编写代码的时候,进行少许改动即可。
此处介绍两种方法方法供大家参考:
方法一:使用string.char方法,全部转为ASCII发送:
--发送数据ffffff
uart.write(1,string.char(255)..string.char(255)..string.char(255))
方法二:使用pack,转换需要发送的数据:
----将0xff0xff0xff以打包为bytes,再转换为HEX
packed=pack.pack(common.binstohexs(pack.pack("b",0xff,0xff,0xff)))
uart.write(1,packed)
想了解更多pack用法?请点击
Q:UART读取数据不完整怎么办?
A:请根据实际情况修改参数:
如果是阻塞读取,那么请检查发送的数据是否完整。
Q:socket经常掉线怎么办?
A:首先请检查信号强度如何,如果信号很弱,请修改天线;然后,请检查代码重连方面的问题;随后,请检查服务器的稳定性如何,是否并发性能很弱,或者硬防干扰,亦或境外VPS的不可抗力因素导致连接超时;最后,由于部分ISP限制,必要时请使用心跳包维持连接。
Q:GPIO支持输入、输出、中断吗?
A:所有GPIO都支持输入、输出(0~3.3v)、中断。请注意电压域的设置。
Q:UART支持什么波特率?能否修改校验位等其他参数?
A:UART支持2400,4800,9600,14400,19200,28800,38400,57600,115200,230400,460800,921600。
修改数据位、校验位,请阅读wiki:
Q:uart.read中,”*l”是什么意思?
A:读取到字符”\n”发送,或者阻塞发送。
Q:如何阻塞读取uart数据直到收到特定的截止符?
A:代码如下:
localfunctionread()
--定义一个临时变量,储存数据
localdata=""
--开始循环,阻塞读取
whiletruedo
data=uart.read(1,"*l",0)
ifnotdataorstring.len(data)==0thenbreakend
tmp_data=tmp_data..data
--如果收到的数据结尾是ffffff
ifstring.sub(tmp_data,-6,-1)=="ffffff"then
--打印收到的数据,并清空变量
print(string.sub(tmp_data,0,-4))
tmp_data=""
end
--注册读取uart1数据的函数
sys.reguart(1,read)
--配置uart1
uart.setup(1,9600,8,uart.PAR_NONE,uart.STOP_1)
Q:串口测试时,怎么一边打印Trace,一边接调试助手?
A:有些时候,开发者可能需要查看Trace的同时,调试uart,这种情况下,建议开发者使用多个usb2ttl线;对于实时性要求不高的情景,可以临时把发uart的数据,传到tcp服务器,从服务器看数据。
Q:播放mp3必须是tts的lod吗?
A:通用版lod即可。
Q:为什么TTS朗读没有声音呢?
A:请检查喇叭好坏以及接线情况;请检查代码是否有误;请检查是否使用了TTS底层LOD。
Q:tts遇到多音字怎么办?
A:请尝试用同音字替换多音字。例如“请重试”换位“请虫试”。
Q:123读成“一百二十三”怎么办?
A:请修改阿拉伯数字为汉字,或者每个数字间加上空格
Q:为什么喇叭声音小?
A:有可能是喇叭的阻抗太大,所以声音很小;请替换喇叭,或者外加功放板;也有可能是声学设计不合理,导致喇叭前后相位相抵导致,请设计一个共鸣腔。
Q:为什么喇叭没声音?
A:多种原因导致,请检查连线情况(是否插错)、喇叭是否损坏、代码是否正确、底层是否正确(tts必须使用tts的lod)。
Q:对于喇叭有什么要求?
A:阻抗8Ω,功率0.8w。
阻抗过大,声音细不可闻;阻抗过小,则可能烧线圈。
Q:喇叭杂音大怎么办?
A:请检查布线情况。再喇叭线上并电容。
Q:为什么有的时候使用tonumber转换失败呢?
Q:为什么有的时候json解析失败呢?
A:这可能是因为json格式不合法导致的。请先检查json格式。
Q:VRTC有什么作用?
A:用以维持内部时钟。
Q:基站定位是什么原理?为什么有的时候不准呢?
A:每一个基站都有自己的“身份编号”,通过这些编号,查询数据库后,便可以知晓该基站的经纬度信息。定位精度级别:100米。
开发板插入SIM卡并开机后,会自动开始搜寻附近的所有基站信息。随后开发板会把基站的“身份编号”及该基站信号强弱上传到服务器。服务器根据开发板上传的信息,查询数据库,应用定位算法,即可返回开发板的经纬度信息了(此过程需要联网)。
所以通常情况下,单基站定位不如多基站定位精度;基站覆盖密集度越高,定位效果越好。
伪基站、应急基站等,是无法定位的。
基站定位的原理是查询数据库,计算经纬度。所以如果数据库内没有该基站信息,或者当前地点基站覆盖较差,均有可能造成定位失准情况。
Q:什么是GPS定位?为什么GPS定位比基站定位精准?
A:开发板通过GPS天线,接收到太空中GPS卫星广播的数据,然后对数据进行计算,即可得到当前经纬度(此过程无需联网)。定位精度级别:10米。
通常情况下,至少搜到3颗卫星才能2DFix(经纬度);至少搜到4颗卫星,才能3DFix(经纬度+海拔)。
Q:什么是混合定位?基站定位、GPS定位、混合定位,分别适用于什么场景?
Air800M4使用的方法是基站定位+GPS。
基站定位适合对精读要求不高的场景,或者室内使用的情况;GPS定位适合室外,可以接收到GPS信号的场景。对于大多数项目,推荐使用混合定位。
Q:什么是AGPS?什么是DGPS?有什么作用?
A:AGPS即AssistedGlobalPositioningSystem;DGPS即DifferentialGlobalPositioningSystem。
DGPS是建立一个基准点,然后在此基准点计算出当前GPS信号修正值。最后把修正值传输给开发板,开发板把收到的GPS信号,进行修正运算,最后得到相对更为精确的定位信息。定位精度级别:1m。
A:开发板需要将开发板的数据上传到服务器,APP才能提示找到该设备。所以请检查开发板是否正常开机,能否正常GPRS通信。
如果确认无误,请稍候片刻即可。
A:不支持查看开发板运动轨迹;如果想实现查看开发板运动轨迹、电子围栏等需求,请选购本公司的车载定位设备。
Q:如何计算通讯流量?我选择多少兆流量的月卡比较适合?
A:使用多少流量,需要根据开发者写的代码进行估算。
月流量=每小时通讯流量*24*30
Q:开发板是否支持通话录音,自动接听,播放应答录音?
A:不支持通话录音;可以自动接听,但是不支持播放应答录音。
Q:开发板的时钟是错误的怎么办?
A:请使用ntp进行同步(此过程需要联网)。
--代码请添加到main.lua
--下载时,请下载ntp.lua
require"ntp"
print(os.time())
print(os.date("*t"))
Q:开发板支持多少个scoket?
A:支持至多8个。
Q:socket是否支持域名?是否支持UDP协议?
A:支持域名;支持UDP。
Q:为什么用物联网多使用MQTT,而TCP、HTTP、websocket用的较少?
A:因为物联网是偏于轻量级的、安全设计的通信方式,所以MQTT更为适合物联网。
它具有传输稳定、安全性高、可靠性高、容量大、协议开放、部署方便、省流量等特点,这是其他协议不具备的。
TCP不够安全,HTTP不够鉴权不够方便,websocket消耗流量过多。故此MQTT是不二之选。
Q:一般情况,MQTT设置心跳包间隔多少秒比较好?
A:60~120s。
Q:有什么推荐的MQTT服务端程序吗?有没有什么工具可以测试服务端?
A:服务端可以试试MOSQUITTO,或者EMQTT;测试程序可以尝试MQTT-SPY。
Q:如何理解MQTT的主题(topic)、订阅(subscribe),发布(publish)?
A:开发板可以订阅主题,订阅后可以发布。只有订阅后才能收到服务器发过来的消息;
开发板可以不订阅主题,发布某主题的内容,服务器可以收到该消息。