1、开发板简介
开发板主控芯片为EC600S-CN,该开发板搭载Quectel 移远 EC600S_CNAA Cat.1 通信模组、NANO SIM 自弹卡座、GPS、LTE、WIFI/BT 天线接口、USB Type-C 数据接口、PWRKEY 按键,RST 按键,强制下载按键、两个自定义功能按键、音频功放,支持最高 4Ω2W 喇叭、温湿度传感器、G-Sensor 三轴加速度传感器、单色灯、驻极体 MIC、Speaker 音频输出、光敏电阻、GPIO 排针、LCD 排针等多种外设。
2、开发板实拍图
图1 开发板正面
图2 开发板背面
开发板实物如图1、图2所示,开发板印制板使用黑色阻焊剂,白色丝印,整体焊接平整,切口处无毛刺,丝印清晰;采用Type-C接口供电(也可以通过拨码开关切换为DC供电),开发板原理图见附件1.
3、驱动安装及固件烧录
使用开发板前需要在电脑上安装USB驱动。正确安装后,电脑可以正确识别开发板。因官网不再提供EC600S-CN的驱动,经测试发现可使用QuecPython_USB_Driver_Win10_M_N驱动,驱动安装成功后可在设备管理器中看到如图3所示的端口。
图3 驱动安装成功的端口
该开发板需要烧录相应固件才能正常工作,按官方操作说明(附件2)烧录固件QPY_V0005_EC600S_CNLB_FW,烧录成功后,设备管理器会出现Quectel USB MI05 COM PORT如图4所示,使用官方工具QPYcom查看固件版本号,选择串口Quectel USB MI05 COM PORT,打开串口后点击交互页面,键入
import uos
uos.uname()
交互窗口会返回开发板当前固件的版本信息,开发板固件信息如图5所示:
图4 烧录成功后的端口
图5 开发板固件信息
4、开发板外设测试
该开发板使用QuecPython进行开发,可使用VScode编写代码,因该开发版固件版本较老,很多外设功能无法使用,因此开发时可参考移远通信备份的API文档进行开发(https://gitee.com/thinkcloud-exdream/qpy-wiki/tree/1.3/zh-cn/api)。
4.1板载led灯测试
该部分诣在测试开发板的LED灯功能,测试所使用的设备如表1所示,查阅该开发板原理图和官方开发手册可知控制LED灯D6的GPIO口为GPIO24,在QPYcom键入如下指令:
from machine import Pin
led = Pin(Pin.GPIO24, Pin.OUT, Pin.PULL_DISABLE, 0)
led.write(1)
程序返回数值0表示成功如图6所示,开发板绿色LED灯D6成功点亮如图7所示。
设备 | 单位 | 数量 |
电缆 | 根 | 壹 |
开发板 | 块 | 壹 |
表1 LED灯测试所用设备
图6 开发板返回0
图7 开发板D6成功点亮
4.2串口发送测试
该部分诣在测试开发板的串口发送功能,测试所使用的设备如表2所示,开发板串口2的TX为J5的8脚,按图9所示方式进行连接,将TX2连接示波器探头,设置示波器触发方式为单次触发,使用Uart解码方式解码,在QPYcom的交互界面键入如下指令:
from machine import UART
uart = UART(UART.UART2, 115200, 8, 0, 1, 0)
uart.write(“quectel”)
串口发送编码格式为UTF-8,发送的“quectel”的UTF-8编码为\71\75\65\63\74\65\6c,发送成功后交互窗口会返回发送的字节数,如图8所示,示波器解码发送的电平如图10所示,符合“quectel”的UTF-8编码,串口发送正常。
设备 | 单位 | 数量 |
DHO804示波器 | 台 | 壹 |
电缆 | 根 | 壹 |
开发板 | 块 | 壹 |
表2 串口测试所用设备
图8 串口发送指令
图9 串口测试连接图
图10 串口发送测试结果
4.3PWM波测试
该部分诣在测试开发板的PWM波功能,测试使用开发板PWM2口,按图11方式将示波器探头连接至J6的7脚,在QPYcom的交互界面键入如下指令:
from misc import PWM
pwm = PWM(PWM.PWM2,PWM.ABOVE_1US, 38, 76)
pwm.open()
PWM波生成成功后交互界面会返回数值0如图12所示,此时应生成周期为76us占空比为50%的PWM方波,使用示波器观察生成的波形如图13所示。生成的PWM波可进行实时更改,将周期修改为10us,占空比修改为10%得到测试结果如图14所示。
测试PWM波输出所用设备如表3所示
设备 | 单位 | 数量 |
DHO804示波器 | 台 | 壹 |
电缆 | 根 | 壹 |
开发板 | 块 | 壹 |
表3 PWM波测试所用设备
图11 PWM波测试连接图
图12 PWM2发生成功返回指令
图13 周期为76us占空比为50%测量结果
图14 周期为10us占空比为10%测量结果
观察示波器测量结果,符合程序设定的参数,测试产生的误差可能来自开发板内部振荡电路误差和测试仪器的误差,测量结果满足使用要求。测试完毕后输入:
pwm.close()
交互界面返回数值0,关闭PWM输出。
4.4光敏电阻测试
该部分诣在测试开发板的光敏电阻,当光照强度强时光敏电阻阻值较大,反之阻值较小,该开发板搭载了GL5516光敏电阻,查阅GL5516光敏电阻相关文档测试光照强度,代码如下:
from misc import ADC
import utime as time
class Gl5516(object):
def __init__(self,adc_dev,adcn):
self.adc = adc_dev
self._adcn = adcn
def _voltage_to_resistance(self,Volt):
Va = 2 * Volt
resistance = (2 * 4700 * 40200 * Va) / (2 * 4700 * (3300 - Va) - (40200 * Va))
return resistance
def read_volt(self):
volt = self.adc.read(self._adcn)
return volt
def read(self):
volt = self.read_volt()
resistance = self._voltage_to_resistance(volt)
return resistance
if __name__ == "__main__":
AdcDevice = ADC()
gl5516=Gl5516(AdcDevice,ADC.ADC0)
for i in range(10):
print("Photoresistor resistance as {0}Ω".format(gl5516.read()))
time.sleep(1)
print("measure end. ")
将代码存储为gl5516.py,打开QPYcom连接串口后,点击文件界面,将gl5516.py下载到板上,选中该文件点击运行,返回交互窗口,会输出十次光敏电阻的阻值。
测试所用设备如表4所示
设备 | 单位 | 数量 |
LED灯 | 台 | 壹 |
电缆 | 根 | 壹 |
开发板 | 块 | 壹 |
测试方法,先将开发板置于黑暗环境,运行程序,得到当前阻值,然后使用LED灯照射光敏电阻,再次运行程序,得到光照条件下的阻值,测试结果如图15、16所示。
图15 黑暗环境下的测试结果
图16 强光照射环境下的测试结果
得到的测试结果符合光敏电阻的变换规律,因光敏电阻测试光照强度误差较大,因此,此处仅比较光敏电阻阻值的大小,不进行光照强度的具体换算,测试结果符合预期。
5、串口数据的服务器传输
本章主要实现通过开发板读取某设备的422数据,然后将422数据通过4g网络传输到服务器,使用另一设备访问服务器并观察数据的功能。
5.1硬件连接
将某设备的422输出信号线转换为开发板可以读取的TTL串口数据,转换芯片使用MAX490,将Sim卡插入开发板卡槽,连接4G网络,读取串口数据后定时将串口数据上传至服务器,再使用本地设备访问服务器读取数据,其功能框图如图17所示
图17 硬件连接示意图
5.2软件开发
要实现该系统的功能需在开发板上实现4G通讯,串口数据的读取并上传至服务器,服务器端需要能响应开发板的请求,并将串口数据缓冲。
开发板程序如下:
from machine import UART
import utime
import request
import ujson
uart_test=UART(UART.UART2,19200,8,1,2,0)
url="http://XX.XX.XX.XXX:XXXX/sendData"
uart_test.read(uart_test.any())
while True:
msg=uart_test.read(uart_test.any())
hex_str=''.join(['%20x' % b for b in msg])
hex_str=hex_str.replace(' ','')
data={'data':hex_str}
headers={'Connection':'close','UserAgent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)'}
response=request.post(url=url,data=ujson.dumps(data),headers=headers)
print(hex_str)
utime.sleep(1)
服务器端程序如下:
from flask import Flask,request
from flask_cors import CORS
import json
app=Flask(__name__)
CORS(app)
BUFF=[]
@app.route("/")
def hello_world():
result={'data':'Hello World!'}
return json.dumps(result)
@app.route("/sendData",methods=['POST'])
def sendData():
print(request.get_data())
data=json.loads(request.get_data())['data']
BUFF.append(data)
print(data)
if(len(BUFF)>50):
BUFF.pop(0)
#print(BUFF[-1])
return json.dumps({'data':BUFF[-1]})
@app.route("/getData",methods=['POST'])
def getData():
data={'data':BUFF[-1]}
return json.dumps(data)
app.run(host='x.x.x.x',port=xxxx,debug=True)
本地设备程序如下:
import requests
import time
import threading
def getData():
while True:
url="http://xx.xx.xx.xxx:xxxx/getData"
headers = {'Connection':'close','User-Agent':'Chrome/xx.x.xxxx.xxx'}
response=requests.post(url,headers=headers)
s = requests.session()
s.keep_alive = False
print(response.json())
time.sleep(1)
t1=threading.Thread(target=getData)
t1.start()
5.3实物验证
按图17所示的功能框图连接设备、数据转接板、开发板和服务器,如图18所示。
图18 设备、转接板、开发板连接图
将代码名称更改为main.py实现上电自动运行,打开设备后传输422数据,使用本地计算机访问服务器端口,显示串口数据如图19所示
图19 本地设备读取数据
本地计算机成功从服务器读取到设备发来的串口数据,实现了远程数据读取的基本功能。
6、总结
本次测评主要对开发板的4种外设进行了功能测试,测试结果符合预期,然后通过无线网络传输串口数据到服务器验证了该开发板的核心功能,EC600S_QuecPython_EVB_V1.3开发板做工良好、外设丰富、开发环境搭建简单,软件开发速度快,适合有4G网络、WIFI通讯需求的个人及企业用户,但是EC600S-CN芯片的固件版本较老许多功能并未适配,因此建议选用后续的升级改进型号。最后,感谢芯查查活动官方寄送的样品。
热门评论
0
0
0
0
0
0
0
0
0
全部评论
0
0
0
0
0
0
0
0
0
0
0