2020年8月

为了把之前挖的说要搭一台UMPC的大坑给填上,必须要有一个足够小的、能当鼠标用的装置,所以就弄出了这么个玩意...首先看看这个项目的原型,Toshiba Libretto系列和Thinkpad 750,都是使用的指点杆然而指点杆太贵了,一个要40多,而且PCB还很大,装不进键盘里,所以实际上和摇杆没什么区别了...那就弄摇杆好了...然后事实证明便宜确实没好货,摇杆转20°左右就满量程了,而且阻尼很大,用起来让人觉得喝了假酒那么要怎么让它用起来稍微好一点呢?因为阻尼大,转起来很难精确控制转动的角度 --> 那就降低光标的移动速度然而这样光标要走过很长的距离时就很痛苦 --> 弄个加速键这样虽然说妥协很大,用起来远远不如小红点顺手,但是...嘿!它能用!再把左键,右键,中键加上之后用一段时间还算顺手,那就这样了吧...既然用了Arduino来当鼠标了,那不加一块屏幕就太浪费了于是就弄了那块128*64,0.96'的OLED屏幕显示下温度,风扇转速和警告信息,看起来相当不错(最终效果见上图)(测试中...)然后是用这玩意解决一些在测试其它系统的时候发现的问题:本来是准备用一个简单的霍尔+MOSFET的独立电路来做到控制主屏幕在开合时的开关的,结果P沟道MOSFET忘买了...再去为了一个MOSFET付十块钱的运费实在是不值,也懒得拿三极管做非门了...那就干脆用Arduino解决算了这里没什么好讲的,就是给栅极10k的下拉电阻似乎太小了,直接上680k下拉解决键盘是买的现成的,拿到手发现虽然质量还行,但是有Z+Shift会和方向左键冲突...本来这不是什么大问题,但是对于东方玩家来说实在致命...于是就弄了个自锁开关,按下会一直按Z,问题解决!最后,还有50%的剩余ROM空间,那就加个非常中二的Boot Screen好了...最后的最后,放下写的稀烂的代码(BootScreen删掉了)#include <Mouse.h> #include <Keyboard.h> #include <U8glib.h> U8GLIB_SSD1306_128X64 u8g(4, 5, 6); const int xPin = A0; const int yPin = A1; const int caliButton = 9; const int caliIndi = 16; const int lButton = 12; const int rButton = 10; const int mainSW = 3; const int scrlSW = 11; const int accSW = 2; const int zButtonSW = 1; const int CPUTempSensor = A5; const int battTempSensor = A4; const int fanPin = 0; const int hallSensor = 7; const int screenMOSFET = 8; //Pin configuration int xCali; int yCali; //Create variables for calibration int xCalied; int yCalied; int xProcessed; int yProcessed; int CPUtemp; int battTemp; int fanSpeed; boolean mouseSwitch; //Declaring variables void setup() { Serial.begin(9600); Mouse.begin(); mouseSwitch = 0; pinMode(accSW, INPUT_PULLUP); u8g.setFont(u8g_font_7x13B); } void loop() { CPUtemp = ((analogRead(CPUTempSensor) - 240) / 11); battTemp = ((analogRead(battTempSensor) - 240) / 11);//Temperature monitoring fanSpeed = (CPUtemp * 6) - 240; if (fanSpeed > 0){ analogWrite(fanPin, fanSpeed); }else{ analogWrite(fanPin, 0); }//Fan control if (digitalRead(hallSensor) == HIGH){ digitalWrite(screenMOSFET, HIGH); }else{ digitalWrite(screenMOSFET, LOW); } int xRaw = analogRead(xPin) - 512; int yRaw = analogRead(yPin) - 512; if (digitalRead(caliButton) == HIGH){ xCali = 0 - xRaw; yCali = 0 - yRaw; digitalWrite(caliIndi, HIGH); }else{ digitalWrite(caliIndi, LOW); } xCalied = (xRaw + xCali)/4; yCalied = (yRaw + yCali)/4; if (digitalRead(accSW) == LOW){ xProcessed = ((10 * cos(0.01 * xCalied)) - 10 + xCalied) / 10; yProcessed = ((10 * cos(0.01 * yCalied)) - 10 + yCalied) / 10; }else{ xProcessed = ((10 * cos(0.01 * xCalied)) - 10 + xCalied) / 16; yProcessed = ((10 * cos(0.01 * yCalied)) - 10 + yCalied) / 16; } if (digitalRead(mainSW) ==HIGH){ mouseSwitch = 1; }else{ mouseSwitch = 0; } if (mouseSwitch ==1){ if (digitalRead(lButton) == HIGH){ Mouse.press(MOUSE_LEFT); }else{ Mouse.release(MOUSE_LEFT); } if (!(digitalRead(rButton) == HIGH && digitalRead(scrlSW) == HIGH)){ if (digitalRead(rButton) == HIGH){ Mouse.press(MOUSE_RIGHT); }else{ Mouse.release(MOUSE_RIGHT); } if (digitalRead(scrlSW) == HIGH){ Mouse.move(0, 0, xProcessed / 4); }else{ Mouse.move(yProcessed, -xProcessed); } Mouse.release(MOUSE_MIDDLE); }else{ Mouse.press(MOUSE_MIDDLE); Mouse.move(yProcessed, -xProcessed); } } if (digitalRead(zButtonSW) == HIGH){ Keyboard.press('z'); }else{ Keyboard.release('z'); } u8g.firstPage(); do{ u8g.setFont(u8g_font_7x13B); u8g.drawFrame(2, 2, 126, 62); u8g.drawStr(4, 13, "CPU Temp:"); u8g.setPrintPos(70, 12); u8g.print(CPUtemp); u8g.drawStr(4, 27, "Batt Temp:"); u8g.setPrintPos(77, 27); u8g.print(battTemp); u8g.drawStr(105, 62, "RPM"); u8g.drawLine(105, 50, 126, 50); u8g.drawLine(105, 6, 126, 6); if (fanSpeed > 0){ u8g.drawLine(108, (-(fanSpeed / 6) + 50), 123, (-(fanSpeed / 6) + 50)); } u8g.drawStr(22, 48, "[ ][ ][ ]"); if (battTemp > 50){ u8g.drawStr(29, 48, "!"); } if (digitalRead(caliButton) == HIGH){ u8g.drawStr(50, 48, "*"); } if (digitalRead(zButtonSW) == HIGH){ u8g.drawStr(73, 48, "Z"); } } while(u8g.nextPage()); }By Zephyr2552020/8/21

