目录概述固件编写DHT11温湿度传感器概述代码MQ2可燃气体传感器和雨滴传感器概述ADC外设代码OLED屏幕概述代码main.c文件概述代码总结项目代码下载概述前些阵子参加了广东省电赛,因为疫情的原因比赛不能在线下进行,甚至连回学校调试也不行,于是乎就水了一个省三。备赛的时候,队长给我布置了这个小项目,说有可能会用在比赛的作品中,但实际就不知道了,所以在这里分享一下代码。固件编写这个需求对性能要求不高,像人见人爱、人手一个的STM32F103C8T6也能胜任,但因为我没带回家,所以用了野火的霸道V2开发板。这块开发板用的是STM32F103ZET6芯片。DHT11温湿度传感器概述温湿度传感器玩
本文主要介绍STM32F103C8T6和烟雾传感器模块的控制算法简介烟雾模块选用MQ-2气体传感器,根据传感器的电导率随空气中可燃气体浓度的增加而增大的特性检测空气中可燃气体,然后将电导率的变化转换成对应的电信号MQ系列烟雾传感分类如下:该模块有4个引脚,:(1)VCC:电源正,5V供电,电流150mA(2)GND:电源地(3)AO:模拟量输出,相对无输出(0.1V-0.3V),高浓度(电压4V左右)(4)DO:数字量输出,(注意输出高电平也是5V)注意:传感器通电后需要预热一分钟,稳定后数据才准确,传感器发热是正常现象因为内部有电热丝,如果烫手那就有问题了MQ-2烟雾传感器和STM32的接线
1.1.1.什么是MQMQ(messagequeue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。1.1.2.为什么要用MQ【业务场景】1、异步如:用户注册发送,注册邮件、注册短信传统做法:1、串行(先发送邮件、再发短信)。问题:持续时间长2、并行(将注册信息写入数据库后,同时发送邮件、短信),速度快、但不能满足高吞吐需求消息队列做法:将数据写入数据库、同时发
初识MQ同步通讯和异步通讯同步通讯是实时性质的,就好像你用手机与朋友打视频电话,但是,别人再想与你视频就不行了,异步通讯不要求实时性,就好像你用手机发短信,好多人都能同时给你发短信,你都可以收到,而且不用及时回复。同步调用的问题微服务间基于Feign的调用就属于同步方式,存在一些问题比如用户调用支付服务时,它需要先后调用订单服务、仓储服务、短信服务等,都调用结束后,支付服务再返回用户相关信息,故这个过程的响应时间实际上就是所有这些相关服务执行之后所用时间之和,这样是非常影响效率的。但是也有优点,时效性较强,可以立即得到结果同步调用存在的问题1.如果我们想对支付服务增加一些功能,增加一些别的服务
书接上文,展示一下五种模型我使用的是springcould微服务的框架文章说明: 本文章我会分享总结5种实用的rabbitMQ的实用模型1、helloworld简单模型2、workqueues工作队列3、Publish/Subscribe发布订阅模型4、Routing路由模型5、Topics主题模型(赠送)6、消息转换器开局重要介绍(一定一定要知道的)RabbitTemplate的主要作用是用来简化与RabbitMQ消息代理之间的通信过程。RabbitMQ是一种类似于消息队列的消息代理系统,可以实现应用程序之间的异步通信。使用RabbitTemplate,我们可以通过其提供的方法直接向R
什么是微服务,单体架构的优点和缺点,微服务架构的优点和缺点?单体架构优点:架构简单,维护成本低缺点:各个模块耦合度太高,当对一个模块进行更新修改时,会影响到其他模块,要一起进行修改。当存在性能瓶颈的时候,需要对整个服务进行扩容,不能有针对性的扩容,如一个程序的主要功能时其中某个服务,要对其增加机器,但因为是单体架构只有一个jar包,所以只能所有功能一起升级,哪怕某些服务所需的性能很低。微服务架构缺点:架构复杂,维护成本高,会带来很多微服务架构的问题,比如说事务问题、网络问题优点:性能高、服务之间耦合度低,服务可以并行开发,开发周期短分布式和微服务的区别。 分布式:分散部署分布式服务顾名思义服务
现在面试中MQ的问题也是必问,下面汇总了一些问题与答案。1、MQ是什么?为什么使用?MQ(MessageQueue)消息队列,是“先进先出”的一种数据结构。MQ一般用来解决应用解耦,异步处理,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。应用解耦:当A系统生产关键数据,发送数据给多个其他系统消费,此时A系统和其他系统产生了严重的耦合,如果将A系统产生的数据放到MQ当中,其他系统去MQ获取消费数据,此时各系统独立运行只与MQ交互,添加新系统消费A系统的数据也不需要去修改A系统的代码,达到了解耦的效果。异步处理:互联网类企业对用户的直接操作,一般要求每个请求在200ms以内完成。对于
背景:在原有通知公告的基础上,把通知公共的推送服务修改为其他业务收到紧急订单发送公告到消息队列MQ,然后在js中创建一个socket去监听公告,收到公告后刷新所有在订单页面的用户的页面列表(重点就是用户在收到紧急订单时能及时刷新页面并播报语音),语音播报功能可参考我以前的博文,当前功能只是在原有功能的基础上添加接收到公告时刷新列表(刷新列表完成后就会自动播报语音,这是之前已经完成的功能)maven依赖: org.springframework.boot spring-boot-starter-websocket org.springframework.boot spring-boot-star
对于MQ来说,不管是RocketMQ、Kafka还是其他消息队列,它们的本质都是:一发一存一消费。下面我们以这个本质作为根,一起由浅入深地聊聊MQ。 01从MQ的本质说起 将MQ掰开了揉碎了来看,都是「一发一存一消费」,再直白点就是一个「转发器」。生产者先将消息投递一个叫做「队列」的容器中,然后再从这个容器中取出消息,最后再转发给消费者,仅此而已。上面这个图便是消息队列最原始的模型,它包含了两个关键词:消息和队列。1、消息:就是要传输的数据,可以是最简单的文本字符串,也可以是自定义的复杂格式(只要能按预定格式解析出来即可)。2、队列:大家应该再熟悉不过了,是一种先进先出数据结构。它是存放消息的
我安装了erl7.3和rabbitmq_server-3.6.1,但是当我运行rabbitmq-pluginsenablerabbitmq_stomp时出现以下错误.{"initterminatingindo_boot",{undef,[{rabbit_nodes,ensure_epmd,[],[]},{rabbit_cli,start_distribution,0,[{file,"src/rabbit_cli.erl"},{line,152}]},{rabbit_cli,ensure_cli_distribution,0,[{file,"src/rabbit_cli.erl"},{l