# 51SCM_Mqtt_GraduationProject
51单片机采集环境数据并使用MQTT协议上传至阿里云,阿里云使用AMQP消息队列下发至业务服务器,在前端页面展示数据
## 配置
|硬件|硬件型号|
|---|---|
|单片机|IAP15w4k58s4|
|OLED显示屏|128x64 IIC|
|WiFi|ESP8266|
## 头文件列表
[include](/include)
## 文件目录结构
```
.
|-- KeyAndOled 按键及OLED的测试
| |-- KOLED.uvgui.zghbq
| |-- KOLED.uvopt
| |-- KOLED.uvproj
| |-- Listings
| |-- Objects
| |-- STARTUP.A51
| |-- include
| `-- main.c
|-- MQTTClient C语言实现的MQTT客户端
| |-- ClassDiagram.cd
| |-- MQTTClient.sln
| |-- MQTTClient.vcxproj
| |-- MQTTClient.vcxproj.filters
| |-- MQTTClient.vcxproj.user
| |-- README.md
| |-- esp.h
| |-- main.c
| |-- mqtt.c
| |-- mqtt.h
| `-- x64
|-- README.md
|-- Uart1test 对UART1串口通信的测试
| |-- Listings
| |-- Objects
| |-- README.md
| |-- STARTUP.A51
| |-- esptest.uvgui.zghbq
| |-- esptest.uvopt
| |-- esptest.uvproj
| |-- include
| `-- main.c
|-- amqp-java 来自阿里云iot平台的AMQP客户端的Java版本的demo
| |-- lib
| |-- pom.xml
| |-- src
| `-- target
|-- amqpSpring Java Spring业务服务器
| |-- HELP.md
| |-- amqpSpring.iml
| |-- mvnw
| |-- mvnw.cmd
| |-- pom.xml
| |-- src
| | |-- main
| | | |-- java
| | | | `-- com
| | | | `-- example
| | | | `-- amqpspring
| | | | |-- AmqpClient.java
| | | | |-- AmqpFullSQL.java
| | | | |-- AmqpMessage.java
| | | | |-- AmqpMessageDTO.java
| | | | |-- AmqpSpringApplication.java
| | | | |-- MessageOfTopicController.java
| | | | |-- PageAmqpMessageRepository.java
| | | | |-- SaveAmqpMessageRepository.java
| | | | |-- TopicAmqpMessageRepository.java
| | | | `-- TopicsController.java
| | | `-- resources
| | | |-- application.properties
| | | |-- static
| | | | |-- anewdemo.html
| | | | |-- css
| | | | | `-- aDemo.css
| | | | |-- index.html
| | | | |-- js
| | | | | `-- topics.js
| | | | `-- topics.html
| | | `-- templates
| | `-- test
| | `-- java
| | `-- com
| | `-- example
| | `-- amqpspring
| | `-- AmqpSpringApplicationTests.java
| `-- target
|-- doc 使用pandoc生成论文的过程文档
|-- esp ESP8266测试模块
| |-- Listings
| |-- Objects
| |-- STARTUP.A51
| |-- esp.uvgui.zghbq
| |-- esp.uvopt
| |-- esp.uvproj
| |-- include
| `-- main.c
|-- esptest 同样也是ESP8266测试模块
| |-- Listings
| |-- Objects
| |-- STARTUP.A51
| |-- esptest.uvgui.zghbq
| |-- esptest.uvopt
| |-- esptest.uvproj
| |-- include
| `-- main.c
|-- include 头文件
|-- mqttstc 最终烧录至单片机的程序
| |-- Listings
| |-- Objects
| |-- STARTUP.A51
| |-- include
| |-- main.c
| |-- mqttstc.uvgui.zghbq
| |-- mqttstc.uvopt
| `-- mqttstc.uvproj
`-- uml 过程中使用的UML图,使用plantuml绘制
```
## 使用方法
* 注册阿里云iot平台账户,按照其说明文档添加产品及设备,在设备界面获取MQTT连接参数
![新建的阿里云iot产品界面](img/iotproduct.jpg)
![新建的阿里云iot设备界面](img/iotdevice.jpg)
* 使用visual studio打开 `MQTTClient` 文件夹,使用获得的MQTT连接参数修改`main.c` 的阿里云相关配置,仅需要修改 `三元组` 、 `加密方式` 、 `密码`
* 按照需要,修改服务器地址
* 之后的对于MQTTClient中代码的修改可能会造成无法预料的bug,请自行查询搜索引擎解答,或发送邮件至`zghbqbc@gmail.com`。MQTTClient文件中包含了众多对C语言指针的使用,请至少对C语言的数组、函数指针等知识有一定的了解
* 修改 `main.c` 文件中 `MQTTSendData` 函数中 `printf` 内容,让其输出十六进制数字和空格与逗号,修改后的代码如下:
```
int MQTTSendData(const char* data, unsigned int length)
{
///* 发送数据到服务端 */
send(sock, data, length, 0);
//{
// return 1;
//}
//return 0;
unsigned char temp = 0;
printf("\n\nlength is %d\n\n", length);
while (length--)
{
temp = *data++;
printf("0x%02X ,", temp);
}
return 1;
}
```
* 运行 `main.c` 文件,结果如下图所示,这里需要得到的是阿里云iot的IP地址、MQTT的CONNECT报文及PUBLISH报文的十六进制内容
* 其实不需要 `MQTTClient` 项目,仅需要使用 `MQTT.fx` 工具和网络抓包工具也能得到同样的数据
* 这一步运行完毕后可在阿里云iot平台日志中看到有设备上下线记录,证明上述步骤圆满完成,若无上下线记录,请排查是否正确的修改了阿里云连接参数
* 运行时可能会被杀毒软件报错,请关闭杀毒软件,或将相应的文件转移至信任区
![MQTTClient运行后的结果](img/MQTTClient.jpg)
* 使用 `Keil` 打开 `mqttstc` 项目,修改 `main.c` 文件中 `初始化esp8266` 的相关参数,第一个为WiFi的名称,第二个为WiFi密码,第三个为上方获取的阿里云iot的IP地址,端口号无需修改
* 修改 `esp.c` 中数组 `MQTTConnectData[]`,`MQTTPublishData` 的内容
* 编译生成可执行文件,烧录至单片机,启动单片机,可在阿里云iot平台的日志中查询到相关设备上线记录,证明设备上线成功
* 若未上线,请按照如下步骤检查:
1. 打开宏晶公司烧录软件的串口通信界面,打开接收数据,重启单片机,若能正常接收数据则证明UART串口无故障,按照串口的输出日志可做初步检查
2. 打开路由器后台界面,检查是否有ESP设备上线
3. 使用模拟TCP通信软件(如Serial Port Utility)检查网络通信是否有故障,这一步需要去修改单片机程序中的目的IP地址
4. 发邮件给我
* 使用虚拟机或服务器或在物理机上创建一个MySQL数据库,以供之后的步骤使用
* 这一步需要做到可以通过navicat等数据库软件连接至MySQL数据库
* 使用IDEA打开 `amqpSpring` 项目,修改配置文件,打开项目时注意保持网络畅通,以便项目自动下载安装相应的库
* 修改 `application.properties` 的内容,以便Java项目连接数据库
* 根据注释,修改 `AmqpClient` 类中相关的参数,此处的修改可以参考[阿里云物联网平台的帮助文档](https://help.aliyun.com/document_detail/143601.htm),这个类实际就是将帮助文档中的示例的Java demo修改而来
* 启动 `AmqpSpringApplication` ,正常情况下可在控制台查看到相应的日志输出
![日志输出](img/amqpspringlog.jpg)
* 点击进入 `anewdemo.html` 页面,启动该页面,可访问浏览器前端
## UART1端口输出测试
### 使用
1. 使用 keil51 打开 *.uvproj 文件
2. 导入 include 文件夹 及相应的 .c 文件 <br> ***仅导入 include 文件夹而不导入 .c 文件是无法编译的***
3. 若遇到 `main.c(24): error C267: 'Uart1SendData': requires ANSI-style prototype` 之类的定义错误。检查相应的 .h 文件中是否声明了相应的函数
4. 烧录
## OLED屏和按键K1 ~ K6
### 使用
1. 使用 keil51 打开 *.uvproj 文件
2. 导入 include 文件夹 及相应的 .c 文件 <br> ***仅导入 include 文件夹而不导入 .c 文件是无法编译的***
3. 烧录
4. 若OLED屏不显示,检查OLED.h文件(或 main.c 文件)中是否对OLED屏使用到的两个时钟GPIO端口进行初始化
```
GPIO_InitTypeDef GPIO_InitStructure; //结构定义
//推挽输出
GPIO_InitStruc
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【作品名称】:基于51单片机采集环境数据并使用MQTT协议上传至阿里云 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 1单片机采集环境数据并使用MQTT协议上传至阿里云,阿里云使用AMQP消息队列下发至业务服务器,在前端页面展示数据 配置 硬件 硬件型号 单片机 IAP15w4k58s4 OLED显示屏 128x64 IIC WiFi ESP8266 使用visual studio打开 MQTTClient 文件夹,使用获得的MQTT连接参数修改main.c 的阿里云相关配置,仅需要修改 三元组 、 加密方式 、 密码 按照需要,修改服务器地址 之后的对于MQTTClient中代码的修改可能会造成无法预料的bug,请自行查询搜索引擎解答,或发送邮件至zghbqbc@gmail.com。MQTTClient文件中包含了众多对C语言指针的使用,请至少对C语言的数组、函数指针等知识有一定的了解 修改 main.c 文件中 MQTTSendData 函数中 printf 内容,让其输出十
资源推荐
资源详情
资源评论
收起资源包目录
基于51单片机采集环境数据并使用MQTT协议上传至阿里云 (381个子文件)
delay.__i 151B
Uart1.__i 151B
Uart1.__i 151B
GPIO.__i 148B
uart.__i 148B
OLED.__i 148B
uart.__i 148B
GYRO.__i 148B
mqtt.__i 148B
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
timer.h.bak 966B
W5500.c 26KB
mqtt.c 11KB
Touch_ADS.c 11KB
OLED.c 9KB
esp.c 9KB
OLED.c 9KB
OLED.c 9KB
OLED.c 9KB
Nrf24l01.c 7KB
DS1302.c 7KB
GYRO.c 5KB
GYRO.c 5KB
GYRO.c 5KB
GYRO.c 5KB
GYRO.c 5KB
GPIO.c 5KB
GPIO.c 5KB
GPIO.c 5KB
GPIO.c 5KB
GPIO.c 5KB
GPIO.c 5KB
main.c 5KB
led_display.c 4KB
uart.c 4KB
timer.c 4KB
main.c 3KB
Uart_4.c 3KB
Uart_4.c 3KB
Uart_4.c 3KB
Uart_4.c 2KB
EEPROM.c 2KB
uart.c 2KB
uart.c 2KB
Uart1.c 2KB
Uart1.c 2KB
Uart1.c 2KB
Uart1.c 2KB
Uart1.c 2KB
shumaguan.c 2KB
Motor.c 2KB
myKey.c 1KB
myKey.c 1KB
main.c 1KB
myKey.c 1KB
delay.c 921B
SPI.c 883B
main.c 824B
delay.c 703B
delay.c 703B
delay.c 703B
delay.c 703B
delay.c 703B
LED_595_8.c 450B
main.c 373B
main.c 184B
ClassDiagram.cd 59B
AmqpClient.class 8KB
AmqpClient$2.class 2KB
AmqpClient$1.class 1KB
AmqpClient$1$1.class 802B
mvnw.cmd 7KB
aDemo.css 905B
Browse.VC.db 30.16MB
esp 214KB
esptest 76KB
MQTTClient.exe 72KB
MQTTClient.vcxproj.filters 1KB
.gitattributes 66B
.gitignore 395B
.gitignore 176B
.gitignore 82B
Font.h 40KB
STC15Fxxxx.H 34KB
STC15Fxxxx.H 34KB
STC15Fxxxx.H 34KB
STC15Fxxxx.H 34KB
STC15Fxxxx.H 34KB
STC15Fxxxx.H 34KB
OLED_Font.h 18KB
OLED_Font.h 18KB
OLED_Font.h 18KB
OLED_Font.h 18KB
W5500.h 7KB
Nrf24l01.h 5KB
mqtt.h 3KB
共 381 条
- 1
- 2
- 3
- 4
资源评论
MarcoPage
- 粉丝: 4379
- 资源: 8837
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功