Chin's BBBlog 
  • 首页
  • 标签
  • 关于
  • 友链
  •     

ESP8266(NodeMCU) with ESPHome

下述内容对ESP32(NodeMCU)也适用, ESP32比ESP8266多了蓝牙功能也提供了更多IO口. 注意ESP8266与ESP32可以使用5V电源, 但是IO口输入输出建议不要高于3.3V. ESP8266是一款集成了WiFi的单片机, 可以用C/Lua(NodeMCU)/Python(MicroPython)进行硬件编程.使用ESPHome可以在不编程的情况下对其进行设置(其实是写入ESPHome官方写好的针对各种ESP8266使用情景的程序). ESPHome安装 OS: Deepin Linux 15.11 Desktop. ESPHome基于Python, 可以用pip安装(也可以用Docker直接跑装好ESPHome的镜像). sudo apt install python-pip sudo pip install esphome 安装好后启动ESPHome会返回一个端口(6052), 将ESP8266(NodeMCU)用USB线连入电脑, 用浏览器进入即可可视化配置ESP8266.当然第一次上传好了ESPHome的固件后就可以通过局域网WiFi对ESP8266
software  单片机  hardware  ESP 

Arduino Nano存储数据于EEPROM

Arduino等单片机运行时采集的数据大多在寄存器以及动态存储(“内存”)中, 掉电就会丢失. 为了保存这些数据, 需要将其保存到静态存储(“硬盘”/“SD卡”/…)中. Arduino Nano自带1kb的EEPROM, 掉电后其中数据不会丢失. Arduino库中有头文件EEPROM.h, 其中定义了读写EEPROM的两个函数, 注意这两个函数只能对单字节数据进行读取, 而int占据了2个字节, long float double占据了4个字节乃至8个字节. 解决方法可以是直接读写每个字节的地址, 也可以使用共同体来进行转换. #include<EEPROM.h> EEPROM.begin(1024); 写操作EEPROM.write(address,byte); // address取0~1023(与EEPROM.begin对应, 不要大于硬件中EEPROM的容量) 读操作EEPROM.read(address); // address取0~1023(与EEPROM.begin对应, 不要大于硬件中EEPROM的容量) 字节数据转换示例使用地址long d; uint
单片机  hardware 

硬盘崩了及其修复

唠唠嗑最近有一大堆资料要看, 因为懒得每次关机开机后要重新打开这么多东西, 我开启了Deepin的休眠功能. 在休眠后的我又用Win10进入了自己的电脑, 删除了两系统共用的资料盘的部分内容. 再切回Deepin系统后, 发现Deepin竟然没有”更新”, 依然能够看到原该被删除的东西却无法打开, 但是却找不到Win10下新写入的文件. 然后我就又在Deepin里面”删除”了一遍那些文件(虽然一直报错). 等我切回Win10系统后, 发现那些在Deepin里没看到的内容又回来了, 但是资料盘中部分文件无法打开了. 所以下次记得不要用其它系统随便打扰休眠系统管控的硬盘! 解决方案 Win10系统. 利用Windows自带的chkdsk工具来修复硬盘及其上文件. 右键Win10的开始键, 打开powershell(管理员), 在其中输入: chkdsk /f D: 其中f参数给chkdsk写入硬盘权限, 没有/f的话只会检查并返回硬盘有无错误却不修复, D:为出错的资料盘.
Windows 

用立创EDA等制作双层PCB

本文不涉及PCB电路原理知识, 只是概述PCB从想法变成实物的过程(主要是EDA), 重点说明立创EDA的使用(这是国产EDA软件中目前唯一好用的软件). 立创EDA官网:https://lceda.cn/, 需要注册账号, 可以用在线版的(需要Chrome或者Firefox浏览器)或者下载客户端. 原理图绘制新建一个工程. 去开源平台搜索有没有与自己目标产品类似功能/线路的PCB, 有的话另存入我们的工程, 直接打开在其上修改, 没有的话新建原理图. 在左侧栏的元件库与立创商城中查找到自己需要用到的元件, 有需要的话可以右键查看规格书来查找其电气特性等. 在原理图中摆放好(快捷键R旋转). 对于从开源平台上copy来的原理图, 可以右键查找相似对象/修改器件. 随后按快捷键W布线, 按快捷键N添加网络标签(相同名称的网络标签是用导线连着的, 但是原理图中不会画出). 双击文字可以修改元件引脚说明或者网络表情的名称, 可以在电气工具处添加Vcc/Gnd等. 画完后Ctrl+S保存, 在上面菜单中选择原理图转PCB或者更新PCB. PCB绘制 一般建议线宽与线距不小于10mil, 最
software  EDA 

Book to Kindle

用Kindle看亚马逊商店里的书还好, 但是用它看网页上在线阅读的书籍或者txt格式的文档体验就不怎么样了.当然你可以直接在网上查找mobi格式的资源并下载, 但是资源毕竟没有这么好找(况且我们怎么可以这么Low呢!!). 我们可以换个思路, 将网页上的小说抓取出来, 自行生成mobi格式文档供Kindle享用. OS: Deepin Linux 15.11 stable 抓取书籍内容前段时间随手翻到了一本叫《南宋第一卧底》的网文, 就用它来开开牙祭吧. 在度娘上搜索到了包含这本书的一个在线阅读网站, 其中这本书的网址为https://www.booktxt.com/20_20966/. 用wget递归下载下所有的章节页面. wget -r https://www.booktxt.com/20_20966/\* 然后就发现wget要把整个网站都下下来… 如果发现wget下载的已经不是”20_20966/…”的网页, 那说明已经下载完当前书籍了, 直接中止下载.进入www.booktxt.com/20_20966/目录随便cat出一个网页的内容看看(比如cat index.html)
software  shell 

