您好, 登錄| 注冊|
論壇導航
您好, 登錄| 注冊|
子站:
論壇首頁    電源技術綜合區
  •  發帖
  • 收藏

【工程師6】+實踐類+多功能控制小車
閱讀: 5340 |  回復: 66 樓層直達

2019/08/10 12:40:50
1
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

QQ截圖20160321155901  【活動進行中……】禮遇感恩節!參與頂樓  免費送儀器

QQ截圖20160321155901   【風采匯】參與有獎!獲獎作品分享大賽



    DIY小車這個項目已經很多了,對于前后左右等控制,司空見慣,這次嘗試一下能監控的多功能控制小車,電腦,手機都可以!

多功能車基本功能參數和關鍵部件,視頻傳輸這塊和我們現在智能家具這塊無線視頻原理一樣,下面會有介紹

1.輸入電源:2串或3串的鋰電池(帶充電器)

2.輸出5v,3.3V等電壓為負載供電

3.四個直流減速電機

4.WIFI數傳模塊

5.電機驅動模塊

6.STM32F105主控板

7.UVC攝像頭

8.小車底盤

最后實現電腦或手機通過wifi和軟件控制小車動作并實時監控

框圖

2019/08/10 19:11:54
2
斌520
電源幣:3330 | 積分:17 主題帖:28 | 回復帖:1700
LV9
軍長
一句話新聞?具體內容呢?
2019/08/10 21:57:07
3
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
已經更新了
2019/08/10 22:05:39
4
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

基本框圖:

2019/08/10 22:10:59
5
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

基本編程軟件

keil5

2019/08/11 11:54:16
6
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

對于單片機編程這塊,目前STM32占用非常多,涉及到庫函數和寄存器編程

這次采用庫函數編程,采用傳統的標準庫,HAL庫后續可以

如上圖所示,先把框架建立好,拿一個自己用的工程,把相應的函數添加進去就可以了

2019/08/11 11:59:00
7
heiha88
電源幣:1 | 積分:1 主題帖:5 | 回復帖:31
LV4
連長
有這塊的入門教程嗎
2019/08/12 12:49:50
9
lihui710884923
電源幣:482 | 積分:1 主題帖:155 | 回復帖:519
LV9
軍長

這個處理視頻的話,需要上系統?

2019/09/08 20:12:58
22
gxg1122
電源幣:1644 | 積分:17 主題帖:170 | 回復帖:1641
LV10
司令
視頻實時上傳,下端有顯示屏嗎?還是通過上位機軟件顯示控制。
2019/09/08 20:12:09
21
gxg1122
電源幣:1644 | 積分:17 主題帖:170 | 回復帖:1641
LV10
司令
這個STM開發,WIFI模塊、小車驅動、串口都是模塊案例及例程。
2019/08/11 21:40:28
8
gxg1122
電源幣:1644 | 積分:17 主題帖:170 | 回復帖:1641
LV10
司令
多功能控制小車的設計增加了這么多模塊,主控芯片資源及響應速度能跟上嗎?
2019/08/12 22:03:58
10
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
主控單片機只負責解析串口發來的命令并執行小車動作,
2019/08/12 23:14:28
11
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

舵機這塊是兩個,上下,左右各一個,180度旋轉

2019/08/12 23:19:41
12
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

舵機的基本控制原理

控制信號由接收機的通道進入信號調制芯片,獲得直流偏置電壓。它內部有一個基準電路,產生周期為20ms,寬度為1.5ms的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負輸出到電機驅動芯片決定電機的正反轉。當電機轉速一定時,通過級聯減速齒輪帶動電位器旋轉,使得電壓差為0,電機停止轉動。

舵機的控制一般需要一個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms-2.5ms范圍內的角度控制脈沖部分,總間隔為2ms。以180度角度伺服為例,那么對應的控制關系是這樣的:

   0.5ms--------------0度;

   1.0ms------------45度;

   1.5ms------------90度;

   2.0ms-----------135度;

   2.5ms-----------180度;

2019/08/15 22:25:26
13
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

看看程序中是怎么控制的

用STM32硬件PWM和模擬PWM都可以

TIM_OCInitTypeDef  TIM_OCInitStructure; 
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;	    //?????aPWM?£ê?1
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = Speed_Left-1;	  //éè??í¨μà2μ?μ???ì?±??μ£?ê?3?áííaò???????±èμ?PWM
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //μ±?¨ê±?÷??êy?μD?óúCCR1_Valê±?a??μ???
  TIM_OC1Init(TIM5, &TIM_OCInitStructure);	 //ê1?üí¨μà1
  TIM_OC1PreloadConfig(TIM5, TIM_OCPreload_Enable);
我們改變這個值
 Speed_Left-1就可以改變舵機角度

2019/08/15 22:32:13
14
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

這個是整個產品的核心wifi模塊

wifi數傳模塊是基于MIPS 24K 高通CPU的一款WIFI1X1芯片AR9331,其SDK采用uboot作為引導。是基于MIPS 架構的,目前有x86、ARM和MIPS三種主流芯片架構,ARM集架構的主要特點:一是體積小、低功耗、低成本、高性能;二是大量使用寄存器且大多數數據操作都在寄存器中完成,命令執行速度更快;三是尋址方式靈活簡單,執行效率高;四是命令長度固定,可通過多流水線方式提高處理效率。

2019/08/15 22:46:34
15
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

wifi模塊的工作原理

WiFi模塊通過采集掛載在USB接口的MJPG格式的攝像頭的數據,并編碼封裝成http協議的視頻流,默認推送到8080端口。Android/IOS/PC設備,連接到WiFi模塊的熱點后,打開控制軟件,會自動從8080端口獲取MJPG視頻流,并進行解碼、顯示。由此實現了WiFi智能小車的實時視頻傳輸功能。

2019/08/19 12:21:34
16
lihui710884923
電源幣:482 | 積分:1 主題帖:155 | 回復帖:519
LV9
軍長
這個wifi模塊可以連接外網?
2019/08/20 07:06:05
17
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
主要是把wifi模塊作為熱點使用,連接外網不是太穩定
2019/08/20 12:33:01
18
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
其實這個要想實現WIFI的視頻傳輸,還需要一個小型的linux系統,下面會講解一下
2019/08/25 08:58:25
19
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

OpenWrt 可以被描述為一個嵌入式的 Linux 發行版。(主流路由器固件有 dd-wrt,tomato,openwrt三類)對比一個單一的、靜態的系統,OpenWrt的包管理提供了一個完全可寫的文件系統,從應用程序供應商提供的選擇和配置,并允許您自定義的設備,以適應任何應用程序。

對于開發人員,OpenWrt 是使用框架來構建應用程序,而無需建立一個完整的固件來支持;對于用戶來說,這意味著其擁有完全定制的能力,可以用前所未有的方式使用該設備。

2019/09/07 10:02:56
20
lihui710884923
電源幣:482 | 積分:1 主題帖:155 | 回復帖:519
LV9
軍長
這個還需要刷linux系統?
2019/09/15 07:49:36
27
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
這個需要刷openwrt系統的
2019/09/08 20:17:36
24
gxg1122
電源幣:1644 | 積分:17 主題帖:170 | 回復帖:1641
LV10
司令
這個不用linux系統吧,UC系統就可以了。
2019/09/08 20:20:27
25
gxg1122
電源幣:1644 | 積分:17 主題帖:170 | 回復帖:1641
LV10
司令
這個不用linux系統吧,UC系統就可以了。
2019/09/10 17:40:36
26
lihui710884923
電源幣:482 | 積分:1 主題帖:155 | 回復帖:519
LV9
軍長
UC系統是?
2019/09/16 15:05:14
35
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
UC還真不知道,這個是微小的LINUX系統
2019/09/15 17:19:39
34
heiha88
電源幣:1 | 積分:1 主題帖:5 | 回復帖:31
LV4
連長
高通驍龍的芯片,這個wifi模塊挺牛的
2019/09/16 15:05:38
36
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
就是一個圖傳模塊,還可以
2019/09/15 08:40:18
30
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

看看舵機怎么控制轉動速度

舵機的轉動速度取決于起始角度和目標角度的差,差別越大轉得越快,當接近時就放慢角度。所以沒有專門的函數控制轉速。但在大角度轉動時,你可以用程序把它設成幾個小角度遞進,這樣可以放慢速度。也通過delay進行慢速,但快速的話只有加高電壓了 。

