物联网信息采集课程设计

2025-10-08

河海大学计算机及信息工程学院(常州)

课程设计报告

题 目 物联网信息采集

专业、学号 通信工程1162310120

授课班号

学生姓名

指导教师 金纪东

完成时间

课程设计(报告)任务书

(理 工 科 类)

Ⅰ、课程设计(报告)题目:

Ⅱ、课程设计(论文)工作内容

一、课程设计目标

1、掌握AD数据采样的原理,同时在实验箱上实现串口输出;

2、掌握网络协议建立的原理;

3、将采样的数据能够在同一网络下通过浏览器查看;

4、培养学生理论联系实际的能力;

5、培养学生的自我学习和解决问题的能力;

6、培养学生的团队合作能力;

二、研究方法及手段应用

1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;

2、对已有程序认真阅读理解,并调试;

3、在独立思考的基础上,模仿已有程序根据自己想法改写程序;

4、反复编译调试、总结经验、排除差错;

三、课程设计预期效果

1、完成实验环境搭建;

2、掌握AD数据采样的原理,同时在实验箱上实现串口输出;

3、掌握网络协议建立的原理;

4、将采样的数据能够在同一网络下通过浏览器查看;

学生姓名: 刘国庆 专业年级: 11级通信工程

目录

前 言 ............................................................. 4

第一章 系统设计 ................................................... 5

第一节 课题目标及总体方案 ........................................ 5

第二节 系统简介................................................... 5

一. ZE-stm32v7e实验平台介绍 ................................. 5

二. ZE-stm32v7e硬件设计分类 .................................... 5

1.stm32v7e平台应用区域 ...................................... 5

2.无线传感协议区域 ........................................... 5

第三节 实验步骤................................................... 6

一.熟悉设备 ..................................................... 6

二.ADC数据采样 ................................................. 6

三.远程浏览器网页修改 ........................................... 7

四.ADC数据定位 ................................................. 7

第二章 实验(测试)结果及讨论 ..................................... 8

第一节 预期实验结果 .............................................. 8

第二节 实验出现的问题及调试 ...................................... 8

第三节 实验现象 .................................................. 9

第三章 结 论 ...................................................... 9

心得体会 ........................................................ 10

参考文献 .......................................................... 10

附 录 ............................................................ 11

前 言

物联网是新一代信息技术的重要组成部分,顾名思义,物联网就是物物相连

的互联网。它是一种利用局域网络或互联网等通信技术把传感器、控制器、机器、

人员和物等通过新的方式连在一起,形成人与物、物与物相连,实现信息化、远

程管理控制和智能化的网络。

而嵌入式系统是综合了计算机软硬件、传感器技术、集成电路技术、电子应

用技术为一体的复杂技术。经过几十年的演变,以嵌入式系统为特征的智能终端

产品随处可见;小到人们身边的MP3、手机,大到航天航空的卫星系统,嵌入式

系统正在改变着人们的生活,推动着工业生产以及国防工业的发展。如果把物联

网用人体做一个简单比喻,传感器相当于人的眼睛、鼻子、皮肤等感官,网络就

是神经系统用来传递信息,嵌入式系统则是人的大脑,在接收到信息后进行分类

处理。可见嵌入式系统的应用广泛,并在物联网中占有重要的位置和作用。

目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的优秀人才

投入其中。通过本次实验,让我们充分认识嵌入式系统与物联网系统的联系,并

且了解网络协议在嵌入式系统中的应用及编程方法,掌握AD采样数据在浏览器

查看过程中的定位、显示。

第一章 系统设计

第一节 课题目标及总体方案

物联网技术的发展对现代社会各个领域都有着重要的作用,本课题目的是

AD数据采集,在实验平台上提供web服务,相当于服务器,PC机上可以访问

IP地址来查看采集的数据,具体框图如下:

192.168.0.8 192.168.0.100

平台与PC通过网线连接,PC设置与服务器同一局域网下的IP,在浏览器中访

问服务器IP以查看采集的数据值。

第二节 系统简介

一. ZE-stm32v7e实验平台介绍

ZE-stm32v7e实验平台是一款高端的多功能嵌入式教学产品,能够学习ARM

开发的嵌入式知识,以及各种主流无线传感协议IPV6、Zigbee、WIFI、Bluetooth

等,通过构建项目案例来实现感知层(传感器技术/嵌入式技术)、传输层(WSN

无线传感网/IPV6无线传感网/Zigbee无线传感网/WIFI无线传感网/Bluetooth

无线传感网)、网关层(嵌入式Linux /ZIGBEE/IPv6)等教学解决方案。

二. ZE-stm32v7e硬件设计分类

1. STM32V7E平台应用区域

1) 采用高性能的ST STM32F107处理器,主频72MHz,Flash 256KB,

4.3寸真彩液晶屏,分辨率480*272,带4.3寸触摸屏。

2) 1个4*4的可编程扫描键盘,2个可编程按键,4个可编程LED灯,1个RTC,

1个JTAG&DEBUG接口;

3) 集成丰富的外围扩展接口,4路RS232串口(一个调试串口,另外三个

串口分别作为LCD触摸屏、GSM、ZIGBEE和RFID使用),集成以太网

接口、音频接口、CAN、485、蜂鸣器和外接ADC接口等外设。

4) 提供两组12PIN传感器应用扩展接口,包含以下信号:串口、SPI、IIC、

GPIO(可用于中断)、ADC接口、PWM接口,5V/3.3V电源;

5) 板载集成GSM通信插座,无线ZIGBEE通信插座、无线RFID通信插座;

6) 软件上采用嵌入式操作系统Contiki-OS,提供Contiki系统的一些基础实

验、基于Contiki系统的无线通信实验和基于Contiki系统的综合DEMO实

验。

2. 无线传感协议区域:

1) 无线传感协议区域包含6组无线传感网节点,每组无线传感网节点包含四

个部分:STM32嵌入式底板、无线节点核心板、传感器接口板、LCD显

示板;

2) 可以配置四组不同无线协议的节点:IPV6、Zigbee、WIFI、Bluetooth;

3) 实验平台提供稳定的12V稳压电源,可以支持6组无线传感节点和

STM32V7E平台同时工作。

4) 每个无线传感网节点的STM32嵌入式底板包含一个ARM Cortex-M3

STM32F103处理器芯片,提供稳定的5V/3.3V电源输入,4个可编程按

键,4个可编程LED灯,1个RTC,1个JTAG&DEBUG接口,1个LCD接

口,1个24PIN的传感器接口;

第三节 实验步骤

一.熟悉设备

本实验使用实验教学系统STM32V7E平台实验箱,应用的主要是利用实验箱

的应用扩展接口,利用ADC的14通道对开发板上单圈电位器的电压值作AD转换,

并通过串口输出到PC机上。实验前根据已给的实验例程,掌握串口数据的传送

和查看,以及网络建立的基本过程。

二.ADC数据采样

1. 程序修改

在ADC配置中加入时钟信号,以使数据采样过程中能够实时性采集

2. 线路连接

将实验平台和PC机通过串口线,网线,J-Link相连,设置PC机的网络

IPV4地址(IP地址初始化为192.168.0.100,子网掩码255.255.255.0),

编译下载程序,运行PC机上CMD输入ping 192.168.0.8查看网络连接是否

正常。

3. 浏览器查看

打开浏览器,在地址栏中输入192.168.0.8查看ADC采集界面是否有数

据跳动。

三.远程浏览器网页修改

由于实验例程中给的ADC采样只有一个进度条,为了更加直观,我们把数据

显示加入到浏览的网页中。

打开fs.c下的fsdata.c文件找到data_STM32_StatusBar_html网页的十六

进制编码。

通过先前的修改,将新网页的十六进制编码替换。

四.ADC数据定位

在httpd.c中查找AD数据转换的相关公式,利用软件Ultraedit在网页中

定位数据显示的位置,将具体的偏移数值对httpd.c进行修改,同时添加数值显

示位以初始化数值。在其他的文件中进行相应的修改(必要时可在main中添加

延时),使数值能够正常显示。

第二章 实验(测试)结果及讨论

第一节 预期实验结果

网络建立,浏览器访问192.168.0.8进入ADC数据界面,有进度条和数值的

跳动,并且在一定的范围内变化。

第二节 实验出现的问题及调试

1. 根据步骤连接电脑和实验箱,浏览器无法连接。解决方法:查看线路是否连

接完好,PC的网络连接Ipv4地址是否正确。

2. 浏览器中查看数据的进度条固定,并不跳变。解决方法:修改时钟,在main.c

中加入延时。

3. 浏览器跳变的数据显示位置不正确。解决方法: 改正httpd.c中数据的偏

移量。

第三节 实验现象

在浏览器中输入192.168.0.8后点击进入ADC数据采集界面,网页中显示如

下界面:

其中进度条和中间的数据是实时跳变的。

第三章 结 论

本次课设实现的物联网信息采集是物联网技术中比较简单的,现代社会中应

用传感、RFID进行物联网建立,无线通信的设计可以在此基础上进行扩展,发

散创新。整个程序的基础是实验平台自带的例程,通过对程序各个模块的理解,

以及通过修改程序实现课题的功能,对网络建立和AD数据采集的原理都有了一

定的了解。

心得体会

由于嵌入式课程课时有限,我们所掌握的知识并不够,只能参考已给的实

