主页
Featured image of post 从代码到实物 - 学习日志

从代码到实物 - 学习日志

有关第20组在本课程中的学习日志

文章字数:3552
预计阅读时长: 分钟

0x00 小组介绍

  • 小组编号:第20组
  • 小组成员
    • 刘云杰
    • 王翔
    • 蒋添爱
    • 郑然文
    • 王述杰

0x01 学习笔记

一、有关PCB电路板绘制的学习

设计技巧总结举例:

1、电源与地线之间的布线技巧 1)要在电源、地线之间加上去耦电容。电源一定要经过去耦电容后再连接到芯片的管脚,一方面是让电源的噪声尽量少的影响芯片,另一方面是芯片产生的噪声不要影响到电源。 2)尽量加宽电源及地线,最好是地线比电源线宽,其关系为:地线>电源线>信号线。 3)使用大面积的铜层作地线,在印制板上把没被使用的地方都与地相连,作地线使用,或是做成多层板,电源,地线各占用一层。 2、对于线拐角的处理 通常,线的拐角处会有粗细变化,会发生一些反射的现象。拐角方式对于线的粗细变化情况,直角是最差的,45度角好一些,圆角最好。但是圆角对PCB设计来讲处理比较麻烦,一般看信号的敏感程度来定,一般的信号用45度角就可以了,只有非常敏感的线才需要用圆角 3、相邻两层的走线不要重合 因为层厚度很小,如果相邻两层的走线重合那么从同一个平面看就相当于它们距离很近,这样就会引起串扰影响信号的质量。建议垂直交叉 4、在原理图设计时就应该按模块化来设计。 两种形式:1. 在同一张原理图中通过粗线将不同功能模块的电路分隔开;2. 将不同功能模块的电路原理图分别设置在不同的原理图中。

—— 王翔

二、有关焊接技术的学习

通过这次焊接拆除练习,我明白了一些之前从未了解过的知识,每一个电子元件上会标识材料的类别、型号、规格、符号、性能及一般选用知识。初步熟悉了安装焊接的基本工艺知识。初步掌握了手工焊接技术,能够独立地焊接一些电子产品,通过利用松香以及调节合适的温度提高了焊接的效率,避免了一些不必要的浪费,并且提高了整体美观性,保护了器件。在练习拆除时,新人确实难以上手,在对比改善前后的板子拆除时,可以很真切地体会到改进后的板子用来练习有多友好,通过实践,明白了吸锡器的工作原理以及提升技巧-紧靠烙铁,快速按下。本次小任务提高了我的动手能力,增强了我对实际问题的理解能力。

—— 郑然文

三、有关QR Code的学习

QR Code简介:

QR Code码,是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。

QR Code二维码是有容错率的。首先只要右上,左上,左下3个边角方框形状的区域是不能遮挡或损失,然后总的遮挡面积不超过总面积的三分之一,一般来说都是没问题的,可以正常识别出来,基于此种特性,我们将一张图嵌入在生成的二维码中。

QR Code生成:

使用python中的qrcode包生成二维码,使用python中的PIL包绘制二维码中间的图片:

  1. 在已有python语言环境下使用pip 是 Python 包管理工具安装qrcode

  2. 在终端中输入 pip install qrcode 即可完成安装。

  3. 安装完成后使用 pip freeze | findstr qrcode 查看是否完成安装:

    是否安装完成
    是否安装完成

  4. 编写代码

    from PIL import Image
     import qrcode
    
     ### 参数可调 
    
     content = 'https://www.bilibili.com/video/BV12W4y1z7fc/?vd_source=c3e65a68e2613f8b644b7eecd5d36a2a' # 二维码内的文本信息或者 URL 地址
     logo_path = r"D:\Desktop\logo.jpg"  # logo路径
     out_path = './out.png'  # 保存路径
     factor = 6  # 缩放比例
    
     ### 生成二维码
     qr = qrcode.QRCode(
         version=5,
         error_correction=qrcode.constants.ERROR_CORRECT_L,
         box_size=100,
         border=2,
     )
     qr.add_data(content)
     qr.make(fit=True)
     img = qr.make_image()
     img = img.convert("RGBA")
    
     ### 在二维码中心,绘制图片
     icon = Image.open(logo_path)  # 打开logo照片
    
     img_w, img_h = img.size  # 获取图片的宽高
    
     icon_w = int(img_w / factor)
     icon_h = int(img_h / factor)
     icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS) # 重新设置logo的尺寸
    
     w = int((img_w - icon_w) / 2)
     h = int((img_h - icon_h) / 2)
     icon = icon.convert("RGBA")  # 得到画图的x,y坐标,居中显示
     img.paste(icon, (w, h), icon)  # 根据x,y 黏贴logo照
    
     img.save(out_path)  # 保存图片
     img.show()  # 预览效果
    

—— 刘云杰

四、有关Arduino UNO的学习

通过这整个学期的创客学习,我学会了Arduino IDE的使用方法,了解到了Arduino UNO的I/O口的种类以及使用方式,能够熟练运用数字信号和模拟信号。同时,也了解到了串口通信的相关知识,以及通过板子所带的WIFI模块进行硬件控制和通信,最后,也学会了类库的使用和编写。

—— 王述杰

五、有关网页制作的学习

