首页 > 其他分享 >项目

项目

时间:2023-05-31 18:12:56浏览次数:20  
标签:电机 项目 总线 步进 串口 数据包 设备

基于FreeRTOS的智能家居系统

(1)基于STM32硬件平台搭建控制系统,使用USART/IIC等通信协议实现模块间通信。

(2)包括语音模块、WIFI模块、温湿度传感器、电机等。

(3)移植FreeRTOS实现多任务调度,支持语音控制、APP控制。

 

  步进电机是通过脉冲信号来进行控制,每输入一个脉冲信号,步进电机前进一步。步进电机旋转的步距角,是在电机结构的基础上等比例控制产生的,如果控制电路的细分控制不变,那么步进旋转的步距角在理论上是一个固定的角度。在实际工作中,电机旋转的步距角会有微小的差别,主要是由于电机结构上的固定有误差产生的,而且这种误差不会积累。


  步进电机的相电流及磁场,遵循安培右手螺旋定律,由电能产生磁场能量,控制电机相电流,就能使电机定子的磁极方向发生反转,二相磁场的变化相配合,进而产生电机的旋转。

  如果电流方向发生变化,磁极的方向也会发生变化,步进电机的电流流过定子产生磁场的过程叫做励磁。

  通常所说的二相步进电机,电机转子的旋转,包含不同磁极的磁场相斥和相吸实现的。如下图所示,A相产生N极磁场吸引转子的S极,B相产生S极磁场吸引转子的N极,使定子产生旋转的动力。如果改变A、B相定子线圈的电流方向,电机会产生另一步的旋转。连续改变A、B相定子线圈的电流方向,电机会产生连续的旋转。

 

IIC总线的数据传送
  IIC总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(地址通过物理接地或者拉高),主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把CPU带I2C总线接口的模块作为主设备,把挂接在总线上的其他设备都作为从设备。

  也就是说,主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程一样,只不过大多数从设备的地址是7位的,然后协议规定再给地址添加一个最低位用来表示接下来数据传输的方向,0表示主设备向从设备写数据,1表示主设备向从设备读数据。

主设备往从设备中写数据。数据传输格式如下:

淡蓝色部分表示数据由主机向从机传送,粉红色部分则表示数据由从机向主机传送。写用0来表示(高电平),读用1来表示(低电平)。

主设备从从设备中读数据。数据传输格式如下:

在从机产生响应时,主机从发送变成接收,从机从接收变成发送。之后,数据由从机发送,主机接收,每个应答由主机产生,时钟信号仍由主机产生。若主机要终止本次传输,则发送一个非应答信号,接着主机产生停止条件。

主设备往从设备中写数据,然后重启起始条件,紧接着从从设备中读取数据;或者是主设备从从设备中读数据,然后重启起始条件,紧接着主设备往从设备中写数据。数据传输格式如下:

在多主的通信系统中,总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可以作为主节点向其它的节点发送控制字节和传送数据。但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传送数据,这样就形成了冲突。要解决这种冲突,就要进行仲裁的判决,这就是I2C总线上的仲裁。

 

USART

  串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式,如SPI通信、USART通信、EEPROM通信等。简单讲,串口通信实现了上位机(PC)与下位机(如STM32)之间的信息交互。

上位机(PC)通过串口调试助手等实现数据的接收和发送;

下位机(STM32)通过printf()、getchar()等函数实现字符或字符串的接收和发送。

 

串口设置的一般步骤可以总结为如下几个步骤:

1)串口时钟使能 GPIO 时钟使能

2)串口复位

3)GPIO 端口模式设置

4)串口参数初始化

5)开启中断 并且初始化 NVIC(如果需要开启中断才需要这个步骤)

6)使能串口

7)编写中断处理函数

 

  串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口。在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。

  数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、 1、 1.5或2个逻辑1的数据位表示。在数据包的起始位之后紧接着的就是要传输的据的长度常被约定为 5、 6、 7 或 8 位长。在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。
  通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。 USART 就是对传输数据时的传输参数有具体规定。
USART 功能框图

①功能引脚②数据寄存器③控制器(发送器和接收器)④小数波特率生成

 

 

 

基于MediaPipe的人脸识别情绪辅助系统

(1)通过MediaPipe提取出人脸关键点三维坐标,计算人脸的特征量,如:人脸倾斜度、嘴角高度占上下嘴唇高度比、瞳孔占眼眶高度比等等。

(2)以特征量为分类依据,通过优化优先级的KNN算法进行分类识别。

