版本协议

Public Domain

专业版
#第九届立创电赛#温湿度传感器训练营

创建时间:11个月前

225 0

描述

<p style="line-height: 1.8;">注:* 为必填项</p> <p style="line-height: 1.8;"><strong><span style="color: #0093e6;">请在报名阶段填写 ↓</span></strong></p> <p style="line-height: 1.8;"> </p> <h3 style="line-height: 1.8;">* 1、项目功能介绍</h3> <hr> <p style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;">这是我第一次注册嘉立创的账号,跟着教程做我的第一张电路板,感谢嘉立创和</span><span style="font-size: 14px;">盛思锐提供这次训练营让我有了尝试入门的机会。</span></p> <p style="line-height: 1.8;"><span style="font-size: 14px;">我工作的职责之一包括对机房的动环监控,目前机房是使用的是一个机械式的温湿度计,通过值班人员肉眼看指针的方式读出温湿度值,我这次就想通过训练营的项目做一个能够实时获取温湿度,并通过IOT的通信方式把数据传输出来,对机房的温度监测,指导空调的使用。</span></p> <p style="line-height: 1.8;"><span style="font-size: 14px;">所以第一块板没有按照教学视频使用STM32和数码管显示的方式,而是选择了ESP32-C3主控并提供WIFI的方式。</span></p> <p style="line-height: 1.8;"><span style="font-size: 14px;"><img src="//image.lceda.cn/oshwhub/aa71e82a5e4246a5a2690934618c1db5.png" alt="第一张板子的原理图" width="1035" height="494"></span></p> <p style="line-height: 1.8;"><span style="font-size: 14px;"><img src="//image.lceda.cn/oshwhub/3640f7654d3f459d964bf755246eeefd.png" alt="第一张板子的印刷版" width="1030" height="702"></span></p> <p style="line-height: 1.8;"><span style="font-size: 14px;">由于从来没有过这方面的经验,我打算由嘉立创SMT,也就选择了GPIO多,价格便宜,但焊接难度大的ESP32-C3-MINI,结果SMT报价出来,这个芯片确实难度大,要按高价那一档收费三百多,而不是按评价那一档起步价贴两片一百多,心疼钱就没让嘉立创贴片了。然后下图就是成品。</span></p> <p><img src="//image.lceda.cn/oshwhub/a398ab0e7a224907915940791defb180.jpg" alt="" width="294" height="353"></p> <p style="line-height: 1.8;"><span style="font-size: 14px;">果然难度大了,插上数据线,电脑完全识别不到硬件。可能是原理图设计问题,我还请了群里大佬帮我焊了一个也不行。</span></p> <p style="line-height: 1.8;">眼看要到8月1号了,得拿个东西交差啊,我就又按教学视频做了个STM32和数码管的,只是电源改成了USB供电。</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/63c6651b807f41bdb5f517713ca4da26.png" alt="第二张板子的原理图" width="1013" height="658"></p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/3a3572e7aefb44bd9cddb6813b88ce77.png" alt="" width="1016" height="1040"></p> <p style="line-height: 1.8;">果然我仍然低估了我完全没有经验和手残的情况,第二张板子如下图一开始锡膏多了也不知道要刮掉。</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/da6998b4276e4d6098528f713697799e.jpg" alt="" width="1008" height="472"></p> <p style="line-height: 1.8;">所以焊接的哪哪都连锡,排针歪着usb也歪着,排针顶着放加热台上也不能给板子加热,东西都拆不下来,数码管也烫坏了,没办法,又下单了一批元件,等到了我重新焊。</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/6872bae407b44f7793f0552f7e7ae6c8.jpg" alt="" width="1000" height="1000"></p> <p style="line-height: 1.8;">上面那块板子下单以后第二天还在生产,我就没事干,不服,还是想做个能联网的,于是换了个半孔的ESP32-C3,又画了张板子,当晚下单。于是就有了第三张板子,把每个月两张和训练营的一张免费券都用光了。</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/e1d737f8c82e400eaa1787354aacaa1d.png" alt="" width="1440" height="460"></p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/b431b61a30074318bb5350917b357e25.png" alt="" width="610" height="931"></p> <p style="line-height: 1.8;">第二块板子第一次焊废以后第三块板子到了,赶紧动手,这次已经有了一些进步,知道锡膏不能当牙膏挤那么多,除了年纪大了手一直抖意外都还不错。一个小时就把板子焊好了,上电没反应哈哈哈。<img src="//image.lceda.cn/oshwhub/f93fb529eaf5455091e4a73a8c4985b7.jpg" alt="" width="1000" height="800"></p> <p style="line-height: 1.8;">不服啊,我又拿来另一块,只接电源、分压电阻和LED灯,然后拿个镊子给灯的负极接地,终于得到了一个月来的第一次成功,哈哈哈哈,成功点灯!!!</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/385704da77954a95a52a32c3ffe29308.jpg" alt="" width="800" height="495"></p> <p style="line-height: 1.8;">然后就开始往板子上焊芯片和几个通电必须上拉的引脚的电阻,以及3V3的电容和EN的RC延时,希望能测试一下是不是把芯片烫坏了。</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/0c0a6d1a928f4b48b350b43f0273cddc.jpg" alt="" width="685" height="428"></p> <p style="line-height: 1.8;">就接上杜邦线,打开thonny,准备刷micropython的固件,倒是能识别COM口,但是板子一直向电脑发送0xffffffff,发送很多很多0xffffffff,后能识别到一次正经文字,然后继续循环,直到拔掉线。</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/770f2e57bbc5488ab033d6b5c561ebb7.jpg" alt="" width="699" height="524"></p> <p style="line-height: 1.8;">也不知道为什么,天晚了,就先休息了,等元件来了,我再去焊第二张板子。</p> <p style="line-height: 1.8;">元件到了,我把这次过程录制了个小视频,可以看视频了,最终做成功了,实物图在下面。WiFi功能我后续还会继续分析是原理图问题还是焊接问题,要继续尝试的,但这个训练营先结束掉了。(视频超过了50M,不能上传为附件,请去B站看)</p> <p style="line-height: 1.8;"><a title="录制和实物验证的视频" href="https://www.bilibili.com/video/BV1jRijeoENs" target="_blank">https://www.bilibili.com/video/BV1jRijeoENs</a></p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/94ecf0f563f8458db2d1200d877f4344.jpg" alt="" width="1000" height="950"></p> <p style="line-height: 1.8;"> </p> <h3 style="line-height: 1.8;">*2、硬件部分</h3> <hr> <p style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;">第一张板子使用ESP32-C3-MINI为主控芯片,USB供电通过AMS-1117-3V3降压,使用训练营指定的SHT-40传感器获取温湿度。温湿度数据通过IIC传递给MCU,MCU带WiFi和USB通信功能,可以向外提供传感器获取到的环境数据。</span></p> <p style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;">第二张板子除了供电改成USB供电、没有按键外,与训练营教学视频基本一致,这张板子验证成功了。</span></p> <p style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;">第三张板子,使用ESP32-C3-WROOM为主控芯片,可以通过USB+AMS-1117-3V3供电,也可以通过串口排针3V3供电,还提供了EN和BOOT两个按键,并在GPIO10接了一个LED灯珠。温度传感器还是SHT-40。</span></p> <p style="line-height: 1.8;"> </p> <h3 style="line-height: 1.8;">*3、软件部分</h3> <hr> <p style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;">软件大部分都和教程文档一致,只是我这个是实时温度监测并连续显示,所以把获取温度也拉进了循环里,由于温度不需要特别实时,在显示部分增加了时长,隔几秒才会更新一次温度。具体如下:</span></p> <div>  /* Infinite loop */</div> <div>  /* USER CODE BEGIN WHILE */</div> <div>  while (1)</div> <div>  {</div> <div>    /* USER CODE END WHILE */</div> <div> </div> <div>    /* USER CODE BEGIN 3 */</div> <div>   HAL_I2C_Master_Transmit(&hi2c1, (uint16_t)SHT40_Write, (uint8_t *)writeData, 1, HAL_MAX_DELAY);</div> <div>   HAL_Delay(8);</div> <div>   HAL_I2C_Master_Receive(&hi2c1, (uint16_t)SHT40_Read, (uint8_t *)readData, 6, HAL_MAX_DELAY);</div> <div>    </div> <div>   Temperature = (1.0 * 175 * (readData[0] * 256 + readData[1])) / 65535.0 - 45;</div> <div>   Humidity = (1.0 * 125 * (readData[3] * 256 + readData[4])) / 65535.0 - 6.0;</div> <div>    </div> <div>   Temp = (uint16_t)(Temperature * 10);</div> <div>   Humi = (uint16_t)(Humidity * 10);</div> <div> </div> <div>for(int i = 0; i < 500; i++){</div> <div>while (1)</div> <div>{</div> <div>num++;</div> <div>if(num < 100)</div> <div>{</div> <div>ShowNum(1,1,Temp/100);</div> <div>ShowNum(1,2,Temp/ 10 % 10);</div> <div>ShowNum(1,3,Temp%10);</div> <div>}</div> <div>else if(num < 200)</div> <div>{</div> <div>ShowNum(2,1,Humi/100);</div> <div>ShowNum(2,2,Humi/ 10 % 10);</div> <div>ShowNum(2,3,Humi%10);</div> <div>}</div> <div>else</div> <div>{</div> <div>num = 0;</div> <div>ShowNum(1,1,Temp/100);</div> <div>ShowNum(1,2,Temp/ 10 % 10);</div> <div>ShowNum(1,3,Temp%10);</div> <div>break;</div> <div>}</div> <div>}</div> <div>}</div> <div>  }</div> <div>  /* USER CODE END 3 */</div> <div>}</div> <p style="line-height: 1.8;"> </p>

文档

BOM

暂无

附件

暂无

成员

评论(0)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow