树莓派初始化——非显示器方式

树莓派简介 一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100 以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。 Raspberry Pi B款只提供电脑板,无内存、电源、键盘、机箱或连线。 以下是树莓派实物图。 树莓派的配置方式 树莓派的配置方式主要分为三大类,图形化窗口初始化、Raspberry Pi Imager初始化以及非图形化窗口初始化。显然,图像化窗口配置较为简单(类似于Windows系统,直接通过键鼠进行配置即可,下图为其初始化界面)。但是在特殊情况下,如没有HDMI转接线,或者无可用显示器时,后两者会更有优势。所以笔者针对该问题提出了较为详细且完备的解决方案。 Raspberry Pi Imager初始化 该方式初始化十分简单,笔者建议使用此方法(需要科学上网,不然网速提不上去)。以下是配置截图。 ![image-20230601170343352](https://raw.githubusercontent.com/2651350543/repo_md/master/2023/06/upgit_20230601_1685610224.png #pic_center) 保存配置进行烧录,截图如下。 非图形化窗口配置步骤 下载树莓派ISO镜像,笔者使用的是Raspberry Pi OS with desktop 使用镜像烧录工具进行烧录,笔者使用的是Rufus,配置截图如下。 烧录完成后,进入系统的bootfs目录,添加ssh文件,内容为空,用于实现局域网内的远程连接。 同样在系统的bootfs目录下,添加userconf.txt文件,配置系统的默认用户及密码(树莓派官方取消了默认用户pi)以用于远程登陆。该文件内容具体如下: pi:$6$8u6e3b3HkNIPdJ1.$Gmu6Y33JEL0W94hFLYtjzC6BmG803ysiDnVCYUtEVQXGpEYY4jeH1JUsIyOKhnA9koOV3xb0drxiZuNIInW63. 理论上用户可通过openssl自定义密码,此处笔者仅使用raspberry的加密串。即用户名为pi,密码为raspberry。 树莓派可使用无线网络进行远程操作,所以为避免连接网线,可在系统的bootfs目录下,添加wpa_supplicant.conf文件,配置系统的默认WiFi。该文件内容具体如下: ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=CN network={ scan_ssid=1 ssid="TP-LINK" psk="708708708" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN } 将SD卡保存并弹出,插入树莓派启动,测试PC与树莓派的连通性,并使用终端工具进行远程登陆即可。 最终远程连接如下所示。 ┌──────────────────────────────────────────────────────────────────────┐ │ • MobaXterm Personal Edition v21.5 • │ │ (SSH client, X server and network tools) │ │ │ │ ➤ SSH session to pi@192....

June 1, 2023 · 2 min · 225 words · Me

基于FRP的内网穿透测试——以SAKURA FRP为例

内网穿透的作用 内网穿透也叫内网映射,将本地服务器内网IP端口提供到外网,实现外网连接访问的过程。内网穿透可以将原本只能在本机、本局域网内访问的项目网站等,实现外网也同样可以访问。 FRP介绍 FRP 是一种快速反向代理,允许您将位于 NAT 或防火墙后面的本地服务器暴露给互联网。它目前支持 TCP 和 UDP,以及 HTTP 和 HTTPS 协议,允许通过域名将请求转发到内部服务。 SAKURA FRP测试 使用免费的内网穿透服务SAKURA FRP,即将本地端口与具有公网IP的服务器端口进行绑定,可实现本地端口与外部网络端口的映射。 下面演示具体操作过程。 下载frp客户端,更改配置文件 下载frp_0.48.0_windows_amd64,解压文件。其中文件夹结构如下,红框处为客户端配置文件和执行程序。 启动frp服务,查看服务状态 进入SAKURA FRP网站,创建隧道,截图如下。 复制其隧道配置代码至配置文件。 同时启动frpc程序,执行./frpc -c ./frpc.ini指令,验证连接状态,程序控制台以及连接状态截图如下。 编写UDP例程,验证通信可行性 笔者通过Python编写UDP收发程序,进行验证内网穿透数据是否可达。以下是相关的代码。 send.py import socket if __name__ == '__main__': UDP_IP = "frp-bid.top" UDP_PORT = 57457 MESSAGE = b"Hello,my name is LIN!" print("UDP target IP: %s" % UDP_IP) print("UDP target port: %s" % UDP_PORT) print("message: %s" % MESSAGE) sock = socket.socket(socket.AF_INET, # Internet socket....

April 16, 2023 · 1 min · 124 words · Me

快速上手MQTT——应用于PC端以及ESP32端

MQTT介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议。 MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。 作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 在这里笔者不打算做原理性的介绍,而是直接进行演示MQTT的使用过程。 MQTT 服务器 在生产环境中,正常是需要部署MQTT服务器的(或者是使用云服务器厂商的物联网平台)。笔者只是进行短暂的测试,所以使用免费的在线 MQTT 服务器。 EMQ的免费服务器为 2 个节点的 EMQX 企业版集群,部署在上海腾讯云。 EMQ 提供了通俗易懂的技术文章,帮助开发者快速了解 MQTT 协议及其相关特性。 参考EMQ的使用手册,笔者了解到进行测试需要MQTT 服务器信息。 当然,EMQ提供了MQTT客户端工具(用于快速连接和测试 MQTT 服务与应用),可以用来快速测试MQTT服务器的可用性。 在这里,笔者演示使用online-mqtt-client。步骤如下。 进入MQTT客户端工具,界面如下。 参考公共MQTT服务器地址,新建连接。 连接成功,可以看到绿色的提示符。 输入订阅的主题,发送数据。 如果此时没有订阅该主题,是无法接收到数据的,这个时候可以在客户端添加订阅进行测试(或者通过代码对该主题进行订阅)。 发送数据,得到反馈,测试成功。 PC端MQTT测试 参考文档如何在 Python 中使用 MQTT | EMQ (emqx.com)进行测试,参考文档十分详细,因此笔者只提供publish、subscribe的两个文件的代码。 publish.py(代码用于实现向/python/mqtt主题发送消息,消息内容是计数值1、2、3······) import random import time from paho.mqtt import client as mqtt_client broker = 'broker-cn.emqx.io' port = 1883 topic = "/python/mqtt" # generate client ID with pub prefix randomly client_id = f'python-mqtt-{random....

April 4, 2023 · 2 min · 279 words · Me

Typora的图床设置——使用upgit

Typora介绍 按照 Typora官网的说法,Typora 是一款Markdown编辑器和阅读器。 同时,Typora 也在它的网站上贴了许多标签:风格极简 、多种主题 、支持 macOS,Windows及Linux实时预览、 图片与文字、 代码块 、数学公式 、图表目录大纲、文件管理、导入与导出等。 简单来说,Typora是一款简约功能且强大的编辑器。并且Typora对不熟悉Markdown的小伙伴们十分友好,基本上可以快速上手。\(@^0^@)/ 使用Typora出现的痛点 虽然Typora相比于微软的word有着简单易用、自由度高的优势,但是Typora也有比较烦人的地方。 假设出现以下场景,你写了一篇图文并茂的文档,这篇文档是需要你在不同设备上进行编辑,又或者是需要给同伴进行查看和修改的(重点是修改,如果只是阅读的话,直接导出成PDF就行了)。这个时候,由于Typora导入图片的默认规则是将图片缓存到本地电脑的某个文件夹下(这个文件夹是确定的),但是当文档传输到另一台电脑上的时候,会缺失图片路径,导致图片无法显示。 查看Typora的偏好设置,Typora对插入时图片的路径给出了三种方式:指定的本地路径、相对路径以及网络路径。显然当图片在指定的本地路径下不太容易兼容其他电脑环境,图片依然会出现丢失的情况。使用相对路径可以避免图片的丢失,但是这样操作会导致所生成的文档要带一个资源库(Typora给的文件夹名为assets),进行文档传递的时候需要进行打包传输,同时也加大了文件的体积。所以,笔者在此选择了插入图片进行网络路径转换的方式,相比于前两种方式,网络路径既解决了图片资源丢失的问题,也简化了文件的结构(文档只是一份md文件,不需要assets存放图片资源)。 我的解决方式 再次查看Typora的偏好设置,发现其上传服务主要是PicGo、PicGo-Core和Custom Command。 查阅PicGo和PicGo-Core的使用文档,发现PicGo是不够轻量化的,大小是119 MB,而且是Electron开发,效率不高,而PicGo-Core是PicGo的核心底层核心组件(上传流程系统),虽然相比PicGo是轻量化的,但是需要nodejs环境,对环境有依赖。所以重点就来到了Custom Command,本着功能需要高内聚、低耦合的目标,笔者找到一款名叫upgit的简洁跨平台,不常驻内存的上传工具。 参考upgit的说明文档,可以快速上手体验。下面是笔者配置upgit的大致流程。 下载Release Upgit v0.2.18。 解压到存放应用的目录(其他位置也行,只要你能找到),重命名文件夹和程序名。 在程序的同一目录创建 config.toml文件,参考upgit的README.md文档,有示例配置如下。 # ============================================================================= # UPGIT 配置 # ============================================================================= # 默认上传器 default_uploader = "github" # 上传文件名的格式模板(仅特定上传器适配) # / 目录分隔符, 作用: 是区分目录 # {year} 年份, 例如: 2022 # {month} 月份, 例如: 02 # {day} 天, 例如: 01 # {unix_ts} 时间戳, 例如: 1643617626 # {fname} 原始文件名,如 logo (不含后缀名) # {fname_hash} {fname}的 MD5 散列值 # {ext} 文件后缀名, 例如....

April 2, 2023 · 2 min · 350 words · Me

搭建博客 以hugo和halo为例

1.博客的现状 现在网络上有很多的博客平台,比如CSDN、掘金、简书、博客园、知乎等等。在搜索引擎搜索相关内容时,往往前面几篇都被这几个大平台垄断了,个人博客一般隐藏在后面,如果没有做SEO优化,甚至完全搜不到,而很多优质的文章都藏在个人博客里面,现在很多静态博客都会和Github结合起来搭建,而Github屏蔽了百度的爬虫抓取,所以在百度很难搜到搭建在GitHub的个人博客,这是一大遗憾。 Tips: SEO是指按照搜索引擎的算法,提升你的文章在搜索引擎中的自然排名。 2.博客的分类 博客一般可以分为静态博客和动态博客。 静态博客:一般来说只有前端展示,即直接渲染生成HTML标准的文件呈现给客户端,没有后端数据库支持的博客叫做静态博客。此类博客比较轻量级,部署简单,成本较低,速度也很快,安全性高。 动态博客:动态指的是前端html和css等展示是通过动态调用再解析而成,不是生成的现成静态文件,且会与后台数据库进行交互,进行数据传递。 Tips: 通俗理解就是静态博客不需要使用服务器,而动态博客需要使用服务器进行交互。 3.动态博客搭建(halo) 当手中有一台云服务器(或者有一台具有公网IP的电脑),可以使用这种博客搭建方式。下面是以云服务器为例的具体搭建方法。 SSH远程连接云服务器终端(使用mobaxterm) 以下是服务器登录后的终端界面 Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-90-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage * Introducing Expanded Security Maintenance for Applications. Receive updates to over 25,000 software packages with your Ubuntu Pro subscription. Free for personal use. https://ubuntu.com/pro New release '22.04.2 LTS' available. Run 'do-release-upgrade' to upgrade to it. Welcome to Alibaba Cloud Elastic Compute Service !...

March 30, 2023 · 5 min · 898 words · Me