Arduino伪多线程时钟chrono

使用情景简介Chrono包用于在Arduino C代码中创建一个独立于主程序(setup()与loop())的计时器, 从而实现代码块的执行不受(少受)上游代码块的影响. 比如要不停得接收电脑发送的控制信息并更新LED闪烁频率/亮度, 电脑并不一定每个闪烁循环都发送信息, 而且发送的信息长度也可能不一样, Arduino读取信息所需要的时间也不一样. 这样事实上造成了LED闪烁的周期并不是我们delay()的时间, 而是随着串口发送信息的有无与数量不断变化. 此时可以用chrono代替delay(), 起到准确定时的功能. 安装进入Arduino Library(GNU/Linux系统常在~/Arduino/libraries), 下载解压好Chrono即可, 也可以用git. git clone https://github.com/SofaPirate/Chrono.git 使用#include<Chrono.h> Chrono chrono名; // 创建chrono定时器 chrono名.start; // 开始计时 chrono名.restart; // 重
单片机  hardware 

cutecom串口调试工具

OS: Deepin Linux 15.11 Desktop 安装使用sudo apt install cutecom 开启cutecom后(命令cutecom)可以可视化地选择串口及其参数, 设定传输与接收数据的格式(几进制/字符与字符集), 并且可以指定文件传输/记录log. Arduino串口操作Arduino的Serial是与USB口相连的串口, 可以直接与电脑通信, 而对于Arduino Leonardo等用相同MCU的板子, 在D0与D1处还有另外一对串口Serial1(将代码中的Serial替换为Serial1就可以控制它), 其余MCU的Arduino的D0与D1的串口与USB是相连的. 串口常用操作: Serial.begin(波特率); // 开启串口 // 读 Serial.available(); // 返回0或1 Serial.readBytes(数组名,字节数); // 读取指定长度数据 Serial.read(变量名); // 读取一个字符 // 写 Serial.write(); //默认以二进制数字输出 Serial.print(); Ser
software  单片机 

手机给电脑做触控板

最近找了一条HDMI线把电脑连到电视上享受大屏, 然而没有无线的键鼠控制电脑很不方便. 最近找到了一款对应的软件可以将手机模拟为键鼠操控电脑, 也算是一种不错的解决方案. 在http://wifimouse.necta.us/#download下载对应的手机/电脑端版本并安装. 我的系统是Deepin, 下载了Debian的mouse server, gdebi安装. 终端中输入mouseserver运行, 输出监听的端口1978, 用ufw放行sudo ufw allow 1978, ifconfig查看电脑IP并且输入手机app中(手机电脑在同一wifi下), 就可以连接, 然后就能使用了, 多指的触控手势也是支持的. sudo apt update sudo apt install -y ufw gdebi-core wget cd ~/Downloads wget http://wifimouse.necta.us/apk/mouseserver-64.deb sudo gdebi mouseserver-64.deb mouseserver # 查找使用的端口 sudo uf
software 

树莓派搭建百度网盘下载服务

没钱供百度网盘的会员, 下载网盘中的资源总是龟速, 又不忍心电脑常开. 既然如此就让比较便宜的树莓派代替它吧! BaiduPCS Go安装配置 详见这篇微信推文. 去https://github.com/liuzhuoling2011/baidupcs-web/releases下载最新版本的BaiduPCS Go, 我用的是运行Raspbian的树莓派zero, 因此下载的是linux-arm版本(arm32位), 解压后找到的BaiduPCS-Go文件, 上传到树莓派中.然后chmod 755 /BaiduPCS/Go/文件路径来赋予之执行权限. 在/usr/local/bin中创建文件baidupcs, 同样sudo chmod 755 /usr/local/bin/baidupcs, 向其中写入: /BaiduPCS/Go/文件路径 web --access > /dev/null & 其中web --access允许网络上的主机访问BaiduPCS Go, > /dev/null将原本输出到pty(我用ssh登录的)的程序日志重定向到null文件以删除之(
server  software  card computer 

OpenSCAD初学/语法

入门建议 去http://www.openscad.org/downloads.html下载安装OpenSCAD. 要是会一点C就好了. 许多参数可以在最开始申明, 后面默认引用, 便于修改. 善用变量. 善用module name(){}组合打包位置需要微调实体. 接上, 可以用children()指代被控制的实体. 善用hull(){}给实体蒙皮. 用$fn参数增大弧形计算精度. 在函数前加#以高亮函数生成的实体, 便于观察调试. 用%隐藏实体. 在文件开头用use <...>引用其它文件中的module. $vpr=[,,]设定初始视角. 基础实体创建基础实体函数 如果没有translate(), 实体生成起始点为[0,0,0], 没有center=true的参数的话起始点不一定为实体中心. import(“path to stl files”)导入文件为实体. 二维square(x)或者square([x,y])从起始点向x/y轴正方向构建正方形或者长方形. polygon(points=[[x1,y1],[x2,y2],…])circle(r)以起始点为圆心构
software  CAD 
1…45678

搜索

Hexo Fluid