自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Clichong

路漫且长

  • 博客(344)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 OpenPCDet框架解析文章导航

最近基于OpenPCDet来对PointPillars算法做一些实验,打算用一个完整的专栏来记录整个OpenPCDet的整体框架以及各个模块之间的结构。耗时一个多月,耗费精力较多,这个专栏主要是详细介绍PointPillars的完整算法流程。由于整体细节比较庞大,。对于每个部分我都分别画了一个完整的模块架构图进行整体上的学习与理解。

2023-05-06 20:26:56 973

原创 OpenPCDet系列 | 8.4 nuScenes数据集数据调用和数据分析

calibrated_sensor_token:可以从calibrated_sensor.json中索引出对应的相机外参和内参,3和4就对应索引出上文所说的ego和camera的外参,sample的外参并不在这个表里,而是在sample_annotation.json中,见下文;(11)prev:上一个sample_data的token,从本数据表中可以索引出对应的数据,是同一个物体的上一个标注,即上一次出现这个物体是在哪里,下同;下面详细列出每隔tabel在运行时可供调用的key。

2023-09-01 09:39:58 872

原创 OpenPCDet系列 | 8.3 nuScenes数据集坐标系转换

而全局坐标系是绝对坐标系,是目标在地图中的绝对坐标,不随本车的运动而变化。ego车辆,还有照片中其他车辆(sample_annotation.json)的外参,参考坐标系是世界坐标系,世界坐标系的原点是lidar或radar定义的,没有什么规律,所以要求其他车辆的相机坐标系坐标,就需要在这三个外参(ego、camera、sample)换算一下,具体方法下面会讲。在此之前还需要将激光雷达转到全局坐标系,再通过全局坐标系转车身坐标系再转相机坐标系,然后通过相机坐标系再转到图像的坐标系中。

2023-09-01 09:29:36 854

原创 OpenPCDet系列 | 8.2 nuScenes数据集的eval流程

模型的训练和测试过程输出结果是不一样的,对于训练过程是为了构建损失函数来进行训练,而对于测试过程是为了对object进行预测生成预测内容。下面以VoxelNeX检测器的类代码可见,training和testing将会输出两个内容。对于测试过中,这里的recall_dict是各阈值召回率的指标,而pred_dicts是一个字典存储相关的预测信息。后续做内容就是把这些每一帧的预测数据进行转换,每个pred_boxes都从此转换为nuSences的数据结构,也就是下面的一个dict。

2023-07-10 16:33:36 513

原创 OpenPCDet系列 | 8.1 nuScenes数据集的处理流程与gt_sample的database构建

对nuScenes数据集处理的了解,大体上的核心还是getitem函数、prepare_data函数,以及collate_batch函数三个部分的处理。其中prepare_data函数和collate_batch函数是在Dataset这个父类实现的,基本的处理流程基本不变,这里记录data_dict的数据处理部分。

2023-07-10 16:33:18 820

原创 MATLAB图像处理实现高光抑制

下面是的几个用MATLAB进行高光抑制的处理例子。

2023-07-04 17:09:10 1457

原创 MATLAB的基本操作

- **矩阵变换**A(:) :将矩阵A的每一列元素堆叠起来,成为一个列向量。reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排成m * n的二维矩阵。reshape函数只是改变原矩阵的行数和列数,但并不改变原矩阵元素的个数及其存储顺序。- **信息获取**size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数, c=size(A,2) 该语句返回的时矩阵A的

2023-07-04 17:01:36 994

原创 OpenPCDet系列 | 7.2 KITTI数据集测试流程post_processing处理

其中,这里的nms函数返回的是挑选的anchor索引以及其置信度(sigmoid处理后的预测值)。但是核心的nms处理函数用了c++代码进行编译处理。其中需要将分类预测输出转化为概率,其中利用预测概率的最大值作为其置信度,给后续的nms处理。

2023-05-23 10:58:40 330 1

原创 OpenPCDet系列 | 7.1 KITTI数据集测试流程predicted_boxes预测

首先对于各类预测的特征图进行重新reshape处理,将anchor那一维度进行拼接操作,比如:(16, 248, 216, 42) -> (16, 321408, 7)。最后,对角度进行限制到0-π之间,构建出准确的gt偏航角度。特征维度分别是:(16, 321408, 7)和(16, 321408, 3)这里的预测特征(16, 321408, 2)表示每个anchor对两个方向的预测概率,那么这里需要选择较高的概率的那个索引。所以,这里将预测特征图根据概率转换为01的预测结果。

2023-05-23 10:58:16 580

原创 OpenPCDet系列 | 5.4.3 DenseHead中的AxisAlignedTargetAssigner正负样本分配模块

首先,基于上述的操作已经获取到了最大值iou以及满足设定阈值的正样本anchor的索引,根据真个anchor索引可以获得与其iou最大的gt索引,那么根据gt的索引就可以获取对应的gt信息。也就是利用掩码矩阵,分别获取每个当前需要处理的类别,同时单独获取当前需要处理的gt信息,然后传入到assign_targets_single函数中进行处理,这个函数丶作用是针对某一个点云帧中的每一个类别anchors和gt信息,计算前景和背景的anchor类别,box编码以及回归的权重。一个类别中只有百个这样的数量级。

2023-05-18 13:53:10 569

原创 OpenPCDet系列 | 5.4.2 DenseHead中的ResidualCoder回归信息编码模块

这里主要涉及的是PointPillars算法对预测的编码处理来计算loss,在OpenPCDet中的实现基本和论文的一致,不过在角度编码上没有使用sin来进行编码处理,而是直接利用差值进行编码。自然也不需要argsin函数来进行解码操作。

2023-05-18 13:51:24 271 1

原创 OpenPCDet系列 | 5.4.1 DenseHead中的AnchorGenerator锚框生成模块

然后再加上anchor高度的一半也就是1.56 // 2 = 0.78,z轴的位置信息就被更新为1,这个就是anchor的具体在z轴上的位置。下面就是某个grid位置的anchor配置信息,可以看见一个位置的一类anchor会有两个方向的尺寸位置一样的配置。思路上是比较清晰的,具体的细节就是各种anchor信息在各位置的拼接处理。ps:这里的anhcor的z轴位置信息还回加上anchor的高度,以汽车类别为例,由于每个anchor的z轴gird位置设置为。函数来进行具体的anchor生成。

2023-05-18 13:26:48 542

原创 OpenPCDet系列 | 5.4 PointPillars算法——AnchorHeadSingle模型预测头模块

同时,不同的head设置了不同的损失函数。模型的具体构建结果如下所示,每个head只有一层的linear来进行最后的预测。到了AnchorHeadSingle模块中,具体的定义其实只涉及到了模型的定义。(其中损失的定义还是在基类中进行构建的)

2023-05-16 10:14:45 592

原创 OpenPCDet系列 | 5.3 PointPillars算法——BaseBEVBackbone伪图像特征提取模块

随后,将上采样的ups列表中的3个不同尺度处理的特征图进行concat拼接在一起,得到了(16, 384, 246, 216)的特征矩阵,这个特征矩阵就是backbone_2d提取到的特征矩阵,这与论文中的backbone_2d结构图是完全一样的,然后不同的是第一个block重复次数是3,第二和第三个block的重复次数都是5,在yaml文件中可以自行配置。这部分具体的作用是对提取出来的bev特征矩阵进行进一步的提取,所以主要是模型上的处理,比较少特征上的处理。这部分的模型处理代码比较简单,就不贴上来了。

2023-05-16 10:14:06 829

原创 OpenPCDet系列 | 5.2 PointPillars算法——PointPillarScatter伪图像BEV特征构建模块

那么,由于coord存储了voxel的具体网格,可以对其构造出在一维空间中的索引,然后根据索引在空矩阵的相应对位置上填充voxel特征。PointPillarScatter模块的初始化部分比较简单,只是简单的保存了相关的yaml配置,以及保存了点云场景的平面网络的grid size。在进行了PillarVFE编码后,此时的batch_dict更新如下所示,追加了pillar_features字段,表示每个voxel的特征,随后进行Map_to_BEV模块处理。

2023-05-15 16:17:51 1118

原创 OpenPCDet系列 | 5.1 PointPillars算法——PillarVFE特征构建与编码模块

