STM32+华为云IOT制作酒驾监控系统:上车就监控_stm32酒精传感器代码

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

上位机采用QT开发,调用华为云的应用侧接口获取设备上传的数据。再调用百度接口,获取GPS定位的位置。

image-20220418111126481

2. 登录华为云创建云端设备

2.1 创建产品

华为运官网: https://www.huaweicloud.com/

image-20211130093052619

image-20211130093130834

image-20211130093332117

在这里可以查看接入的协议的端口号和地址。

image-20211130093421386

image-20211130093603183

MQTT (1883)	a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com	

我们设备接入的协议选择MQTT,端口对应是1883

接下来继续创建产品,点击产品页面,点击右上角创建产品:

image-20211130093745795

image-20220418105309516

image-20220418105322907

2.2 创建设备

image-20211130094202682

image-20220418105431921

image-20220418105452823

这是我的设备信息:

设备ID
625cd29cecf9c41c38215ba5_1126626497

设备密钥
1126626497
    
{
    "device_id": "625cd29cecf9c41c38215ba5_1126626497",
    "secret": "1126626497"
}

2.3 产品模型定义

这一步就是设置上报设备的属性,也就是设备的数据类型定义。

image-20220418105604435

image-20220418105637800

image-20220418105649052

image-20220418111355804

2.4 生成MQTT登录密匙

创建完产品、设备之后,接下来就需要知道如何通过MQTT协议登陆华为云服务器。

官方的详细介绍在这里: https://support.huaweicloud.com/devg-iothub/iot_01_2127.html#ZH-CN_TOPIC_0240834853__zh-cn_topic_0251997880_li365284516112

image-20211130101143554

image-20211130101210816

MQTT设备登陆密匙生成地址: Huaweicloud IoTDA Mqtt ClientId Generator

image-20211130101436487

下面就得到了MQTT协议设备登录的参数。

2.5 使用MQTT客户端软件登录

所有的参数已经得到,接下来采用MQTT客户端登录华为云进行测试。

华为云物联网平台的域名是: a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com

华为云物联网平台的IP地址是: 121.36.42.100

在软件里参数填充正确之后,就看到设备已经连接成功了。

接下来打开设备页面,可以看到设备已经在线了。

2.6 上报数据

官方文档: 使用MQTT.fx调测_设备接入 IoTDA_开发指南_设备侧开发_使用MQTT Demo接入_华为云

在这个文档里介绍了MQTT上报数据的格式。

image-20211130102227428

image-20211130104332330

总结的格式:

//订阅主题: 平台下发消息给设备
$oc/devices/625cd29cecf9c41c38215ba5_1126626497/sys/messages/down

//设备上报数据
$oc/devices/625cd29cecf9c41c38215ba5_1126626497/sys/properties/report

//上报的属性消息 (一次可以上报多个属性,在json里增加就行了)
{"services": [{"service_id": "MQ3","properties":{"MQ3":50}}]}

到此,设备数据已经上报成功,如果需要增加更多的属性,按照流程继续增加即可。

3. STM32代码实现

酒精浓度传感器的预热时间要20秒~1分钟左右,这段时间之后采集的数据才会稳定。预热模块会发热,烫手,这个是正常现象。

3.1 系统原理图

image-20220412152110776

image-20220412155048985

3.2 程序下载

通过USB进行程序下载: 下载软件在软件包目录下。

点击开始编程之后,点击板子上的复位键即可下载程序,如果失败,重试几次即可。正常的效果如下。

image-20220416125527488

正常程序运行之后,打开串口调试助手看到的初始化信息如下:

image-20220416131945457

3.3 字体取模

image-20220416134432091

3.4 main.c代码

keil工程可以在这里get: https://download.csdn.net/download/xiaolong1126626497/81993720

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include <string.h>
#include "timer.h"
#include "oled.h"
#include "adc.h"
#include <string.h>
#include <stdlib.h>
#include "font.h"
#include "sim800c.h"
#include "mqtt.h"

/*
硬件连接方式:
1. TFT 1.44 寸彩屏接线
GND   电源地
VCC   接5V或3.3v电源
SCL   接PC8(SCL)
SDA   接PC9(SDA)
RST   接PC10
DC    接PB7
CS    接PB8
BL	  接PB11

2. 蜂鸣器
VCC--->3.3V
DAT--->PA6
GND--->GND

3. 酒精检测传感器MQ3
VCC--->3.3V
GND--->GND
DAT--->PA1

4. 板载LED灯接线
LED1---PA8
LED2---PD2

5. 板载按键接线
K0---PA0 
K1---PC5 
K2---PA15

6. SIM800C--GSM模块
GND----GND
VCC--->3.3V
PA2----SIM800C_RXD
PA3----SIM800C_TXD
*/

//华为物联网服务器的设备信息
#define MQTT_ClientID "62381267575fb713ee164ad2_xl_1_0_0_2022032106"
#define MQTT_UserName "62381267575fb713ee164ad2_xl_1"
#define MQTT_PassWord "124344feff3e3d96ff6af13cf36af36766619ff1eeee40e99cbae9b7b9739fe4"

//订阅与发布的主题
#define SET_TOPIC  "$oc/devices/62381267575fb713ee164ad2_xl_1/sys/messages/down"  //订阅
#define POST_TOPIC "$oc/devices/62381267575fb713ee164ad2_xl_1/sys/properties/report"  //发布
//设置连接的路由器信息
#define CONNECT_WIFI  "Xiaomi_meizi6"   //将要连接的路由器名称 --不要出现中文、空格等特殊字符
#define CONNECT_PASS "12170307yu"       //将要连接的路由器密码

#define CONNECT_SERVER_IP "a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com"   //服务器IP地址
#define CONNECT_SERVER_PORT 1883            //服务器端口

//JTAG模式设置,用于设置JTAG的模式
//mode:jtag,swd模式设置;00,全使能;01,使能SWD;10,全关闭;	   
#define JTAG_SWD_DISABLE   0X02
#define SWD_ENABLE         0X01
#define JTAG_SWD_ENABLE    0X00		  
void JTAG_Set(u8 mode)
{
	u32 temp;
	temp=mode;
	temp<<=25;
	RCC->APB2ENR|=1<<0;     //开启辅助时钟	   
	AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
	AFIO->MAPR|=temp;       //设置jtag模式
}
u16 MQ3_data=0; //酒精浓度
float MQ3_data_float=0; //mg/l

char data_buff[100];
//酒精超标提示
u8 sim800c_buff[100]="Drunk driving reminder";

int main()
{
    u8 state=0;
    u8 key=0;
    u32 time_cnt=0;
    JTAG_Set(JTAG_SWD_DISABLE); //释放PA15
    LED_Init();  //LED灯初始化
    BEEP_Init(); //蜂鸣器初始化
    KEY_Init();  //按键初始化
    USART1_Init(115200); //串口1初始化-打印调试信息
    Lcd_Init();    //LCD初始化
    Lcd_Clear(0);  //清屏为黑色
    LCD_LED_SET;   //通过IO控制背光亮		
    AdcInit();     //ADC初始化--检测酒精传感器的值
    TIMER2_Init(72,20000);//辅助串口2接收,超时时间为20ms
    USART2_Init(115200); //可能的波特率(测试):  57600 、9600、115200
    USART3_Init(115200);//串口-WIFI
    TIMER3_Init(72,20000); //超时时间20ms
    
    //预热视频
    LCD_ShowChineseFont(0,16*3,16,HZ_FONT_16[20],RED,0);
    LCD_ShowChineseFont(16,16*3,16,HZ_FONT_16[21],RED,0);
    LCD_ShowChineseFont(16*2,16*3,16,HZ_FONT_16[22],RED,0);
    LCD_ShowChineseFont(16*3,16*3,16,HZ_FONT_16[23],RED,0);
    LCD_ShowChineseFont(16*4,16*3,16,HZ_FONT_16[24],RED,0);
    LCD_ShowChineseFont(16*5,16*3,16,HZ_FONT_16[25],RED,0);
    LCD_ShowChineseFont(16*6,16*3,16,HZ_FONT_16[26],RED,0);
    LCD_ShowChineseFont(16*7,16*3,16,HZ_FONT_16[27],RED,0);
    //delay_ms(30000); //初始化时间30秒
    delay_ms(5000); //初始化时间5秒
    Lcd_Clear(0);  //清屏为黑色
    
   //采集数据的真实数据
   LCD_ShowChineseFont(0,16*2,16,HZ_FONT_16[0],RED,0);
   LCD_ShowChineseFont(16,16*2,16,HZ_FONT_16[1],RED,0);
   LCD_ShowChineseFont(16*2,16*2,16,HZ_FONT_16[2],RED,0);
   LCD_ShowChineseFont(16*3,16*2,16,HZ_FONT_16[3],RED,0);
   
   //酒精含量计算结果
   LCD_ShowChineseFont(0,16*3,16,HZ_FONT_16[4],RED,0);
   LCD_ShowChineseFont(16,16*3,16,HZ_FONT_16[5],RED,0);


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/2bb935fcd84ccf92f6d1be8fd326fd95.png)
![img](https://img-blog.csdnimg.cn/img_convert/a8bdc096d69f92bf89816d4aa80a370b.png)

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

],RED,0);


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
[外链图片转存中...(img-QgzIuxmY-1715907484078)]
[外链图片转存中...(img-WACRQYcy-1715907484079)]

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值