<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>沉默流光</title><link>https://www.zhuzhuangtian.top/</link><description>记录平凡人生</description><item><title>ESP-IDF Docker环境编译micropython流程记录</title><link>https://www.zhuzhuangtian.top/?id=12</link><description>&lt;p&gt;之前一直使用PlatformIO中的Arduino框架开发ESP32项目，环境配置好之后使用起来还是比较方便的&lt;/p&gt;&lt;p&gt;最近的项目中需要在ESP32上使用micropython进行开发，很多库文件都直接用mpython编写，以单独文件形式发布的话较为麻烦，并且存在误删误改和版本控制的问题，所以想把这些py模块打包进固件里。搜索之后发现打包其实很容易，只需要把py文件添加到micropython项目中一个叫modules的文件夹内，编译后的固件就包含了相应的库，可以直接在代码中import，且源代码是不可见的，代码安全性更高。但在配置micropython的编译环境过程中遇到了很多坑，在这里记录一下&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;p&gt;ESP-IDF是支持windows、linux和mac os的，但是网上大多数教程推荐在Ubuntu系统下搭建环境，因为自己的本地电脑都是windows系统，心想只是跑个编译，懒得再装ubuntu，腾讯云的轻量服务器是centos7，于是打算在云端部署esp-idf环境，踩坑就此开始&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;问题根源在于esp-idf的版本众多，且并不向下兼容。目前常用的大版本有v4.4、v5.0、v5.1、v5.2等，同时不同版本的micropython对esp-idf的依赖也不同，一开始完全没有注意到这个问题，导致走了很多弯路，一定要仔细看micropython中ESP32平台的编译环境要求。&lt;a href=&quot;https://gitee.com/mirrors/micropython/tree/master/ports/esp32&quot;&gt;Gitee 极速下载/micropython - Gitee.com&lt;/a&gt;&amp;nbsp;v1.22-release版本的micropython支持下面这几个版本的esp-idf。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.zhuzhuangtian.top/zb_users/upload/2024/03/202403311711865555315802.png&quot; alt=&quot;1cd398becb9d44a43b92387a6188bc8.png&quot; width=&quot;784&quot; height=&quot;115&quot; style=&quot;width: 784px; height: 115px;&quot;/&gt;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;在安装环境过程中，还遇到了python版本的问题，GLIBC、GLIBCXX版本的问题，好不容易在服务器上源码编译安装了所有依赖，成功装上了esp-idf，但编译micropython仍然不通过。这时候想到是否有docker环境可以直接用，又是一通搜索终于在esp-idf官方文档中找到docker相关的内容。必须吐槽一下官方文档中这部分内容放在API指南-工具下面，在安装说明部分只字未提，要不是搜索鬼才能发现。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/tools/idf-docker-image.html&quot;&gt;IDF Docker 镜像 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com)&lt;/a&gt;&amp;nbsp;按照这个指南装好docker，那么该使用哪个版本的镜像呢？需要根据micropython的依赖，到espressif/idf官方dockerhub中去找合适的版本。必须小版本也对上，比如要求v5.1.2找v5.1的镜像是不行的，否在还是会有些编译上的小问题&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;准备好esp-idf的docker后，使用下面命令进入到交互模式&lt;/p&gt;&lt;span style=&quot;color: #ECEFF1; background: #263238;&quot;&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;docker&amp;nbsp;run&amp;nbsp;--rm&amp;nbsp;-v&amp;nbsp;$HOME:$HOME&amp;nbsp;-w&amp;nbsp;$PWD&amp;nbsp;-u&amp;nbsp;$UID&amp;nbsp;&amp;nbsp;-it&amp;nbsp;espressif/idf:v5.0.4&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;在micropython的git仓库中切换到指定的分支，如v1.22-release，按下面指南进行编译&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.zhuzhuangtian.top/zb_users/upload/2024/03/202403311711865719181390.png&quot; alt=&quot;image.png&quot;/&gt;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;经过实测，v5.0.4的esp-idf能够成功编译v1.22-release的micropython固件。&lt;span style=&quot;text-wrap: wrap;&quot;&gt;我使用的ESP32是ESP32-WROOM-D模组，4M大小的FLASH没有PSRAM，默认设置即可，如果是ESP32-S3、C3或其他版本，需要额外附加配置。编译好的固件位于/ports/esp32/build-ESP32_GENERIC，文件名为firmware.bin&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;最后就是将编译好的固件下载到本地，通过esptools或thonny进行烧录。&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;</description><pubDate>Sun, 31 Mar 2024 13:32:40 +0800</pubDate></item><item><title>Python实用脚本记录</title><link>https://www.zhuzhuangtian.top/?id=11</link><description>&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;p&gt;自动清理微信接收文件中的重复文件。在微信中，同一个文件发给10个人，就会产生10个副本，经常群发文件时会产生大量的重复文件，可以用下面的脚本清理&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre class=&quot;prism-highlight prism-language-python&quot;&gt;import&amp;nbsp;os
import&amp;nbsp;re