PillarVFE模块属于VFE结构的其中一种,所以可以在PCDet中的backbone_3d目录下,可以找到vfe目录结构。在文件中,可以查看所有可供选择的vfe模型结构。

2023-05-15 15:58:10 912

原创 OpenPCDet系列 | 4.3 PointFeatureEncoder模块解析

这里使用的点云特征就是xyz+反射强度,具体作用是旋转是否使用xyz位置特征作为点云特征,否则在kitti数据集中就只有反射强度这一维的特征。不过在kitti数据集的处理流程中,这一步其实没有带来变换,唯一的变化是在data_dict中增加了data_dict['use_lead_xyz'] = True这一步。

2023-05-13 17:47:34 261

原创 OpenPCDet系列 | 4.4 DataProcessor点云数据处理模块解析

在对batch_data的处理中,经过了point_feature_encoder模块处理后,就轮到了进行data_processor处理。在pointpillars中主要进行3种数据处理,分别是:mask_points_and_boxes_outside_range、shuffle_points、transform_points_to_voxels;在data_process模块处理完后,单帧点云场景的数据处理流程就此结束了,随后根据点数量构建一个随机顺序的索引序列,然后根据这个随机的索引序列。

2023-05-13 17:47:08 804

原创 OpenPCDet系列 | 4.2 DataAugmentor点云数据增强模块解析

在pointpillars配置文件中,数据增强部分就包含了gt_sampling、random_world_flip、random_world_rotation、random_world_scaling四种方法。下面对其进行分别记录。在数据增强基类DataAugmentor中提供了一些列的数据增强的方法,在初始化阶段会依次添加配置文件中制定的数据增强方式进入队列中,随后在forward函数中对data_dict数据进行依次处理。由于队列先进先出的特性,所以在配置文件中靠前的部分会按顺序优先处理。

2023-05-12 15:40:26 1185

原创 OpenPCDet系列 | 4.1KITTI数据集各文件信息整合与gt database的构建

create_kitti_infos函数主要涉及KittiDataset类的重点三个函数:dataset.set_split、dataset.get_infos、dataset.create_groundtruth_database。在这里插入图片描述通过set_split和get_infos,可以构造出点云每帧的相关信息,包含point_cloud、image、calib、annos,用一个字典包含这4个键值信息来表示当前场景(训练集含标注信息)。

2023-05-12 15:39:41 1206 1

原创 OpenPCDet系列 | 7.PointPillars模型测试KITTI数据集流程解析

对于模型来说,训练过程是为了计算构建损失训练模型的参数,验证过程是为了测试模型当前参数的效果。所以,对于模型结构来说需要分别为测试过程和训练过程进行分别规划。在点云的3d检测中,这里主要体现在dense_head预测层中。对于模型来说,其与训练流程的区别结构图如下。

2023-05-10 12:03:47 977

原创 OpenPCDet系列 | 6.PointPillars模型分类、回归、角度损失的构建

在调用PointPillars算法的get_training_loss函数时,最后是根据dense_head结构中的get_loss函数来实现的。主要是两个函数:self.get_cls_layer_loss() 和 self.get_box_reg_layer_loss()。分别计算分类损失以及回归损失。其中self.get_box_reg_layer_loss()中还包括了角方向的分类损失。

2023-05-10 12:02:00 645

原创 OpenPCDet系列 | 5.PointPillars模型前向传播完整流程

具体的模型配置是在pointpillar.yaml的MODEL配置部分,可以卡件其设置VFE、MAP_TO_BEV、BACKBONE_2D、DENSE_HEAD、POST_PROCESSING几个部分。这里以PointPillars模型为例,在PointPillars模型中主要划分了以下4个主要的模块,以下某块首先会在build_network中进行初始化,然后在具体前向传播时通过forward函数进行。在各模块的具体初始化过程中,NAME是当前结构的模块选择,其余的就是类的初始化参数。

2023-05-06 19:56:07 538

原创 OpenPCDet系列 | 4.KITTI数据集数据加载流程代码解析

在create_kitti_infos函数处理完后会构造出一些列的pkl文件,其中kitti_infos_train.pkl、kitti_infos_val.pkl是获取每个训练集的各点云帧场景的一系列标注信息,每个场景有4个字典:point_cloud、image、calib、annos。对于一个batch中的不同点云帧场来说,一般情况下点的数量points是不同的,gt的数量也是不同的,而voxel化后的位置信息,voxel数量等等也应该是不同的。以上是需要注意以一下的。这里没有涉及具体的操作。