验例程,进行学习。并且通过翻阅许多资料,以及请教学长,对于物联网技术和

嵌入式系统技术也有了一定的了解。通过对实验例程的程序进行编译理解,

从最初的对程序的局部修改,到最后我们逐渐掌握了如何建立网络,使用

网络协议和AD数据采集。这个过程我们收获了许多!在最初阅读程序过程

中,我们根据已给的英文注释,再加上先前对嵌入式系统课程的学习,一

条条上网查阅资料,对于程序的理解也不断的深入。

在编写程序过程中,尤其是AD数据的显示部分的定位,在网页浏览器

中很多次都不能正常显示,然后就在偏移量上一位一位的尝试,仍然没有

很好的效果。在同学之间的讨论中,借鉴其他组的Ultraedit软件,进行

精确的定位,使本项工作事半功倍,同时也说明了合作的重要性。

当浏览器上显示出跳变的数据时,我们内心的喜悦溢于言表。通过此

次课设我不仅对嵌入式的开发有了更加深刻的了解,更对理论联系实际,

以及团队合作与分工,自学能力的重要性有了新的认识。这次课设,为我

以后的发展打下了基础,积累了经验。

在此真诚地感谢老师的指导!谢谢!

参考文献

[1] 王勇,何立民.嵌入式系统原理与设计.杭州:浙江大学大学出版社,2007.

[2] 王田苗.嵌入式系统设计与实例开发[M].北京:清华大学出版社,2003.1-10

[3] 刘强 崔莉 陈海明.物联网关键技术与应用 《计算机科学》2010年6月

附 录

一、 程序:

Main.c:

#include "stm32f10x.h"

#include <stdio.h>

#include "uart.h"

#include "delay.h"

#include "eth.h"

int main(void)

{

/* System Clocks Configuration */

delay_init(72);

uart2_init();

eth_init();

/* uIP stack main loop */

uIPMain();

/* Infinite loop */

while (1)

{

}

}

eth.c: //各种端口初始化配置

#include "stm32f10x.h"

#include "stm32_eval.h"

#include "stm32_eth.h"

#include <stdio.h>

#include "uip.h"

#include "stm32f10x_adc.h"

#include "uart.h"

#include "delay.h"

#include "eth.h"

/* Private define ------------------------------------------------------------*/

#define MESSAGE1 " STM32 ETH EXAMPLE "

#define MESSAGE2 " Line Device "

#define MESSAGE3 "WebServer Demo based"

#define MESSAGE4 " on uIP "

#define MESSAGE5 " IP address is: "

#define MESSAGE6 " 192.168.0.8 "

#define DP83848_PHY /* Ethernet pins mapped on STM3210C-EVAL Board */

#define PHY_ADDRESS 0x0100 /* Relative to STM3210C-EVAL Board */

//#define MII_MODE /* MII mode for STM3210C-EVAL Board (MB784)

(check jumpers setting) */

#define RMII_MODE /* RMII mode for STM3210C-EVAL Board (MB784)

(check jumpers setting) */

#define ETH_RXBUFNB 8

#define ETH_TXBUFNB 2

/* Private macro -------------------------------------------------------------*/

/* Private variables ---------------------------------------------------------*/

ETH_InitTypeDef ETH_InitStructure;

/* Ethernet Rx & Tx DMA Descriptors */

ETH_DMADESCTypeDef DMARxDscrTab[ETH_RXBUFNB],

DMATxDscrTab[ETH_TXBUFNB];

/* Ethernet buffers */

u8 Rx_Buff[ETH_RXBUFNB][ETH_MAX_PACKET_SIZE],

Tx_Buff[ETH_TXBUFNB][ETH_MAX_PACKET_SIZE];

ErrorStatus HSEStartUpStatus;

vu32 Value = 0;

void RCC_Configuration(void)

{

/* Enable ETHERNET clock */

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ETH_MAC |

RCC_AHBPeriph_ETH_MAC_Tx |

RCC_AHBPeriph_ETH_MAC_Rx, ENABLE);

/* Enable GPIOs clocks */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |

RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |

RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE|

RCC_APB2Periph_AFIO, ENABLE);

}

/**

* @brief Configures the different GPIO ports.

* @param None

* @retval None

*/

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

/* ETHERNET pins configuration */

/* AF Output Push Pull:

- ETH_MII_MDIO / ETH_RMII_MDIO: PA2

- ETH_MII_MDC / ETH_RMII_MDC: PC1

- ETH_MII_TX_EN / ETH_RMII_TX_EN: PB11

- ETH_MII_TXD0 / ETH_RMII_TXD0: PB12

- ETH_MII_TXD1 / ETH_RMII_TXD1: PB13 */

/* Configure PA2 as alternate function push-pull */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Configure PC1 as alternate function push-pull */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOC, &GPIO_InitStructure);

/* Configure PB11, PB12 and PB13 as alternate function push-pull */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOB, &GPIO_InitStructure);

/**************************************************************/

/* For Remapped Ethernet pins */

/*************************************************************/

/* Input (Reset Value):

- ETH_MII_RX_CLK / ETH_RMII_REF_CLK: PA1

- ETH_MII_RX_DV / ETH_RMII_CRS_DV: PD8

- ETH_MII_RXD0 / ETH_RMII_RXD0: PD9 */

/* Configure PA1 as input */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Configure PD8, PD9, PD10 as input */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOD, &GPIO_InitStructure);

}

/**

* @brief Configures the ADC.

* @param None

* @retval None

*/

void ADC_Configuration(void)

{

ADC_InitTypeDef ADC_InitStructure;

#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined

(STM32F10X_HD_VL)

/* ADCCLK = PCLK2/2 */

RCC_ADCCLKConfig(RCC_PCLK2_Div2);

#else

/* ADCCLK = PCLK2/4 */

RCC_ADCCLKConfig(RCC_PCLK2_Div4);

#endif

/* Enable ADC1 and GPIOB clock */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 |

RCC_APB2Periph_GPIOB, ENABLE);

/* ADC1 Configuration ------------------------------------------------------*/

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode = DISABLE;

ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel = 1;

ADC_Init(ADC1, &ADC_InitStructure);

/* ADC1 regular channel14 configuration */

ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1,

ADC_SampleTime_13Cycles5);

/* Enable ADC1 */

ADC_Cmd(ADC1, ENABLE);

/* Start ADC1 Software Conversion */

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

}

/**

* @brief Configures the nested vectored interrupt controller.

* @param None

* @retval None

*/

void NVIC_Configuration(void)

{

/* Set the Vector Table base location at 0x08000000 */

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

}

void eth_init()

{

/* Initialize LEDs

**********************************************************/

STM_EVAL_LEDInit(LED1);

STM_EVAL_LEDInit(LED2);

STM_EVAL_LEDInit(LED3);

STM_EVAL_LEDInit(LED4);

RCC_Configuration();

/* NVIC configuration */

NVIC_Configuration();

/* ADC configuration */

ADC_Configuration();

/* ETHERNET pins remapp in STM3210C-EVAL board: RX_DV and RxD[3:0] */

GPIO_PinRemapConfig(GPIO_Remap_ETH, ENABLE);

/* MII/RMII Media interface selection */

#ifdef MII_MODE /* Mode MII with STM3210C-EVAL */

GPIO_ETH_MediaInterfaceConfig(GPIO_ETH_MediaInterface_MII);

/* Get HSE clock = 25MHz on PA8 pin(MCO) */

RCC_MCOConfig(RCC_MCO_HSE);

#elif defined RMII_MODE /* Mode RMII with STM3210C-EVAL */

GPIO_ETH_MediaInterfaceConfig(GPIO_ETH_MediaInterface_RMII);

/* Get HSE clock = 25MHz on PA8 pin(MCO) */

/* set PLL3 clock output to 50MHz (25MHz /5 *10 =50MHz) */

RCC_PLL3Config(RCC_PLL3Mul_10);

/* Enable PLL3 */

RCC_PLL3Cmd(ENABLE);

/* Wait till PLL3 is ready */

while (RCC_GetFlagStatus(RCC_FLAG_PLL3RDY) == RESET)

{}

/* Get clock PLL3 clock on PA8 pin */

RCC_MCOConfig(RCC_MCO_PLL3CLK);

#endif

/* Configure the GPIO ports */

GPIO_Configuration();

/* Reset ETHERNET on AHB Bus */

ETH_DeInit();

/* Software reset */

ETH_SoftwareReset();

/* Wait for software reset */

while(ETH_GetSoftwareResetStatus()==SET);

/* ETHERNET Configuration ------------------------------------------------------*/

/* Call ETH_StructInit if you don't like to configure all ETH_InitStructure parameter */

ETH_StructInit(&ETH_InitStructure);

/* Fill ETH_InitStructure parametrs */

/*------------------------ MAC -----------------------------------*/

ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable ;

// ETH_InitStructure.ETH_Speed = ETH_Speed_100M; ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable;

// ETH_InitStructure.ETH_Mode = ETH_Mode_FullDuplex; ETH_InitStructure.ETH_RetryTransmission = ETH_RetryTransmission_Disable; ETH_InitStructure.ETH_AutomaticPadCRCStrip =

ETH_AutomaticPadCRCStrip_Disable; ETH_InitStructure.ETH_ReceiveAll = ETH_ReceiveAll_Enable;


物联网信息采集课程设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高中数学知识点公式定理记忆口诀

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219