STM32平衡小车,电路图及代码
ARM与嵌入式 2024-01-04

硬件介绍

主控芯片用的是100脚的STM32F103VET6,陀螺仪用的是MPU6050,电机驱动用的是TB6612,蓝牙是汇承的HC05邮票孔封装的,WIFI用的USR-WIFI232-S,小车底盘用的是平衡小车之家的某一款带编码器的(不是我买的,同学的),电池用的是一节7.2的镍镉电池,液晶用的是1.3寸IIC接口的OLED,开关用的是三脚纽子开关,电池接口用的是T插,电阻电容这些用的基本上是0603封装,编码器5V降压用的是ASM1117-5.0,3.3V降压用的是SP6203,拨码开关用的是4P贴片式2.54mm角距的,按键是两脚贴片,microusb接口用的是5针 7.2四脚插板牛角母座,超声波是某宝上几块钱烂大街的那种,蜂鸣器是有源的,编码器是小车底盘自带的,电池电压检测是电阻分压之后通过电压跟随器接入MCU内部AD测量的。 STM32F103VET6主控芯片;两个microusb口,第一个是MCU的串口1,可作为普通的串口收发数据,通过调节板上BOOT选项,也可将其作为ISP下载程序接口;第二个是SWD硬件仿真接口;蓝牙模块,与MCU的串口2连接;WIFI模块,与MCU的串口3相连;一块1.3寸IIC协议的液晶接口;超声波接口;双电机驱动;六轴陀螺仪;电池电压检测;4个用于调试的LED;4个独立式按键;一组4P的拨码开关;有源蜂鸣器;两个6P带AB相编码器的电机接口。 如下是电路原理图:

如下打样好的PCB:

软件介绍

这份配套的软件,模块分的很清楚。比如蓝牙的遥控部分,超声波部分在完整版的工程里面都是写好的。最好的办法就是,参照这个程序,一点一点自己粘贴然后修改底层搭建自己的工程。或者你也可以把自己的电路画的跟别人的一样,避免修改别人的底层,这样你粘贴过来甚至都不用改就能用了。相关推荐:做一个STM32小车很简单吗 如下是main.c代码:
#include "stm32f10x.h"#include "stdio.h"#include "systic.h"#include "OLED.h"#include "MPU6050.h"#include "LED.h"#include "Buzzer.h"#include "Switch.h"#include "Key.h"#include "Motor.h"#include "USART.h"#include "TIM.h" uint32_t Main_Count = 0;uint8_t Key_num = 0;uint32_t Test;uint8_t Temp[20]; int main(void){ USART_NVIC_Configuration(); // 配置串口中断 USART_Config(); // 配置串口 SysTick_Init(); //滴答定时器初始化  OLED_Init(); //OLED引脚初始化  OLED_Clear(); //OLED清屏  OLED_First_Line(); //OLED第一行显示: 贺梓洹毕业设计 LED_Init(); //LED引脚初始化 Speak_Init(); //蜂鸣器引脚初始化 Switch_Init(); //拨码开关引脚初始化 Key_Init(); //按键引脚初始化 MPU6050_Init(); PWM_Init(7199,0); TIM_Config();//  Speak=1;//  Delay_s(1);//  Speak=0;while(1) {//    KeyScan();  //    if(Key1_Count==1)//    {//      Key1_Count=0;//    kp=kp+3;//    }//    OLED_ShowNum(0,6,Key1_Count,6,16);//显示ASCII字符的码值//    OLED_ShowNum(0,4,Key2_Count,6,16);//显示ASCII字符的码值//    OLED_ShowNum(0,6,Key3_Count,3,16);//显示ASCII字符的码值//    OLED_ShowNum(103,6,Key4_Count,3,16);//显示ASCII字符的码值//    Delay_ms(5);//    OLED_ShowNum(103,6,Key4_Count,3,16);//显示ASCII字符的码值 //   LED2=0;//   LED3=0;//   LED4=0;//   Speak=0;//   Delay_s(1);////   LED1=1;//   LED2=1;//   LED3=1;//   LED4=1;//   Speak=1;//   Delay_s(1);  //         READ_MPU6050();//       Kalman_Filter(Data_6050.Acc_X , Data_6050.Gryo_Y); ////     //GyroX++;//     OLED_ShowNum(103,2,Data_6050.Acc_X,3,16);//显示ASCII字符的码值 ////     //GyroY++;//     OLED_ShowNum(103,4,Data_6050.Gryo_Y,3,16);//显示ASCII字符的码值 ////     //GyroZ++;//     OLED_ShowNum(103,6,angle,3,16);//显示ASCII字符的码值 //     Delay_ms(100); }} 



