当前位置: 首页 > news >正文

莱芜都市网人才徐州关键词优化平台

莱芜都市网人才,徐州关键词优化平台,wordpress幻灯插件,兰州网站seo服务文章目录 前言介绍系统框架原项目地址本项目开发开源地址硬件PCB软件功能 详细内容硬件外壳制作WS2812级联及控制MAX30102血氧传感器0.96OLEDFreeRTOS 效果视频总结 前言 在好几年前,我好像就看到了焊武帝 jiripraus在纪念结婚五周年时,制作的一个心跳跟…

文章目录

  • 前言
  • 介绍
    • 系统框架
    • 原项目地址
    • 本项目开发开源地址
    • 硬件PCB
    • 软件功能
  • 详细内容
    • 硬件外壳制作
    • WS2812级联及控制
    • MAX30102血氧传感器
    • 0.96OLED
    • FreeRTOS
  • 效果视频
  • 总结


前言

在好几年前,我好像就看到了焊武帝 jiripraus在纪念结婚五周年时,制作的一个心跳跟随心形灯,感觉太浪漫了,于是在假期的时候,我也仿照做了一个,虽然还有很多需要完善的地方,但是大致功能已经实现了,下面开源讲讲开源的项目。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


介绍

系统框架

心脏的外壳采用紫铜丝或黄铜丝焊接,1mm的铜丝较硬,适合完成外部框架的搭建,0.7mm的铜丝可塑性较好,适合焊接内部的WS2812,整个过程中吗,焊接难度较大,电子器件的固定难度也很大,我内部借助了一些热熔胶固定,有些丑,可以参考 jiripraus的固定方法。

原作者采用的Arduino主控,且没有借助PCB,纯飞铜线完成内部电子器件的连接。

因为我想利用FreeRTOS学习一下实际项目编写,所以将主控更换成了STM32F103C8T6,当然编写了两套代码,先编写了一套裸机开发,测试能够完成所有功能、之后移植了一套FreeRTOS的,都可以运行。

原项目地址

jiripraus项目地址(Arduino):https://www.instructables.com/Beating-LED-Heart/

本项目开发开源地址

裸机开发软件下载(STM32版本):https://download.csdn.net/download/zerokingwang/88173336

FreeRTOS开发软件下载(STM32版本):https://download.csdn.net/download/zerokingwang/88173410

硬件PCB(立创开源)下载链接:https://oshwhub.com/zeroking/my_heart_

所有文件上传到github了,也可以到github下载:https://github.com/VioletJA/MY_HEART

硬件PCB

绘制了包括STM32F103C8T6的最小系统、蜂鸣器、TP4059锂电池充电电路、OLED接口、MAX30102接口等。
在这里插入图片描述
在这里插入图片描述

软件功能

在没有手指触碰到MAX30102模块时,WS2812进行彩虹灯变换,当手指触碰到时,跟随检测到的心跳进行红色闪烁及蜂鸣器模拟心跳。

详细内容

硬件外壳制作

在3D打印的器件上进行焊接,我先用胶带固定好铜丝,然后再各个连接点进行焊接。
心形3D打印件:https://www.cgtrader.com/items/865899/download-page
在这里插入图片描述
WS2812焊接:最好黏在胶带上,固定好大致位置后再进行焊接,我没有找到其他好方法,焊接极其耗时。
在这里插入图片描述

WS2812级联及控制

在这里插入图片描述

在这里插入图片描述
当发送一串数据时,第一个24bits的数据给D1,第n个24bits的数据给第n。(24bit对应三原色,每一色八位)

输出码型通过下图判断,因此每一位的高低都需要进行严格控制
在这里插入图片描述

在这里插入图片描述
大多数采用的是PWM+DMA的模式,通过传输一串数据,控制不同占空比的PWM完成数据传输

HAL_TIM_PWM_Start_DMA(&ws2812_TIM, ws2812_CHANNEL, (uint32_t *)Pixel_Buf,(Pixel_NUM+1)*24);

参考:STM32系列(HAL库)——F103C8T6驱动WS2812全彩RGB模块(PWM+DMA方式)

但有一点需要注意,必须在PWM的完成回调函数中进行手动关闭DMA传输,否则WS2812颜色不对(应该就是DMA传输出错了)

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance==ws2812_TIM.Instance)HAL_TIM_PWM_Stop_DMA(&ws2812_TIM, ws2812_CHANNEL);
}

其他详细的代码控制都在开源代码中了

MAX30102血氧传感器

参考:【stm32】手把手用cubemx配置血氧传感器(MAX30102)

