0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何让 Raspberry Pi 焕发网络新生机?

上海晶珩电子科技有限公司 ? 2025-03-25 09:20 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

导语

OpenWRT是一款开源固件,可加载到许多市售路由器上。该固件为较旧或过时的硬件提供了升级途径,并为较新的设备提供了定制/高级功能。

由于 OpenWRT 占用空间较小(176MB 对比 1.7GB 以上的树莓派OS镜像),它非常适合速度和内存使用率较高的老款 Raspberry 硬件。

对于小型家庭和办公室项目,OpenWRT 将提供一些有趣的网络解决方案,例如将 树莓派变成接入点或将其用作无线 LAN 桥接器。但需要注意的是,Raspberry Pi WiFi 硬件不会提供与专用路由器相同的性能。

本文来自国外网友的实操,主要内容包括:

- 如何安装旧的 Raspberry Pi Model B 并运行 OpenWRT

- 我还尝试解释如何安装许多常见的树莓派功能(加载软件、GPIO、I2C……)

优点和缺点

在进入树莓派 OpenWRT 项目之前,了解它与默认的 Raspberry Pi OS 相比的地位很有用。

OpenWRT 的一些优势(优于 Raspbian/Raspberry PI OS)包括:

- 它速度很快,被设计为在内存有限的低端 CPU 上运行

- 聚焦网络功能

- 快速启动

- 操作系统占用空间更小,因此甚至可以使用较旧的 4 GB SD 卡(2GB 是可能的,但可能无法加载许多软件包)。

OpenWRT 的一些限制:

- 没有 X-window 桌面

- 系统设置不像默认的 Raspberry PI OS 那样方便(没有raspi-config)

- 默认安装非常简单,因此您需要手动加载软件包(甚至 Bash 和 Nano)

- 某些软件包的安装可能比较困难(例如 Node-Red)

入门

尽管 OpenWRT 是为在路由器上运行而设计的,但从很多方面来看,在 Raspberry Pi 上运行更方便。

使用树莓派的一些好处包括:

- 你不会让树莓派变"砖",事实上用OpenWRT刷路由器经常会这样

- SD/microSD 卡比大多数家用路由器拥有更多的空间

- 树莓派有一个 HDMI 连接,因此你可以直接在 树莓派上工作(适合入门)

有关 OpenWRT Raspberry Pi 图像,请参阅:https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi

您可以使用标准 Raspi 映像器在 SD 卡上安装 OpenWRT。对于 Linux 系统,可以通过以下方式安装映像器:

sudoapt update && sudo apt install rpi-imager

加载 SD 卡后,有几种方法可以启动并运行 OpenWRT 系统。以下是使用的步骤。

1. 将显示器和键盘连接到 Pi

让它启动,然后转到命令提示符,并设置一个静态 LAN 地址:

# Enter your own static IP. Note: change the gateway/DNS for your setupucisetnetwork.lan.proto="static"ucisetnetwork.lan.ipaddr="192.168.0.140"ucisetnetwork.lan.netmask="255.255.255.0"ucisetnetwork.lan.gateway="192.168.0.1"ucisetnetwork.lan.dns="192.168.0.1"uci commit network

如果您能够看到 LAN 上的 IP 地址,您可以简单地执行以下操作:

#SetPiforDHCPandthencheckits addressucisetnetwork.lan.proto="dhcp"ucicommitnetwork

2. 将 Pi 硬连线到您的 LAN

将树莓派的网口连接到您的笔记本网口,然后重新启动模块。

您现在可以从笔记本电脑上使用 OpenWRT 的 Web 界面,或者使用安全 shell (ssh) 命令行界面。

我喜欢使用 ssh 选项来开始,因为我可以粘贴命令组。要开始使用 ssh(使用我的静态 IP):

$ ssh root@192.168.0.140BusyBox v1.35.0 (2023-01-03 0021 UTC) built-in shell (ash) _______ ________ __| |.-----.-----.-----.| | | |.----.| |_| - || _ | -__| || | | || _|| _||_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M-----------------------------------------------------OpenWrt 22.03.3, r20028-43d71ad93e-----------------------------------------------------=== WARNING! =====================================There is no root password defined on this device!Use the "passwd" command to set up a new passwordin order to prevent unauthorized SSH logins.--------------------------------------------------root@OpenWrt:~#

