想学软件编程 哪个学校好啊/3seo

想学软件编程 哪个学校好啊,3seo,南京广告公司排行榜,为什么要做网站推广一、项目需求 使用 ESP8266 连接 OneNET 云平台,并通过 MQTT 协议上传 DHT11 获取的温湿度值。 二、项目框图 三、DHT11工作原理 参考于良许嵌入式手把手教你玩转DHT11(原理驱动) | 良许嵌入式 3.1 正常工作验证 #​ 上电后&#xff…

一、项目需求

使用 ESP8266 连接 OneNET 云平台,并通过 MQTT 协议上传 DHT11 获取的温湿度值。

二、项目框图

三、DHT11工作原理

参考于良许嵌入式手把手教你玩转DHT11(原理+驱动) | 良许嵌入式

3.1 正常工作验证 #​ 

上电后,「电源指示灯/POWER」红灯亮,表示上电成功,正常工作。 

3.2 DHT11工作时序 #​  

3.2.1 整体工作时序 #​  

DHT11 整体工作时序为:主机发送开始信号、DHT11 响应输出、主机接收 40bit 数据(湿度数据+温度数据+校验值),结束信号(可选)。

具体过程如下: 

1.  总线空闲状态为高电平,主机拉低总线等待 DHT11 响应, 主机把总线拉低必须大于 18ms,保证 DHT11 能检测到起始信号; 

2.  主机发送开始信号结束后,拉高总线电平并延时等待 20-40us 后,读取 DHT11 的响应信号;  

3.  DHT11 接收到主机的开始信号后,等待微处理器开始信号结束,发送 80us 低电平响应信号;  

4.  DHT11 发送 80us 高电平准备发送数据;  

5.  DHT11 发送 40bit 数据(湿度数据+温度数据+校验值)。   

过程 主机 DHT11  1 拉低>18ms   2 拉高20~40us   3   响应 80us 低电平  4   拉高 80us  5   发送 40bit 数据(湿度数据+温度数据+校验值) 

 

3.2.2 起始及响应信号 #​  

总流程讲完介绍一下细分流程: 首先主机拉低总线至少 18ms,然后再拉高总线,延时 20~40us,此时起始信号(有时也叫复位信号)发送完毕。 

DHT11 检测到复位信号后,触发一次采样,并拉低总线 80us 表示响应信号,告诉主机数据已经准备好了。

DHT11 之后拉高总线 80us,然后开始传输数据。如果检测到响应信号为高电平,则 DHT11 初始化失败,请检查线路是否连接正常。 

3.2.3 读时序 #​  

DHT11 开始传输数据。每 1bit 数据都以 50us 低电平开始,告诉主机开始传输一位数据了。DHT11 以高电平的长短定义数据位是 0 还是 1:

当 50us 低电平过后拉高总线,高电平持续 26~28us 表示 0,高电平持续 70us 表示数据 1。 

当最后 1bit 数据传送完毕后,DHT11 拉低总线 50us,表示数据传输完毕,随后总线由上拉电阻拉高进入空闲状态。 

位数据0表示方式: 以 50us 低电平开始,高电平持续 26~28us 表示 0。

位数据1表示方式: 以 50us 低电平开始,高电平持续 70us 表示 1。 

3.3 DHT11数据格式 #​ 

DHT11 的 DATA 传输一次完整的数据为 40bit,按照高位在前,低位在后的顺序传输。 

数据格式为:8bit 湿度整数数据 + 8bit 湿度小数数据 + 8bit 温度整数数据 + 8bit 温度小数数据 + 8bit 校验位,

一共 5 字节(40bit)数据。 正常情况下,前四个字节的和刚好与校验位相等,通过这种机制可以保证数据传输的准确性。

四、项目实现

复制项目文件19-串口打印

重命名59-DHT11

新建文件dht11

dht11.c

dht11.h

打开项目工程

加载文件

书写头文件

编译

编程思路:

1、之前的模块都需要init函数,而这里的dht11反倒不需要init函数,因为dht11只有一个data的IO口。DHT11的一个data口用于输入和输出,所以需要对DHT11的IO口做一个配置,则需要:dht11_gpio_input,dht11_gpio_output两个函数。

2、接下来是DHT11的起始信号及响应信号需要:dht11_start

3、读时序:dht11_read_byte

4、将读出的数据,存储下来,用指针(地址)承接:dht11_read

5、因为是单总线协议,所以先进行一个封装

        判断1位数据,当IO口电平等于高电平的时候,延时50微妙,判断当下是高电平还是低电平,如果是高电平,则传出来的数据是1,否则就是0,

while(!DHT11_DQ_IN);
        delay_us(50);
        if(DHT11_DQ_IN == 1)
        {
            temp = 1;
            while(DHT11_DQ_IN);
        }
        else
            temp = 0;

        我们知道,一个字节有8位,所以这段代码要执行八次,才是一位,定义一个UINT8_T的变量,这个变量有8位,将受到的一位字节存放在这个变量的像左移一位。

    for(i=0; i<8; i++){
        while(!DHT11_DQ_IN);
        delay_us(50);
        if(DHT11_DQ_IN == 1)
        {
            temp = 1;
            while(DHT11_DQ_IN);
        }
        else
            temp = 0;
        byte = byte << 1;
        byte |= temp;
    }

