本帖最后由 admin3 于 2023-11-1 20:24 编辑
本帖最后由 admin3 于 2023-11-1 20:14 编辑
一、AIR700E连上啊里云
1、首先你得有一个阿里云的账号,没有的话就注册一个
2、找到物联网平台
3、选择华东2,点击公共实例
4、创建产品
5、给产品添加设备,这里添加两个设备,将CH32V307 上面的温湿度数据传到MQTTFX上面
6、回到产品处的功能定义
7、点击 发布上线
8、在产品设备管理里点击发布
阿里云链接:[物联网平台_设备接入_设备管理_监控运维_数据服务-阿里云 (aliyun.com)](https://www.aliyun.com/product/i ... ba84cf028806a._.V_1)
二、air700e的模块开发
1、win10的USB驱动无需安装,插入电脑后(Air780E/700E需要powerkey接地1.2S,VBAT供电4.2-3.3V,USB口和电脑相连,USB线为数据传输线并非充电线,区别在于线里有没有DM与DP 。一个很方便的验证方法为,C口插入手机,电脑是否弹出大容量存储设备,如果弹出则证明该线为数据线,反之则该线只能充电即只有VCC 和GND)会虚拟出如下端口:前2个口12,13可以用来发送AT命令,6口对应的为LOG口(也可能是前2个口是LOG口,已实际测试为准)。
2、Luatools是合宙提供的单机版调试工具,支持最新固件获取、固件打包、trace打印、单机烧录等功能。此工具适用于合宙的SoC、cat1模块、cat4模块、2G模块。
3、LuaTools 安装
下载Luatools_v2.7z,解压后是一个文件名为Luatools_v2.exe的运行程序。
新建一个 LuaTools文件夹,将Luatools_v2.exe拷贝或移动到LuaTools文件夹下
双击 Luatools_v2.exe开始安装,出现如下情况,点击更多信息选项,然后选择仍要运行选项即可完成安装。
4、运行Luatools后会提示开始升级,点击开始,进行升级,升级完成后可正常使用。
5、LuaTools 支持最新固件获取、固件打包、项目管理、trace打印、单机烧录等功能。
6、固件烧录
Luatools版本>=2.1.70才支持780E/700E软件下载功能。
首先 USB 连接 PC,保持上电但不开机状态。
点击下载固件
按钮,选中要下载的固件。
固件包后面会上传
7、按住下载模式按键(boot 键)不放,同时再长按开机键开机,这时开发板会进入下载模式,luatool下载进度条会开始跑,这时可以松开 boot 按键。直到工具提示下载完成。
8、如果,未能成功进入下载模式,而是进入正常开模式,这时可以按住 boot 键,再短按复位按键,让开发板重启,重新进入下载模式。
9、如何判断有没有进入下载模式:可以通过 PC 端的设备管理器中虚拟出来的 USB 断开数量来判断:
正常开机模式:
下载模式:
10、查看SIM卡是否联网
请勾选4G模块USB打印
无需修改串口波特率,保持当前值即可
将设备通过usb线连接到电脑,可以看到出现3个新的COM口,工具会自动打开端口
11、烧录脚本
烧录前需要获取固件 下载地址 https://gitee.com/openLuat/LuatOS/releases
固件是拓展名为soc的文件,这里用EC618的固件进行举例,长这样:
点击项目管理测试按钮,点击左下角的创建项目新建一个新项目
选好芯片使用的固件,选好脚本即可下载
demo类的脚本,可以前往LuatOS官方仓库,在demo文件夹可以找到
Luatools工具也自动下载了正式版本的一些实例脚本可以在某种型号\某个版本\demo文件夹看到,可以直接选择脚本进行烧录测试
12、查看日志
如果没有打开串口,点击打开串口即可查看日志
如果还没反应,检查通用串口打印是否勾选, 重新选择串口打开,或者试试点击重启串口
这样就可以看出是否联网了
13、需要再重新下载一次固件,就是第6步操作
14、AT命令发送
下载llcom串口工具,做如下设置。
输入对应AT命令点击发送
15、材料准备
-
开发板一套,包括天线SIM卡,USB线。
-
PC电脑,串口工具
-
准备设备证书及产品证书。
-设备证书
{
"ProductKey": "k0d4gGK3Niz",
"DeviceName": "2000914ABCD",
"DeviceSecret": "882c58a01ab4493676e9588d8c7fda82"
}
--产品证书
{
"ProductSecret": "MrgdzHTznAZXrYQL",
"ProductKey": "k0d4gGK3Niz"
}
16、一机一密AT直连MQTT
当设备属于公共实例,使用一型一密预注册认证方式时,动态注册参数如下:
mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
mqttUsername: deviceName+"&"+productKey
mqttPassword: sign_hmac(deviceSecret,content)
具体交互流程如下所示
这样就和啊里云建立了连接
三、CH32V307VCT6单片机与air700e通过串口通信的主要代码
int main(void)
{
char str1[250];
char str2[250];
char str3[250];
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
SystemCoreClockUpdate();// ʱ
Delay_Init();
USART2_Configuration();//USART2
USART3_Configuration();//USART3
//建立连接
Serial_SendString("AT+MCONFIG=\"k0d4gGK3Niz.2000914ABCD|securemode=2,signmethod=hmacsha256,timestamp=1698077679288|\",\"2000914ABCD&k0d4gGK3Niz\",\"8adc1c4d2583d6b8ae698930ec0b8a0d2c102e2b836b33452ed461ead98af81a\"\r\n");
Delay_Ms(100);
//建立 TCP 连接
Serial_SendString("AT+SSLMIPSTART=\"iot-06z00eojstjzgef.mqtt.iothub.aliyuncs.com\",1883\r\n");
Delay_Ms(2000);
//建立MQTT会话
Serial_SendString("AT+MCONNECT=1,60\r\n");
Delay_Ms(1000);
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n", SystemCoreClock);
oled_init();//OLED ʼ
oled_clear();//
OLED_ShowStr(28,0,"CH32V307!",16);
Input_Capture_Init(1000-1,72-1);// 2KHz Ƶ
OLED_ShowCHinese(0,4,9);
OLED_ShowCHinese(16,4,10);
OLED_ShowCHinese(32,4,11);
OLED_ShowCHinese(48,4,12);
oled_show_char(64,4,':',16);//
OLED_ShowCHinese(0,6,9);
OLED_ShowCHinese(16,6,10);
OLED_ShowCHinese(32,6,13);
OLED_ShowCHinese(48,6,12);
oled_show_char(64,6,':',16);//
OLED_ShowCHinese(0,2,14);
OLED_ShowCHinese(16,2,15);
OLED_ShowCHinese(32,2,16);
OLED_ShowCHinese(48,2,17);
oled_show_char(64,2,':',16);//
// GPIO_Configuration();
// LED_Off();
while(DHT11_Init())
{
printf("DHT11 Error \r\n");
Delay_Ms(100);
}
while(1)
{
DHT11_Read_Data(&temp,&humi);
printf("temp:%dC,humi:%d%RH ",temp,humi);
Delay_Ms(1000);//建议不要低于这个数值
wendu();//温度显示
shidu();//湿度显示
distance = Ultrasoniclength(); //
printf("DISTANCE:%dcm\r\n",distance);// ֵ
chaoshenbo();//超声波距离显示 ʾ
Serial_SendString3("温度:");
Serial_SendNumber(temp, 2);//发送字符串,长度为2
Serial_SendString3("C ");
Serial_SendString3("湿度:");
Serial_SendNumber(humi, 2);//发送字符串,长度为2
Serial_SendString3("%RH ");
Serial_SendString3("距离:");
Serial_SendNumber(distance, 3);//发送字符串,长度为3
Serial_SendString3("cm ");
Serial_SendString3("\r\n");
sprintf(str1, "AT+MPUB=\"/sys/k0d4gGK3Niz/2000914ABCD/thing/event/property/post\",0,1,\"{\\22params\\22:{\\22long:DetectDistance\\22:%d}}\"\r\n",distance);
Serial_SendString(str1);
Delay_Ms(300);//建议不要低于这个数值
sprintf(str2, "AT+MPUB=\"/sys/k0d4gGK3Niz/2000914ABCD/thing/event/property/post\",0,1,\"{\\22params\\22:{\\22long:IndoorTemperature\\22:%d}}\"\r\n",temp);
Serial_SendString(str2);
Delay_Ms(300);//建议不要低于这个数值
sprintf(str3, "AT+MPUB=\"/sys/k0d4gGK3Niz/2000914ABCD/thing/event/property/post\",0,1,\"{\\22params\\22:{\\22long:CurrentHumidity\\22:%d}}\"\r\n",humi);
Serial_SendString(str3);
Delay_Ms(300);//建议不要低于这个数值
if(flang==1)
{
switch(Res)
{
case '1':
LED_Off();
break;
case '0':
LED_On();
break;
}
flang=0;
}
}
}
四、实物演示效果