最近想着做一个FC的游戏机,重现一下儿时玩游戏的场景,既然游戏机都自己做了,顺便也做个手柄,做手柄之前需要先了解手柄的工作原理,本文详细解析了小霸王游戏机手柄的接口及电路原理,如何通过CD4021芯片实现数据的并行到串行转换,以及按键状态的读取。
小霸王游戏机可以说是陪伴了我们大半个童年,还记得小时候和朋友同学们一起玩小霸王游戏机时的兴奋。
自己动手制作console线
如果需要通过console线配置交换机,但是手头又没有现成的电缆,怎么办?
自己动手,丰衣足食。做一根console线就可以了。为了要做console线,就需要了解DB9和RJ45口针脚的定义。
下面首先看两种接口的针脚功能定义图:
串口数据传输指示灯电路(纯硬件实现)
基于Windows安装opus python库
最近想体验小智AI使用python实现需要用到opus的开源库。网址:Opus Codec
运行报错!在这里记录一下解决过程过程
安装python库
1 | pip3 install opuslib |
验证安装
1 | >>> import opuslib |
报错了,应该是没有对应的dll文件,没有opus的库那就自己编译一个吧。
python实用项目(1)-使用python批量修改照片分辨率
项目需求:
使用python遍历某个文件夹及子文件夹下所有照片,并将分辨率大于设定像素的照片找出来处理成设定的像素大小,并将处理好的图片放到设定的文件夹下,并且图片的目录结构要和之前一致
项目实现
需要用到Pillow,Pillow 是 Python 中最流行的图像处理库之一,它是 PIL(Python Imaging Library) 的现代分支,支持多种图像格式的打开、编辑和保存。它广泛应用于图像处理、自动化批处理、网页开发(如缩略图生成)等领域。
1. Pillow 的主要功能
- 打开/保存多种图像格式(JPEG、PNG、GIF、BMP、TIFF 等)
- 基本图像操作(裁剪、旋转、缩放、翻转)
- 图像增强(调整亮度、对比度、锐化、模糊)
- 绘制图形和文字(可用于生成水印或标注)
- 颜色处理(RGB 转换、滤镜应用)
- 支持图像序列(GIF/WebP 动画)
解决在WSL中使用Ubuntu系统基于pyqt5开发软件时创建窗体失败的问题
使用WSL中的Ubuntu系统做开发时安装的xfce桌面,但是在使用PYQT5时出现下面问题1
2
3
4
5
6
7iotts@IOTTS:~/Desktop$ python pyqt5.py
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Aborted (core dumped)
我先来查看一下系统使用的显示框架
查看 Ubuntu 使用的是 X11 还是 Wayland 显示框架,你可以通过以下几种方法来确定:
查看环境变量:在终端中输入以下命令查看当前的显示服务器:1
echo $XDG_SESSION_TYPE
如果输出 x11,则表示当前会话使用的是 X11;如果输出 wayland,则表示当前会话使用的是 Wayland。
在登录界面查看:在登录界面,点击用户名旁边的齿轮图标,选择不同的显示服务器(会显示为“Ubuntu”或“Ubuntu on Xorg”)。选择“Ubuntu on Xorg”使用的是 X11,而“Ubuntu”通常使用 Wayland。
通过日志文件查看:你可以查看系统日志文件来确认使用的显示服务器。在终端中输入以下命令:1
cat /var/log/Xorg.0.log
如果文件存在,表示系统正在使用 X11。对于 Wayland,你可以查看 journalctl 的输出:1
journalctl | grep -i wayland
如果有 Wayland 相关的日志信息出现,说明系统正在使用 Wayland。
在Ubuntu上,xcb是X11协议的C语言接口库,通常在安装图形界面时会默认安装。如果你需要手动安装或确保已安装xcb,可以使用以下命令:
打开终端。
使用以下命令安装 xcb 相关的开发库:1
sudo apt-get update
1
sudo apt-get install libxcb1-dev libxcb-util0-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
这些命令会更新你的软件包列表并安装xcb及其一些常用的依赖库。如果你只是需要运行X11应用程序,可能不需要安装所有这些开发库,但安装它们可以确保你有一个完整的开发环境。
STM32HAL库移植FreeModbus协议
简述
Modbus是一个非常好用的通讯协议,经常用在串口通讯中,也可以用在网口。它既简洁又规范,尤其在工业中应用非常广泛。Modbus的程序实现也比较简单,用户可以自己实现,也可以移植开源的协议代码,比如今天要介绍的FreeModbus。
硬件环境:STM32F103C8T6
软件环境:STM32CubeMXv6.1.1
HAL库:STM32CubeF1Firmware Package V1.8.3
FreeModbus版本:freemodbus-v1.6
freemodbus下载地址:https://github.com/cwalter-at/freemodbus
FreeModbus文件说明
下载之后解压出来,可以看到文件夹内包含以下内容。我们需要关注的只有modbus文件夹和demo下的BARE文件夹。modbus文件夹下是协议的具体代码。Demo->BARE文件夹下是接口文件,需要用户进行移植和修改的。
Node-RED应用-Modbus通信
概述
Modbus 通信协议
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
通俗的讲,Modbus的本质就是通过寄存器、线圈与其它设备交换数据。
Modbus分类
- Modbus TCP
- Modbus RTU
- Modbus ASCII
Modbus是一簇协议,包含RTU、TCP、ASCII,Modbus并没有规定物理层。标准的Modicon控制器使用RS232C实现串行的Modbus协议。ASCII与RTU协议规定了信息、数据的结构、命令和应答的方式,采用Master/Slave方式,即Master端发出数据请求信息,Slave端接收到正确信息后就可以发送数据到Master端以响应请求;Master端也可以直接发送信息修改Slave端的数据,实现双向读写。
Modbus协议会对数据数据进行校验,ASCII采用LRC校验,RTU采用16位CRC校验,TCP由于可靠传输无需校验。
这三者的具体实现也有会所不同,TCP与RTU方式差别较小,具体参照详细。
总的来说Modbus TCP/RTU/ASCII这三者是Modbus协议的具体实现。最显而易见的就是,TCP通过以太网传输,RTU通过RS232C或RS422/RS485传输。
物联网神器Node-Red安装及设置用户密码登录详细过程
Node-Red 非常厉害的物联网工具,基于流操作,可以处理各种各样的网络协议和网络操作,至于他的介绍我这里就不详述。只大概描述一下我的安装过程,主要是记录设置用户密码详细过程。
安装(操作系统 ubuntu 24.04 LTS)
基于物理机安装
1 | sudo apt update |
1 | curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\ |
1 | sudo apt-get install -y nodejs |
1 | sudo apt install npm |
1 | sudo npm install -g --unsafe-perm node-red |
基于docker
1 | mkdir /home/iotts/node_red |
开机自启动
物理机安装的话需要设置开机自启
Debian系统终端配置静态IP及DNS
一、debian配置静态ip 生效
在Linux系统中,配置静态IP可以确保网络连接的稳定性和安全性。为了使debian配置静态IP生效,需要先检查系统上是否安装network-manager或ifupdown这两个网络管理工具。如果未安装,可以通过以下命令进行安装:
1 | sudo apt-get install network-manager # 安装network-manager |
接下来,需要修改网络配置文件。
以使用network-manager为例,需要修改/etc/network/interfaces.wlan0文件:
1 | sudo nano /etc/network/interfaces.wlan0 # 打开配置文件 |
在文件中添加以下内容,注意将相应的IP地址、网关等修改为自己的网络信息:
1 | auto wlan0 |
保存文件后,执行以下命令以使配置生效: