【嵌入式系统开发实训】学生实验报告

news2024/11/13 6:51:59

一、实验内容
1、过程考核60分:
(1)顺序点亮3个LED灯(分数:10分);
(2)按键顺序点亮3个LED灯(分数:10分);
(3)读取18B20温度并通过串口显示(分数:10分);
(4)写入姓名(拼音)+学号到EEPROM,并在启动时送到串口显示(分数:10分);
(5)通过WIFI或GPRS上传温度到云端(分数:10分);
(6)通过云端服务器发指令,顺序点亮3个LED灯(分数:10分);
(7)其他加分项(分数:20分);
二、实验设备
1、硬件平台:
(1)开发板:
STM32F4开发板,包含以下资源,STM32F4处理器(ARM Cortex-M4),GPIO口、3个LED灯、1个按键、温度传感器18B20、EEPROM、RJ45以太网、WIFI模组、GPRS/GPS模组、LoRa模组等。
(2)ST-LINK下载器;
(3)USB转TTL模块;
2、软件平台:
(1)Keil5 开发环境,安装stm32f4支持包;
(2)ST-LINK驱动、USB转TTL驱动;
(3)网关示例软件;
(4)stm32f4示例程序;
(5)网络助手;
(6)云端服务器;
(7)以打包的方式分发;

三、主要实验内容及步骤

1、连接Stm32f4主板:
1)st-link,下载器:4线(5V, 3. 3V, GND, sWM, 按顺序从3. 3V开始,只要四根),1-3.3V-1; 2-gnd-4; 3-swdio-7;4-swclk-9;另一 边3.3V。
2) USB转TTL; 1-3.3V-3.3V; 2-TXD-RX; 3-RXD-TX; 4-GND-GND (对应板子上,3针,红色)。

2、顺序点亮3个LED灯(分数:10分);
在这里插入图片描述

代码:

1.void Light_Three_Led(void){  
2.    uint8_t i;  
3.    for(i=0; i<3; i++){  
4.        GPIO_ResetBits(GPIOD, GPIO_Pin_1 );  
5.        Delay_MS(1000);  
6.        GPIO_SetBits(GPIOD, GPIO_Pin_1 );  
7.          
8.        GPIO_ResetBits(GPIOD, GPIO_Pin_2 );  
9.        Delay_MS(1000);  
10.        GPIO_SetBits(GPIOD, GPIO_Pin_2 );  
11.          
12.        GPIO_ResetBits(GPIOD, GPIO_Pin_3 );  
13.        Delay_MS(1000);  
14.        GPIO_SetBits(GPIOD, GPIO_Pin_3 );  
15.    }  
16.  
17.}  

3、按键顺序点亮3个LED灯(分数:10分);
代码:

1.void EXTI9_5_IRQHandler(void)  
2.{  
3.        Delay_MS(20);              
4.    if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_8) == 0)  
5.        {  
6.            while(!GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_8))   
7.            printf("This is press key operating.\r\n") ;  
8.            Delay_MS(1);  
9.            Light_Three_Led( );  
10.              
11.              
12.        }  
13.  
14.    EXTI_ClearITPendingBit(EXTI_Line8);  
15.}  

效果图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、读取18B20温度并通过串口显示(分数:10分);
在这里插入图片描述

温度传感器硬件原理图
代码:

1.temperature = ds18b20_get_temperature();  
2.        SEND_TEM=(float)temperature/10;  
3.        printf("temp:%.2f℃",SEND_TEM);  

效果图:
在这里插入图片描述

5、写入姓名(拼音)+学号到EEPROM,并在启动时送到串口显示(分数:10分);

代码:

1.void Write(void){  
2.    uint16_t i;  
3.    uint8_t write[13]={'2','0','2','0','4','0','4','1','4','9','M','H','D'};  
4.    uint8_t read[13]={0};  
5.    I2C_Write(I2C3,ADDR_EEPROM_24C64,0x0,write,100);  
6.    Delay_MS(10);  
7.    I2C_Read(I2C3,ADDR_EEPROM_24C64,0x0,read,100);  
8.    for(i=0;i<13;i++){  
9.    printf("%c ",read[i]);  
10.    }  
11.}  