2023-05-06 19:50:04 783

原创 OpenPCDet系列 | 3.OpenPCDet点云检测框架训练准备流程

其中,Detector3DTemplate属于网络构建的基类,调用Detector3DTemplate的build_network函数来实现网络各部分的构建。这部分回合模型的前向传播流程一同介绍,因为具体用的模块是一样的,而需要初始化后才能执行。对于OpenPCDet中模型的训练过程如下所示,在训练前一般需要进行4个部分的准备:数据准备、网络模型准备、以及优化器和学习率调度器。可以选择的优化器有:Adam、SGD、Adam_OneCycle。完整的PointPillars网络配置如上所示。

2023-05-06 19:36:23 1222

原创 OpenPCDet系列 | 2.OpenPCDet整体框架与各模块结构

最近基于OpenPCDet来对PointPillars算法做一些实验,打算用一个完整的专栏来记录整个OpenPCDet的整体框架以及各个模块之间的结构。耗时一个多月,耗费精力较多,**这个专栏主要是详细介绍PointPillars的完整算法流程。**由于整体细节比较庞大,所以**这里用本篇文章来当做整个专栏的导航指引,主要的部分主要分为三个大部分:**- **1)训练的准备流程**;- **2)数据加载流程**;- **3)前向传播流程**;后续还会介绍模型的损失计算以及模型的测试流程等部分

2023-05-06 10:49:03 1243

原创 OpenPCDet系列 | 1.OpenPCDet的安装训练与测试

不过我是用本地远程连接服务器跑的代码,所以希望可以在本地打开tensorboard,方法如下。3)另外还可以通过slurm进行多GPU训练(不过这里我没有跑通),然后今年过年后回来实验室一试便成功了,真是神奇。训练PointPillar模型。训练Voxel-RCNN模型。1)选择模型推理显示预测结构。

2023-03-02 16:50:05 1888 2

原创 服务器配置 | 在Windows本地显示远程服务器绘图程序

ps:之前使用mayavi需要使用python=3.7的版本,不然会出现一些问题,不过现在我用的是python=3.9的版本同样可以正常使用。下面分别在终端或者是Pycharm中进行可视化。对于点云的3d可视化一般有两种方法,open3d显示或者是mayavi显示。是后续是可能改变的,如果出现了无法显示的情况可能就是localhost改变了端口,需要再重新查一次。将显示的内容配置在Pycharm中,如下所示即可。前提概要,需要在本地Windows端显示点云的3d可视化界面。

2023-03-02 16:37:43 820 1

原创 服务器配置 | 在Windows本地打开服务器端Tensorboard结果

(意思是本机),端口设置一个,比如12345,目标主机为服务器,目标端口一般是6006,如果6006被占了可以改为其他端口。在Windows系统装一个Xshell,在文件->属性->ssh->隧道->添加,类型local,源主机填。这里介绍三个方法,在在Windows本地打开服务器端Tensorboard结果。在SSH server旁边的信息是服务器ip,用户,以及服务器的登录端口。,即可查看远程的tensorboard。

2023-03-02 16:33:26 747

原创 Linux | 2. 用户管理

解决方案:没有给userA对于/home/userA/的写权限:chown userA:userA -R /home/userA。参考资料:https://blog.csdn.net/dong_liuqi/article/details/108842873。解决方案:/home/下没有创建/userA/文件夹:sudo mkdir /home/userA。解决方案:创建用户时没有个用户bash:usermod -s /bin/bash userA。随后既可以利用ssh来登录新增加的用户。

2023-02-28 20:20:55 412

原创 Linux | 1. 挂载新硬盘与磁盘管理

这时候可以使用命令行工具,恢复我们备份的 fstab 配置,即可修复完成:cp /etc/fstab.bak /etc/fstab。这里,我们可以给一块硬盘创建最多4个主分区,和若干逻辑分区,由于我们这里只为该硬盘创建一个分区,那么我们即创建一个主分区即可,也就是sdb1(硬盘只创建了一个分区)ps:需要注意,这里的挂载只是临时挂载磁盘文件,重启系统之后分区是不会自动挂载的。Linux du 命令是对文件和目录磁盘使用的空间的查看,也就是说du是查看文件占用空间大小的。