3.安装所需软件

默认的 OpenWRT 安装非常简单,因此可能需要一些基本包。

OpenWRT 使用opkg来安装软件。(注意:OpenWRT 不支持 apt 和 apt-get)。

# Install some software, but update list firstopkgupdate# Install Bash, nano editoropkg install bash nano# For Python projects install the base Python3 and pipopkg install python3 python3-pip# For Pi GPIO projectsopkg install gpioctl-sysfs gpiod-tools

如果您计划在 Raspberry Pi 上做一些项目,添加 Bash、Python 和 GPIO 硬件支持将会很有用。

LuCI – OpenWRT Web 界面

系统启动并运行后,可以使用 LuCI Web 界面设置其他功能,如网络接口和自定义软件。

许多软件包还包括 LuCI Web 附加组件。

从 LuCI 界面,您可以轻松看到有多少内存和磁盘空间可用。如果您计划加载大量软件包,检查此屏幕非常重要。

5928fc24-0917-11f0-9434-92fbcf53809c.png

设置 USB WiFi 适配器

对于 Raspberry Pi 型号 3 和 4,OpenWRT 将识别其内置 WiFi 硬件,但是对于早期型号或想要使用 USB WiFi 适配器的项目,您需要执行此步骤。

在 OpenWRT 上,必须手动添加 USB 设备的配置。

第一步是安装 USB 实用程序包:

# Update the package listopkgupdate# Add USB Utils (has lsusb)opkginstall usbutils

添加usbutils后, lsusb命令将显示有关已连接 USB 设备的信息(注意:仍需加载驱动程序)。对于使用旧 Realtek WiFi 适配器的 Raspberry Pi B 设置,输出为:

root@OpenWrt_Pi1:~# lsusbBus001Device004: ID0bda:8189Manufacturer_Realtek RTL8187B_WLAN_AdapterBus001Device003: ID0424:ec00 Bus001Device002: ID0424:9512 Bus001Device001: ID1d6b:0002Linux5.10.176dwc_otg_hcd DWC OTG Controller

从此列表中我可以看到我需要搜索RTL8187B_WLAN_Adapter。 Luci Web 界面可用于查找和安装所需的网络驱动程序。

594e281e-0917-11f0-9434-92fbcf53809c.png

一旦启用 USB WiFi 适配器,就可以使用几种不同的无线布置,其中一些更常见的设置是:

- 无线应用节点(类似典型的 Raspberry Pi 设置)

- 接入点节点,用于设置您自己的自定义网络

- 无线网桥,用于扩展现有的无线网络

对于简单的无线应用节点,进入 LuCI 网页界面的Network->Wireless菜单选项,然后选择您的无线电并扫描无线网络。配置 SSID(无线连接)后,选择Edit添加网络信息。

59651bf0-0917-11f0-9434-92fbcf53809c.png

确保选择lan和wwan,这样您将能够通过无线和有线连接远程访问树莓派节点。

使用 SFTP 和 FileZilla

如果您仅使用 SSH 和 Luci Web 界面,远程操作 OpenWRT 可能会有点困难。安全文件传输协议 (SFTP) 服务器包可用于大大改善配置和编码文件的编辑和保存。

OpenSSH-FTP 服务器包的安装方式如下:

# For remote work add an SFTP serveropkgupdateopkg install openssh-sftp-server

加载该软件后,可以在笔记本电脑上使用像 FileZilla 这样的图形化 SFTP 客户端包。

FileZilla 允许使用简单的可视化界面进行远程编码和维护。以下是 FileZilla 连接到 OpenWRT Raspberry Pi 节点的示例。FileZilla 上的文件关联已设置,以将 py 文件链接到基本的 Python Idle 编辑器。

59890754-0917-11f0-9434-92fbcf53809c.png

树莓派3 示例

我想做一个更完整的树莓派功能测试。对于这个项目,可以使用树莓派3,测试控制 USB 电源。(注意:USB 电源控制仅适用于树莓派3 和 4)。

