基于STM32和WiFi遙控小車實驗報告_第1頁
基于STM32和WiFi遙控小車實驗報告_第2頁
基于STM32和WiFi遙控小車實驗報告_第3頁
基于STM32和WiFi遙控小車實驗報告_第4頁
基于STM32和WiFi遙控小車實驗報告_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

計算機科學與技術(shù)學院嵌入式綜合實踐課程設(shè)計報告專 業(yè): 物 聯(lián) 網(wǎng) 工 程 設(shè)計題目:基于STM32和WiFi的遙控小車及繼電器 設(shè)計人員: 學號: 學號: 學號: 學號: 學號: 指導教師: 2014年6月 目錄摘要IABSTRACTII1設(shè)計目標12設(shè)計內(nèi)容13設(shè)計方案24實驗所需器件25實驗各模塊電路設(shè)計35.1 核心板模塊35.2 WiFi模塊45.3直流電機驅(qū)動模塊65.4 繼電器模塊76實驗設(shè)計86.1設(shè)計意義與目的86.2 系統(tǒng)原理圖86.3完成實物圖107調(diào)試與結(jié)果117.1連接WiFi117.2 WiFi測試連接117.3登陸控制Web界面138設(shè)計總結(jié):(成員作用與體會)159附件15附件一:腳本語言源碼15附件二:控制部分C語言源碼1810成績報告29基于STM32和WiFi的遙控小車及繼電器摘要 隨著嵌入式技術(shù)的發(fā)展,單片機技術(shù)進入了一個新的臺階,目前除最早的51單片機現(xiàn)在有了STM32系列單片機以AMR的各系列單片機,而本次設(shè)計我采用STM32單片機來完成,目的是實現(xiàn)通過手機上APP或者PC上web界面,通過WiFi無線傳輸,控制小車,STM32板子上的LED及繼電器。而無線的傳輸時作為目前一項比較前沿的技術(shù)來展開學習的,所有的新新產(chǎn)業(yè)中都追求小規(guī)模高效率,而無線的技術(shù)可以降低傳統(tǒng)工程的工程量,同時可以節(jié)省大量由排線、線路維修、檢測上的一些不必要的障礙和消耗。同時,在實時運行階段也可以明顯體現(xiàn)它的便攜性,高效性和節(jié)能性?!娟P(guān)鍵詞】 STM32 WiFi 遙控 網(wǎng)頁 ABSTRACT With the development of embedded technology, micro-controller technology has entered a new stage, at present in addition to the earliest now with STM32 series micro-controller 51 single chip microcomputer to AMR various series single chip microcomputer, and I use STM32 MCU to complete the design, the purpose is to realize the control software on the phone or PC web transmission via WiFi, LED and relay control STM32 board. And wireless transmission as now a more cutting-edge technology to start learning, all the emerging industry in the pursuit of small high efficiency, and wireless technology can reduce the amount of traditional engineering, at the same time can save a lot of the platoon line, line maintenance, test on some unnecessary obstacles and consumption. At the same time, the real-time running stage can obviously reflect its portability, high efficiency and energy saving.【Keywords】 STM32 WiFi Remote Control Web Page 1設(shè)計目標本次設(shè)計要求能通過PC的web界面,遠程通過wifi控制小車的前進、后退、左轉(zhuǎn)和右轉(zhuǎn)及LED和繼電器的開和關(guān)。要求學生對STM32有一定基礎(chǔ),熟悉MR09和和web間通信,會基本的C語言和javascript,會基本的網(wǎng)頁設(shè)計,熟練掌握MDK軟件的使用與程序下載。2設(shè)計內(nèi)容(1)在MDK中,配備車載wifi的名稱,密碼,IP,網(wǎng)關(guān),DNS及工作模式。本實驗中,配置wifi名稱:wulianwang 密碼:1234567890123IP地址:0 網(wǎng)關(guān): DNS:8(2) 設(shè)計小車電機驅(qū)動,繼電器模塊和底座電路的原理圖和PCB。(3)用腳本語言設(shè)計web控制界面,本設(shè)計中是用 Dreamweaver軟件設(shè)計腳本語言。生成的.HTML控制臺文件,用 Linux環(huán)境下GCC編譯器將.HTML文件編譯生成 .h頭文件,因沒有裝 Linux系統(tǒng),故在window環(huán)境下安裝類似GCC編譯器cygwin軟件,生成.h文件后,添加該頭文件到MDK工程文件 ,編譯整個工程文件,下載程序到核心板。(4)打開帶無線網(wǎng)卡的PC,連接名為wulianwang的wifi,密碼為1234567890123。 (5) 實現(xiàn)web控制小車前進后退與轉(zhuǎn)向運動,LED和繼電器開關(guān)。設(shè)計完成。2.1系統(tǒng)組成框圖3設(shè)計方案(1) 采用Dreamweaver制作控制臺的Web界面(2) 控制臺與車載wifi建立無線通訊(3) 制作電機驅(qū)動電路及繼電器電路 (4) 嵌入式技術(shù)與網(wǎng)頁設(shè)計相結(jié)合,按鍵操縱小車的轉(zhuǎn)向,前進后退等動作。 4實驗所需器件(1) 核心板,此處采用STM32核心板(2) 繼電器模塊,及各種常用元器件(3) 小車底座,輪子,直流電機及L298N驅(qū)動模塊(驅(qū)動電機)(4) Wifi芯片,本實驗選擇MR08的wifi模塊(5) STM32核心板和JLINK下載模塊及其相關(guān)的驅(qū)動(6) 帶無線網(wǎng)卡的PC一臺,且?guī)DK,GCC編譯器環(huán)境(7) 杜邦線若干,電池若干且?guī)щ姵睾校?5實驗各模塊電路設(shè)計5.1 核心板模塊(1)芯片的選擇:STM32VET6(2)芯片的介紹:內(nèi)核8:ARM32位的Cort32ex-M3CPU最高72MHz工作頻率,在D存儲器的0等待周期訪問時可1.25DMips/MHz(Dhrystone2.1)單周期乘法和硬件除法時鐘、復位和電源管理2.03.6伏供電和I/O引腳上電/斷電復位(POR/PDR)、可編程電壓監(jiān)測器(PVD)416MHz晶體振蕩器內(nèi)嵌經(jīng)出廠調(diào)校的8MHz的RC振蕩器內(nèi)嵌帶校準的40kHz的RC振蕩器產(chǎn)生CPU時鐘的PLL帶校準功能的32kHzRTC振蕩器低功耗睡眠、停機和待機模式VBAT為RTC和后備寄存器供電2個12位模數(shù)轉(zhuǎn)換器,1s轉(zhuǎn)換時間(多達16個輸入通道)轉(zhuǎn)換范圍:0至3.6V雙采樣和保持功能溫度傳感器DMA:7通道DMA控制器支持的外設(shè):定時器、ADC、SPI、I2C和USART(3)STM32VET6芯片引腳圖 圖 5.1.3(4)實物圖: 圖 WiFi模塊(1)采用芯片:WM-G-MR-09 (2)WiFi模塊的系統(tǒng)框架(3)WiFi模塊電路原理圖 圖5.2.3(4)實物圖: 圖 直流電機驅(qū)動模塊(1)小車驅(qū)動模塊選擇:L298N(2)簡要說明:尺寸:80mmX45mm主要芯片:L298N、光電耦合器工作電壓:控制信號直流5V;電機電壓直流3V46V(建議使用36伏以下)最大工作電流:2.5A五、額定功率:25W(3)特點:a、具有信號指示。b、轉(zhuǎn)速可調(diào)c、抗干擾能力強d、具有過電壓和過電流保護 e、可單獨控制兩臺直流電機f、可單獨控制一臺步進電機g、PWM脈寬平滑調(diào)速h、可實現(xiàn)正反轉(zhuǎn)i,采用光電隔離(4)電機連接原理圖(5)實物圖: 圖 繼電器模塊(1)特點繼電器觸點容量250V10A.繼電器輸出常開、常閉;低電平有效。5V繼電器信號輸入電壓范圍:05V;VCC系統(tǒng)電源。JD-VCC繼電器電源。默認5V繼電器。JD-VCC和VCC短接就可以了。 該繼電器為2路繼電器,VCC接電源 +5V,GND接地,2路輸入IN1和IN2,當IN時,路繼電器開,當IN時,路繼電器關(guān),路繼電器同理。(2)實物圖 圖 5.4.26實驗設(shè)計6.1設(shè)計意義與目的熟悉基于STM32的WiFi模塊控制系統(tǒng)的使用,為今后進一步學習物聯(lián)網(wǎng)無線智能控制打下基礎(chǔ)。6.2 系統(tǒng)原理圖圖6.2.1 系統(tǒng)原理圖圖6.2.2 系統(tǒng)PCB圖6.3完成實物圖圖6.3.1 底層圖圖6.3.2正視圖7調(diào)試與結(jié)果7.1連接WiFiPC上連接小車車載WiFi,WiFi名稱:wulianwang無線網(wǎng)密碼:12345678901237.2 WiFi測試連接(1)通過PC 測試在window命令行中ping 開發(fā)板IP,結(jié)果如下:圖 7.2.1(2)通過創(chuàng)建TCP UDP 來測試,建立TCP Client服務器,端口8080,IP地址:0 圖7.2.2 連接建立后,通過發(fā)送控制命令檢測是否連接,如,LED_OPEN1(LED1開),LED_CLOSE1(LED2關(guān)),JDQ_OPEN(繼電器開),JDQ_CLOSE(繼電器關(guān)) 圖7.3登陸控制Web界面 Wifi連接成功后,打開瀏覽器,在地址欄敲入IP:0,進入控制界面:圖 7.3.1圖 7.3.28設(shè)計總結(jié):(成員作用與體會) 通過這次實踐課程,通過親自動手,從最初確定課題,到畫設(shè)計PCB,到印刷電路板,到焊接元器件,到測試電路,到調(diào)試程序,經(jīng)過了反復的修改和實踐,終于完成課題,一路走來,確實很不易。自己畫PCB,制板,編程,調(diào)試等各方面能力都得到了提升,同時也體會到了團隊的力量,體會到了協(xié)作的重要性,也體會到了合理指揮分配的重要性,在團隊合作中共同進步,在合作中成長!9附件附件一:腳本語言源碼WiFi遙控小車-程念組網(wǎng)頁控制界面(第六組ARM課程實踐小組成員:程念(組長)付威 張靜 張松青 施毅) 指導老師:王忠友老師 無線網(wǎng)類型: Infra Ad-Hoc 無線網(wǎng)名稱: 無線網(wǎng)密鑰: (支持WPA/WPA2 AD-HOC 請設(shè)置為13位密碼比如:1234567890123) 無線網(wǎng)絡(luò)IP: (0.255) 子 網(wǎng) 掩碼: 默 認 網(wǎng)關(guān): DNS 服務器: 無線網(wǎng) MAC: (固件固定,無法修改) 說明 :本設(shè)備支持一鍵恢復出廠設(shè)置,恢復后默認為infra型網(wǎng)絡(luò),關(guān)聯(lián)AP的ssid為linux,無加密。默認IP為0。     附件二:控制部分C語言源碼/*/#include sample_http.h#include common.h#include dev.h#include marvell_ops.h#include parmcfg.h#if LWIP_TCP#define TEST_WEB_SRV 0/by millin 2008-01 add counter & runtimeru32_t runtime=0;u32_t counter=0;char html_buffer512;static void hex_trans(char *frm,char *dst) int iii; if(!memcmp(frm,%3d,3) iii=3; while(iii-) if(*dst= ) *dst+=0; else if(!memcmp(frm,%2x,3) iii=2; while(iii-) if(*dsta-1)&(*dstindex+; int len=hs-leftleft:512; char tmp32; hs-len=len; memcpy(buffer,html+512*index,len); if(index=0)/net mode if(marvel_mode=1) snprintf(buffer+INFRA_INDEX,8,%s, ); snprintf(buffer+ADHOC_INDEX,8,%s, selected); else if(marvel_mode=0) snprintf(buffer+INFRA_INDEX,8,%s, selected); snprintf(buffer+ADHOC_INDEX,8,%s, ); else if(index=1) /* if(marvel_mode=1)*buffer=d;else*buffer= ; */ /ssid memset(buffer+SSID_INDEX-512,0,64); sprintf(char *)buffer+SSID_INDEX-512,%s,marvel_ssid); /key memset(buffer+KEY_INDEX-512,0,61); sprintf(char *)buffer+KEY_INDEX-512,%s,marvel_key); /ip1 snprintf(buffer+WIP1_INDEX-512,3,%3d,wireless_ip0); /ip2 snprintf(buffer+WIP2_INDEX-512,3,%3d,wireless_ip1); else if(index=2) /ip3 snprintf(buffer+WIP3_INDEX-1024,3,%3d,wireless_ip2); snprintf(buffer+WIP4_INDEX-1024,3,%3d,wireless_ip3); /mask snprintf(buffer+MASK1_INDEX-1024,3,%3d,wireless_mask0); snprintf(buffer+MASK2_INDEX-1024,3,%3d,wireless_mask1); snprintf(buffer+MASK3_INDEX-1024,3,%3d,wireless_mask2); snprintf(buffer+MASK4_INDEX-1024,3,%3d,wireless_mask3); else if(index=3) /gataway snprintf(buffer+GATAWAY1_INDEX-1536,3,%3d,wireless_gw0); snprintf(buffer+GATAWAY2_INDEX-1536,3,%3d,wireless_gw1); snprintf(buffer+GATAWAY3_INDEX-1536,3,%3d,wireless_gw2); snprintf(buffer+GATAWAY4_INDEX-1536,3,%3d,wireless_gw3); snprintf(buffer+DNS1_INDEX-1536,3,%3d,wireless_dns0); snprintf(buffer+DNS2_INDEX-1536,3,%3d,wireless_dns1); else if(index=4) memcpy(wireless_mac,pgmarvel_priv-current_addr,6);/updata mac snprintf(buffer+DNS3_INDEX-2048,3,%3d,wireless_dns2); snprintf(buffer+DNS4_INDEX-2048,3,%3d,wireless_dns3); /mac snprintf(buffer+WMAC0_INDEX-2048,2,%2x,wireless_mac0); snprintf(buffer+WMAC1_INDEX-2048,2,%2x,wireless_mac1); snprintf(buffer+WMAC2_INDEX-2048,2,%2x,wireless_mac2); snprintf(buffer+WMAC3_INDEX-2048,2,%2x,wireless_mac3); snprintf(buffer+WMAC4_INDEX-2048,2,%2x,wireless_mac4); else if(index=5) snprintf(buffer+WMAC5_INDEX-2560,2,%2x,wireless_mac5); /*static int get_parmer(unsigned char *str,unsigned char *name,unsigned char *context,unsigned char chr)int cnt=0;unsigned char *parm;while(*context)if(*(context-1)!=chr)&(*(context-1)!=?)context+;continue;if(memcmp(context,name,strlen(const char *)name)=0)&(*(context+strlen(const char *)name)=)/名字匹配而且以=開始參數(shù)parm=context+strlen(const char *)name)+1;/name=context+=(strlen(const char *)name)+1);while(*context!=chr)&(*context!=0)/&標示參數(shù)結(jié)束cnt+;context+;memcpy(str,parm,cnt);/copy parm to str*(str+cnt)=0;return 0;elsecontext+;return -1;/cannt find the parm*/*StartAddr 必須保證按頁對齊,len的長度以字節(jié)為單位*/*-*/static void conn_err(void *arg, err_t err) struct http_state *hs; hs = arg; mem_free(hs);/*-*/static void close_conn(struct tcp_pcb *pcb, struct http_state *hs) tcp_arg(pcb, NULL); tcp_sent(pcb, NULL); tcp_recv(pcb, NULL); mem_free(hs); tcp_close(pcb);/*-*/static void send_data(struct tcp_pcb *pcb, struct http_state *hs) err_t err; u16_t len; /* We cannot send more data than space available in the send buffer. */ if(1000 len) len = 1000; else len =hs-len; err = tcp_write(pcb,html_buffer, len, 0); if(err = ERR_OK) hs-file += len; hs-left -= len; /*-*/#if 0static err_t http_poll(void *arg, struct tcp_pcb *pcb) struct http_state *hs; hs = arg; /* printf(Pollln);*/ if(hs = NULL) /* printf(Null, closen);*/ tcp_abort(pcb); return ERR_ABRT; else +hs-retries; if(hs-retries = 4) tcp_abort(pcb); return ERR_ABRT; send_data(pcb, hs); return ERR_OK;#endif/*-*/static err_t http_sent(void *arg, struct tcp_pcb *pcb, u16_t len) struct http_state *hs; hs = arg; hs-retries = 0; if(hs-left 0) html_cgi(unsigned char *)html,(unsigned char *)html_buffer,hs); send_data(pcb, hs); else close_conn(pcb,hs);if(hs-cfg) NVIC_GenerateSystemReset();/reboot system to updata config return ERR_OK;#if TEST_WEB_SRVstatic err_t test_sent(void *arg, struct tcp_pcb *pcb, u16_t len) struct http_state *hs; hs = arg; hs-retries = 0; if(hs-left 0) test_cgi(unsigned char *)test_html,(unsigned char *)html_buffer,hs); send_data(pcb, hs); else close_conn(pcb,hs);if(hs-cfg) NVIC_GenerateSystemReset();/reboot system to updata config return ERR_OK;#endifconst static char http_html_hdr=HTTP/1.1 200 OKrnContent-type: text/htmlrnrn;/*-*/static err_t http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) / int i; char *data; struct http_state *hs; /added by millin, 2008.01 /u8_t hour,min,sec; /u16_t day; hs = arg; if(err = ERR_OK & p != NULL) /* Inform TCP that we have taken the data. */ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA, ENABLE); /使能PB,PA端口時鐘 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; /LED0-PB.5 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /IO口速度為50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); /根據(jù)設(shè)定參數(shù)初始化GPIOB.5 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; /LED1-PA.5 端口配置, 推挽輸出 GPIO_Init(GPIOA, &GPIO_InitStructure); /推挽輸出 ,IO口速度為50MHz tcp_recved(pcb, p-tot_len); printf(#rn %s rn,p-payload); if(hs-file = NULL) data = p-payload; if(!memcmp(data,GET /,strlen(GET /) /GET / err = tcp_write(pcb,http_html_hdr,strlen(http_html_hdr), 0);hs-file =(char *)&html;hs-left =sizeof(html);hs-len =512;hs-index=0; if(!memcmp(data,GET /Route?,strlen(GET /Route?)/GET /Route?http /para_string(unsigned char *)data);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論