做一个STM32小车很简单吗

描述

硬件介绍

    主控芯片用的是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相编码器的电机接口。     如下是电路原理图:

STM32

    如下打样好的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);  }}

 

  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分