久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4756|回復: 1
收起左側

基于OpenWRT WIFI視頻控制的STM32智能偵查小車設計源碼與ppt

[復制鏈接]
ID:281263 發表于 2018-1-31 19:07 | 顯示全部樓層 |閱讀模式
基與OpenWRT的智能偵察車
內容見附件,下面是ppt內容預覽:
0.jpg
0.png

項目分析:
下位機作為上位機和小車控制的橋梁,需要進行有效地通訊,并對接收到的命令做出相應的動作控制命令接收:通過與上位機的串口相連,通過串口接收上位機的命令;
小車姿態控制:下位機通過IO操作控制小車的兩個電機的正反轉動從而控制車體的姿態位置;
車上數據獲取:讀取IO設備上的傳感器數據并發送給上位機;

軟硬件開發環境:
硬件選型:STM32F103RC核心板帶下載模塊
開發環境:Keil μVision5 IDE  及ARM.CMSIS.3.20.4.pack 接口標準Keil.STM32F1xx支持庫
開發語言:C語言    基于STM32F1xx庫函數開發
0.png
0.png
GPIO寄存器描述 《STM32參考手冊中文-p75》

1、端口配置低寄存器(GPIOx_CRL)(x = A...E)
2、端口配置高寄存器(GPIOx_CRH)(x = A...E)

3、端口輸入數據寄存器(GPIOx_IDR)(x = A...E)
   這些位為只讀并只能以字(16位)的形式讀出。讀出的值為對應I/O口的狀態。
   
4、端口輸出數據寄存器(GPIOx_ODR)(x = A...E)
   只能以字(16bit)的形式操作,復位值全是0。寫0即輸出0,寫1即輸出1。
   
5、端口位設置/清除寄存器(GPIOx_BSRR)(x = A...E)
   高16bit寫1用于清0,低16bit寫1用于置位,同時寫1的話低16bi有效。
   
6、端口位清除寄存器(GPIOx_BRR)(x = A...E)
   低16位寫1用于置位。
   
7、端口配置鎖定寄存器(GPIOx_LCKR)(x = A...E)

GPIO八種模式
typedef enum
{ GPIO_Mode_AIN = 0x0,            /* 模擬輸入 */   
  GPIO_Mode_IN_FLOATING = 0x04,   /* 浮空輸入,復位后的狀態 */
  GPIO_Mode_IPD = 0x28,           /* 下拉輸入 */
  GPIO_Mode_IPU = 0x48,           /* 上拉輸入 */
  GPIO_Mode_Out_OD = 0x14,        /* 開漏輸出 */
  GPIO_Mode_Out_PP = 0x10,        /* 推挽輸出 */
  GPIO_Mode_AF_OD = 0x1C,         /* 復用開漏輸出 */
  GPIO_Mode_AF_PP = 0x18          /* 復用推挽輸出 */
}GPIOMode_TypeDef;

0.png

0.png

下位機開發重點:

串口移植與配置,串口中斷配置,串口數據接收循環隊列;
命令/數據傳輸完整性的判斷,判斷命令是否格式完整,未完整存儲再讀。
傳輸的數據格式檢查,檢查命令格式,長度;

開發總結:

實現了一個下位機基本功能,可以通過串口傳來的命令數據準確地完成車體運動的控制;
需要考慮串口中斷通訊帶來的數據是否完整性的問題。

不足與展望:

對傳來的命令數據校驗糾錯不足,以及錯誤后需要請求重傳功能;
后期可采集更多車載傳感器數據上傳到上位機。
后期通過PWM調制進行小車更精準的控制。

單片機源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @brief   測試led
  7.   ******************************************************************************
  8. **/
  9. #include "usart3_config.h"
  10. #include "HumanBodySensor.h"
  11. #include "stm32f10x.h"
  12. #include "CarInit.h"
  13. #include "SmartCarControl.h"
  14. #include <stdlib.h>
  15. #include "led.h"
  16. void LED_GPIO_Config(void)
  17. {
  18.         GPIO_InitTypeDef GPIO_InitStructure;
  19.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);

  20.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14;        
  21.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
  22.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  23.           GPIO_Init(GPIOB, &GPIO_InitStructure);

  24.         GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14);         // turn off all led
  25. }

  26. void Delay(__IO u32 nCount)         //簡單的延時函數
  27. {
  28.         for(; nCount != 0; nCount--);
  29. }


  30. /*
  31. * 函數名:main
  32. * 描述  :主函數
  33. * 輸入  :無
  34. * 輸出  :無
  35. */
  36. int main(void)
  37. {        
  38.         LED_GPIO_Config();
  39.         
  40.         LED2(ON);
  41.         Delay(0x0FFFEF);
  42.         Delay(0x0FFFEF);
  43.         Delay(0x0FFFEF);
  44.         Delay(0x0FFFEF);

  45.         
  46.         
  47.         /************CarInit.c******************************************************************/
  48.         CarPherialInit();     //車體控制GPIO        人體傳感器輸入GPIO

  49.         LED3(ON);
  50.         Delay(0x0FFFEF);
  51.         Delay(0x0FFFEF);
  52.         Delay(0x0FFFEF);
  53.         Delay(0x0FFFEF);
  54.         
  55.         InterruptInit();      
  56.         GPIO_SetBits(GPIOB, GPIO_Pin_13|GPIO_Pin_14);
  57.         Delay(0x0FFFEF);
  58.         Delay(0x0FFFEF);
  59.         Delay(0x0FFFEF);
  60.         Delay(0x0FFFEF);
  61.         /************CarInit end***************************************************************/
  62.         
  63.         
  64.          USARTx_Config();      //串口配置
  65.          
  66.          
  67.         GPIO_ResetBits(GPIOB, GPIO_Pin_13|GPIO_Pin_14);
  68.         Delay(0x0FFFEF);
  69.         Delay(0x0FFFEF);
  70.         GPIO_SetBits(GPIOB, GPIO_Pin_13|GPIO_Pin_14);
  71.         Delay(0x0FFFEF);
  72.         Delay(0x0FFFEF);
  73.         GPIO_ResetBits(GPIOB, GPIO_Pin_13|GPIO_Pin_14);
  74.         Delay(0x0FFFEF);
  75.         Delay(0x0FFFEF);
  76.         GPIO_SetBits(GPIOB, GPIO_Pin_13|GPIO_Pin_14);
  77.         Delay(0x0FFFEF);
  78.         Delay(0x0FFFEF);
  79.         Delay(0x0FFFEF);
  80.         Delay(0x0FFFEF);
  81.         
  82.         while(1)
  83.         {
  84.                 int a=345;//cm
  85.                 char b[12]={0};
  86.                 SmartCarControl();
  87.           Delay(0x0FFFEF);
  88.                 HumanBodySensor();
  89.                 sprintf(b,"%d",a);
  90.                 printf("%scm",b);
  91. ……………………

  92. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png
所有資料51hei提供下載:
孫昊.rar (691.61 KB, 下載次數: 44)
回復

使用道具 舉報

ID:386652 發表于 2018-8-30 09:54 | 顯示全部樓層
博主能加個QQ嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精彩视频在线观看 | 亚洲欧美日韩精品久久亚洲区 | 亚洲精品一区二区三区蜜桃久 | 久久久久国产 | 精品在线一区二区三区 | 一区精品视频在线观看 | 欧美日韩一区二区三区四区 | 狠狠色狠狠色综合系列 | 免费一区 | 欧美成人a∨高清免费观看 91伊人 | 日本一级淫片免费啪啪3 | 婷婷福利 | 一区二区精品 | 色先锋影音 | a视频在线观看 | 国产精品入口麻豆www | 99在线国产 | 欧美日韩不卡合集视频 | 亚洲a视频| 欧美精品三区 | 在线免费观看欧美 | 91看国产| 性福视频在线观看 | 97色伦网 | 国产精品福利在线观看 | 国产精品夜夜夜一区二区三区尤 | 四虎影音 | 麻豆久久久久久久 | 中文字幕在线第一页 | 欧美在线一区二区三区 | 久久精品 | 欧美午夜精品 | 国产yw851.c免费观看网站 | 波多野结衣一二三区 | 性天堂网 | 午夜丰满少妇一级毛片 | 国产精品综合一区二区 | 亚洲精品久久久一区二区三区 | 国产伦精品一区二区三区高清 | 日日淫| 国产精品国产三级国产aⅴ原创 |