效果图:

在这里插入图片描述

6、通过WIFI或GPRS上传温度到云端(分数:10分);

1.while(esp8266_send_cmd("AT+CWJAP=\"i\",\"12345678\"","WIFI GOT IP",200))  
2.//  while(esp8266_send_cmd("AT+CWJAP=\"jsu-c512\",\"12345678\"","WIFI GOT IP",200))  
3.    {  
4.        printf("WIFI GOT IP_ERR\r\n");  
5.    }  
6.      
7.    //=0:单路连接模式     =1:多路连接模式  
8.    while(esp8266_send_cmd("AT+CIPMUX=0","OK",30))  
9.    {  
10.        printf("AT+CIPMUX_ERR\r\n");  
11.    }  
12.      
13.    //建立TCP连接  这四项分别代表了 要连接的ID号0~4   连接类型  远程服务器IP地址   远程服务器端口号  
14.    while(esp8266_send_cmd("AT+CIPSTART=\"TCP\",\"172.20.10.6\",8088","CONNECT",200))  
15.    {  
16.        printf("AT+CIPSTART_ERR\r\n");  
17.    }  

WIFI接入步骤:

  1. PIO配置。
    2.发A指令到ESP8266。
    3、发应用层数据。
    代码:
1.while(esp8266_send_cmd("AT+CWJAP=\"i\",\"12345678\"","WIFI GOT IP",200))  
2./   while(esp8266_send_cmd("AT+CWJAP=\"jsu-c512\",\"12345678\"","WIFI GOT IP",200))  
3.{  
4.    printf("WIFI GOT IP_ERR\r\n");  
5.}  
6.  
7.//=0:单路连接模式     =1:多路连接模式  
8.while(esp8266_send_cmd("AT+CIPMUX=0","OK",30))  
9.{  
10.    printf("AT+CIPMUX_ERR\r\n");  
11.}  
12.  
13.//建立TCP连接  这四项分别代表了 要连接的ID号0~4   连接类型  远程服务器IP地址   远程服务器端口号  
14.while(esp8266_send_cmd("AT+CIPSTART=\"TCP\",\"172.20.10.6\",8088","CONNECT",200))  
15.{  
16.    printf("AT+CIPSTART_ERR\r\n");  
17.}  

7、通过云端服务器发指令,顺序点亮3个LED灯(分数:10分)
代码:

1.if(TIM_GetITStatus(TIM5, TIM_IT_Update) == SET)    
2.        {  
3.            if(light_ctrl[0])LIGHT1_ON;  
4.            else LIGHT1_OFF;  
5.            if(light_ctrl[1])LIGHT2_ON;  
6.            else LIGHT2_OFF;  
7.            if(light_ctrl[2])LIGHT3_ON;  
8.            else LIGHT3_OFF;  
9.            for(i=0;i<3;i++)sum_li+=light_ctrl[i];  
10.            KEY_Scan(0);  
11.            if(fflag==0){  
12.                for(i=0;i<3;i++)light_ctrl[i]=0;  
13.            }  
14.            else if  
15.            (  
16.                fflag>0&&fflag<=3)  
17.                {  
18.                    for(i=0;i<3;i++)  
19.                        light_ctrl[i]=0;  
20.                        light_ctrl[fflag-1]=1;  
21.                }  
22.            else   
23.            {if(fflag%3!=0){for(i=0;i<3;i++)light_ctrl[i]=0;for(i=0;i<fflag%3;i++)light_ctrl[i]=1;}  
24.            else{for(i=0;i<3;i++)light_ctrl[i]=1;}}  
25.        }  
1.void Wifi_data(char *Wifi_data){  
2.    char sp[20];  
3.    char* Point=NULL;  
4.    if(strstr((const char *)Wifi_data, (const char *)"on")!=NULL)//接收到设置阈值命令  
5.    {  
6.        Point = strstr((const char *)Wifi_data, (const char *)"on")+2;  
7.        memcpy(sp, Point, 2);  
8.        fflag=atoi(sp);   
9.          
10.    }  
11.      
12.}  