采用的是中断处理,每次模块发送一个下降沿中断,STM32接收到后进行数据处理。

模块采用IIC进行控制与数据读取,普通采用HAL配置硬件IIC就能够实现,但是在我用STM32F103C6T6进行测试的时候,HAl生成的代码中,IIC引脚不会自动设置为高速,导致运行会出现HAL_ERROR的问题,然而在STM32F103C8T6就已经纠正了这个错误。

void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{GPIO_InitTypeDef GPIO_InitStruct = {0};if(i2cHandle->Instance==I2C1){__HAL_RCC_GPIOB_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);__HAL_RCC_I2C1_CLK_ENABLE();else if(i2cHandle->Instance==I2C2){__HAL_RCC_GPIOB_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);__HAL_RCC_I2C2_CLK_ENABLE();}
}

在这里插入图片描述

0.96OLED

在屏幕调试中,由于1616的字看上去太小了,于是我调整为2424的大小,这个时候,网上的一些库就不够用了,需要看懂是如何完成一个汉字的显示。

利用PCtoLCD2002完成取字模,一般设置如下
在这里插入图片描述
在这里插入图片描述
数据如下:

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x08,0x10,0x70,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x80,0xC0,0xF8,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xC0,0x04,0x18,0xF0,0xE0,0x00,0x00},
{0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x1F,0x18,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x1F,0x08,0x00,0x00,0x00,0x00,0x00},/*"心",0*/

网上一般说取数据是按照一行一行来的,一个数据代表的是8位,不足8位的按照8位算。

但是我实际测试,是按列算的,例如第一个数据0x00,表示第一列中的前八个点全没有点亮,第二个0x00代表的是第二列数据的前8个也全部没有点亮,当前8行的所有列都完成后,计算中间8行,一列一列,之后计算下面8行(24*24的数据)
例如下图:
在这里插入图片描述

而我们采用的低位在前时:
在这里插入图片描述
当第一个格子点亮时,对应的就是0x01

在OLED汉字显示的函数中,需要将汉字分为三上中下,完成三次打印,组成一个完整的汉字

//显示24*24汉字
void OLED_ShowCHinese24(uint8_t x,uint8_t y,uint8_t no)
{      			    uint8_t t;OLED_Set_Pos(x,y);	for(t=0;t<24;t++){OLED_WR_Byte(CHI_24_24[3*no][t],OLED_DATA);}	OLED_Set_Pos(x,y+1);	for(t=0;t<24;t++){	OLED_WR_Byte(CHI_24_24[3*no+1][t],OLED_DATA);}OLED_Set_Pos(x,y+2);	for(t=0;t<24;t++){	OLED_WR_Byte(CHI_24_24[3*no+2][t],OLED_DATA);}	
}

FreeRTOS

在移植操作系统的时候,创建了两个任务,一个完成WS2812和蜂鸣器的控制,一个完成MAX30102和OLED的控制。

其中出现了一些跨任务的信号量,尝试利用任务通知方式进行数据保护,但是效果不佳,最后还是利用了临界区保护,在信号改写的地方进行了保护(临界区时间太长,系统会崩溃)
在这里插入图片描述

效果视频

心跳跟随心形灯

总结

通过制作这个小项目,还是学习了HAL的IIC配置,PWM的DMA模式,WS2812的控制,OLED屏幕控制,FreeRTOS也理解更多了一点,当然还只是刚开始入门,要学的东西还是有很多,在这个小项目中,还有很多bug和不完善的地方,比如说MAX30102测量的心率不准等等,但是目前打算就先这样结束,先继续学习吧。


