0%

ESP32是一款非常优秀的双核SOC,集成了WiFi和Bluetooth功能,硬件资源丰富,有很多玩法,但是缺点是GPIO数量不是很多,在实现一些复杂外设的时候,GPIO明显不够。可以通过总线扩展ESP32的GPIO,ESP32集成了多种总线如SPI,UART,I2S,I2C等。这里通过74HC595移位寄存器和I2S总线为例来说明。

阅读全文 »

GitHub网络不稳定,经常超时,有时候能访问,有时候突然就卡住了,试好多次还是不行,但是好的时候还挺快,这说明了一个问题,啥问题自己体会。本着自己动手丰衣足食的原则,要科学地上网。

根据上面的现象,猜测是DNS污染,为了验证这个假设,手动绑定域名和IP进行实验。

  1. 想绑定IP就得找到github.com对应的IP地址,这就需要一些探测工具,例如这个,
    打开这个网页版IP查询工具,在下面检测结果中按响应时间排序,选择响应时间最小的一个IP(尽量选国外的节点)。
    里面还有些响应时间超长的,超时的,你懂了吧。

  2. 更新hosts文件添加一行,如140.82.121.4 github.com 把这个IP换成你从刚才查询的那个IP,保存。

现在访问试试,是不是非常快乐呢?

hosts绑定还支持多个IP,我写了一个js工具,用于将上面链接的数据抽取转化为hosts列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
* 把这段代码放入上面链接的页面的console中执行
*/
// 抽取元素,页面集成了jquery
var ips = $('#speedlist .row')
.map(function(index, row){
var ip = $(row).find('[name=ip]').text();
var address = $(row).find('[name=address]').text();
var responsetime = $(row).find('[name=responsetime]').text();
return {
ip:ip,
address:address,
responsetime:responsetime
}

})

ips = $.makeArray(ips) // 转为数组
ips.shift() // 去掉头部
ips = ips.filter(function(el){ // 过滤超时
return el.responsetime!='超时' && el.ip != '超时(重试)'
})
.sort(function (a, b) {return a.responsetime<b.responsetime}) // 排序
.map(function(el){return el.ip}) // 只要IP
.unique() // 唯一
.map(function(el){return el+' github.com'}) // 生成hosts项

console.log(ips.join('\n')) // 输出

步进电机是靠脉冲驱动的,接收一个脉冲,步进电机就会转动一定角度。使用步进电机驱动机械运动,首先需要确定的就是每走一段距离发送多少个脉冲。
由于传动结构的存在使得计算变得比较麻烦,我做了一个小工具,用来简化计算。

阅读全文 »

电路板PCB完成之后需要进行贴片和焊接,贴片往往会用到钢网或丝网进行上锡膏,但是这两种方式要么成本高,要么制作复杂,有没有更好的方式给PCB上锡膏呢?今天就给大家介绍一种通过小型激光雕刻机和塑料薄片制作PCB激光网的方法。

阅读全文 »

好久没有写过博客了,开通这个静态博客,给自己留一个地方,放自己想写的东西。记录生活点滴。

这个博客由hexo搭建,使用了next主题,Pisces布局。简洁的界面,比较适合我。hexo是用js编写的静态博客生成工具,可以直接使用npm安装。

配置成中文比较简单,在站点配置文件里设置language: zk-CN(不是zh-Hans)就行。