指导老师签字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/825169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

恒运资本:炒股知识有用吗?

炒股是指通过购买和出售股票来赚取差价的一种出资行为。在现代社会&#xff0c;炒股已经成为许多人重视的话题。然而&#xff0c;有些人以为炒股常识是非常有用的&#xff0c;而另一些人则以为炒股常识并不有用。那么&#xff0c;炒股常识终究有多大的用途呢&#xff1f;本文将…

【NLP概念源和流】 06-编码器-解码器模型(6/20 部分)

一、说明 在机器翻译等任务中,我们必须从一系列输入词映射到一系列输出词。读者必须注意,这与“序列标记”不同,在“序列标记”中,该任务是将序列中的每个单词映射到预定义的类,如词性或命名实体任务。 作者生成 在上面的

实现本地上传、FTP上传、阿里云OSS上传三者合一处理

1、选项模式【Options】的处理 文件上传处理应该由程序进行配置&#xff0c;决定使用那种方式&#xff0c;那么这里面我们为了弹性化处理&#xff0c; 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传的配置参数信息。 微软引入选项模式,它是用于配置框架…

宇凡微2.4g遥控船开发方案,采用合封芯片

2.4GHz遥控船的开发方案是一个有趣且具有挑战性的项目。这样的遥控船可以通过无线2.4GHz频率进行远程控制&#xff0c;让用户在池塘或湖泊上畅游。以下是一个简要的2.4GHz遥控船开发方案&#xff1a; 基本构想如下 mcu驱动两个小电机&#xff0c;小电机上安装两个螺旋桨&#…

三、JVM-如何判断对象已死问题

内存模型以及如何判定对象已死问题 体验与验证 2.4.5.1 使用visualvm visualgc插件下载链接 &#xff1a;https://visualvm.github.io/pluginscenters.html 选择对应JDK版本链接—>Tools—>Visual GC 若上述链接找不到合适的&#xff0c;大家也可以自己在网上下载对应…

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别

市面上已经有很多基于位置服务的应用场景&#xff0c;如运动品类应用基于地理位置生成运动轨迹&#xff0c;企业办公应用基于定位信息进行打卡&#xff0c;游戏品类应用基于位置信息开发区域排名&#xff0c;电商品类应用基于位置发放区域性优惠券等等。在黑灰产嗅探到背后的商…

自然语言处理学习笔记(二)————语料库与开源工具

目录 1.语料库 2.语料库建设 &#xff08;1&#xff09;规范制定 &#xff08;2&#xff09;人员培训 &#xff08;3&#xff09;人工标注 3.中文处理中的常见语料库 &#xff08;1&#xff09;中文分词语料库 &#xff08;2&#xff09;词性标注语料库 &#xff08;3…

Elasticsearch:语义搜索 - Semantic Search in python

当 OpenAI 于 2022 年 11 月发布 ChatGPT 时&#xff0c;引发了人们对人工智能和机器学习的新一波兴趣。 尽管必要的技术创新已经出现了近十年&#xff0c;而且基本原理的历史甚至更早&#xff0c;但这种巨大的转变引发了各种发展的“寒武纪大爆炸”&#xff0c;特别是在大型语…

电容笔和触控笔的区别是什么?好用的苹果平替电容笔

如今&#xff0c;随着无纸化学习以及办公的发展&#xff0c;电容笔更是倍受关注。但是&#xff0c;很多人都对于电容笔和触控笔之间的区别都存在着疑惑。其实&#xff0c;这两种产品很好区分&#xff0c;第一种是电容笔&#xff0c;它是适用于我们最常用的电容屏&#xff0c;例…

视频两侧有黑边怎么处理?教你裁切视频黑边方法

现在的大多数电视是16:9的宽屏&#xff0c;而大多数视频都是4:3的标清或是16:9的高清。当你看一个标清或高清视频时&#xff0c;如果它的比例与你的电视屏幕比例不同&#xff0c;视频两侧就会出现黑边。这些黑边会对视频的质量或观看体验产生影响&#xff0c;那么怎么处理呢&am…

