物联网毕业设计项目选题:harmonyos鸿蒙系统开发智能小车案例-hi3861v100开发板-留言领源码

news2025/2/26 10:01:17

华清远见FS-Hi3861开发套件,支持HarmonyOS 3.0系统。开发板主控Hi3861芯片内置WiFi功能,开发板板载资源丰富,包括传感器、执行器、NFC、显示屏等,同时还配套丰富的拓展模块。开发板配套丰富的学习资料,包括全套开发教程、视频课程、7大项目实战案例,可以帮助学员系统性学习鸿蒙设备开发及物联网开发。同时作为一款物联网开发板,华清远见FS-Hi3861开发套件可以进行物联网全技术体系的学习,包括传感器、无线传感网络(WiFi/蓝牙)、物联网操作系统(OpenHarmonyOS)、物联网云接入(华为云)等技术方向,可广泛应用于高校物联网创新教学、学生毕设及企业产品开发评估。

可学习技术:鸿蒙设备开发环境搭建、鸿蒙裸机驱动开发、OpenHarmonyOS系统开发、鸿蒙网络开发、华为IoTDA设备接入、鸿蒙系统项目开发等鸿蒙设备开发及物联网开发技术。

可实战项目:智能照明灯、智能安防报警、智能农业、智能温度计、智能测距仪、倒车雷达、智能小车。

华清远见综合项目案例包括:

• 鸿蒙物联网项目实战:智能照明灯

• 鸿蒙物联网项目实战:智能温度计

• 鸿蒙物联网项目实战:智能安防报警

• 鸿蒙物联网项目实战:智慧农业

• 鸿蒙物联网项目实战:倒车雷达

• 鸿蒙物联网项目实战:智能测距仪

• 鸿蒙物联网项目实战:智能小车

这7个综合项目的难易程度各不相同,方便用户以循序渐进的方式进行学习。项目案例的设计,偏重于综合性更强,更贴近于产品化。每个项目,都可以使用“NFC碰一碰”进行配网。每个项目,都有微信小程序和华为云物联网平台的联动。每个项目,都配套详细的项目开发文档及实验源码,非常方便开发者学习。

项目配套文档及源码,可在下方评论区留言索取~~

鸿蒙开发板项目演示视频

https://www.bilibili.com/video/BV1pM41127Jp/?spm_id_from=333.999.0.0

基于物联网的智能小车项目

项目简介:

本项目由三部分组成:应用端(微信小程序)、设备端(Hi3861)、驱动端(UPS)。

目前在大部人手机上都有微信小程序,并且微信小程序的开发难度较小,所以采用微信小程序作为应用端控制界面。在开发微信小程序端之前,需要熟悉JavaScript语言、CSS语言、XML语言和JSON语言。在微信小程序端的控制小车界面中需要输入Hi3861设备端的IP地址,才可以正常的通信。

在设备端采用Hi3861 WiFi模组作为主控单元,Hi3861连接附近的WiFi路由器之后,首先获取连接该WiFi热点的IP地址,然后在OLED显示屏上显示当前设备的IP地址,在设备端系统中创建串口任务、OLED显示任务、UDP发送任务、UDP接收任务等。

在驱动端采用STM32单片机作为驱动单元,在STM32单片机中开启定时器的PWM功能和编码器采集功能,进行驱动和控制两个直流减速电机,并且在STM32端开启串口的空闲中断,来接收Hi3861设备端下发的控制指令,来进行控制小车电机的前、后、左、右等动作,使其小车按照功能需求进行执行。

开发平台:

华清远见hi3861鸿蒙开发板+UPS模组+超声波传感器+车体

项目框架:

整体框架

应用端框架

设备端框架

驱动端框架

硬件部分

设备端

主控部分

本项目使用的是WF-H861-RTA1模组作为主控,此模组是基于Hi3861V100芯片设计的,该芯片是一款高度集成的2.4GHz芯片,集成了IEEE 802.11b/g/n基带和RF电路,包括功率放大器PA、低噪声放大器LNA、RF balun、天线开关以及电源管理模块等。

