自组的NAS一直跑着黑群晖,前几天接到停电的通知,提前关机等来电再开机结果几个盘的系统分区都损坏,修复不管用。能进DSM但是系统但是总有报警。以前意外断电N次都没出过这个问题。干脆就装个ESXI虚拟黑群,还能干点其他的。用了添加了驱动的esxi6.7u2 来源地址 [https://www.chiphell.com/thread-1925598-1-1.html]
安装完成后虚拟DSM和Debian没问题,因为都是EFI引导。但是在ikuai和lede的时候BIOS引导直接黑屏无法安装。最后通过winPE写img的方式装了lede,同样的方式ikuai不行,又只能用U盘efi启动安装了ikuai,来回折腾了两个晚上。现在就等淘的4口千兆卡到了就可以正式开启软路由,原来的路由当AP用。
虽然多在windows下用,但是偶尔也会用到Linux。记录一下,免得搞忘了。
esp8266和micropytho配合相当不错,Linux下刷固件的工具主要就是esptool.py,直接pip安装
擦除sudo esptool.py --port /dev/ttyUSB0 erase_flash
刷固件
sudo esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20190125-v1.10.bin
串口工具用picocom,方便简单。sudo picocom /dev/ttyUSB0 -b 115200
其实在linux更方便一些吧,也可以更专注一些。
因为家里人经常忘带钥匙,结果就是要么我去送钥匙、要么他们来拿钥匙。一直想换智能门锁,家里是老式防盗门,淘了很久也没遇到合适的,反正就只需要一个远程开门的功能就行,指纹密码啥的不是刚需。这些年零零散散的淘了很多电子配件,一直都没怎么用,索性自己弄一个吧。
ESP12-F刷micropython,连接MQTT服务器控制步进电机的运动,通过机械结构拉开门锁(相当于是室内的人开门)。通过手机上的mqtt应用来实现远程开门。前提需要自建MQTT服务器,通过SSL认证和用户密码认证保证安全。还需要3D打印机做一些安装支架。
阅读剩余部分...
为了驱动步进电机,找了N多源码,有些太过高深看不懂,所以找了个相对简单的(这里)改了一下,实测能驱动28BYJ-48,采用的ULN2003APG驱动板。
import time
from machine import Pin
speed = 2
STEPER_ROUND=512 #转动一圈(360度)的周期
ANGLE_PER_ROUND=STEPER_ROUND/360 #转动1度的周期
#print('ANGLE_PER_ROUND:',ANGLE_PER_ROUND)
p1 = Pin(16, Pin.OUT, value=0)
p2 = Pin(14, Pin.OUT, value=0)
p3 = Pin(12, Pin.OUT, value=0)
p4 = Pin(13, Pin.OUT, value=0)
def Front():
global speed
p1.value(1)
p2.value(1)
p3.value(0)
p4.value(0)
time.sleep_ms(speed)
p1.value(0)
p2.value(1)
p3.value(1)
p4.value(0)
time.sleep_ms(speed)
p1.value(0)
p2.value(0)
p3.value(1)
p4.value(1)
time.sleep_ms(speed)
p1.value(1)
p2.value(0)
p3.value(0)
p4.value(1)
time.sleep_ms(speed)
def Back():
global speed
p1.value(1)
p2.value(1)
p3.value(0)
p4.value(0)
time.sleep_ms(speed)
p1.value(1)
p2.value(0)
p3.value(0)
p4.value(1)
time.sleep_ms(speed)
p1.value(0)
p2.value(0)
p3.value(1)
p4.value(1)
time.sleep_ms(speed)
p1.value(0)
p2.value(1)
p3.value(1)
p4.value(0)
time.sleep_ms(speed)
def Stop():
p1.value(0)
p2.value(0)
p3.value(0)
p4.value(0)
def Run(angle):
global ANGLE_PER_ROUND
val=ANGLE_PER_ROUND*abs(angle)
if(angle>0):
for i in range(0,val):
Front()
else:
for i in range(0,val):
Back()
angle = 0
Stop()
def main():
SteperRun(180)
SteperRun(-180)