2023-02-28 20:15:35 457

原创 KDevelop详细Debug教程

打了断点之后就需要进行debug模式,但在此之前需要先build一下进行编译,如果想直接执行文件,需要在launch configurations中进行选择想要执行的程序。在debug时,需要单步调试,本来默认的快捷键是F10,但是快捷键冲突,所以需要重新设置快捷键,这里我设置的单步调试快捷键为ctrl+shift+z。在下面的“Debug”信息栏会进行相应的信息输出,此外Execute和Debug是可以同时进行的,输出在不同的信息栏中,这一点与Pycharm类似。取消断点是再设置一下断点,会自行取消。

2023-01-08 20:43:54 1447 1

原创 Semantic Segmentation | 评价指标代码解析

Mean Intersection over Union(MIoU,均交并比)为语义分割的标准度量。其计算两个集合的交集和并集之比,在语义分割问题中,这两个集合为真实值(ground truth)和预测值(predicted segmentation)。这个比例可以变形为 TP(交集)比上 TP、FP、FN 之和(并集)。在每个类上计算 IoU,然后取平均。

2023-01-06 20:03:41 858 2

原创 KITTI数据集可视化(二):点云多种视图与标注展示的可视化代码解析

在对KITTI数据集的点云处理流程中,涉及鸟瞰图,前视图,全景图等多种视角。这篇笔记就是用来记录如何对点云进行多种视图的切换,以及如何实现在多种视图中进行标注框的展现。涵盖标注框的鸟瞰图的显示、在前视图中的显示以及在全景图中的显示。这里主要是对代码的解析与思路的介绍,对于kitti数据集各种可视化展示可以查看之前写的另外一篇博客:[KITTI数据集可视化(一):点云多种视图的可视化实现](https://clichong.blog.csdn.net/article/details/127345052)

2023-01-05 21:15:07 3454 4

原创 PointNet++详解(二):网络结构解析

在之前对PointNet与PointNet++网络进行了介绍,接下来是对其代码的解析。参考的github项目为:https://github.com/yanx27/Pointnet_Pointnet2_pytorch这篇博客的内容主要是将PointNet++网络结构进行拆分介绍。在介绍PointNet++的时候是按照采样(sampling)、分区(grouping)、特征提取(pointnet)、自适应密度不均衡几大部分来进行的,所以介绍接下来代码介绍也将按照这几部顺序进行。

2023-01-03 13:37:53 2056 1

原创 PointNet++详解(一):数据增强方法

介绍展示pointnet++项目实现的点云数据增强方法,主要包括随机旋转、随机缩放、随机丢弃、随机平移、随机扰动等等。

2022-12-29 16:14:53 2481 4

原创 论文速读系列五:SASA、BtcDet、CG-SSD、Multi-view framework、Ret3D

在2D目标检测中,有很多工作证明过**目标间的关联性**可以提升检测性能。同理,作者认为,在3D目标检测中,目标间的关联性也可以提升检测性能。然而,**现有的lidar-based检测器却鲜有探索目标间的关联性**,大多数检测器都是在**特征层面隐式**的研究目标关联性带来的影响。提出了作者研究2种关联性对3D目标检测的影响:intra-frame relations 和 inter-frame relations。- **intra-frame**:对于同一帧点云,利用不同目标间的空间距离(预测的目标位

2022-12-10 21:35:42 717

原创 论文速读系列四:Cross-Modality、CT3D、Pyramid R-CNN、VoTr、AFDetV2

**为什么需要second stage**?根据之前工作的经验,second stage可以提升网络性能,原因有以下2个:1)原始点特征可以恢复损失的位置信息;2)分类和边界框回归是通过2个独立的分支完成的,会带来不对齐的问题。但是,近来有工作证明,就算没有原始点云信息做second stage的refine,依靠voxel特征依然可以取得不错的性能。通过大量的实验,**作者发现first stage已经足以得到精确的bbox定位,second stage的贡献主要源于分类得分的提高,这一发现也和分类-定

2022-12-10 21:21:54 686