支持20MHz标准带宽和5MHz/10MHz窄带宽,提供最大72.2Mbit/s物理层速率。并且集成了高性能32位微处理器,提供SPI、UART、I2C、I2S、PWM、GPIO以及多路ADC模拟输入等丰富的外设接口,同时支持SDIO2.0接口,时钟最高支持50MHz。

主控部分原理图如下图所示:

模组的外设引脚功能,如下图所示:

NFC部分

NFC通信使用的是恩智浦公司生产的NT3H1101芯片,此芯片支持I2C通信,支持可配置的现场检测引脚,内部配备有EEPROM存储芯片,允许在RF和I2C之间快速传出数据,不收EEPROM内存的写入周期进行限制。

基本参数信息:

OLED部分

SSD1306是一款单片CMOS OLED/PLED驱动器,具有有机/聚合物发光控制器二极管点阵图形显示系统。它由128个段和64个公共部分组成。这个IC是为普通阴极型OLED面板设计。

SSD1306内置对比度控制、显示RAM和振荡器,减少了外部组件和功耗。它有256级亮度控制。数据/命令是从通用单片机通过硬件可选的6800/8000系列兼容并行接口发送,I2C接口或串行外围接口。它适用于许多紧凑型便携式应用程序,例如手机副显示屏、MP3播放器、计算器等。

采用SSD1306芯片进行驱动0.96寸OLED显示屏,本显示屏使用黄+蓝屏幕进行显示。

基本参数信息:

IO扩展部分

PCF8574是一款并口扩展芯片,它的引脚图如下图所示,它与主控芯片通过IIC接口进行通讯。需要注意的是,PCF8574有多种封装,下图所示只是其中一种,是PDSO-G16封装的芯片引脚图。

在这个芯片的引脚中,VCC和GND为电源和地引脚,A0~A2为从器件地址,通过引脚的输入电平,可以配置地址为0~7,因此一个IIC总线上最多可以挂载8片PCF8574芯片。SDA和SCL为IIC总线的数据和时钟接口。INT为中断反馈接口。P0~P7为扩展的并口,可以用作输入或者输出

基本参数信息:

蜂鸣器部分

蜂鸣器驱动电路采用PNP三极管进行驱动,当IO扩展芯片的BUZZER引脚输出低电平的时候,蜂鸣器鸣响,反之,BUZZER引脚输出高电平的时候,关闭蜂鸣器。

驱动端

主控部分

STM32G030F6是基于ARM Cortex-M0+系列的32位处理器,主频为64MHz,它内部集成了8KB的RAM空间和32KB的Flash空间,另外还集成了I2C、IrDA、LINbus、SPI、UART\USART、DMA、I2S、POR、PWM、WDT等功能。

INA219是一款具备I2C或SMBUS兼容接口的分流器和功率监测计。该器件监测分流器电压降和总线电源电压,转换次数和滤波选项可通过编程设定可编程校准值与内部乘法器相结合,支持直接读取电流值(单位:安培)。通过附加乘法寄存器可计算功率(单位:瓦)。I2C或SMBUS兼容接口具有16个可编程地址。

INA219提供两种级别:A级和B级。B级型号的精度更高和精密规范更加严格。

INA219可在0V至26V范围内感测总线中的分压。该器件由3V至5.5V单电源供电,电源的最大流耗为1mA。INA219的工作温度范围为-40℃至125℃。

电机驱动部分

我们使用两块A4950芯片实现对两路轮胎控制电机的驱动;A4950的功能与TB6612FNG类似,不同点在于:TB6612FNG有2路Pin控制电机正反转,1路PWM输入信号(也就是说一个电机需要三个引脚控制)。而A4950使用两路输入的信号差分进行正反转和速度的控制,如下图:

我们使用下面的电路图来实现电机的驱动,74HC08芯片为四路与门控制器,用于产生四路PWM差分信号,然后输入给A4950芯片进行驱动小车的直流减速电机。

JSON格式协议介绍

设备端与驱动端

表1 – 下发json格式协议:

测试示例:

// 开启小车电机{"control":{"power":"on"}}// 小车前进{"turn":"run","pwm":{"L_Motor":400,"R_Motor":400}}

表2 – 上传json格式数据

测试案例:

{"distance":500,"carPower":12000,"L_speed":10,"R_speed":10}

设备端与应用端

表1 – 下发json格式数据

测试示例:

// 小车开启电机{"carStatus":"on"}// 小车前进{"carStatus":"run"}// 小车中速行驶{"carSpeed":"middle"}

编译运行

驱动端

1. 硬件环境:FS_Hi3861QDB驱动板、ST-Link仿真器。

2. 软件环境:keil5开发板工具、串口调试助手。

3. 源码位置:【FS_Hi3861开发板光盘资料\程序源码\综合实验源码\智能小车\驱动端\smartCar_ups_uart_Test_v1.3】。

编译

注意:编译驱动端工程源码的时候,需要提前安装好STM32单片机的开发环境。

1.双击打开工程源码文件夹的MDK-ARM文件夹下“smartCar_ups.uvprojx”keil5工程文件。

2.点击左上角的编译组建按钮,进行编译程序,如下图所示:

3.编译结果如下图所示:

4. 需要配置烧写工具,点击工具栏中的,进行配置ST-Link Debug模式:

5. 然后点击“Settings”,再点击“Flash Download”,勾选“Reset and Run”,添加STM32G0系列 Flash烧写算法。

烧写

注意:驱动板出厂的时候已经烧录好了固件,如果您想自己去写驱动板的程序,是需要单独购买仿真器和转接板的。

1.这里需要使用ST-Link仿真器和串口转接板,如下图所示:

2.使用1根USB转mini数据线的一端连接ST-Link仿真器,如下图所示:

3.将USB转mini数据的另一端连接电脑的USB端口,如下图所示:

4.将RJ11黑色扁平线作为ST-Link仿真器与Hi3861驱动板之间进行连接,如下图所示:

5.然后点击Keil5软件左上方的下载烧写按钮进行烧写程序。

6. 烧写完成之后,Hi3861驱动板上的运行指示灯会闪烁,说明Hi3861驱动板上程序正常运行。

设备端

7. 硬件环境:FS_Hi3861开发板、USB-TypeC线。

8. 软件环境:串口调试助手。

9. 源码位置:

1) 【FS_Hi3861开发板光盘资料\程序源码\综合实验源码\智能小车\设备端\smartCar_uart_udp】

2) 【FS_Hi3861开发板光盘资料\程序源码\硬件驱动源码\bsp】

3) 【FS_Hi3861开发板光盘资料\程序源码\硬件驱动源码\pahomqtt】

编译

1.将smartCar_uart_udp、bsp和pahomqtt文件夹拷贝到共享文件下:

2.将smartCar_uart_udp文件夹拷贝到【applications/sample/wifi-iot/app】目录下。

cp /mnt/hgfs/share/smartCar_uart_udp/ -r applications/sample/wifi-iot/app/

3.将bsp文件夹拷贝到【base/iot_hardware/】目录下。

cp /mnt/hgfs/share/bsp/ -r base/iot_hardware/

4.将pahomqtt文件夹拷贝到【third_party/】目录下。

cp /mnt/hgfs/share/pahomqtt/ -r third_party/

5.修改【applications/sample/wifi-iot/app/BUILD.gn】文件。

vim applications/sample/wifi-iot/app/BUILD.gn

6.打开“device/hisilicon/hispark_pegasus/sdk_liteos/BUILD.gn”文件,添加"//third_party/pahomqtt:pahomqtt_static"。

7.在终端中输入“hb build -f”命令,进行编译,编译之后出现错误,如下图所示:

8.根据上述问题进行解决:打开【device/hisilicon/hispark_pegasus/sdk_liteos/include/】目录下hi_errno.h文件,将“#define HI_ERR_FAILURE (hi_u32)(-1)”更改为“#define HI_ERR_FAILURE (unsigned int)(-1)”

9.输入“hb build -f”,再次编译后,出现报错,如下图所示:

10. 根据上述问题进行解决:打开【device/hisilicon/hispark_pegasus/sdk_liteos/build/config/】目录下usr_config.mk文件,将“# CONFIG_I2C_SUPPORT is not set”改为“CONFIG_I2C_SUPPORT=y”。

11. 输入“hb build -f”,再次编译,出现编译成功。

烧写

1.然后在工程源码的目录下,输入以下命令,将文件拷贝到共享目录下。

注意:ubuntu_20.04_64_bit是共享文件夹的名称。

cp out/hispark_pegasus/wifiiot_hispark_pegasus/Hi3861_wifiiot_app_allinone.bin /mnt/hgfs/ubuntu_20.04_64_bit/

2.打开【FS_Hi3861开发板光盘资料\工具软件\HarmonyOS相关工具\Hiburn】程序烧写软件,点击左上角“setting”中“com setting”选项,配置一下串口的波特率为2000000,然后点击确定,如下图所示:

3.此时需要开发本通过串口线连接电脑,电脑端的设备管理器会出现一个串口端口号,当然也可以通过烧写软件中“Refresh”按钮进行刷新,然后选择要烧写的bin文件,操作步骤如下图所示:

4.最后要选择“Auto burn”,要不然下载速度会很慢很慢。

5.会自动的添加.bin文件,添加完成之后,点击“Connect”按钮,然后复位开发板,即可开始烧写程序。烧写完成之后会有提示:

6.注意:烧写完成之后,一定要关闭串口连接,点击“DisConnect”。不然的话,当你点击复位之后,又会再次下载一次。

应用端

1.硬件环境:手机。

2.软件环境:微信开发者工具。

3.源码位置:

1) 【FS_Hi3861开发板光盘资料\程序源码\综合实验源码\智能小车\微信小程序端\hi3861_smart_car_udp】

编译

1.双击打开app.wxss工程文件,即可打开微信开发者工具。

2.首先点击左上角的图标,进行扫码登录自己的微信。

3.登录成功之后,填写自己的AppID。

4.点击上面的编译按钮,进行编译,然后点击预览,用手机扫码进行调试。

综合测试

手机与Hi3861开发板必须在同一个WiFi路由器下!

1.烧写Hi3861开发板的程序后,如果出现下面这种情况,请扫描上面的二维码,进行NFC配网。

2.扫描上方二维码,然后点击微信小程序中的“NFC配网界面”,进行NFC配网操作。

3.(此WiFi热点必须是具有WiFi 2.4G)输入WiFi名称和密码,然后点击“开始配置”。

4.此时会在屏幕中间出现“请靠近设备”,然后将手机靠近NFC线圈区域,进行配置NFC。

5.直到提示“写入数据成功”,然后按下开发板中“复位按键”,让单片机复位。

6.还有一种是ios系统下微信小程序不能使用NFC配置的功能时,需要按照下面步骤进行操作:

1)在ios系统的手机商店中下载“NFC Tools”NFC调试工具。

图1-1 NFC Tools主界面

2) 然后点击“写”功能。

图1-2 写数据

3) 点击“添加记录”。

图1-3 添加记录

4) 添加“Wi-Fi网络”信息。

图1-4 配置WiFi网络

5) 在“配置WiFi网络”中,选择身份验证为“WPA/WPA2-Personal”,并输入SSID和密码。

图1-5 选择身份验证

6) 然后点击“写/87字节”按钮,进行烧写。

图1-6 写数据

7) 此时会弹出“贴近NFC标签”,请靠近开发板上NFC线圈部分。

图1-7 贴近NFC

8) 烧写完成之后,会在显示如下图片,说烧写NFC芯片数据成功。

图1-8 烧写NFC标签成功

7.复位按键成功之后,可以在OLED显示屏上显示获取到当前的IP地址,如下图所示:

图1-9 显示可以正常连接WiFi网络

8.打开Hi3861驱动板的时候,才可以看到当前电池的电压值。

9.打开微信小程序的“小车控制界面”,如下图所示:

图1-10 点击-小车控制界面

