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

树莓派简介 一款基于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

快速上手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