基于STM32和WiFi遥控小车实验报告_第1页
基于STM32和WiFi遥控小车实验报告_第2页
基于STM32和WiFi遥控小车实验报告_第3页
基于STM32和WiFi遥控小车实验报告_第4页
基于STM32和WiFi遥控小车实验报告_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 嵌入式综合实践课程设计:基于STM32和WiFi的遥控小车及继电器 计算机科学与技术学院嵌入式综合实践课程设计报告专 业: 物 联 网 工 程 设计题目:基于STM32和WiFi的遥控小车及继电器 设计人员: 学号: 学号: 学号: 学号: 学号: 指导教师: 2014年6月 目录摘要IABSTRACTII1设计目标12设计内容13设计方案24实验所需器件25实验各模块电路设计35.1 核心板模块35.2 WiFi模块45.3直流电机驱动模块65.4 继电器模块76实验设计86.1设计意义与目的86.2 系统原理图86.3完成实物图107调试与结果117.1连接WiFi117.2 WiFi测

2、试连接117.3登陆控制Web界面138设计总结:(成员作用与体会)159附件15附件一:脚本语言源码15附件二:控制部分C语言源码1810成绩报告29基于STM32和WiFi的遥控小车及继电器摘要 随着嵌入式技术的发展,单片机技术进入了一个新的台阶,目前除最早的51单片机现在有了STM32系列单片机以AMR的各系列单片机,而本次设计我采用STM32单片机来完成,目的是实现通过手机上APP或者PC上web界面,通过WiFi无线传输,控制小车,STM32板子上的LED及继电器。而无线的传输时作为目前一项比较前沿的技术来展开学习的,所有的新新产业中都追求小规模高效率,而无线的技术可以降低传统工程的

3、工程量,同时可以节省大量由排线、线路维修、检测上的一些不必要的障碍和消耗。同时,在实时运行阶段也可以明显体现它的便携性,高效性和节能性。【关键词】 STM32 WiFi 遥控 网页 IIABSTRACT 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 microco

4、mputer 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

5、 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 rea

6、l-time running stage can obviously reflect its portability, high efficiency and energy saving.【Keywords】 STM32 WiFi Remote Control Web Page II1设计目标本次设计要求能通过PC的web界面,远程通过wifi控制小车的前进、后退、左转和右转及LED和继电器的开和关。要求学生对STM32有一定基础,熟悉MR09和和web间通信,会基本的C语言和javascript,会基本的网页设计,熟练掌握MDK软件的使用与程序下载。2设计内容(1)在MDK中,配备车载wif

7、i的名称,密码,IP,网关,DNS及工作模式。本实验中,配置wifi名称:wulianwang 密码:1234567890123IP地址:0 网关: DNS:8(2) 设计小车电机驱动,继电器模块和底座电路的原理图和PCB。(3)用脚本语言设计web控制界面,本设计中是用 Dreamweaver软件设计脚本语言。生成的.HTML控制台文件,用 Linux环境下GCC编译器将.HTML文件编译生成 .h头文件,因没有装 Linux系统,故在window环境下安装类似GCC编译器cygwin软件,生成.h文件后,添加该头文件到M

8、DK工程文件 ,编译整个工程文件,下载程序到核心板。(4)打开带无线网卡的PC,连接名为wulianwang的wifi,密码为1234567890123。 (5) 实现web控制小车前进后退与转向运动,LED和继电器开关。设计完成。2.1系统组成框图3设计方案(1) 采用Dreamweaver制作控制台的Web界面(2) 控制台与车载wifi建立无线通讯(3) 制作电机驱动电路及继电器电路 (4) 嵌入式技术与网页设计相结合,按键操纵小车的转向,前进后退等动作。 4实验所需器件(1) 核心板,此处采用STM32核心板(2) 继电器模块,及各种常用元器件(3) 小车底座,轮子,直流电机及L298

9、N驱动模块(驱动电机)(4) Wifi芯片,本实验选择MR08的wifi模块(5) STM32核心板和JLINK下载模块及其相关的驱动(6) 带无线网卡的PC一台,且带MDK,GCC编译器环境(7) 杜邦线若干,电池若干且带电池盒, 5实验各模块电路设计5.1 核心板模块(1)芯片的选择:STM32VET6(2)芯片的介绍:内核8:ARM32位的Cort32ex-M3CPU最高72MHz工作频率,在D存储器的0等待周期访问时可1.25DMips/MHz(Dhrystone2.1)单周期乘法和硬件除法时钟、复位和电源管理2.03.6伏供电和I/O引脚上电/断电复位(POR/PDR)、可编程电压监