上面这个函数,是用来返回发送过来的一个字节,DHT11会返回5个字节,所以上述操作,要执行5次,并且第五位是校验位,前四位的和等于第五位时,才证明没有发送错数据,官方文档要求,DH11不可以一直在返回数据,需要延长2s


    for(i=0; i<5; i++)
    {
        dht11_data[i] = dht11_read_byte();
    }
    if(dht11_data[0]+dht11_data[1]+dht11_data[2]+dht11_data[3] == dht11_data[4])
    {
        memcpy(result,dht11_data,4);//将dht11_data中四个数据复制给result
        printf("湿度:%d.%dRH ,",dht11_data[0],dht11_data[1]);
        printf("温度:%d.%d℃ \r\n",dht11_data[2],dht11_data[3]);
    }
    delay_ms(2000);

        在esp8266中需要重写esp8266_send_data函数,因为以前的esp8266_send_data函数是用来模仿printf,所以需要重写函数,用来发送数据

//两个参数分别是:要发送的数据,和要发送数据的长度
void esp8266_send_data(char *data,uint16_t len)
{
    //清空发送缓冲区
    esp8266_rx_clear();
    //发送数据函数
    HAL_UART_Transmit(&esp8266_handle,(unsigned char*)data,len,100);
}

在OneNet创建产品和设备

三元组很重要:产品id,设备id,密钥

设备id的获取,将设备导入出来,就会有一个表,其中有设备id

 将代码中上面部分,按自己的东西改写,

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

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

相关文章

百度首页上线 DeepSeek 入口,免费使用

大家好&#xff0c;我是小悟。 百度首页正式上线了 DeepSeek 入口&#xff0c;这一重磅消息瞬间在技术圈掀起了惊涛骇浪&#xff0c;各大平台都被刷爆了屏。 百度这次可太给力了&#xff0c;PC 端开放仅 1 小时&#xff0c;就有超千万人涌入体验。这速度&#xff0c;简直比火…

c++入门-------命名空间、缺省参数、函数重载

C系列 文章目录 C系列前言一、命名空间二、缺省参数2.1、缺省参数概念2.2、 缺省参数分类2.2.1、全缺省参数2.2.2、半缺省参数 2.3、缺省参数的特点 三、函数重载3.1、函数重载概念3.2、构成函数重载的条件3.2.1、参数类型不同3.2.2、参数个数不同3.2.3、参数类型顺序不同 前言…

Linux提权之计划任务反弹shell提权(十一)

实验环境还是一样的 当获取一个linux普通用户的时&#xff0c;查看计划任务 首先我们退出root用户 cat /etc/crontab crontab -l 查看当前用户命令 /var/spool/cron/crontabs/root 这个目录是root任务文件 默认是不是root权限是 看不到 tail -f /var/log/syslog 咋们切换用…

论文解读 | AAAI'25 Cobra:多模态扩展的大型语言模型,以实现高效推理

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 点击 阅读原文 观看作者讲解回放&#xff01; 个人信息 作者&#xff1a;赵晗&#xff0c;浙江大学-西湖大学联合培养博士生 内容简介 近年来&#xff0c;在各个领域应用多模态大语言模型&#xff08;MLLMs&…

ai-financial-agent - 为金融投资打造的AI代理

探索人工智能在投资研究中的应用。本项目仅用于**教育**目的&#xff0c;不用于真实交易或投资。 作者声明&#xff1a; 本项目仅用于教育和研究目的。 不用于真实交易或投资不提供任何保证或担保过去的表现并不代表未来的结果Creator 对经济损失不承担任何责任咨询财务顾问…

欧几里得算法第二弹---计算多个数的最大公约数

如果要求多个数的 GCD&#xff0c;可以先求前两个数的 GCD&#xff0c;然后用这个结果与下一个数求 GCD&#xff0c;依次类推。 为什么可以用前两个数的 GCD 与下一个数继续求 GCD&#xff0c;从而得到所有数的 GCD 呢&#xff1f;&#xff08;之前我不知道&#xff0c;自己也没…

本地部署AI模型 --- DeepSeek(二)---更新中

目录 FAQ 1.Failed to load the model Exit code: 18446744072635812000 FAQ 1.Failed to load the model Exit code: 18446744072635812000 问题描述&#xff1a; &#x1f972; Failed to load the model Error loading model. (Exit code: 18446744072635812000). Unkn…

开源嵌入式实时操作系统uC/OS-II介绍

一、uC/OS-II的诞生&#xff1a;从开源实验到行业标杆 背景与起源 uC/OS-II&#xff08;Micro-Controller Operating System Version II&#xff09;诞生于1992年&#xff0c;由嵌入式系统先驱Jean J. Labrosse开发。其前身uC/OS&#xff08;1991年&#xff09;最初作为教学工…

Starlink卫星动力学系统仿真建模第七讲-卫星姿轨控系统(Attitude and Orbit Control System, AOCS)设计规范

