使用digispark管理您的笔记本电脑支架

我决定写一篇关于两个晚上制作的非常简单的设备的文章。 它解决了一个长期存在的问题,对此我感到非常高兴,并一直使用到今天。 它正常工作了大约3个月。 实际上,这是最后发生的事情。 请有兴趣的人在猫下。



这样您就看到了结果。 让我们从远处开始故事。

我有一个笔记本电脑支架(对我来说,它可以作为主要计算机使用,因此始终可以打开)。 而且支架不是很简单,要冷却,您可以安装3个散热器,将支架插入USB,散热器会旋转。 如果成功安装了冷却器,则它与处理器的距离为7度。 通常,这是必需的。 一切都会好起来的,但是坦白地说,架子上的冷却器总是以最大的功率旋转-这意味着在寂静中总是有单调的沙沙声。 好像有人在看台上启动了一把小型电锯。 这是文章的真正罪魁祸首:



一个晴朗的夜晚,当包裹随同速卖通进来时,我“静静地”享受摊位的歌唱。 他坚定地决定-对我来说足够了。 决定管理USB底座。 手已经伸出手来用硬件USB打些stm32f1了。 然后我想到了-有一个digispark(相同的attiny85,只在主板上)便宜,已经绑定了软件usb,非常适合此任务-单击晶体管。 我给他铺了一条快速的小围巾,上面有一个由插针之一控制的mosfet,还有一个用于放置RGB LED的地方。

原来是这样的:


在扰流板下方,有一块板上的细节说明,以及如果有人要重复的话可以打印的图片:
零件清单和印刷电路板图像

U2-irlml6244trbpf-Mosfet
R3-0603 10k电阻
R1,R2-0603 220欧姆电阻
R4-0.25 W 220欧姆电阻
U6是RGB LED,但未焊接。 我认为他是多余的。
请注意,该板上的USB母亲在错误的层上离婚了!
在要打印的图像下方是0.93英寸的打印宽度。



我将其打印在用于激光打印机的透明纸上,分为2份,然后将其粘贴到一个完全不透明的光罩中。 对于那些有光刻胶问题的人来说,这是一个技巧。 我切下一块玻璃纤维,在水中粘贴光刻胶,用塑料卡将其抹平,然后以60度熨烫。 照片:



接下来是在柠檬和过氧化物中进行曝光和蚀刻,然后去除光刻胶,最后进行钻孔和镀锡。 组件密封前的最终结果:



组件被焊接(是的,要焊接的东西-一个USB连接器,一对smd,是digispark本身)布线中没有门柱-我在错误的层上标记了我的母亲usb,这使她倒过来了。 通常,我宁愿将板子连接到计算机上的细线上,但顺便说一句,情况确实如此。 您在第一张照片中看到的结果。

仍然需要编写代码。 最初,我想使用makefile和纯C语言,但是决定使用arduino ide更快。 我是这样 唯一的事情是,直到我用程序员修补了官方的十六进制引导程序后,中国的digispark才希望通过usb。 之后,我想用pid控制和风扇垫片编写代码,但改变了主意。 结果,在digispark上,仅侦听虚拟串行端口的代码,如果其中出现一个,则打开风扇,如果零则关闭风扇。

现在有一部分用于计算机。 我在Linux上有一台笔记本电脑,所以我写了一个bash脚本并将其填充到自动加载中,它所做的只是在设备列表中查找digispark,它每N分钟解析一次传感器命令的输出,如果温度> 80发送1,如果<60发送0 。

该设备稳定运行了3个月。 生活变得更加愉快。 下面是bash脚本代码。

#!/bin/bash FLAG=1 while [ true ] do for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do ( syspath="${sysdevpath%/dev}" devname="$(udevadm info -q name -p $syspath)" [[ "$devname" == "bus/"* ]] && continue eval "$(udevadm info -q property --export -p $syspath)" [[ -z "$ID_SERIAL" ]] && continue if [ $ID_SERIAL = "digistump.com_Digispark_Serial" ] then #echo "/dev/$devname - $ID_SERIAL" #echo "$FLAG" >> /dev/$devname CORE_0=$(sensors | grep 'Core 0' | awk '{print int($3)}') CORE_1=$(sensors | grep 'Core 1' | awk '{print int($3)}') #Phys_1=$(sensors | grep 'Physical id 0' | awk '{print int($3)}') #TEMP1=$(sensors | grep 'temp1' | awk '{print int($3)}') #TEMP2=$(sensors | grep 'temp2' | awk '{print int($3)}') #echo "$CORE_0" #echo "$CORE_1" let "TEMP = (CORE_0 + CORE_1) / 2 " #echo "$TEMP" if [ $TEMP -gt 80 ] then #echo HIGH #notify-send "HIGH TEMP, fan on, T="$TEMP echo "1" >> /dev/$devname echo "1" >> /dev/$devname fi if [ $TEMP -lt 60 ] then #echo LOW echo "0" >> /dev/$devname echo "0" >> /dev/$devname fi sleep 1 fi ) done sleep 4 done 

Source: https://habr.com/ru/post/zh-CN462273/


All Articles