我的目标是尝试使用 GPIO、I2C 和 USB 电源。在最终项目中,我使用了 OpenWRT 的内置 uhttpd Web 服务器来展示结果。

下面是我为使事情顺利进行而采取的一些单独步骤。

GPIO 设置

需要加载基本的 GPIO 包:

# update list of available packagesopkgupdateopkg install gpioctl-sysfs gpiod-tools

安装基本的 GPIO 软件后,可以在 Bash(或默认的 OpenWRT shell ash)中读取和写入 Raspberry Pi 引脚。

在使用 GPIO 引脚之前,需要先定义它。可以使用tee命令创建包含所有必需文件的 gpio 定义,例如:

# Create a gpio4 definitionecho4 |tee/sys/class/gpio/export# Show the file structurels/sys/class/gpio/gpio4active_low direction power ueventdevice edge subsystem value

创建 GPIO 定义然后写入引脚并读回值的示例是:

# Define the pin as an outputecho"out"> /sys/class/gpio/gpio4/direction# Set the pin on (1)echo1 > /sys/class/gpio/gpio4/value# Read the pin valuecat/sys/class/gpio/gpio4/value1

如果您正在进行一些尝试并且想要删除 gpio 定义,那么请写入unexport文件:

# Remove GPIO4echo4 |tee/sys/class/gpio/unexport

I2C 设置

为了使 I2C 设置正常工作,需要加载 Raspberry Pi I2C 芯片组驱动程序和 I2C 工具:

# Update the opk list. This needs to be done once after a power upopkgupdateopkg install kmod-i2c-bcm2835 i2c-tools

下一步是编辑文件:/boot/config.txt

nano /boot/config.txt

在文件底部添加三行 dtparam

################################################################################# Bootloader configuration - config.txt################################################################################################################################################################# For overclocking and various other settings, see:# https://www.raspberrypi.org/documentation/configuration/config-txt/README.md################################################################################# OpenWrt configincludedistroconfig.txt[all]# Place your custom settings here.dtparam=i2c1=ondtparam=spi=ondtparam=i2s=on

编辑文件后,需要重新启动系统。此后,可以连接 I2C 设备。要检查有线设备的 I2C 地址,请使用i2cdetect命令:

i2cdetect-y1 0 1 2 3 4 5 6 7 8 9 a b c d e f00: -- -- -- -- -- -- -- --10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --20: -- -- -- -- -- -- -- --28-- -- -- -- -- -- --30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --40: -- -- -- -- -- -- -- --48-- -- -- -- -- -- --50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --70: -- -- -- -- -- -- --77

(注意:对于这个 i2cdetect 示例,地址 28 和 48 来自 Pimoroni Explorer HAT,地址 77 是 BME280 传感器)。

通常,下一步是使用 pip 安装 Python,然后安装任何所需的 I2C 设备库。对于这个项目,我使用了 BME280 温度/湿度传感器

BME280 传感器设置

每个传感器都有自己特定的库,但是您可能需要 python3-smbus 支持。

对于我的传感器,我需要:

opkg updateopkg install python3 python3-pipopkg install python3-smbus#Install Python BME280 temperature/humidity sensor librarypip install bme280

Python bme280 库也有一个 Bash 接口,因此要从 I2C 地址 77 获取数据:

https://pypi.org/project/bme280/

# Get the BME280 sensor data from address 0x77read_bme280 --i2c-address0x771005.19hPa 38.38% 19.25C

控制 USB 电源

控制 USB 电源并不常见。一些用例可能是:USB 风扇和灯或重置 Pi 正在供电/连接的 Arduino 控制器

要使用此功能您需要运行:

opkginstall usbutils uhubctl

lsusb 命令将显示哪些智能 USB 设备已连接,但不会显示 USB 风扇和灯等简单硬件。

lsusb--tree/: Bus01.Port1: Dev1, Class=root_hub, Driver=dwc_otg/1p,480M |__ Port1: Dev2, If0, Class=, Driver=hub/5p,480M |__ Port1: Dev3, If0, Class=, Driver=smsc95xx,480M

