基于STM32:情侣互动玩偶(设计方案+源码+3D图纸+AD电路)

在这里插入图片描述

前言

      工科男是如何通过送礼物气死女朋友的?对于优秀的硬件师,这存在吗?(嘴角疯狂上扬)(其实我之前把电工作业——一个51摩天轮送女朋友,差点没被揍,哈哈哈哈)
      这次应客户要求,做一个异地互动玩偶,话不多说,先看视频(目前是第一版本,暂未优化,客户经费有限,嘿嘿,所以只是简陋版的,可继续优化)

小怪兽&情侣互动玩偶~别被女朋友看到,点赞过万,开源模型跟代码

一、方案讲解

1、功能

      智能互动玩偶,当抚摸一只的头部,另一只的心脏会亮起来;当人出现在一只的后面的时候,另外一只的翅膀会动起来。
      两个玩偶是通过蓝牙模块进行交互的,起初是想选用ESP8266利用物联网的方式进行通信,这样可以实现异地的功能,但是客户不想连WiFi,所以只能选蓝牙,有利有弊。相比之下,蓝牙设计起来其实更简单,配置没有那么复杂。

2、硬件选择

1、主控器:STM32F103C8T6

      这个玩偶,因为体积不能太大,所以只能用最小系统板,选32不选arduino nano的原因是,nano3.0玄学实在是太多了,调起来是真的麻烦,代码没问题的情况下,能一直出错,过一会去编译又好了(你就说玄不玄学,这还这只是其中一点)
在这里插入图片描述
在这里插入图片描述

2、通信:HC-05主从机一体蓝牙模块(重点)

      这里一定要买主从一体的蓝牙模块,因为要实现互连的动能。
在这里插入图片描述

连接方式:

1、【AT模式】两个蓝牙模块的PIO11(也就是EN引脚,HC-05有6个脚,HC-06是4个)接VCC,上电后即进入AT指令模式,都用USB转TTL模块连接到电脑的USB接口。

2、【打开串口调试助手】开启2个串口调试窗口,一个打开蓝牙A的COM口,一个打开蓝牙B的COM口。【默认波特率一般为38400】

3、【恢复A默认设置】串口调试助手A,将蓝牙A恢复默认设置:AT+ORGL 【 即回车、换行,在串口调试助手上输入一个回车即可】

4、【设置A配对码】串口调试助手A,配置蓝牙A的配密码:AT+PSWD=0000 【蓝牙A与蓝牙B的密码相同,这样才能成功配对】

5、【设置A主模式】串口调试助手A,将蓝牙A配置为主机模式:AT+ROLE=1

6、【恢复B默认设置】串口调试助手B,将蓝牙B恢复默认设置:AT+ORGL

7、【设置B配对码】串口调试助手B,配置蓝牙B的密码与蓝牙A一致:AT+PSWD=0000

8、【设置B从模式】串口调试助手B,将蓝牙B配置为从机模式:AT+ROLE=0

第8步完成后直接跳到第11步,因为绑定地址后,有玄学,两个蓝牙没办法互连,让他们任意自动连就没问题

在这里插入图片描述

11、【常规工作模式】2个模块的PIO11引脚都接地,重新上电后进入常规工作模式,自动完成配对。之后,串口调试助手A和串口调试助手B就能互传数据了。

3、舵机:SG90

4只小蓝舵机(如果翅膀用连杆结构,那么一只玩偶可以只用一只舵机,这里考虑到单独控制,所以一只玩偶是用了两只舵机)
在这里插入图片描述

4、电源:18650

2个18650电池加电池盒子。(一只玩偶一个)
在这里插入图片描述

在这里插入图片描述

5、充放电一体模块

      用这个模块主要是为了能实现重放电,因为客户非工科专业所以如果把电池拿进拿出就会很不方便。
在这里插入图片描述

6、触摸模块

触摸后,会反馈高电平信号,记得做按键滤波,不然会有毛刺,检测不准。
在这里插入图片描述

7、人体检测模块

主要用来检测人,从而让翅膀震动。
在这里插入图片描述

二、AD电路

      因为客户时间赶,本来这块板子是我用来调试作品用的,所以看起来并不是最优的,如果后面有做第二版应该优化一下的。(电路不做过多解释,主要是给核心板做个扩展板,方便调试)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、3D建模

3D建模主要由不眠者科技团队的向子声设计:
      交互玩偶采用的是PLA材料用FDM3D打印技术制造完成,由于受到FDM技术成型原理的影响,所以把玩偶的畸角从模型上分割开来单独打印,不仅可以减少支撑用料,而且还可以让模型更加光滑细腻,除此之外,模型的整体曲线设计也有一定的技巧,可以让模型的成品效果更好。因为模型里面要放传感器之类的电子元器件,所以在模型后面开了个后盖,使用自攻螺丝安装固定后盖。对于PLA材料打印的模型,市面上有专门的PLA涂料可以给模型上色DIY,可以让每个模型都独具特色。