这次个人主要负责整个项目的网页制作,如果自己从头开始制作较为美观的网页会花费大量时间,而利用现成的他人所编写好的主题可以极大程度简化网页的设计难度,将重心放在文章本身内容以及其他知识的学习。
因此个人利用了hugo网页搭建框架进行了静态HTML页面的生成,在主题方面选择了由“JimmyCai”制作的“Stack”,卡片式布局使得页面整体美观易读。
同时个人学习了SCSS和TypeScript相关技术,在原本主题的基础上进行了一定程度的修改,增加了如Table of Content(文章目录)、Shortcode(短代码功能)等,增强了自己在网页设计方面的知识和能力。
最后个人利用Github Pages进行网页托管,在域名方面也采用了自定义域名,并利用CDN加速了在国内访问较慢的Github Pages,并进行了HTTPS相关配置,在网站搭建方面也培养了自己一定的能力。

—— 蒋添爱

0x02 期中项目

一、项目简介

1. 项目名称

集温度、烟雾、火焰检测于一体的多功能火灾警报器

2. 项目背景

从第一次接触火元素,到学习理解掌握火的奥秘,人类就已经无法脱离火这种充盈着无尽能量的能源体,
然而,火给生活带来了光明与希望,也给生活带来灰烬与灾难,
从柔小火苗到冲天炽炎,往往只在顷刻间,人们或奔走哀嚎、或蜷缩哭泣,最终被这焰舌所吞噬,
即便人们召唤它的本意,只是想让其带来些许温暖。

因此,人们依赖火、更敬畏火。
从能检测周围火场并在即将灾难化自动鸣起警戒之声的火铃、到直接利用水元素与之正面对峙的自动灭火装置,
人们从未忘记那一场场天罚般的业火,在心中所造成的创伤与疤痕。
就算到如今人类已能熟练使用火系魔法,成为炎魔导师,火之大泛滥这一灵灾,仍时常袭于人们疏忽之瞬,
待到红莲燃尽,万物归无,人们才会后悔悲痛于自己当时的那句“没什么”。

为了纪念前人与火不断制衡对抗的艰苦历程,加强人们对火的警惕,
我们组利用所学知识,并加上自己人性化的设计理念,
最终创制出这杨一个“集温度、烟雾、火焰检测于一体”多功能火灾警报器,
谨以此实物,纪念所有奋斗在消防事业的人们。

二、项目详细记录

1. 采用元件

  • Arduino UNO ×1
  • 温度传感器LM35模块 ×1
  • 火焰传感器模块 ×1
  • MQ2烟雾气体传感器模块 ×1
  • 无源蜂鸣器模块 ×1
  • LCD1602 ×1
  • 5v电源扩展模块 ×1
  • 椴木板 若干

Arduino UNO接口示意图
Arduino UNO接口示意图

元件清单 1
元件清单 1
元件清单 2
元件清单 2
元件清单 3
元件清单 3
元件清单 4
元件清单 4

2. 采用技术

  • 激光切割
  • 硬件编程

3. 实现功能

  • 综合烟雾检测
  • 火焰检查(波长分析)
  • 温度检测
  • 火灾自动报警

4. 源代码

三、项目时间线

项目制作历程

2022-3-12

提出构想

小组经过讨论,将焦点集中在生活上的一些常见问题,
最终提出制作一个火灾警报器的构想。

2022-3-24

外壳制作 - 激光切割

由王翔同学负责设计警报器的外壳,
利用CAD软件绘制激光切割路径后,前往工程训练中心利用木材进行激光切割,
得到实物的外壳。

2022-4-13

程序编写 - Arduino开发

由王述杰同学负责源码的编写调试,
除显示屏模块外,利用他人的开源库,
其余的温度、火焰、烟雾与报警模块均为自主编写。

2020-4-22

实物组装

由刘云杰同学负责开发板与外壳的组装拼接,
将开发板与总线连接好后,固定在外壳内部,
最终通过木板的铆接,完成封装。

2020-4-28

项目总结与网页制作

由郑然文同学负责总结本次开发项目,
记录项目的开发背景与经过,形成文档。

然后由蒋添爱同学负责根据文档制作项目网页,
并发布到博客上完成记录。

四、成品展示

成品展示 1
成品展示 1
成品展示 2
成品展示 2

0x03 期末项目

一、项目选题与介绍

项目名称:

焊接学习用电子钢琴PCB设计

项目解决问题:

电子钢琴共有8个按键,不同按键对应不同的音阶,其原理是NE555定时器被设置为一个振荡器,电路中连接的8个电阻将决定振荡频率,当按下其中一个按键,喇叭将因特定的频率发出声音。
目前已有的焊接学习套件供电方式使用不便,且存在焊错后改错较为困难、二次焊接易导致电路板损坏、指示单一等问题,本次课题需对以上问题进行解决或优化。

项目任务:

  1. 根据给定的原理图完成PCB的设计工作。
  2. 根据使用体验完成焊盘和元件布局的优化。
  3. 在PCB上附加指导教程。
  4. 拍摄PCB焊接讲解视频。

项目要求:

  1. 需掌握不限类型的PCB设计软件的使用(设计采用Altium Designer软件,可一对一教学掌握其使用)。
  2. 熟练掌握电子焊接技术。
  3. 不怕麻烦,敢于较真。

二、项目阶段

1. 学习PCB知识

PCB板层:

PCB板层
PCB板层

ad常用知识:

  • 工程创建
  • 元件模型创建
  • 常用器件(如Netlabel, port, ……)的作用
  • 封装创建和管理
  • 铺铜等

2. 尝试画出初代demo

初代demo
初代demo

3. 修改完善样板形状参数

完善参数
完善参数

4. PCB板下单&编写说明书&拍摄视频&项目总结

  • PCB下单
    PCB下单
    PCB下单
  • 编写说明书
    说明书
    说明书
  • 拍摄并剪切视频
    视频文件
    视频文件
  • 项目总结

三、成品展示

PCB成品
PCB成品

采用 CC BY-NC-SA 4.0 许可协议
文章封面配图来源于非常见图站,需要出处可以使用以图搜图工具