2019/09/08 20:15:02
23
gxg1122
電源幣:1644 | 積分:17 主題帖:170 | 回復帖:1641
LV10
司令
響應速度是夠用,串口解析及小車控制。
2019/09/15 07:52:31
28
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
老哥對這塊非常熟悉啊,響應速度可以的
2019/09/15 08:29:27
29
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

這個是實際的wifi圖傳模塊

2019/09/15 08:47:40
31
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

現在在重申一下這個模塊的工作原理和使用方法

WiFi模塊通過采集掛載在USB接口的MJPG格式的攝像頭的數據,并編碼封裝成http協議的視頻流,默認推送到8080端口。Android/IOS/PC設備,連接到WiFi模塊的熱點

(wifi-robots.com開頭的SSID信號)后,打開控制軟件,會自動從8080端口獲取MJPG視頻流,并進行解碼、顯示。由此實現了WiFi智能小車的實時視頻傳輸功能。

們簡單恢復一下出廠設置就可以了,簡單說一下,用USB轉tll工具連接模塊配置好波特率(57600)和串口號一定注意先后順序

1:點擊打開串口,此時WIFI的狀態是沒有上電的

2:給WIFI上電此時要注意串口開始打印(很關鍵),

3:輸入命令firstboot就可以了

2019/09/15 09:46:34
32
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

這個wifi模塊怎么刷固件openwrt系統的

首先通過USB口給設備供電,通過miniUSB口加上usb轉網口網線連接電腦

準備刷機工具TFTP服務端:tftp32  就是局域網內可以傳文件

超級終端:putty  Telnet、SSH、rlogin、純TCP以及串行接口連接軟件

需要相應的固件具體教程http://www.wifi-robots.com/thread-108-1-1.html

2019/09/15 10:08:33
33
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

最后我們看看USB攝像頭這塊,簡單介紹一下無線監控中的攝像頭

1.攝像頭選擇

做本次實驗的時候,推薦大家用 USB 免驅的攝像頭,最好是支持 MJPEG 輸出的攝像頭類型。USB 免驅攝像頭輸出 YUV 格式和輸出 MJPEG 格式,對無線監控的效果有什么影響呢?首先大家要知道,同樣是一幀數據,YUV 格式會比 MJPEG 格式的大得多,因此我們在視頻傳輸的時候,一般是傳輸 MJPEG 格式的數據。這樣,就有這樣一個問題,如果攝像頭是輸出 YUV 格式,那么就意味著我們需要通過軟件將視頻數據由 YUV 格式轉換成 MJPEG格式,然后傳輸。如果攝像頭輸出的是 MJPEG 格式,那個將可以直接將得到的數據進行傳輸。因此,使用支持 MJPEG 壓縮的攝像頭,比一般的攝像頭,做無線監控的效果,好很多

2019/09/23 09:11:14
40
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

2.配置 OpenWrt 支持 usb 攝像頭

看看怎么配置

要支持攝像頭,就必須配置上攝像頭的驅動,因為是免驅的 USB 攝像頭,因此我們必須配置上 UVC 驅動,具體如圖所示。首先,我們選中內核模塊進行配置:

選中 Video 支持配置:

按”y”選中 kmod-video-core:

在展開的選項中選中 uvc:

2019/09/23 10:59:18
41
lihui710884923
電源幣:482 | 積分:1 主題帖:155 | 回復帖:519
LV9
軍長
只要支持UVC驅動的攝像頭都可以這樣操作?
2019/10/01 07:47:57
42
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
原理是這樣的
2019/10/01 14:55:26
43
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

看看電機驅動模塊

2019/10/01 14:57:05
44
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

基本原理如下

看看具體是怎么控制電機調速的,通過控制使能端使L298N處于工作和不工作,VSS-9引腳為芯片供電   VS-4引腳為電機供電   ENA-6引腳為通道1使能端,利用定時器的pwm輸出作用于ENA,根據脈沖占空比不同就可以得到不同的輸出電壓,從而達到調速目的。比如在VS引腳加10V的電機供電電壓,ENA端脈沖占空比為100%,那么OUT1和OUT2之間將輸出10V電壓,占空比為50%,那么輸出為5V電壓,占空比為10%,則為1V    我買的電機供電電壓為5v到12v都可以,電壓高的話也可以,長時間工作的話會對電機損壞

2019/10/01 14:59:27
45
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

看看電機是怎么正反裝 的

