基于Hi3861的听话的狗子

news2024/11/19 10:21:37

听话的狗子

  • 一、项目介绍
  • 二、硬件介绍
    • (1)Hi3861最小系统电路
    • (2)电源管理电路
    • (3)USB转串口电路+烧录电路
    • (4)外设接口电路
  • 三、PCB设计
  • 四、软件部分简介
    • (1)代码整体框架
    • (2)串口处理及动作控制
    • (3)超声波检测
    • (4)Hi3861创建AP服务器,用户通过访问进行控制
  • 五、机械结构
  • 六、结语
  • 学习笔记

一、项目介绍

本项目是笔者参加[立创&传智&黑马程序员&CSDN]的仿生机械狗训练营的作品,以Hi3861作为主控,使用OpenHarmony操作系统作为软件开发底层实现的语音控制四足机器人。
在这里插入图片描述

具体功能介绍如下:
·通过语音指令控制机器人站立、握手、前进、后退、左转、右转、俯卧撑、蠕动、扭头等动作。
·通过HC-SR04超声波模块实现避障功能。
·通过连接HC-05实现手机APP端控制动作。
·通过Hi3861自带的WIFI功能,使用AP模式创建服务器,用户使用手机、电脑等终端连接热点并访问内在服务器实现动作控制。

二、硬件介绍

接下来介绍一下整个工程的相关硬件。
控制板使用传智的Hi3861作为主体,围绕其设计了电源管理电路、IO扩展电路,引出多个I/O接口连接到排针和连接器,便于对接相应的功能模块。

(1)Hi3861最小系统电路

传智教育 Hi3861 IoT WiFi 模组是一款基于海思 Hi3861LV100 芯片的系统级封装模组,可提 供完整的 Wi-Fi IoT 开发功能。该模组的外观尺寸仅为 20 mm×18 mm×2.54 mm, 模组 已将晶振、滤波电容、WiFi 天线等外围器件集成封装,只需要 3.3V 供电即可正常工作。使用 传智教育 Hi3861 IoT WiFi 模组可以大大提升开发和管控效率,降低供应链的复杂程度。使用模组的设计大大方便了初学者,初学者直接使用即可。Hi3861模组图片如下图所示:
在这里插入图片描述

使用了Hi3861模组后整个控制板的外围电路还是比较少的,根据参考手册,除了3.3V电源外只需要额外添加一个复位按键电路即可,下图所示是Hi3861的最小系统原理图,其中SW1、C11和R10组成了复位电路,C9、C10两个滤波电容对电源进行滤波保证输入电源的稳定性。(大电容滤除低频杂波,同时起到储能作用,在一定程度上防止因为其他电路拉低电源电压造成的主控重启现象;小电容滤除高频杂波)。
在这里插入图片描述

(2)电源管理电路

因为这个系统需要使用到9个舵机,整个系统所需要的驱动电流是比较大的,这里笔者选用的是比较小的舵机SG90,其额定工作电压是4.8V-6V,额定工作电流是80-100mA,这样9个舵机的电流就需要1A左右,设计电路时还需要留有的余量,也就是大约需要1.5A左右的电流,同时还要保证其他电路的正常工作,所以笔者选用了两节18650锂电池进行供电。
两节18650满电电压大约在8.4V左右,需要设计降压电路来为各个模块进行供电,笔者整个系统中的各个模块的工作电压都是5V和3.3V基准的,因此,需要根据上述需求进行器件选型。
由于笔者贪图电路简洁使用了两个LDO,虽然能用,但是实测5VLDO发热比较严重,还是得改回DCDC。
5V LDO器件,选用LM1084(商城料号:C259973) 其芯片手册参考电路如下图所示:
在这里插入图片描述

3.3V LDO器件,选用UZ1084:(商城料号:C84897)其芯片手册参考电路如下图所示:
在这里插入图片描述
实际电路设计如下图所示:
在这里插入图片描述

(3)USB转串口电路+烧录电路

在学习STM32、51、MSP430、ESP32等单片机的时候我们经常会使用到USB-TTL电路,而且往往都是通过板载的USB-TTL下载电路进行自动烧录,顺着这个思路,Hi386是否也可以自动烧录呢?答案是,不可以。可能是海思在设计这款芯片时没有做自动烧录的功能,烧录时必须使用复位电路配合。
虽然不能自动烧录,但是USB-TTL的功能还是需要的,而且需要注意Hi3861烧录时需要使用3.3V电平,有关连接方式如下图传智模组手册所示:
在这里插入图片描述
根据以上描述,笔者选用了CH340G(商城料号:C14267)芯片描述如下图CH340芯片手册概述所示。
在这里插入图片描述

笔者实际使用电路原理图如下图所示:
在这里插入图片描述

(4)外设接口电路

整个系统所用到的外设比较多,所以需要预留接口,方便后面的接线,具体连接方式如下表1所示(“S_**”表示从机对应管脚):
表1 各外设连接情况

外设名称协议接口供电IO口
ASR-01语音识别模块UART5VGPIO6(S_RXD) GPIO5(S_TXD)
HCSR04超声波模块普通IO5VGPIO08(S_Echo) GPIO07(S_Trlg)
PCA9685舵机驱动I2C5VGPIO10(S_SDA) GPIO9(S_SCL)
0.96OLEDI2C5VGPIO14(S_SCL)GPIO13(S_SDA)
HC-06UART5VGPIO6(S_RXD) GPIO5(S_TXD)

将前面这4个电路合在一起,就是我们的主控板电路原理图(见下图)。
在这里插入图片描述

三、PCB设计

基于电路原理图,笔者设计了如下图所示的PCB。
主控板PCB_TOP:
在这里插入图片描述

主控板PCB_BOTTOM:
在这里插入图片描述

主控板PCB_3D:
在这里插入图片描述

由于Hi3861模组自带的有天线,为了保证我们后面的WIFI通信功能能够正常使用,需要注意天线下方PCB既不能走线也不能铺铜,如下图所示。
在这里插入图片描述

四、软件部分简介

硬件电路设计并焊接完成后就可以开始编写代码了,不同于STM32、ESP32这些单片机有着专用的集成开发环境(IDE);Hi3861这个芯片还没有集成了代码编辑、代码编译、调试于一体的IDE,其编译需要在Linux环境下进行,而笔者电脑的操作系统为Windows,所以只能安装虚拟机,配合VS CODE进行软件开发。
VS CODE代码编辑页面:
在这里插入图片描述

代码部分主要分为以下几个部分。

(1)代码整体框架

这里的代码整体框架还是使用的传智教育元气派的底层,使用多任务的模式来实现,其中网页控制参考的是传智官方例程。
代码整体框架:
在这里插入图片描述

(2)串口处理及动作控制

笔者使用的离线语音识别模块ASR-01与Hi3861使用串口进行通信,Hi3861接收到模块返回的信息后要对数据进行解析,获取对应指令,进而控制动作;数据解析思路主要是使用String,h里面的函数进行操作,具体处理过程见下图。
串口处理数据:
在这里插入图片描述

ASR-01语音识别模块也是需要进行编程的,如果使用代码编程的话,其思路与Arduino的思路差不多,不过他有一个更简单粗暴的编程方式,可以使用图形化编程,简直不要太舒服,强烈建议大家去玩一玩,ASR-01图形化编程如下图:
在这里插入图片描述

手机蓝牙控制与语音识别控制思路一致,只是需要在手机端自定义一个APP即可,这里笔者使用的蓝牙调试器,不需要编程,在手机端即可拖动模块做出自己所需的功能。
在这里插入图片描述

(3)超声波检测

这里笔者使用的HC -SR04超声波模块来实现避障功能,该模块一共有四种获取距离的模式(见下图)。
在这里插入图片描述

这里笔者使用的是第一种模式,也就是通过GPIO来捕获高电平维持时间,代入公式计算出距离,该模块的通信流程如下:
1.主控芯片与TRIG连接的IO配置为输出模式,与ECHO连接的IO配置为输入模式;
2.MCU给TRIG引脚输出一个大于10us的高电平脉冲;
3.模块通过ECHO脚返回一个高电平脉冲信号;
4.主控记录ECHO脚高电平脉冲时间T并代入公式计算。
代码如下图所示:
在这里插入图片描述

(4)Hi3861创建AP服务器,用户通过访问进行控制

网页控制的思路就是使用HTML生成按钮控件,并为按键绑定相应事件,Hi3861通过不同的相应事件执行对应的动作。HTML代码如下图所示:

图21 HTML代码

代码部分比较多,在此不做过多赘述,需要的朋友可以前往立创开源硬件平台搜索本项目(听话的狗子),项目附件中有完整的带注释的代码,可以自行阅读。

五、机械结构

本项目的机械结构笔者也是使用的网上的开源结构,各结构件如下图所示:
在这里插入图片描述
舵机驱动以及各爪子对应情况如下所示:
//  --------                 --------// |  D9    |               |  D7    |// | joint9 |               | joint7 |//  ----- --------     --------- -----//       |  D8    |   |  D6    |//       | joint8 |   | joint6 |//        --------     --------//       |  D2    |  |   D4    |//       | joint2 |  |  joint4 |//  ----- --------    --------- -----// |  D3    |               |  D5    |// | joint3 |               | joint5 |//  --------                 --------//                Front

六、结语

通过本次训练营让我学习到很多,第一次完成了整个项目的硬件软件以及机械结构,这里要感谢一下立创EDA和主办方,感谢他们对这个项目的大力支持,也感谢他们提供的优质活动。这个项目还有很多地方值得改进,欢迎大家批评指正,相关资料源码放在立创开源广场,项目名称是:“听话的狗子”,相关学习笔记在笔者OpenHarmony学习笔记专栏,最后,再分享一些照片。
站立
在这里插入图片描述
在这里插入图片描述
OLED显示表情

在这里插入图片描述

趴下
在这里插入图片描述

学习笔记

这里有亿点点OpenHarmony的学习笔记,放在这欢迎大家交流学习,有错误之处欢迎私信更正。
OpenHarmony学习笔记——南向开发环境搭建
OpenHarmony学习笔记——编辑器访问Linux服务器进行编译
OpenHarmony学习笔记——点亮你的LED
OpenHarmony学习笔记——多线程的创建
OpenHarmony学习笔记——I2C驱动0.96OLED屏幕
OpenHarmony学习笔记——Hi3861使用DHT11获取温湿度
OpenHarmony学习笔记——Hi3861接入OneNET
手把手教你OneNET数据可视化
OpenHarmony学习笔记——Hi386+ASR-01的语音识别助手
Hi3861网络通信——UDP收发

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

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

相关文章

在 ESP 开发板上开发 UI 不再复杂

如果您尝试过在没有图形库的情况下开发 UI,那么您一定知道这有多困难。幸运的是,由乐鑫芯片驱动的屏幕,可支持用户使用多种图形库来开发 UI, LVGL 就是其中之一。通常情况下,在使用 LVGL 或类似的图形库前,…

SPI、RS232、485、IIC通信协议详细总结

通信协议大全 文章目录通信协议大全前言一、异步通信和同步通信二、RS232和RS4851.RS2322.RS4853.RS232和RS485的区别4.RS232、485与普通串口的区别?三、SPI协议四、IIC协议1.IIC的时序介绍2.IIC传输数据的格式总结前言 通信协议是每一个嵌入式工程师必备的技能。下…

几道简单的Linux驱动相关面试题,你看你会几题?

一、Linux基础 1、任意3种网络操作的Linux命令,并说明他们的含义 1. ifconfig 命令 ifconfig 用于查看和配置 Linux 系统的网络接口。 查看所有网络接口及其状态:ifconfig -a 。 使用 up 和 down 命令启动或停止某个接口:ifconfig eth0 up 和 ifconfi…

WEB渗透扫描与加固

WEB渗透扫描与加固 1.通过PC2中渗透测试平台BackTrack5中的httprint工具对服务器场景Server2003检测HTTP服务器(调用signatures.txt), 并将该操作显示结果“Banner Reported:”之后的字符串作为FLAG提交; 切换路径至/pentest/enumeration/web/httprint下 使用命令./httpr…

阿里巴巴面试题- - -多线程并发篇(二十九)

前言:七月末八月初的时候,秋招正式打响,公司会放出大量的全职和实习岗位。为了帮助秋招的小伙伴们,学长这里整理了一系列的秋招面试题给大家,所以小伙伴们不用太过焦虑,相信你们一定能超常发挥,收到心仪公司的Offer~~ 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elast…

网络安全:技术趋势

下面列出了GlobalData确定的影响网络安全的关键技术趋势。 维护IT系统的安全性是各种类型组织的一项长期任务。网络攻击频繁且越来越复杂,由那些推动地缘政治事业的人或意图赚钱的攻击者实施。2021年,由于员工在疫情期间远程工作,企业在网络…

直流信号隔离采样

前言 最近在做一个案子,这个案子中的一点是高压电压信号隔离采样; 常见的隔离有: 光隔离(光耦) 磁隔离(霍尔,变压器) 等等。 那么要测量直流电压线性隔离如何实现?…

C语言中程序的环境和预处理简述