最近在树莓派上跑了很多奇奇怪怪的东西,于是就把gui关了省资源然后就发现不能自动挂载了先在度娘找到了这篇文章,被转载了很多次,但我自己尝试就是不成功,可见那些在17年之后转载的人自己都没试过....然后又看到了fstab的方式,但不支持热插拔,而且每个硬件都要操作一遍,不能一劳永逸;并且,关于同一个问题有多种方案,我想说"这很linux"看来度娘上就找不到这个问题的回答了,就自己去google用工地英语找找了3h,结果还是没找到能解决的方案最后看到了这篇文章接着豁然开朗稍微改了下代码sudo vi /etc/udev/rules.d/10-usbstorage.rules KERNEL!="sd*", GOTO="media_by_label_auto_mount_end" SUBSYSTEM!="block",GOTO="media_by_label_auto_mount_end" IMPORT{program}="/sbin/blkid -o udev -p %N" ENV{ID_FS_TYPE}=="", GOTO="media_by_label_auto_mount_end" ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}" ENV{ID_FS_LABEL}=="", ENV{dir_name}="Untitled-%k" ACTION=="add", ENV{mount_options}="relatime,sync" ACTION=="add", ENV{ID_FS_TYPE}=="vfat" ACTION=="add", ENV{ID_FS_TYPE}=="ntfs" ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/usr/bin/systemd-mount --no-block --collect /dev/%k /media/%E{dir_name}" ACTION=="remove", ENV{dir_name}!="", RUN+="/usr/bin/systemd-umount /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}" LABEL="media_by_label_auto_mount_end"成了!end

先放图:配置如下:CPU: Intel Atom X7-Z8750Ram: Unknown Brand,2+2GB REG ECC DDR3 1600MHz(这个REG ECC也不知道是不是真的...)Storage: Sandisk DF4064 (62GB) (大概就是块机械硬盘的水平了,唯一的优点就是这玩意是固态的)两周前(大概)为了搞一个UMPC从万能的tb买了一块神秘Win10主板,本来想着拿到手之后拿软件测一下型号再Bing一下就能弄到电路图了,谁知道这玩意系统被重装过,连Bios也不是原装的,所以完全找不到任何资料...那就只好我自己来搞事了www搞事的结果就是翻车了...这玩意原本有两个USB Type-A接口,然而有一个看起来像是被烧过一次,并且只能供电而无法传输数据,于是...拆了!然后花了半天尝试着比较文明地拆焊,然而有⑨根针脚的USB3.0接口并不是那么容易拆的,最后还是用钳子暴力扯下来了-场景过于残忍所以就不放图了-然而扯下来之后新的也焊不上去(所有孔都被锡堵住了,而且拒绝被我的吸焊带带走)结果就是翻车了...于是现在就只剩一个USB-A了,只能寄希望于旁边的Micro USB 3.0能用吧...(其实旁边还有个12Pin接口,标着USB,然而我不知道定义也不敢去乱动...)硬件不敢动了(其实是懒),那就去开个机跑下吧先跑下国际象棋...(我就是要手机拍屏.jpg)这个确实有点逊,但还算是能用吧Aida64稳定性测试跑一发(忘记截图了,所以假装这有张图吧)总之跑出来最高功耗8W,不错...但是这个温度为什么会稳定在80℃?而且手摸散热片一点也不烫?拆了!铜&铝夹水泥硅脂...绝了!(CPU上这坨水泥又耗了我半天用棉签蘸酒精擦)拆完之后...用钢丝球搓一搓,再上砂纸,总算看起来还不错了MX4硅脂还没到,等它和其他的转接头扩展坞到了之后再写一发吧...By Estionmic Shen2020/8/10 15:29