对于树莓派3 和 4,所有 USB 端口的电源都通过端口 2 集中在一起,因此遗憾的是无法为单个 USB 端口供电。如前所述,树莓派1 和 2 上的芯片组不支持 USB 电源控制。

树莓派4 有两个内置 USB 集线器。集线器 1-1 连接到 USB 2.1 标准上的所有 USB 端口。集线器 2 控制 USB 3.0标准上的所有端口和以太网插孔。

打开/关闭/切换 USB 端口并保持以太网插孔供电的命令是:

uhubctl-l1-1-p2-aonuhubctl-l1-1-p2-aoffuhubctl-l1-1-p2-a toggle

OpenWRT uhttpd Web 服务器

OpenWRT 预装了轻量级uhttp Web 服务器。该服务器用于 LuCI Web 界面,但也可用于自定义应用程序。

对于自定义 Web 项目,请将文件添加到: /www/cgi-bin

此目录允许运行任何 CGI 程序(Bash、Python、Lua 等)。请记住在 CGI 脚本文件上设置执行权限:

chmod+x mycgifile

Pi3 CGI Web 示例

该项目的硬件设置使用了 Pimoroni Explorer HAT Pro。这款 Pi Top 有四个内置彩色 LED(位于引脚 4、17、27 和 5)。在切换 GPIO 引脚之前,需要定义设备并设置方向:

#!/bin/bash## setgpio - setup GPIO#forpinin4 17 27 5do gpiodev=/sys/class/gpio/ gpiodev+=$pin echo$pin|tee/sys/class/gpio/export echo"out"> /sys/class/gpio/gpio$pin/directiondonels/sys/class/gpio

对于我的网页,一些按钮用于传递查询字符串变量,该变量在输出 HTML 之前在脚本顶部读取。BME280 传感器数据显示为一个简单的 Bash 变量。

#!/bin/bash## toggle - Bash CGI to show some standard functions# - toggle GPIO LEDs and USB power# - show some I2C sensor results# Note: GPIO pins need to be setup as outputsset-e# Toggle a pin if it's passed in the queue stringif [["$QUERY_STRING"=~"gpio"]];then pin=$QUERY_STRING # Read the GPIO pin value and then toggle it if["$(cat /sys/class/gpio/$pin/value)"== 1 ];then echo0 > /sys/class/gpio/$pin/value else echo1 > /sys/class/gpio/$pin/value fifi# Toggle USB power, ensure to add '&' for CGI useif[["$QUERY_STRING"=~"usb"]];then uhubctl -l 1-1 -p 2 -a toggle &> /dev/nullfi# Get BME280 sensor datadata=$(read_bme280 --i2c-address 0x77)echo"Content-type: text/html"echo""echo"OpenWRT PI Toogle

OpenWRT PI CGI

Toggle Hardware


onclick='location.href="?gpio4"'>Toggle GPIO4 LED1
onclick='location.href="?gpio17"'>Toggle GPIO17 LED2
onclick='location.href="?gpio27"'>Toggle GPIO27 LED3
onclick='location.href="?gpio5"'>Toggle GPIO5 LED4

onclick='location.href="?usb"'>Toggle USB Power


BME280 Sensor Data

$data"exit0

网页调用地址为: http://你的树莓派ip/cgi-bin/toggle

下面是网页和 Pi 设置的图片。

59a452d4-0917-11f0-9434-92fbcf53809c.png

概括

- OpenWRT 可以为旧的 Raspberry Pi 硬件注入活力。我注意到旧的 Pi 硬件的性能有了很大的改进,这使得系统非常实用。

- 长期使用 Raspberry Pi 的用户一开始可能会发现 OpenWRT 缺少预装应用程序、驱动程序并且没有桌面,这有点令人沮丧。

- 值得注意的是,某些软件包(例如 Node-Red)需要一些工作才能安装。