双系统安装后开机时没有GRUB界面,直接进入windows系统

电脑配置&#xff1a;512固态1T机械&#xff0c;安装了win10Ubuntu22.04双系统&#xff0c;ubuntu安装在机械硬盘上。安装完成后没有出现GRUB启动管理供选择进入哪一个系统&#xff0c;直接进入windows系统。 解决办法&#xff1a; 进入Bios&#xff08;惠普电脑的快捷键是F1…

Python入门指南:从零开始学习Python编程

文章目录 前言安装Python变量以及数据类型总结 前言 Python是一种简单而又强大的编程语言&#xff0c;它在全球范围内广受欢迎&#xff0c;适用于各种应用场景&#xff0c;包括Web开发、数据分析、人工智能和科学计算等。本篇博客将为初学者提供一份Python入门指南&#xff0c;…

甄知科技新一代AIGC产品发布

文/玉娇龙 本文约3200字&#xff0c;阅读全文需要大约3分钟左右 演讲嘉宾&#xff1a;张礼军 甄知科技联合创始人&#xff0c;CTO 首席产品官 一、甄知科技简介 2023年7月29日&#xff0c;甄知科技联合创始人兼 CTO 张礼军作为演讲嘉宾&#xff0c;在2023汉得新一代产品体系发布…

webgpu之旅05

看一下粒子 这次看官方的demo吧分析 这次看官方的demo吧 演示了一个粒子如何用cs动起来 分析 这里是着色部分&#xff0c;看起来没什么特别的&#xff0c;接下来看cs部分 binding(0) group(0) var<uniform> sim_params : SimulationParams; binding(1) group(0) var&l…

《向量数据库指南》——当前向量数据库的赛道有哪些?

当前&#xff0c;向量数据库赛道主要分为四个类别&#xff1a; 基于PG、Clickhouse 等进行魔改或者插件化实现的向量数据库&#xff1a;这类解决方案以现有的关系数据库或列存数据库作为基础&#xff0c;通过修改或插件扩展的方式添加向量搜索功能。PG Vector 是这类解决方案的…

领航ADR新赛道 边界无限靖云甲究竟新在哪儿?

随着5G、物联网、大数据、人工智能和云计算等新技术的加速落地应用&#xff0c;全球已经迈入数字化时代&#xff0c;传统的网络边界持续瓦解&#xff0c;物联网安全、云安全、移动安全、数据安全、安全智能运维等全新的挑战越发受到业界关注&#xff0c;产业技术的发展尤其是云…

Django框架之路由用法

简介 路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序&#xff0c;并返回处理结果&#xff0c;也就是 URL 与 Django 的视图建立映射关系。 Django 路由在 urls.py 配置&#xff0c;urls.py 中的每一条配置对应相应的处理方法。 Django 不同版本 urls.py 配…

【NLP概念源和流】 05-引进LSTM网络(第 5/20 部分)

一、说明 在上一篇博客中,我们讨论了原版RNN架构,也讨论了它的局限性。梯度消失是一个非常重要的缺点,它限制了RNN对较短序列的建模。香草 RNN 在相关输入事件和目标信号之间存在超过 5-10 个离散时间步长的时间滞时无法学习。这基本上限制了香草RNN在许多实际问题上的应用,…

【组合计数】CF1151E

Problem - 1151E - Codeforces 题意&#xff1a; 思路&#xff1a; 我们要统计区间数量&#xff0c;有两个思考方向 一个是枚举右端点r&#xff0c;然后计算左端点l的贡献 还有一个就是&#xff0c;更换枚举对象 这道题是后者 因为答案是连通块数量 连通块数量点数-边数…

基于量子同态加密的改进多方量子私有比较

摘要量子同态加密在隐私保护方面具有明显的优势。本文提出了一种改进的基于量子同态加密的多方量子私钥比较协议。首先&#xff0c;引入可信密钥中心&#xff0c;安全辅助加密密钥的分发和解密密钥的更新&#xff0c;同时防止恶意服务器发布虚假结果的攻击;在保证所有参与者得到…