10.在“小车控制界面”下,输入小车的IP地址,如下图所示:

图1-11 输入小车的IP地址

11.输入正确之后,点击“启动或关闭小车”按钮,进行连接Hi3861开发板,连接成功时,说明有数据上传,如下图所示:

图1-12 可以看到有电量数据上传

12. 接下来,就可以点击控制界面中的左转、右转、前进、后退按钮,进行测试小车的运动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

洛谷 P2983 [USACO10FEB]Chocolate Buying S

这题其实不难&#xff0c;但时间复杂度是大难点 题目描述 Bessie and the herd love chocolate so Farmer John is buying them some. The Bovine Chocolate Store features N (1 < N < 100,000) kinds of chocolate in essentially unlimited quantities. Each type i o…

网络电缆有哪些类型,网络工程师必知!

在 21 世纪&#xff0c;理想的目标是完全消除网络电缆的使用&#xff0c;并生活在一个一切都以无线方式管理的世界中。没有电缆的困扰&#xff0c;管理服务器会容易得多&#xff0c;我们也不必浪费时间标记和跟踪数百条电缆。 在那个时候到来之前&#xff0c;我们一直坚持使用…

F623光猫超级管理员密码获取

中兴F623光猫超级管理员密码获取 ⚠️事前说明 如果你不熟悉光猫的操作&#xff0c;请勿修改或拆解任何与光猫有关的命令、零件、网线等。操作有风险&#xff0c;运行需谨慎。 光猫型号&#xff1a;ZXHN F623 所属运营商&#xff1a;中国移动 硬件版本号&#xff1a;V6.0 …

算法刷题打卡第77天:解密消息

解密消息 难度&#xff1a;简单 给你字符串 key 和 message &#xff0c;分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下&#xff1a; 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。 将替换表与普通英文字母表对齐&#xff0c;…

模型量化I—基础概念

最近接了个模型量化的任务&#xff0c;读了几篇比较新的论文&#xff0c;并跑通了几个模型。因为第一次接触这个领域&#xff0c;没有理论基础打底&#xff0c;直接读“大成”性的论文&#xff0c;常常有种云山雾罩的感觉&#xff0c;如空中楼阁&#xff0c;不知道每个结论的来…

java常用类: String,StringBuffer和StringBuilder

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录String介绍String创建细节String s…

转投高通平台,大众展露主导自动驾驶的野心

/ 导读 /2022年&#xff0c;英特尔几乎以亏本的价格推动Mobileye上市&#xff0c;成为市场上的一大看点。出现这种情况的原因&#xff0c;除了整个美国自动驾驶大环境不好&#xff0c;和Mobileye接连失去几个大客户不无关系。其中尤以大众这样体量的客户对于Mobileye的影响最为…

Ubuntu 系统如何以 root 用户SSH登录实例

文章目录前言总结前言 出了点小插曲&#xff0c;心情烦躁&#xff0c;搞得Ubuntu都连不上了&#xff0c;心态炸裂。 不过后面冷静下来以后还是找到了解决办法&#xff0c;可以用ssh成功连上root权限的Ubuntu。 因为很少接触Ubuntu&#xff0c;所以不知道即使root的密码正确…

09技术太卷我学APEX-定制页面及导航菜单权限

09技术太卷我学APEX-定制页面及导航菜单权限 0 始终没搞明白APEX的角色如果分配页面的权限&#xff0c;只能自己定制一个 APEX现学现卖开发了个《5217仓库管理》&#xff0c;功能在春节前就搞定了&#xff0c;卡在对页面的权限控制&#xff0c;经过翻阅牛人的博客&#xff0c…

使用vue3,vite,less从零开始学习硅谷外卖.docx

严正声明&#xff01; 重要的事情说三遍&#xff0c;本文章仅供分享&#xff0c;文章和代码都是开源的&#xff0c;严禁以此牟利&#xff0c;严禁侵犯尚硅谷原作视频的任何权益&#xff0c;我知道学习编程的人各种各样的心思都有&#xff0c;但这不是你对开源社区侵权的理由&am…

读书:《高效的秘密》