那么你对于OpenWRT在树莓派上的应用有哪些看法,欢迎评论区讨论。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LAN
    LAN
    +关注

    关注

    0

    文章

    232

    浏览量

    38422
  • 树莓派
    +关注

    关注

    122

    文章

    2034

    浏览量

    107692
  • RaspberryPi
    +关注

    关注

    1

    文章

    46

    浏览量

    9490
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    第二代Raspberry Pi发布,微软推出Windows 10 for Raspberry Pi 2

    对Maker社区免费。Raspberry Pi基金会表示,在过去半年,它们一直在与微软合作,Windows 10配适Raspberry Pi
    发表于 02-02 21:56

    安装Raspberry Pi Clock Hat的教程分享

    Raspberry Pi 系统的关键参数,例如时间、日期、CPU 使用率、CPU 温度、网络 IP等。除此之外,它还允许您通过板载大头钉按钮控制一些基本操作,例如关机和重启。这个项目对于那些想要
    发表于 07-05 06:01

    Getting Started with Raspberry Pi

    这本书叫你如何上手Raspberry Pi
    发表于 11-03 17:44 ?0次下载

    raspberry_pi各版本差别

    raspberry pi 各版本差别,对比Raspberry Pi Model B+、Raspberry
    发表于 01-06 11:12 ?0次下载

    Raspberry_Pi详解

    Raspberry_Pi详解
    发表于 01-31 20:45 ?16次下载

    Instant Raspberry Pi Gaming

    Instant Raspberry Pi Gaming
    发表于 10-24 09:26 ?6次下载
    Instant <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Gaming

    raspberry pi官网

    Raspberry Pi 宣布推出新的镜像实用程序 Raspberry Pi Imager,以提供一种更简单的方法,将操作系统轻松镜像到 microSD 上。
    的头像 发表于 03-07 10:16 ?6578次阅读

    可视频直播的Raspberry Pi网络控制机器人

    本文档的主要内容详细介绍的是可视频直播的Raspberry Pi网络控制机器人。
    发表于 03-17 15:31 ?14次下载
    可视频直播的<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>网络</b>控制机器人

    Raspberry Pi上通过网络控制LED

    电子发烧友网站提供《在Raspberry Pi上通过网络控制LED.zip》资料免费下载
    发表于 12-13 09:37 ?0次下载
    在<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>上通过<b class='flag-5'>网络</b>控制LED

    基于诺基亚5110的Raspberry Pi帽子

    Raspberry Pi 系统的关键参数,例如时间、日期、CPU 使用率、CPU 温度、网络 IP等。除此之外,它还允许您控制一些基本操作,例如从机载定位按钮关闭和重新启动。这个项目对于那些想要将
    发表于 12-21 12:27 ?0次下载

    使用balena在Raspberry Pi 4创建私有LoRaWAN网络

    电子发烧友网站提供《使用balena在Raspberry Pi 4创建私有LoRaWAN网络.zip》资料免费下载
    发表于 06-13 14:36 ?0次下载
    使用balena在<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4创建私有LoRaWAN<b class='flag-5'>网络</b>

    使用Raspberry Pi的Motioneyeos网络摄像头运动检测

    电子发烧友网站提供《使用Raspberry Pi的Motioneyeos网络摄像头运动检测.zip》资料免费下载
    发表于 07-05 10:40 ?1次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的Motioneyeos<b class='flag-5'>网络</b>摄像头运动检测

    使用Raspberry Pi构建网络摄像头

    电子发烧友网站提供《使用Raspberry Pi构建网络摄像头.zip》资料免费下载
    发表于 07-12 11:30 ?0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>构建<b class='flag-5'>网络</b>摄像头

    【树莓派Pi5】树莓派 Raspberry Pi 5 正式发布!

    这款 Pi 5从英国树莓派总部跨洋而来,作为树莓派的官方代理商,上海晶珩EDATEC荣幸地在首发时刻,率先揭开了 Pi 5 的神秘面纱: Raspberry Pi 5:瞩目
    的头像 发表于 09-28 17:30 ?3213次阅读
    【树莓派<b class='flag-5'>Pi</b>5】树莓派 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 正式发布!

    超声板材pcb,科技焕发新生

    超声板材pcb,科技焕发新生
    的头像 发表于 03-12 11:26 ?934次阅读