原创 论文阅读笔记 | 三维目标检测——PV-RCNN++算法

PV-RCNN++的基本原理延续这PV-RCNN:基于体素的策略可以更有效地编码多尺度特征,并从大规模点云生成高质量的3d候选框;而基于点的策略可以保留精确的位置信息,并具有灵活的感受野,用于细粒度的建议细化。在PV-RCNN的基础上,PV-RCNN++对其进行了改进。改进的第一点就是关键点的采样,这里提出了分区关键点采样策略(sectorized proposal-centric keypoint sampling strategy),要比原始的距离最远点采样更加高效(D-FPS距离最远点采样的具有二

2022-12-08 17:46:09 1994 1

原创 论文阅读笔记 | 三维目标检测——CenterPoint算法

与2d检测相比,3d检测面临一些特别的挑战:1)点云的稀疏性导致大部分空间为空;2)输出需要产生带方向的3d框,这不能与坐标系进行很好的对齐;3)3d目标的尺寸范围变化比较大。也很好理解,**在一个3d框的自由度比较高,具有方向的属性,在空间上难以和坐标轴对齐**,2d的axis-aligned的方法对3d检测也就不太适用。为此,**CenterPoint的核心思想就是将框预测改为中心点预测来避免这个问题的出现**。预测目标框的中心点避免了方向属性,减少了搜索空间;其次对于中心点的方法可以简化一些例如目

2022-12-08 17:34:03 3955 1

KITTI数据集的可视化项目

vis/lidar_vis.py:提供查看.bin格式点云的可视化 vis/bev_vis.py:提供查看.bin格式点云的bev视图 vis/visualization.py:使用kitti_object_vis项目,提供kitti数据集的9中可视话操作

2022-10-16

使用RNN与LSTM实现的5个应用

1)使用RNN网络来预测正弦方波 2)使用LSTM网络来预测周期性的航班数据 3)使用LSTM网络来对文本分类 4)使用LSTM网络来对图像分类 5)使用LSTM网络来生成手写数字图像

2022-05-12

利用可训练参数在线辅助知识蒸馏

利用可训练参数在线辅助知识蒸馏

2022-03-19

ResNet与ResNeXt的pytorch实现

def ResNet18(): return ResNet(resnet18_params, BasicBlock) def ResNet34(): return ResNet(resnet34_params, BasicBlock) def ResNet50(): return ResNet(resnet50_params, Bottleneck) def ResNet101(): return ResNet(resnet101_params, Bottleneck) def ResNet152(): return ResNet(resnet152_params, Bottleneck) def ResNeXt50_32x4d(): return ResNet(resnext50_32x4d_params, ResNeXtBlock) def ResNeXt101_32x8d(): return ResNet(resnext101_32x8d_params, ResNeXtBlock)

2021-05-15

stm8智能跟随避障小车(超声波测距+1602显示+app蓝牙通信+TTS播报+pwm调速)

设计制作一辆玩具小车,此小车系统可具有以下功能: 基本功能: 1)主控芯片可以采用单片机裸机运行程序,也可以采用嵌入式系统。核心 板可以采用现成的单片机最小系统板或者实验板搭建。 2)小车采用轮式驱动,直流电机驱动模块可采用现成的模块或者自行设计。 3)小车可以通过蓝牙模块与手机相连接,通过手机 app 软件来控制小车的 运动方向以及相关功能。蓝牙模块与手机软件可采用现成模块。 4)小车配备有超声波模块,可以通过超声波模块检测前方障碍物的距离, 并在 10cm 的距离停车,距离显示可以显示在车体处的小屏幕,也可以显示 在手机 app 上。 5)小车可配备红外线对管,通过红外对管完成在白底黑线的

2020-12-23

数字温度计--DB18B20获取温度+lcd1602显示+串口输出

功能要求:选用STM8型单片机作为主控制器件,DS18B20作为测温传感器,通过LCD1602实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.01℃。利用该器件直接向单片机传输数字信号,使用单片机处理及控制。可设置的上下限温度报警。 要求完成内容: 1.根据设计要求,完成电路硬件设计,并绘制出原理图。 2.完成系统的安装与硬件调试 3画出流程图,编写并调试控制程序。 4撰写设计报告。

2020-12-23

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除