(3)根据识别出用过当前不同的情绪状态提供相应的实时情绪帮助。

 

 

 

WebServer

(1)使用线程池+非阻塞 socket+epoll 的并发模型。

(2)使用状态机解析 http 请求报文,支持解析 get 请求。

(3)经 webbench 测试,可实现上万的并发连接数据交换。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:电机,项目,总线,步进,串口,数据包,设备
From: https://www.cnblogs.com/wxk1213/p/17445216.html

相关文章

  • 在 nginx 服务器上发布vue项目 步骤与配置
    1.在vscode中使用yarnbuild:prod进行vue项目的发布2.进入发布文件3.下载nginx的windows版https://nginx.org/en/download.html4.将发布好的文件放入nginx解压后的html文件夹中5.修改nginx的配置文件打开nginx的配置文件配置完成使用命令打开nginx至此发布......
  • 学习日记——吃货联盟系统项目的实现
    0.目录1.需求分析2.初始化订单3.主页面框架搭建4.各模块功能实现1.需求分析需求:主页面实现用户在个功能之间的选择和返回,实现用户的分支选择判断查看餐袋用户可以查看目前订单详情签收订单用户可以选择预定状态的订单完成签收删除订单用户可以选择已签收的......
  • 软件科技项目验收有哪些注意事项?第三方软件验收测试的好处在哪?
    软件科技项目的验收是软件生产周期中非常重要的一个环节。它主要目的是验证软件产品是否满足用户需求,达到预期的质量和性能要求。因此,在进行软件科技项目验收时,有一些注意事项需要遵循。一、软件科技项目验收的注意事项1、明确验收标准:在软件开发周期的早期,需要给出验......
  • 肖sir____智能机器人类型 ____项目
     一、简历项目===========================项目名一:阿里云智能巡检机器人项目描述: 阿里云智能巡检机器人是一款基于人工智能和机器人视觉技术的智能巡检机器人,包括web端、小程序端、安卓端和机器人端。主要应用于室内配电房,它可以搭载多种传感器,包括摄像头、激光测距仪、红......
  • Linus Torvalds: 成功的项目源于99%的汗水与1%的创新
    2017年2月15日,在加利福尼亚州的开源领袖峰会上,由Linux基金会执行董事JimZemlin进行的一次采访中,Torvalds讨论了他如何管理Linux内核的开发以及他对工作的态度。LinusTorvalds认为,科技行业对创新的颂扬是一种自鸣得意,沾沾自喜,以自我为中心。他更直白地表示:“行业所说的这么多的创......
  • 新建Git仓库并添加本地项目.txt
    1.在自己的GitHub上创建一个仓库。2.打开命令行工具,切换到需要上传的工程目录下。3.初始化当前目录作为Git仓库。gitinit4.添加目录下的文件到本地仓库。gitadd.添加当前目录下的所有文件如果需要unstage某个文件,使用gitresetHEAD<file>命令5.提交staged的文件git......
  • VS2022跨项目文件输出到指定文件夹脚本
      脚本: copy$(TargetPath)$(SolutionDir)”路径地址“$(TargetFileName)/y举个栗子: ”路径地址“= TestClient\bin\Debug\net5.0-windows\Modules\  =>   copy$(TargetPath)$(SolutionDir)TestClient\bin\Debug\net5.0-windows\Modules\$(TargetFileName)......
  • 第五篇 - 搭建一个Vue项目
    上一节创建了一个SpringBoot的后端登录功能,接下来创建一个Vue项目实现前端登录页面一、创建一个Vue项目将Vue项目创建到springbootdemo1项目中。打开idea的Terminal,运行【vueinitwebpackvuetest】,后面都按enter/Y/n等就行。稍等一会,vue项目就创建好了。 二、运行Vue项......
  • 可视化探索开源项目的 contributor 关系
    引语:作为国内外最大的代码托管平台,根据最新的GitHub数据,它拥有超372,000,000个仓库,其中有28,000,000是公开仓。分布式图数据库NebulaGraph便是其中之一,同其他开源项目一样,NebulaGrpah也有自己的contributor们,他们是何时,通过哪个pr与NebulaGraph产生联系的呢?本文......
  • java springboot 项目中静态资源无法访问的问题
    默认resource/static目录下的静态html文件无法访问,需要配置。您可以在SpringBoot的配置类中添加以下内容来手动配置静态资源目录:@ConfigurationpublicclassWebMvcConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddResourceHandlers(ResourceHan......