当前位置:   article > 正文

物联网毕设 -- ESP32-CAN加摄像头传输图像,STM32驱动小车自动避障图像采集并显示到Android端_esp32摄像头数据传输

esp32摄像头数据传输

前言

小车分为两种模式,自动模式以及手动模式,有小车下位机通过按键可以进行模式的切换,自动模式有三个超声波避障,手动模式可以通过APP连接到小车WIFI进行手动控制,并且会有一个ESP32的图像采集回传给小车

一、视频效果演示

物联网毕设 -- ESP32-CAN+STM32


资源包

 


 

二、底层硬件端

2.1 使用硬件清单

STM32F103RCT6开发板(可以替换为STM32其他系列)

三个超声波测距模块(使用time时钟进行距离的计算)

两个电机驱动板(L2980)---- 使用PWM控制小车的速度

ESP32-CAN模块               ---- 使用串口与STM32经行连接

 2.2原理图


 

 2.3 主函数代码

main.h

  1. #include "stm32f10x.h"
  2. #include "bsp_usart.h"
  3. #include "bsp_SysTick.h"
  4. #include "stm32f10x_it.h"
  5. #include "hc_sr04.h"
  6. #include "./dwt_delay/core_delay.h"
  7. #include "./pwm/user_timer_pwm.h"
  8. #include "L298N.h"
  9. #include "car.h"
  10. #include "timer.h"
  11. #include "usart_openmv.h"
  12. #include "timer.h"
  13. #include "HC_SR04.h"
  14. #include "car.h"
  15. #include "key.h"
  16. //全局变量
  17. //flage=0 状态手动
  18. //flage=1 状态自动
  19. extern int flag;
  20. 局部变量
  21. //float Distance1 = 0; //距离
  22. //float Distance2 = 0; //距离
  23. //float Distance3 = 0; //距离
  24. //定义函数
  25. void Car_run ( void );
  26. void Hc_rs04 ( void );
  27. /**
  28. * @brief 主函数
  29. * @param 无
  30. * @retval 无
  31. */
  32. extern int flage;
  33. //小车初始状态
  34. u8 dir=1;
  35. u16 led0pwmval=0;
  36. int main ( void )
  37. {
  38. /* 初始化 */
  39. /* 配置SysTick 为1us中断一次 */
  40. SysTick_Init();
  41. CPU_TS_TmrInit(); //初始化DWT计数器,用于延时函数
  42. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  43. USART_Config (); //初始化串口1
  44. OpenMV_USART_Config();
  45. EXTI_Key_Config();
  46. MTR_GPIOInit();
  47. TIM3_PWM_Init(899,0); //不分频,PWM频率=72000000/900=80Khz
  48. //超声波定时器
  49. HC_SR04_IO1_Init(); //超声波模块GPIO初始化
  50. TIM2_Init(7199,0); //10KHz计数,定时100us
  51. HC_SR04_IO2_Init(); //超声波模块GPIO初始化
  52. TIM4_Init(7199,0); //10KHz计数,定时100us
  53. HC_SR04_IO3_Init(); //超声波模块GPIO初始化
  54. TIM5_Init(7199,0); //10KHz计数,定时100us
  55. Delay_ms(500); /* 延时500个tick */
  56. printf("初始化成功\n");
  57. while ( 1 )
  58. {
  59. //Car_run ();
  60. if(flag==1){
  61. Avoid_Car();
  62. }else MTR_CarBrakeAll();
  63. }
  64. }
  65. /**
  66. * @brief 小车测试
  67. * @param 无
  68. * @retval 无
  69. */
  70. /** 小车状态码:
  71. * 1 小车处于正常行驶
  72. * 2 小车处于减速一(距离200)
  73. * 3 小车处于减速二(距离100)
  74. * 4 小车处于低速状态(距离50)
  75. *
  76. * 1 小车处于避障状态
  77. * 1 小车处于避障状态
  78. */
  79. void Car_run ( void )
  80. {
  81. car_speed(1);
  82. MTR_CarForward();
  83. }
  84. /**
  85. * @brief 小车超声波测试
  86. * @param 无
  87. * @retval 无
  88. */
  89. /** 小车状态码:
  90. */
  91. void Hc_rs04 ( void )
  92. {
  93. // Distance1 = (Get_SR04_Distance1() * 331) * 1.0/1000;
  94. // Delay_ms(5);
  95. // Distance2 = (Get_SR04_Distance2() * 331) * 1.0/1000;
  96. // Delay_ms(5);
  97. // Distance3 = (Get_SR04_Distance3() * 331) * 1.0/1000;
  98. // Delay_ms(5); //Get_SR04_Distance()返回单程声波传输时间 us,转换为秒=时间*10^(-6);331m/s等于331000mm/s,
  99. // //最终换算为Distance =Get_SR04_Distance()*10^(-6)*331000=(Get_SR04_Distance() * 331) * 1.0/1000;
  100. // //if(Distance1<1000&&Distance2<1000&&Distance3<1000)
  101. // printf("%.1f %.1f %.1f\n",Distance1,Distance2,Distance3);
  102. }
  103. /*********************************************END OF FILE**********************/

 


三、APP端

编译平台

APP使用Android studio平台编译


 

四、资源下载

全部资源

APP+STM32程序+ESP32CAN程序icon-default.png?t=M5H6https://download.csdn.net/download/herui_2/85840555

STM32程序+ESP32CAN程序

STM32程序+ESP32CAN程序icon-default.png?t=M5H6https://download.csdn.net/download/herui_2/85840511

APP程序

APP程序icon-default.png?t=M5H6https://download.csdn.net/download/herui_2/85840603

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/46165
推荐阅读
相关标签
  

闽ICP备14008679号