声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 【7.24 深圳】2025国际AI+IoT生态发展大会/2025全球 MCU及嵌入式技术论坛


  • 相关技术文库
  • 工业
  • 安防
  • 航空
  • CAN
  • 单片机的I2C和SPI通信的含义

    I2C和SPI是两种不同的通信协议。 当我们听到这个协议时,它似乎是不可实现的。事实上,协议只是人们定义的一个标准。我们只需要按照这个标准去做。例如,如果公司说我们早上9点上班,我们9点上班,或者我们扣...

    前天
  • 浅析基于MB86R01的汽车数字化虚拟仪表设计

    随着汽车、通信、信息电器、医疗、军事等行业的巨大的智能化需要,嵌入式软件及系统发展迅速。微处理器从8位到16位、32位甚至64位,从支持单一品种的CPU芯片到支持多品种的,从单一内核到除了内核外还提供其它功能...

    07-08
  • 基于蓝牙技术的汽车驾驶盘控制系统

    摘 要:介绍了一种基于蓝牙技术的方向盘控制系统设计方案。利用蓝牙传输技术实现汽车方向盘面板开关电子化优化设计,克服传统驾驶过程中需要低头找开关的弊端,使得大部分操作在方向盘上实现,汽车驾驶更便捷。控制...

    07-08
  • 逆变器有何注意事项?安装逆变器风扇有何要点?

    逆变器是一种转换器,在工业应用中,逆变器具有重要意义。对于逆变器,小编曾对逆变器的安装、离网逆变器等知识有所介绍。为增进大家对逆变器的认识,本文将对逆变器使用注意事项以及逆变器风扇安装注意事项予以解...

    07-07
  • 电气火灾监控系统

    电气火灾监控系统,特点在于漏电监控方面属于先期预报警系统。与传统火灾自动报警系统不同的是,电气火灾监控系统早期报警是为了避免损失,而传统火灾自动报警系统是为了减少损失。所以,这就是说为什么不管是新建...

    07-04
  • 基于C8051F500的数控恒流源设计

    本文给出了一种基于C8051F021和RA8835实现的低成本液晶显示方案。随着电子产品设计技术的不断发展,电子产品的设计,尤其是人机交互界面的设计日益趋向人性化。这其中的液晶显示屏以其具有能显示复杂文字及图形、显...

    07-02
  • 大佬带你谈谈步进电机,啥又是直流电机

    电机是诸多电子设备中都存在,由此可见电机的重要性。在往期文章中,小编对伺服电机、变频电机都有所介绍。为增进大家对电机的了解,本文将对步进电机和直流电机加以阐述。如果你对电机相关内容具有兴趣,不妨继续...

    06-27
  • 同步、异步电机有何区别?高、低速电机是什么?

    电机是工业设备中的重要存在之一,对于电机,大家应当有所了解。为增进大家对电机的了解,本文将对同步电机、异步电机、同步电机和异步电机的区别、高速电机和低速电机予以介绍。如果你对电机具有兴趣,不妨继续往...

    06-27
  • 步进电机知识详解,再不怕看不懂步进电机了!

    点击技成培训置顶,每日7:30准时为您推送

    06-26
下载排行榜
更多
评测报告
更多
广告