You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现树莓派通过另一台电脑的串口连接互联网?

树莓派通过电脑串口共享互联网的实操指南

嘿,我之前帮不少人搞定过这个需求——用串口让树莓派蹭电脑的网,虽然速度确实拉胯(毕竟串口最高也就115200波特率,实际传输速率撑死几十KB/s),但胜在能用,完全满足更新系统、拉取小代码包这类轻量操作。下面是一步步的实操步骤,亲测有效:

一、先搞定硬件和前置配置

  • 准备一根USB转TTL串口线:树莓派的GPIO串口要注意接线——线的TX接树莓派的RX(GPIO15),线的RX接树莓派的TX(GPIO14),GND接GND(随便找个接地引脚),绝对不要接5V引脚,不然容易烧树莓派!
  • 确保树莓派的串口不是用来当控制台的:
    如果能直接操作树莓派(有屏有键盘),运行sudo raspi-config,选Interface Options -> Serial Port,第一个问题“要不要让登录 shell 通过串口访问?”选No,第二个“要不要启用串口硬件?”选Yes,然后重启树莓派。
    如果没法直接操作,把SD卡插电脑上,修改config.txt,末尾加enable_uart=1;再改cmdline.txt,删掉里面的console=serial0,115200或者console=ttyAMA0,115200这段(这是控制台的配置,留着会干扰数据传输)。

二、电脑端配置(分Linux和Windows)

2.1 Linux电脑(以Ubuntu/Debian为例)

  1. 插好串口线,用dmesg | grep tty找串口设备,一般是/dev/ttyUSB0或者/dev/ttyACM0
  2. 给当前用户加串口权限:sudo usermod -aG dialout $USER,注销再登录才能生效。
  3. 配置串口参数,波特率设为115200(和树莓派一致):
    stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parenb
    
  4. 开启电脑的IP转发,不然树莓派没法通过电脑上外网:
    sudo sysctl -w net.ipv4.ip_forward=1
    # 替换下面的<你的网卡名>,比如有线是eth0,无线是wlan0,用ip addr可以查
    sudo iptables -t nat -A POSTROUTING -o <你的网卡名> -j MASQUERADE
    
  5. 用pppd建立串口网络连接:
    sudo pppd /dev/ttyUSB0 115200 192.168.0.1:192.168.0.2 noauth local persist debug dump
    
    这里192.168.0.1是电脑的串口端IP,192.168.0.2是树莓派的串口IP,记好这俩地址,后面要用。

2.2 Windows电脑

  1. 插串口线,安装对应驱动(常见芯片是CH340或PL2303,官网能下到)。
  2. 打开设备管理器,找到“端口(COM和LPT)”,记下对应的COM口(比如COM3)。
  3. 建立PPP拨号连接:
    • 打开“设置”->“网络和Internet”->“VPN”->“添加VPN连接”,或者用控制面板的“设置连接或网络”。
    • 选择“连接到工作区”->“使用我的Internet连接(VPN)”,随便起个名字,然后选“直接连接到另一台计算机”。
    • 选择“传入连接”,勾选刚才的COM口,设置个简单的用户名密码(或者跳过,看你需求)。
  4. 开启网络共享:打开“网络共享中心”,找到你正在用的互联网连接(比如WiFi),右键属性->“共享”,勾选“允许其他网络用户通过此计算机的Internet连接来连接”,然后选择刚才创建的串口连接。
  5. 调整串口参数:设备管理器里找到对应COM口,右键属性->“端口设置”,波特率选115200,数据位8,停止位1,奇偶校验无。

三、树莓派端配置

  1. 先通过串口登录树莓派:Linux电脑用screen /dev/ttyUSB0 115200,Windows用PuTTY选Serial,波特率115200,输入刚才的COM口。
  2. 设置树莓派的串口IP(要和电脑端设置的一致):
    sudo ifconfig ppp0 192.168.0.2 netmask 255.255.255.0 up
    
  3. 设置默认网关为电脑的串口IP:
    sudo route add default gw 192.168.0.1
    
  4. 设置DNS服务器,不然没法解析域名,比如用谷歌的公共DNS:
    echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
    
    要是想永久生效,编辑/etc/dhcpcd.conf,加上:
    interface ppp0
    static domain_name_servers=8.8.8.8 8.8.4.4
    

四、测试联网

在树莓派终端里敲ping google.com,如果能收到回复,那就搞定了!

小提醒:串口速度真的很慢,别用来下载大文件,会等到崩溃。但更新个系统、拉个小代码包还是完全没问题的。

内容的提问来源于stack exchange,提问作者TheStaticTurtle

火山引擎 最新活动