打印注意事项:
1.冬天打印要把热床温度稍微调高一点,防止翘边。
2.模型整体比较大,如果是近端挤出的打印机建议把喷头温度调到190度,不然打印时间长了容易卡料。
3.翅膀打印的时候和热床接触面比较小,建议加个底板打印,防止打印途中模型翻倒。
在这里插入图片描述

在这里插入图片描述

四、32程序

//主函数main.c
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "led.h"
#include "usart.h"   
#include "string.h"    
#include "timer.h"

 /************************************************
PB6、7作为按键CM_KEY
PC13作为LED测试
PA11作为舵机口
按键为单次按键,按下后松开程序才会正常运行,不可一直按着不动,会丢失另一端发过来的数据
PB0 LED
RX接B10 TX接B11
************************************************/ 

//USART_PRINTF_FLAG=1   就是用串口1打印数据,USART_PRINTF_FLAG=3,就是用串口3打印数据
extern int USART_PRINTF_FLAG;

u8 TX_flag1=0;
u8 TX_flag2=0;
u8 RX_flag1=0;
u8 RX_flag2=0;
u8 DJ_flag=1;

void usart3(void);

int main(void)
 {  
 delay_init();       //延时函数初始化   
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 
 LED_Init();    //初始化与LED连接的硬件接口(LED0 端口PC13)
 KEY_Init();    //初始化按键 
 uart1_init(9600);   //串口1初始化为115200//一般连电脑,可以作为蓝牙的接收端,波特率要与蓝牙一致。
  uart3_init(9600);//蓝牙波特率一般都是9600
 TIM1_PWM_Init(199,7199); 
	 TIM_SetCompare4(TIM1,195);
	 TIM_SetCompare1(TIM1,195);
  while(1)
 {
  if(CM_KEY1==1)
  {
   if(TX_flag1==1)TX_flag1=0;
   else TX_flag1=1;
   printf("[%d,%d]\r\n",TX_flag1,TX_flag2);
   while(CM_KEY1==1);
  }
  if(CM_KEY2==1)
  {
   if(TX_flag2==1)TX_flag2=0;
   else TX_flag2=1;
   printf("[%d,%d]\r\n",TX_flag1,TX_flag2);
   while(CM_KEY2==1);
  }  
  delay_ms(10);
  usart3();
  if(LED1==1)
	{
		TIM_SetCompare4(TIM1,190);
		TIM_SetCompare1(TIM1,182);
		delay_ms(1000);
		TIM_SetCompare4(TIM1,182);
		TIM_SetCompare1(TIM1,190);
		delay_ms(1000);
	}
  if (LED1==0) 
	{
		TIM_SetCompare4(TIM1,180);
		TIM_SetCompare1(TIM1,180);
	}
	if(LED5==1)
		GPIO_ResetBits(GPIOA,GPIO_Pin_7);
	if(LED5==0)
		GPIO_SetBits(GPIOA,GPIO_Pin_7);
 }
}
 
void usart3(void)//接收函数
{
  if(USART3_RX_STA&0x8000)
  {
    if((USART3_RX_BUF[0]==0x5B)&&(USART3_RX_BUF[4]==0x5D))  //判断第0位是否是"["和第2位是否是“]”
    {
     RX_flag1=USART3_RX_BUF[1]-'0';
     LED5=RX_flag1;
     RX_flag2=USART3_RX_BUF[3]-'0';
     LED1=RX_flag2;
     
    }
   USART3_RX_STA=0;
  }
}

五、完整工程获取(32程序+3D模型+AD电路)
(2022年1月22号上传,还在整理)
获取方式①:关注公共号:不眠者科技。回复:情侣互动玩偶,即可免费获取资源链接。
获取方式②:直接点击下载:基于STM32:情侣互动玩偶(设计方案+源码+3D图纸+AD电路)
不眠者科技,一个专注于大学生竞赛的平台,欢迎大家关注交流。
在这里插入图片描述

版权声明:本文为CSDN博主「千歌叹尽执夏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46423500/article/details/122583204

生成海报
点赞 0

千歌叹尽执夏

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。

Lin总线通信在STM32作为主机代码以及从机程序

距离上次做资料准备已经过去六天了。最近在学车,上周末就没有开电脑。这周开始进行了Lin通信的代码整理,目前是可以正常通信的了,采用的是增强型校验方式。后期再进一步跟进研究。。。更新一博,留

4路红外循迹模块使用教程

4路红外循迹模块使用教程 个人原创博客:点击浏览模块详细信息: 工作电压:DC 3.3V~5V 工作电流:尽量选择1A以上电源供电 工作温度:-10℃~50℃ 安装孔

【STM32Cube笔记】12-配置外部中断

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配