文章目录程序是如何执行的?翻译预编译条件编译文件的包含嵌套引用不同的引用方式预定义符号编译汇编链接运行程序是如何执行的? 有时候会问自己,程序的运行是那么简单的事情吗? 我鼠标点到 visual studio 上,程序就跑起来了,然后在界面就能…

项目管理:如何使用甘特图制定项目计划

甘特图能够很直观地显示项目任务、进度随着时间推进的进展情况。 横轴为时间,纵轴为项目事项,用条形图的方式直观地展现项目中所有任务的时间及进度。 它可以直观地表明项目中有哪些任务?任务计划在什么时候进行,及实际进展与计划…

基于Vue+node的图书馆座位预约选座管理系统

目 录 一、绪论 1 (一)选题背景简介 1 (二)目的和意义 2 (三)基本内容及目标 2 二 技术简介 4 (一) React 4 (二)Vue 4 (三)Egg.js 5 …

生产者消费者模型

什么是生产者消费者模型? 生产者和消费是操作系统中一种重要的模型,它描述的是一种等待和通知的机制。一、概念引入 日常生活中,每当我们缺少某些生活用品时,我们都会去超市进行购买,那么,你有没有想过&am…

Node.js之Hello World

目录 简介 1.安装 2.安装后的效果 3.准备尝试运行的代码 4.运行JS代码 5.访问正在运行的代码(Hello World) 简介 Node.js 是一个基于"Chrome V8 引擎" 的JavaScript "运行环境"; NodeJS不是一门编程语言, NodeJS是一个运行环境&#xff…

C语言题解 | 消失的数字轮转数组

… 🌳🌲🌱本文已收录至:C语言题解系列 更多知识尽在此专栏中! 🎉🎉🎉欢迎点赞、收藏、关注 🎉🎉🎉文章目录🍉前言🍉正文&…

这才是使用ps命令的正确姿势

这才是使用ps命令的正确姿势 前言 在linux系统当中我们通常会使用命令去查看一些系统的进程信息,我们最常使用的就是 ps (process status)。ps 命令主要是用于查看当前正在运行的程序,以及他们相关的的信息,我们可以通过不同的选项进行查看…

全球名校AI课程库(12)| CMU卡内基梅隆 · 数据库系统进阶课程『Advanced Database Systems』

🏆 课程学习中心 | 🚧 计算机基础课程合辑 | 🌍 课程主页 | 📺 中英字幕视频 | 🚀 项目代码解析 课程介绍 CMU 15-721 是 CMU 卡内基梅隆大学开放的数据库方向进阶课程,讨论了很多数据库方向新的技术研究方…

基于Matlab使用跟踪筛选器跟踪机动目标仿真(附源码)

此示例演示如何使用各种跟踪筛选器跟踪机动目标。该示例显示了使用单个运动模型和多个运动模型的滤镜之间的差异。 一、定义方案 在此示例中,定义了一个目标,该目标最初以 200 m/s 的恒定速度行进 33 秒,然后输入 10 度/秒的恒定转弯。转弯…

【C++】类和对象(中)

类和对象是面向对象语言的一个重要部分,承接上一话,我们直接开始这一章的内容。 文章目录 一、类的6个默认成员函数二、构造函数三、析构函数四、拷贝构造函数五、赋值操作符重载六、 const成员函数七、取地址及const取地址操作符重载八、相关习题的练习…

Windows系统常用网络命令详解及命令示例(全)

1.最基本也是最常用的,PING ping 192.168.0.8 -t 测试物理网络   ,参数-t是等待用户中断测试   2.检查DNS、IP、Mac等   A. Win98:winipcfg   B.Win2000及以上:ipconfig /all      C.NSLOOKUP:如果查看河北…

初阶c语言之浅识指针

学习导航:> 1.指针是什么? 2.指针和指针类型 2.1指针-整数 2.2指针的解引用 3.野指针 3.1野指针成因 3.2如何规避野指针 4.指针运算 4.1指针-整数 4.2指针-指针 4.3指针的关系运算 5.指针和数组 6.二级指针 7.指针数组 1.指针是什么? 指…

动态路由协议解析(rip)

因为今天是1024程序猿节,小刘就在这里祝各位程序猿大佬们节日快乐啦 作者介绍: 💰作者:小刘在C站 ✨每天分享课堂笔记 🌸夕阳下,是最美的绽放 目录 动态路由协议和 rip 1.动态路由 2.动态路由协议工作…