filename_regex&amp;nbsp;=&amp;nbsp;re.compile(r&amp;#39;.*\(\d+\)\..*&amp;#39;)
#&amp;nbsp;将下面的路径替换为你自己的微信文件夹路径
wechat_file_path&amp;nbsp;=&amp;nbsp;&amp;quot;C:\\Users\\Administrator\\Documents\\WeChat&amp;nbsp;Files\\wdxzz945\\FileStorage\\File&amp;quot;
file_list&amp;nbsp;=&amp;nbsp;os.listdir(wechat_file_path)
print(&amp;#39;\n&amp;#39;&amp;nbsp;+&amp;nbsp;&amp;#39;*&amp;#39;&amp;nbsp;*&amp;nbsp;50&amp;nbsp;+&amp;nbsp;&amp;#39;\n&amp;#39;)
cnt=0
for&amp;nbsp;dir_&amp;nbsp;in&amp;nbsp;file_list:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;os.path.isdir(os.path.join(wechat_file_path,dir_)):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;i&amp;nbsp;in&amp;nbsp;os.listdir(os.path.join(wechat_file_path,dir_)):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;temp&amp;nbsp;=&amp;nbsp;filename_regex.search(i)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;temp&amp;nbsp;!=&amp;nbsp;None:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;del_path&amp;nbsp;=&amp;nbsp;os.path.join(wechat_file_path,dir_,temp.group())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(del_path)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;os.chmod(del_path,0o666)&amp;nbsp;#&amp;nbsp;&amp;nbsp;去掉文件只读属性
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;os.remove(del_path)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;永久删除指定路径的文件
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cnt+=1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;except&amp;nbsp;Exception&amp;nbsp;as&amp;nbsp;e:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(&amp;#39;未删除&amp;#39;)
print(&amp;#39;共删除%d个重复文件&amp;#39;%cnt)
print(&amp;#39;\n&amp;#39;&amp;nbsp;+&amp;nbsp;&amp;#39;*&amp;#39;&amp;nbsp;*&amp;nbsp;50)&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 30 Dec 2023 16:16:52 +0800</pubDate></item><item><title>VSCode+PlatformIO环境配置方法</title><link>https://www.zhuzhuangtian.top/?id=10</link><description>&lt;p&gt;使用PlatformIO开发Arduino板子，包括ESP32\8266等整体流程还是比较舒服的，主要编译下载的速度确实比ArduinoIDE要快的多，但是最初的开发环境配置实在是让人头大。&lt;/p&gt;&lt;p&gt;之前安装PlatformIO的时候就遇到过下载慢，装半天装不上的问题，尤其是下载ESP32、8266的依赖文件、工具链等，没有几个小时下不来。&lt;/p&gt;&lt;p&gt;这次重新走了一遍流程，记录一下其中的一些关键点。&lt;/p&gt;&lt;p&gt;首先PlatformIO在VSCode中的扩展分为两个部分，一是vscode插件本身，这个直接在插件管理器中安装即可，二是platformio core，这是一系列Python工具。&lt;/p&gt;&lt;p&gt;正常来说安装插件后会自动下载安装platformio core，包括下载一个Python解释器、创建一个虚拟环境、安装必要的依赖模块等（也有可能不会自动安装python，在我另一台电脑上安装时必须手动指定Python解释器的位置）&lt;/p&gt;&lt;p&gt;但不知道是因为网络原因还是服务器原因，第一次安装的时候卡了很久没动静，然后一直报网络连接错误（错误信息来自urllib中的响应超时）&lt;/p&gt;&lt;p&gt;最终采用以下方法成功安装：&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;p&gt;vscode中正常安装PlatformIO插件&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;侧边栏里点击PlatformIO的图标，接着自动开始安装platformio core（以下简称core）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;这一步通常是成功不了的，如果直接自动安装成功了那最好，出现报错、卡住不动再往下走，手动安装&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;电脑上首先需要有Python环境，理论上3.6以上版本都可以。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;创建一个干净的虚拟环境:&lt;/p&gt;&lt;/li&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: lower-alpha;&quot;&gt;&lt;li&gt;&lt;p&gt;在当前用户主目录下创建一个.platformio文件夹，打开Powershell&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;在当前用户主目录下创建一个.platformio文件夹，打开Powershell，创建一个python虚拟环境
PS&amp;nbsp;C:\Users\57658\.platformio&amp;gt;&amp;nbsp;python&amp;nbsp;-m&amp;nbsp;venv&amp;nbsp;pyenv
#&amp;nbsp;激活虚拟环境
PS&amp;nbsp;C:\Users\57658\.platformio&amp;gt;&amp;nbsp;.\pyenv\Scripts\activate&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#如果激活虚拟环境报错，用管理员权限运行Powershell，运行&amp;nbsp;Set-ExecutionPolicy&amp;nbsp;RemoteSigned&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#pip安装platformio&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pip&amp;nbsp;install&amp;nbsp;platformio&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;p&gt;&amp;nbsp;等待安装完成后，将pyenv\Scripts目录添加到环境变量中&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;重启Powershell，输入pio 回车，如果成功执行，输出提示信息，说明安装成功。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;重新启动vscode，会再次显示正在安装platformio core，不要慌，稍等十几秒钟就显示安装成功了，在左侧边栏中点击Open即可看到PIO的主页，本质上就是个web应用，即使不用vscode，在Powershell中运行pio home，也会自动在浏览器中打开这个页面&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://www.zhuzhuangtian.top/zb_users/upload/2023/10/202310251698238281904398.png&quot; alt=&quot;image.png&quot; width=&quot;1066&quot; height=&quot;583&quot; style=&quot;text-wrap: wrap; width: 1066px; height: 583px;&quot;/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;安装ESP32、8266的开发工具链&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: lower-alpha;&quot;&gt;&lt;li&gt;&lt;p&gt;在创建项目之前，建议先安装好相应的平台依赖。通过命令安装比通过GUI操作要快得多，无需挂梯子，能看到安装进度，跟正常pip安装模块差不多的速度。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;参考 &lt;a href=&quot;https://registry.platformio.org/platforms/platformio/espressif32/installation&quot;&gt;Installation · platformio/espressif32 – PlatformIO Registry&lt;/a&gt;&amp;nbsp;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;通过命令安装&lt;/p&gt;&lt;/li&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: lower-roman;&quot;&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pio&amp;nbsp;pkg&amp;nbsp;install&amp;nbsp;--global&amp;nbsp;--platform&amp;nbsp;&amp;quot;platformio/espressif32@^6.4.0&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;p&gt;之前我把platform、package文件存在了百度网盘，所以这次就直接从网盘下载下来，同样放到.platformio文件夹下即可使用&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;安装第三方库&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: lower-alpha;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;在GUI里的库管理器中找到相应的库后，可以直接add to project。如果这样操作不行，可以在&lt;strong&gt;项目文件夹内&lt;/strong&gt;运行pio命令来安装&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;在这里可以搜到所有库 &lt;a href=&quot;https://registry.platformio.org/&quot;&gt;PlatformIO Registry – PlatformIO Registry&lt;/a&gt;&amp;nbsp;并且可以直接复制安装命令到终端中运行，简直优雅，比用GUI不知道高到哪里去&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;比如要安装Adafruit的INA219库，可以运行下面的命令&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pio&amp;nbsp;pkg&amp;nbsp;install&amp;nbsp;--library&amp;nbsp;&amp;quot;adafruit/Adafruit&amp;nbsp;INA219@^1.2.1&amp;quot;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;安装完成后项目的配置文件platformio.ini会自动更新，然后直接在程序中include头文件，编译上传就搞定了。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;img src=&quot;https://www.zhuzhuangtian.top/zb_users/upload/2023/10/202310251698240199341135.png&quot; alt=&quot;image.png&quot; width=&quot;1103&quot; height=&quot;644&quot; style=&quot;width: 1103px; height: 644px;&quot;/&gt;&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;最后再吐槽下PIO的这个GUI，明明同样的操作用GUI就是比用命令行慢很多，而且好像用GUI必须挂梯子才能联网，直接用CLI就不用。也不知道是VScode的问题还是PIO本身的问题。Anyway，到这里关于环境搭建的问题就记录完毕了。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;PlatformIO的定位是一个全能的嵌入式IDE，其功能还是很强大的，目前用到的仅仅是最基础的包管理、编译上传功能，更高级的调试、测试等功能后面有机会再慢慢探索吧。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 25 Oct 2023 19:31:49 +0800</pubDate></item><item><title>树莓派开机启动Python脚本</title><link>https://www.zhuzhuangtian.top/?id=9</link><description>&lt;p&gt;项目开发完成后通常需要让程序开机启动，在配置过程中踩了一些坑，记录一下配置过程。&lt;/p&gt;&lt;p&gt;基本原理是将启动Python的脚本语句添加到rc.local中，这个文件可以理解为开机自启动的脚本，默认以root用户运行，而平时开发通常用pi用户，使用pip安装的模块也都在pi用户的目录下，两者是独立的。类似于windows下为所有用户安装和仅为当前用户安装的选项。因此直接在rc.local中使用python&amp;nbsp;xxx.py来运行会出现找不到模块的错误。针对该问题有以下几种解决方式：&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;p&gt;使用sudo&amp;nbsp;pip安装模块，即为root用户安装。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;使用venv虚拟环境，在运行前激活相应环境，事实上这是最优雅的方式。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;运行时使用sudo -u&amp;nbsp;username的方式，指定用户运行python，如&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;-u&amp;nbsp;pi&amp;nbsp;python3&amp;nbsp;/home/pi/wkdir/main.py&amp;nbsp;#尽量使用绝对路径，python程序中同样需要注意相对路径问题&lt;/pre&gt;&lt;p&gt;完整的配置步骤如下&lt;/p&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;p&gt;编辑/etc/rc.local文件，在exit 0前添加使用指定用户运行Python的命令，可以把相关初始化命令写在一个startup.sh文件中统一执行。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;sudo systemctl daemon-reload&amp;nbsp;更新配置文件缓存&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;sudo&amp;nbsp;systemctl restart rc.local-service&amp;nbsp;重启自启动服务，观察是否生效&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;通过sudo systemctl status rc.local-service&amp;nbsp;观察服务运行状态，是否有错误信息&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;</description><pubDate>Mon, 14 Aug 2023 23:47:50 +0800</pubDate></item><item><title>百度EasyDL、EasyEdge平台AI开发部署全流程记录</title><link>https://www.zhuzhuangtian.top/?id=8</link><description>&lt;p&gt;挖坑待填...&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;lite modelCustom&quot; src=&quot;https://aip-static.cdn.bcebos.com/landing/pc/edge-photo-intro8463ec.jpg&quot; alt=&quot;便捷的端与边缘AI服务平台&quot; style=&quot;white-space: normal; margin: 0px; padding: 0px; box-sizing: border-box; width: 854px; object-fit: contain; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 0px; background-color: rgb(250, 250, 252); height: 252px;&quot; width=&quot;854&quot; height=&quot;252&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 30 Jan 2023 18:49:44 +0800</pubDate></item><item><title>firefly-rk3288开发板ubuntu18.04安装opencv-python</title><link>https://www.zhuzhuangtian.top/?id=7</link><description>&lt;p&gt;不要用pip安装！&lt;/p&gt;&lt;p&gt;不要用pip安装！&lt;/p&gt;&lt;p&gt;不要用pip安装！&lt;/p&gt;&lt;p&gt;踩了无数坑，最终发现可以直接使用apt-get一键安装&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;python3-opencv&amp;nbsp;-y&amp;nbsp;#注意python版本&lt;/pre&gt;&lt;p&gt;firefly官方unbuntu18.04系统自带python版本为3.6.9，使用apt-get安装opencv版本为3.2.0&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.zhuzhuangtian.top/zb_users/upload/2023/01/202301301675075171596666.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;PS：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;apt-get安装pip3&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;python3-pip&lt;/pre&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;apt-get安装vnc4server&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;vnc4server&lt;/pre&gt;&lt;p&gt;初次运行vnc4server会需要设置password&lt;/p&gt;&lt;p&gt;运行后修改~/.vnc/xstartup文件，取消两行注释&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.zhuzhuangtian.top/zb_users/upload/2023/01/202301301675075548557558.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;终止vnc服务并重新启动，就可以用vncviewer连接了。注意ip后面加上:[vnc端口号]，如192.168.8.205:1&lt;/p&gt;&lt;p&gt;创建vnc服务器的时候显示几就是几，密码就是第一次创建时设置的值。&lt;img src=&quot;https://www.zhuzhuangtian.top/zb_users/upload/2023/01/202301301675075596723019.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Mon, 30 Jan 2023 18:23:31 +0800</pubDate></item><item><title>Linux命令行连接WiFi</title><link>https://www.zhuzhuangtian.top/?id=6</link><description>&lt;div&gt;&lt;div&gt;1、安装nmcli&lt;br/&gt;sudo apt-get install nmcli&lt;br/&gt;2、查看网络设备&lt;br/&gt;sudo nmcli dev&lt;br/&gt;3、开启wifi&lt;br/&gt;sudo nmcli r wifi on&lt;br/&gt;4、扫描wifi&lt;br/&gt;sudo nmcli dev wifi&lt;br/&gt;5、连接wifi&lt;br/&gt;sudo nmcli dev wifi connect &amp;quot;wifi名&amp;quot; password &amp;quot;密码&amp;quot;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 30 Jan 2023 16:57:21 +0800</pubDate></item><item><title>随便写些什么</title><link>https://www.zhuzhuangtian.top/?id=5</link><description>&lt;p&gt;一时热度，在自己的服务器上开了这个个人博客。随便写点什么吧。&lt;/p&gt;&lt;p&gt;2022年4月28日，距离疫情2020年武汉疫情爆发已经过去了两年多，杭州从今天起开始48小时一次的全民核酸检测。两年多的时间里，我们已经有了疫苗，有了快速抗原检测试剂，有了相对成熟完善的治疗方案和疫情处置流程，然而疫情的阴霾仍未真正散去，笼罩所有人的生活，避无可避。这样的生活会持续多久？不得而知。在全球性疫情面前，个人的力量显得尤其渺小，无法左右其发展和变化的进程，然而每个人终究可以为自己的生活做出一些努力。作为教培行业从业者，面临“双减”政策和疫情的双重压力，无时不刻不在努力寻找巨大不确定性中的确定性。概括任何事物发展的规律，无非螺旋上升四字，在周期性的循环往复中递进向前，做时间的朋友这句话总归是对的，只要活得够长，外界环境的不利影响总会过去，低谷之后总有上升和顶峰。所以至少在心态上，目前还没有太焦虑。尽人事听天命，但行好事莫问前程，也便只能如此了。又也许是还没到山穷水尽那一步，尚有几丝希望，不知真到了绝境处，又当如何处置。&lt;/p&gt;&lt;p&gt;上一次写博客应该还是在小学，大概2006年-2008年的样子，那时博客也刚兴起，小学语文老师把写博客当成训练写作能力的手段，要求大家都写。然而同学们的兴趣似乎更多地在于怎样在博客里加入几条金鱼，放上周杰伦的歌作为背景音乐。写作上的一些底子，最初也是在那时积累下的，如此一来便也十五年过去了，当年同窗仍有联系的屈指可数，恩师们也长久未去拜遏了。&lt;/p&gt;&lt;p&gt;再后来到了初中和高中，也曾在QQ空间写过一些轻狂的文字，那种又想夸耀又有些羞涩的少年人心事，现在想来也不禁莞尔。以今天的互联网术语来说博客和空间总归是私域，不像现在的微博抖音小红书，借助算法驱动的流量分发，能够有如此强大的跨域传播能力。我在这里写下的这些文字，若非自己转发，不会有外人看到，让我在写字时能更自如一些。同时却也有一丝丝的期待，若真有陌生人看到这些文字，是否会有一些共鸣，乃至留下只言片语呢？犹如隐居深山，明知山中无外人，若哪天真遇到一位过客，能投缘地聊上几句，也是幸事。&lt;/p&gt;&lt;p&gt;第一篇就写到这里，但愿能常写些东西，无论好坏，留些记忆于此，不要荒废了便是。&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 28 Apr 2022 22:11:54 +0800</pubDate></item></channel></rss>