以下是一份卫星姿轨控系统&#xff08;Attitude and Orbit Control System, AOCS&#xff09;设计规范的框架和核心内容示例&#xff0c;供参考&#xff1a; 卫星姿轨控系统&#xff08;AOCS&#xff09;设计规范 1. 总则 1.1 目的 本规范旨在规定卫星姿轨控系统的设计要求、…

C++之旅-C++11的深度剖析(1)

目录 前言/背景 1.C11的发展历史 2.列表初始化 2.1 C98传统的{} 2.2 C11中的{} 2.3 C11中的std::initializer_list 3.右值引用 3.1 左值和右值 3.2 左值引用和右值引用 3.3 引用延长生命周期 3.4 左值和右值的参数匹配 结束语 前言/背景 随着现代软件开发的快速发展…

单机上使用docker搭建minio集群

单机上使用docker搭建minio集群 1.集群安装1.1前提条件1.2步骤指南1.2.1安装 Docker 和 Docker Compose&#xff08;如果尚未安装&#xff09;1.2.2编写docker-compose文件1.2.3启动1.2.4访问 2.使用2.1 mc客户端安装2.2创建一个连接2.3简单使用下 这里在ubuntu上单机安装一个m…

怎么在Github上readme文件里面怎么插入图片?

环境&#xff1a; Github 问题描述&#xff1a; 怎么在Github上readme文件里面怎么插入图片&#xff1f; https://github.com/latiaoge/AI-Sphere-Butler/tree/master 解决方案&#xff1a; 1.相对路径引用 上传图片到仓库 将图片文件&#xff08;如 .png/.jpg&#xff…

AIGC(生成式AI)试用 22 -- 跟着清华教程学习 - DeepSeek:从入门到精通

目标&#xff1a; 跟着清华教程学习DeepSeek同样的问题分别尝试使用DeepSeek和文心一言进行提问尝试使用辅助工具完成学习中遇到的问题 个人理解&#xff1a; - AI&#xff0c;AI思维&#xff0c;像人一样思考&#xff0c;越来越像人&#xff1f;参考数据宏大&#xff0c;思考…

[Windows] 全国油价实时查询,可具体到城市

[Windows] 全国油价实时查询&#xff0c;可具体到城市 链接&#xff1a;https://pan.xunlei.com/s/VOJnS3aOPeBwGaSvS0O0E1hwA1?pwdx83j# 出于代码练习的目的&#xff0c;调用公共免费api做的py程序&#xff0c;已经一键打包&#xff0c;双击启动即可 使用&#xff1a;选择…

【并发编程】线程池任务抛异常会怎么样?

一、先说结论 得看线程池的实现&#xff0c;JUC 的线程池&#xff08;ThreadPoolExecutor&#xff09;的话 不会影响其他的线程若是 submit 方法&#xff0c;或者任务为 future 任务&#xff0c;异常只有在 get 的时候才会抛出若是 execute runnable 任务&#xff0c;异常就…

本地部署deepseek-r1 ollama+anythingllm

本期笔者带给大家部署一个本地私有化知识库&#xff0c;简单明了&#xff0c;直接步入主题&#xff0c;需要读者可以继续关注支持一下啊&#xff01; 目录 背景步骤 一、环境准备二、Ollama环境部署三、AnythingLLM安装 总结 开始下载应用&#xff1a; 操作系统&#xff1a…

JAVA-Exploit编写(13-15)--JAVAFX-GUI检测工具编写实现

目录 一,JAVAFX-GUI单个漏洞检测编写 1.1 绑定事件 1.2 Thinkphp5_Rce编写 1.3 编写利用类 1.4 Thinkphp2x_Rce编写 1.5 单个漏洞检测GUI工具完整代码 二,JAVAFX-GUI单个漏洞批量检测编写 2.1 编写利用反射类 2.2 批量检测漏洞完整GUI工具代码 三,JAVAFX-GUI…

mysql-Innodb记录结构深度解析

Innodb记录结构 InnoDB记录结构深度解析一、InnoDB存储基础单元&#xff1a;页&#xff08;Page&#xff09;二、行格式&#xff08;Row Format&#xff09; 三、核心行格式详解1. Compact行格式结构组成&#xff1a; 2. Redundant行格式&#xff08;兼容旧版本&#xff09;核心…

Deepin(Linux)安装MySQL指南

1.下载 地址&#xff1a;https://downloads.mysql.com/archives/community/ 2.将文件解压到 /usr/local 目录下 先cd到安装文件所在目录再解压&#xff0c;本机是cd /home/lu01/Downloads sudo tar -xvJf mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local3.创建软链…

Visual Studio更新说明(关注:.NET+AI生产力)

Ver V0.0&#xff1a;Visual Studio 2022 v17.12更新:.NET9AI生产力 AI插件推荐 &#xff08;1&#xff09;腾讯云AI代码手&#xff08;内含了DeepSeek-R1&#xff09;&#xff0c;目前免费&#xff0c;但收费我也可能会买。 AI插件!推荐 &#xff08;1&#xff09;百度的…