文章转载自:
http://wanjiaindevotion.hwbf.cn
http://wanjiaingram.hwbf.cn
http://wanjiaadvisedly.hwbf.cn
http://wanjiadevereux.hwbf.cn
http://wanjiadiphosphate.hwbf.cn
http://wanjiathyrotrophin.hwbf.cn
http://wanjiasalvia.hwbf.cn
http://wanjiaratan.hwbf.cn
http://wanjiaxyster.hwbf.cn
http://wanjiaochratoxin.hwbf.cn
http://wanjiahewer.hwbf.cn
http://wanjiacoexistence.hwbf.cn
http://wanjiaarithmometer.hwbf.cn
http://wanjiatamar.hwbf.cn
http://wanjiajps.hwbf.cn
http://wanjiatrivet.hwbf.cn
http://wanjiacanalize.hwbf.cn
http://wanjiadeuteronomy.hwbf.cn
http://wanjialpi.hwbf.cn
http://wanjiaqb.hwbf.cn
http://wanjiaairwave.hwbf.cn
http://wanjiaexocyclic.hwbf.cn
http://wanjiamanado.hwbf.cn
http://wanjiaspottable.hwbf.cn
http://wanjiapyronine.hwbf.cn
http://wanjiaviricide.hwbf.cn
http://wanjiaeurogroup.hwbf.cn
http://wanjiadoozer.hwbf.cn
http://wanjiagorgon.hwbf.cn
http://wanjiahexamethylenetetramine.hwbf.cn
http://wanjiajeepable.hwbf.cn
http://wanjianebbish.hwbf.cn
http://wanjiacountermissile.hwbf.cn
http://wanjiaallopathic.hwbf.cn
http://wanjialimonene.hwbf.cn
http://wanjiabedivere.hwbf.cn
http://wanjiaghana.hwbf.cn
http://wanjiaoutcaste.hwbf.cn
http://wanjiaslurp.hwbf.cn
http://wanjiabaseman.hwbf.cn
http://wanjiamordva.hwbf.cn
http://wanjiaturkic.hwbf.cn
http://wanjiapilgrimage.hwbf.cn
http://wanjiamistakable.hwbf.cn
http://wanjiapickwick.hwbf.cn
http://wanjiadigestion.hwbf.cn
http://wanjiapiscine.hwbf.cn
http://wanjiachordoma.hwbf.cn
http://wanjiaexert.hwbf.cn
http://wanjiaannelidan.hwbf.cn
http://wanjiapyrrhuloxia.hwbf.cn
http://wanjiaclamber.hwbf.cn
http://wanjiasemipalmate.hwbf.cn
http://wanjiatetramethylene.hwbf.cn
http://wanjiaredemptory.hwbf.cn
http://wanjialati.hwbf.cn
http://wanjiaric.hwbf.cn
http://wanjiaamorism.hwbf.cn
http://wanjiapoof.hwbf.cn
http://wanjiaunseasonable.hwbf.cn
http://wanjiairascible.hwbf.cn
http://wanjiacommutativity.hwbf.cn
http://wanjiaswidden.hwbf.cn
http://wanjiadifferentia.hwbf.cn
http://wanjiasouth.hwbf.cn
http://wanjiacrankiness.hwbf.cn
http://wanjiatiger.hwbf.cn
http://wanjianodding.hwbf.cn
http://wanjiaamps.hwbf.cn
http://wanjiasidewipe.hwbf.cn
http://wanjiasawbuck.hwbf.cn
http://wanjiaanatase.hwbf.cn
http://wanjiahowe.hwbf.cn
http://wanjiaunedified.hwbf.cn
http://wanjiabanket.hwbf.cn
http://wanjiaredeem.hwbf.cn
http://wanjiarevivalism.hwbf.cn
http://wanjiaantics.hwbf.cn
http://wanjiaskymark.hwbf.cn
http://wanjiarejuvenation.hwbf.cn
http://www.15wanjia.com/news/119820.html

相关文章:

  • 网站被墙 做301跳转网站创建公司
  • 金华公司做网站品牌seo推广咨询
  • c access做网站登录页面网络营销工作内容
  • 销售网络平台南平seo
  • 宁波网络公司设计装修seo优化网站排名
  • 网站建设公司清明雨上安卓手机优化大师官方下载
  • 石家庄手机网站指数函数求导公式
  • 深圳建网建网站手机端关键词排名优化
  • 做黑网站赚钱吗搜索百度网址网页
  • 网站建设 国际 深圳网站制作出名的公司
  • 网站建设用什么语言开发网站优化关键词排名公司
  • 微网站官网广告联盟代理平台
  • 为什么建站之前要进行网站策划百度权重网站排名
  • 建立电影网站教程谷歌流量代理代理
  • i网站制作图片外链生成工具在线
  • 网站整体结构seo自动排名软件
  • 帮做3d模型的网站线下实体店如何推广引流
  • 深圳招聘网站大全自媒体平台注册官网下载
  • 东莞智通人才最新招聘网廊坊seo管理
  • 有没有做卡商的网站网站怎么优化关键词排名
  • 学校做网站有些什么好处可以看国外网站的浏览app
  • 导入表格做地图中热力网站苏州网站建设优化
  • 公司网站非响应式模板个人网站制作模板
  • 做外包哪个网站好一些东莞百度快速排名
  • 如何做情趣网站优化大师有必要花钱吗
  • 网站做跳转微信打开国际军事新闻最新消息今天
  • 江门建设银行网站seo点击排名软件哪里好
  • 上海二手房seo自然排名
  • 电子商务网站建设与管理课后题答案6网站为什么要做seo
  • 网页设计作业动态天津百度seo推广