演示视频:https://www.bilibili.com/video/bv1os4y1z7qv
环境搭建:哔哩哔哩:https://www.bilibili.com/video/bv1py41147z8
一、课题详情
1、项目描述
基于openharmony开发一款智能录音笔,功能如下:
1,能够支持录音
2,支持配网
3,支持录音上传生成文稿
2、项目产出
满足功能的实物硬件+软件
3、项目主要创新点
使用一句话识别api,翻译生成文稿并上传
二、设计思路与方案
1、作品设计思路(包含系统架构图、程序流程图、软硬件工具等)
图1 基本流程图
整体系统流程图如上,在上电初始化后判断是否能直接入网(flash存储掉电wifi信息),若不能直接联网则进行配网操作,此时拒绝联网只能实现基础录音放音功能,当使用数字管家进行配网后,进行api的初始化,在进行录音后若选择文稿导出功能则上报数据和返回。
二、项目内容
(1)选用hi3861芯片开发;
(2)使用codec_wm8978实现收音放音;
(3)使用wifi_ap_sta实现web配网;
(4)使用云服务语音api识别实现语音识别;
三、编译环境搭建(纯windows下开发)
详细操作流程可参考上方视频
四、web配网
哔哩哔哩视频:
https://www.bilibili.com/video/bv19l411m75o
csdn:
https://blog.csdn.net/weixin_42193239/article/details/121717340
1、华为配网方式
通过nfc读取的方式,得到设备id,拉起数字管家验证后进行连接,配网可分为下面两种:
包括nan配网和ap配网,可理解为使用的wifi能力按照固定协议传输要进行配网的热点的ssid和passwad,实现设备的联网功能,在这个工程中按照既定协议实现ui的进度可视化。
搭配原子化服务卡片和实现上图的拉起效果。
2、web配网介绍
使用手机或其它第三方设备连接需配网设备产生的softap热点,热点构造http协议下的web网页,通过网页的输入框和按钮等来实现配网,详细的补充如下图:
3、web配网程序
见文档头部的链接;
4、使用到的参考资料
小熊派开源项目:
https://gitee.com/bearpi/bearpi-hm_nano/tree/master/applications/bearpi/bearpi-hm_nano/sample
润和开源项目:
https://gitee.com/hihopeorg/harmonyos-iot-application-development/tree/master
五、配网过程
1.1项目描述
使用润和hi3861开发板实现web配网,具有输入路由器帐号密码进行连接,并掉电保存的功能,实现设备快速入网。
1.2资源获取
演示视频:https://www.bilibili.com/video/bv19l411m75o
程序代码:包括下面六个文件
https://pan.baidu.com/s/1zbl3zi-dmxmvd-xsyy1yhw
提取码:1234
二. 解决方法
2.1基本流程
2.2实现原理
以hi3861芯片为核心,使用sta/ap兼容模式实现tcp服务器的功能,通过固定解析内容实现为网页服务器(可实现网页访问)。当手机或其它设备使用tcp连接设备产生的热点后,访问固定ip,即可打开固化在板子内部的html网页,输入目标帐号和密码后点击提交,此时数据读入芯片,验证是否可连接成功,若成功的话将该数据写入flash存储器,可掉电保存。
2.3解决方案
任何需要上网的场景应用,碰一碰配网暂时只支持鸿蒙系统的设备,而web配网在任何有能力访问互联网的设备上均可实现。
三. 代码结构
3.1 创建ap热点
手机/其它设备需要先连接设备产生的热点后才能实现tcp的连接,在hi3861中创建热点包括下面几步:
(1)注册回调
//注册wifi事件的回调函数
g_wifieventhandler.onhotspotstajoin = onhotspotstajoinhandler;
g_wifieventhandler.onhotspotstaleave = onhotspotstaleavehandler;
g_wifieventhandler.onhotspotstatechanged = onhotspotstatechangedhandler;
registerwifievent(&g_wifieventhandler);
(2)装载热点名称与密码
#define ap_ssid “lal_han”
#define ap_psk “12345678”
strcpy(config.ssid, ap_ssid);
strcpy(config.presharedkey, ap_psk);
config.securitytype = wifi_sec_type_open;//选择不需要密码
config.band = hotspot_band_type_2g;
config.channelnum = 7;
sethotspotconfig(&config);
在上面的程序中装载入创建热点的名称,虽然设定了密码,但在wifi安全类型部分我们选择的开放式(无需密码即可连接),最后由sethotspotconfig函数设定该部分设置。
(3)打开热点与分配ip设定
//启动wifi热点模式
error = enablehotspot();
//启动dhcp
g_lwip_netif = netifapi_netif_find(“ap0”);
ip4_addr(&bp_gw,192,168,1,1);
ip4_addr(&bp_ipaddr,192,168, 1, 1);
ip4_addr(&bp_netmask, 255, 255, 255, 0);
netifapi_netif_set_addr(g_lwip_netif,&bp_ipaddr,&bp_netmask, &bp_gw);
netifapi_dhcps_start(g_lwip_netif, 0, 0);
我们在使用ap/sta模式时,创建热点可当做一个路由器来理解,需要设定ip段与网关,并且当其它设备连接的时候实现一个分配ip功能。
3.2 创建tcp服务器
在创建完热点后要实现的是tcp服务器功能,互联网上任何数据连接的底层基本都是tcp或udp,例如网页访问、网络游戏和在线视频等等,都是通过tcp来实现数据按照固定协议的发送与解析来实现的。
在web配网中同样用到了tcp功能,设备作为tcp服务器后等待设备连接,连接成功后等待设备使用浏览器访问,再发回html网页界面,代码包括以下几个部分:
(1)创建socket接口
sock_fd = socket(af_inet, sock_stream, 0);
bzero(&server_sock, sizeof(server_sock));
server_sock.sin_family = af_inet;
server_sock.sin_addr.s_addr = htonl(inaddr_any);
server_sock.sin_port = htons(prot);
//调用bind函数绑定socket和地址
bind(sock_fd, (struct sockaddr *)&server_sock, sizeof(struct sockaddr))
//调用listen函数监听(指定port监听)
listen(sock_fd, tcp_backlog)
socket是tcp的另一种叫法,在该部分设定tcp服务器的ip(192.168.4.1)和端口(80),因为网页访问的默认端口都是80。例如访问百度网页(www.baidu.com),我们通过ping该域名得到ip(220.181.38.148)。在浏览器中输入http://220.181.38.148:80/会发现打开的确实是百度的页面,这就是网页访问发起的实际地址。
(2)等待客户端连接
new_fd = accept(sock_fd, (struct sockaddr *)&client_sock, (socklen_t *)&sin_size))
cli_addr = malloc(sizeof(struct sockaddr));
memcpy(cli_addr, &client_sock, sizeof(struct sockaddr));
使用accept函数等待客户连接,连接成功后把客户地址传入cli_addr变量并创建处理序号new_fd,以便接下来处理。
(3)处理接受到的数据
ret = recv(new_fd, recvbuf, sizeof(recvbuf), 0))
使用recv函数即可实现对接受到数据的数据内容进行读取,此时准备进入模拟网页阶段。
3.3 模拟网页访问并读取传入数据
高性价比蓝牙耳机的推荐,低价位的优质蓝牙耳机
电击和电伤哪个对人体伤害最致命
零线和地线接反会导致哪些问题
凹凸科技力推急速双充芯片瞄准快充需求
单片机如何通过PWM脉冲控制电机转速?
Hi3861:智能录音笔【环境搭建+配网】
华为Mate10什么时候上市?最新消息:华为Mate10即将发布六大预测汇总,全面升级值得期待
TDA7050音频功率放大器IC性能特点及应用说明,TDA7050 APPLICATION
modbus转MQTT网关应用于工业现场采集RS485数据
AIoT有望成为医疗现场转变动力 协助医生进行脑或肺等器官诊断
区块链技术和边缘计算结合拥有巨大的潜力
铃木为电动汽车申请喷气式飞机声音专利
海洋通信打造互联网+园区服务等3个新模式
5G+智慧医疗领域将迎来快速发展期
Chromium为代表的浏览器架构及Blink内核的功能架构
抢先看!三星用技术玩转安全智能
小米6真机曝光!机身更圆润了 价格不会太便宜
被碳酸难住的SK海力士,被动停产后封测产能雪上加霜
场景化×颠覆性创新:与用户一起打磨极简之“光”
阿里巴巴:未来一切人工智能即服务