邏輯輸入端,為IN1\IN2\IN3\IN4,其中IN1、IN2控制電機M1;IN3、IN4控制電 機M2。例如IN1輸入高電平1,IN2輸入低電平0,對應電機M1正轉;IN1輸入低電平0,IN2輸入高電平1,對應電機M1反轉,調速就是改變高電平的占空比

2019/10/01 15:01:19
46
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

這是整個系統的核心板STM32F105

2019/10/02 15:22:56
47
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

正好國慶期間可以把程序寫寫,用一個stm32f103的模板,還是103的標準庫,改一下測試再105上可以不?

2019/10/02 15:37:29
48
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

主要就是串口這塊,但是奇怪的是串口通訊不正常

波特率9600是一致的,用串口助手發送,發送FE是沒有任何反應的,發送其他,接受的也不一樣,多年的編程,程序應該問題不大

2019/10/02 17:49:06
49
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

就懷疑時鐘的問題,先軟件仿真看看,調試狀態找到RCC

看看能看出來時鐘對不

2019/10/02 18:01:41
50
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

寄存器里面的值不太了解

可以通過一個時鐘函數RCC_GetClocksFreq(&RCC_Clocks)加到主函數里,把RCC_Clocks變量加到窗口中,看看實際的時鐘頻率

發現時鐘不對,再網上查看資料說105和103的啟動文件不一樣

宏定義這需要改成STM32F10X_CL,

2019/10/02 18:16:34
51
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

由于105系列屬于互聯型單片機,默認晶振為25M,而我們實際為8M

1.需要在這個stm32f10x.h文件里更改

2.需要在這個system_stm32f10x.c文件里更改

2019/10/02 18:31:28
52
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

現在我們在仿真調試看看實際的時鐘頻率

主頻這個16進制值為0x044AA200,經過計算為72.000000

這樣就配置ok了

2019/10/08 12:40:16
53
lihui710884923
電源幣:482 | 積分:1 主題帖:155 | 回復帖:519
LV9
軍長
用一個函數讀取當前系統時鐘,時鐘頻率這塊分析很透徹
2019/10/09 21:18:40
54
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
個人認為這個就是讀取當前系統時鐘的最好辦法了,
2019/10/17 10:44:57
55
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
基本的103移植105成功,程序這塊后續簡單分析一下,下面開始組裝調試
2019/11/02 11:25:40
56
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

為了讓小車強勁有力,我們采用松下的18650電池,一個是2600MAH,兩串兩并的話就是8.4V ,總容量10400MAH

這是兩個電池的

加上快充充電器,網上買的,后續介紹

2019/11/03 08:36:57
57
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

我們現在準備組裝小車

這是小車底盤

2019/11/03 12:32:40
58
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

組裝鋰電池

完畢

2019/11/03 12:34:20
59
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

剩下的小車組裝完畢

下面開始程序調試

2019/11/04 08:23:09
60
lihui710884923
電源幣:482 | 積分:1 主題帖:155 | 回復帖:519
LV9
軍長
手機APP是自己開發?
2019/11/06 21:41:10
61
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
手機APP這快開發的,有啥問題可以討論
2019/11/11 12:45:20
63
keyhei66
電源幣:61 | 積分:3 主題帖:1 | 回復帖:10
LV2
班長
小車的舵機是多少電壓供電的,單片機這塊能否分享資料,小白一個
2019/11/17 08:44:39
66
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長

小車的電機直接有電池供電,L298N驅動

舵機這塊有電池降壓5V供電

2019/11/06 21:44:53
62
EDSTRNDDF
電源幣:56 | 積分:2 主題帖:0 | 回復帖:63
LV4
連長
2019/11/17 08:31:41
65
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
有啥疑問可以討論
2019/11/11 12:46:38
64
keyhei66
電源幣:61 | 積分:3 主題帖:1 | 回復帖:10
LV2
班長
這個計算頻率還是非常實用的
2019/11/17 08:45:14
67
liuxiaofei126
電源幣:0 | 積分:0 主題帖:9 | 回復帖:80
LV6
團長
在單片機編程中經常用
客服熱線
服務時間:周一至周五9:00-18:00
微信關注
免費技術研討會
獲取一手干貨分享

互聯網違法不良信息舉報

Reporting Internet Illegal and Bad Information
[email protected]
400-003-2006
单双中特双数野