#《高效的秘密》的作者是《纽约时报》商业调查记者查尔斯都希格&#xff0c;他的另一本畅销书是《习惯的力量》。 高效不是超额工作、拼命工作&#xff0c;甚至牺牲自己的个人生活。高效的秘密取决于你做选择的方式。 一、激发动力&#xff0c;重新审视效率产生的源头 掌控力…

1.7 Cubemx STM32F429_RTX FATFS 库函数讲解(三)

文章目录1、打开文件夹2、读取文件夹3、打开\新建一个文件5、读取文件1、打开文件夹 FRESULT f_opendir ( DIR* DirObject, /* Pointer to the blank directory object structure */ const TCHAR* DirName /* Pointer to the directory name */ ) 函数说明: 此函数可以打开…

React中如何使用Mobx

一、Mobx前端状态管理框架 基础概念&#xff1f; 1. 什么是Mobx Mobx是一个简单、可扩展的状态管理库 2. 什么是状态管理&#xff1f; 状态管理就是将分布在各个组件、各个模块中的状态的变化&#xff0c;按照一定的规则&#xff0c;进行统一的管理。 3. 为什么需要状态管…

NX二开ufun函数创建块/基准平面/凸台/垫块/腔体

本节主要讲述通过ufun函数直接创建块、基准平面、凸台、垫块、腔体&#xff0c;涉及ufun函数如下&#xff1a; 1、创建块 UF_MODL_create_block 2、创建基准平面 UF_MODL_create_fixed_dplane 3、创建凸台 UF_MODL_create_boss 4、创建垫块 UF_MODL_create_rect_pad5 5、创…

聊聊如何成为更好的架构师?

之前有小伙伴咨询架构方向需要学习什么&#xff0c;需要什么技术储备&#xff0c;今天就来深入聊聊这个话题。 就此探讨下必备技能、经验&#xff0c;以及储备相关知识所需的时间和精力。除此之外&#xff0c;我也回顾了自己走过的路、使用或尝试过的技术&#xff0c;以及我从…

开学季,送什么给小学生实用?学生最实用的护眼好物

伴随着“立春”&#xff0c;又到新的春季开学季&#xff0c;不管是家长还是孩子面对每个学期的循环&#xff0c;每一次都有新的故事和发现&#xff0c;很快就要开学了&#xff0c;给学生的小礼物准备好了吗&#xff0c;作为父母、长辈送给孩子最好的礼物&#xff0c;我认为莫过…

大数据舆情分析软件实时监控,TOOM大数据处理与舆情监控简介

舆情数据分析处理是指通过使用大数据技术、人工智能、自然语言处理等&#xff0c;从舆情数据中提取信息&#xff0c;进行模型建立、模式识别、情感分析等&#xff0c;从而了解舆论情况。舆情数据分析处理的目的是了解舆论趋势、话题热点、网民情绪等&#xff0c;从而便于企业、…

中国电子学会2022年03月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

分数&#xff1a;100 题数&#xff1a;24 一、单选题(共10题&#xff0c;共30分) 1. 由1,2,3,4,5,0这六个数字经过排列组合能够组成多少个六位数偶数&#xff1f;注意&#xff1a;每一位都不相同&#xff0c;最高位不能为0。&#xff08; &#xff09; A. 720 B. 360 C. …

动态规划Dynamic Programming的基础解法

本文是对Jeff Erickson经典算法入门书籍《Algorithms》中动态规划问题的阅读笔记&#xff0c;近期在刷一些编程题&#xff0c;对于如何凑出动态规划更新的范式&#xff0c;脑袋里一直是一团乱麻&#xff0c;特别看完了别人的题解&#xff0c;只是惊叹其脑洞&#xff0c;但一直搞…

分页数据渲染

SearchResult属性增加 增加属性 private List<Integer> pageNavs; 目的&#xff1a;产生分页效果&#xff0c;方便操作&#xff0c;navs记录了从1到总页数的暑假 不是第一页时显示上一页 <a class"page_a" th:attr"pn${result.pageNum - 1}" hre…