10、测器(PVD)416MHz晶体振荡器内嵌经出厂调校的8MHz的RC振荡器内嵌带校准的40kHz的RC振荡器产生CPU时钟的PLL带校准功能的32kHzRTC振荡器低功耗睡眠、停机和待机模式VBAT为RTC和后备寄存器供电2个12位模数转换器,1s转换时间(多达16个输入通道)转换范围:0至3.6V双采样和保持功能温度传感器DMA:7通道DMA控制器支持的外设:定时器、ADC、SPI、I2C和USART(3)STM32VET6芯片引脚图 图 5.1.3(4)实物图: 图 WiFi模块(1)采用芯片:WM-G-MR-09 (2)WiFi模块的系统框架(3)WiFi模块电路原理图 图

11、5.2.3(4)实物图: 图 直流电机驱动模块(1)小车驱动模块选择:L298N(2)简要说明:尺寸:80mmX45mm主要芯片:L298N、光电耦合器工作电压:控制信号直流5V;电机电压直流3V46V(建议使用36伏以下)最大工作电流:2.5A五、额定功率:25W(3)特点:a、具有信号指示。b、转速可调c、抗干扰能力强d、具有过电压和过电流保护 e、可单独控制两台直流电机f、可单独控制一台步进电机g、PWM脉宽平滑调速h、可实现正反转i,采用光电隔离(4)电机连接原理图(5)实物图: 图 继电器模块(1)特点继电器触点容量250V10A.继电器输出常开、常

12、闭;低电平有效。5V继电器信号输入电压范围:05V;VCC系统电源。JD-VCC继电器电源。默认5V继电器。JD-VCC和VCC短接就可以了。 该继电器为2路继电器,VCC接电源 +5V,GND接地,2路输入IN1和IN2,当IN时,路继电器开,当IN时,路继电器关,路继电器同理。(2)实物图 图 5.4.26实验设计6.1设计意义与目的熟悉基于STM32的WiFi模块控制系统的使用,为今后进一步学习物联网无线智能控制打下基础。6.2 系统原理图图6.2.1 系统原理图图6.2.2 系统PCB图6.3完成实物图图6.3.1 底层图图6.3.2正视图7调试与结果7.1连接WiFiPC上连接小车车

13、载WiFi,WiFi名称:wulianwang无线网密码:12345678901237.2 WiFi测试连接(1)通过PC 测试在window命令行中ping 开发板IP,结果如下:图 7.2.1(2)通过创建TCP UDP 来测试,建立TCP Client服务器,端口8080,IP地址:0 图7.2.2 连接建立后,通过发送控制命令检测是否连接,如,LED_OPEN1(LED1开),LED_CLOSE1(LED2关),JDQ_OPEN(继电器开),JDQ_CLOSE(继电器关) 图7.3登陆控制Web界面 Wifi连接成功后,打开浏览器,在地址栏敲入IP

14、:0,进入控制界面:图 7.3.1图 7.3.28设计总结:(成员作用与体会) 通过这次实践课程,通过亲自动手,从最初确定课题,到画设计PCB,到印刷电路板,到焊接元器件,到测试电路,到调试程序,经过了反复的修改和实践,终于完成课题,一路走来,确实很不易。自己画PCB,制板,编程,调试等各方面能力都得到了提升,同时也体会到了团队的力量,体会到了协作的重要性,也体会到了合理指挥分配的重要性,在团队合作中共同进步,在合作中成长!9附件附件一:脚本语言源码WiFi遥控小车-程念组网页控制界面(第六组ARM课程实践小组成员:程念(组长)付威 张静 张松青 施毅) 指导老师:王忠

15、友老师 无线网类型: Infra Ad-Hoc 无线网名称: 无线网密钥: (支持WPA/WPA2 AD-HOC 请设置为13位密码比如:1234567890123) 无线网络IP: (0.255) 子 网 掩码: 默 认 网关: DNS 服务器: 无线网 MAC: (固件固定,无法修改) 说明 :本设备支持一键恢复出厂设置,恢复后默认为infra型网络,关联AP的ssid为linux,无加密。默认IP为0。     附件二:控制部分C语言源码/*/#include sample_http.h#include common.h#include dev.

16、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

17、,%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+INFR

18、A_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,%

19、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,%3

20、d,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

21、-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-

22、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_m

23、ac2); 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=

24、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)=)/名字匹配而且以=开始参数parm=context+strlen(const char *)name)+1;/name=context+=(strlen(const char *)name)+1);while(*context!=c

25、hr)&(*context!=0)/&标示参数结束cnt+;context+;memcpy(str,parm,cnt);/copy parm to str*(str+cnt)=0;return 0;elsecontext+;return -1;/cannt find the parm*/*StartAddr 必须保证按页对齐,len的长度以字节为单位*/*-*/static void conn_err(void *arg, err_t err) struct http_state *hs; hs = arg; mem_free(hs);/*-*/static void close_conn(s

26、truct 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. */ i

27、f(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_abo

28、rt(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,

29、(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-l

30、eft 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 e

31、rr_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; RC

32、C_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);

33、 /根据设定参数初始化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_str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论