Mac上使用串口登陆树莓派3

Published On August 28, 2017

category project | tags raspberrypi


背景

通常我们将树莓派接入网络(网线或wifi),然后通过ssh登陆。如果这种方式有困难,比如没有网线或者初次进入系统不能自动连接Wi-Fi,这时候就需要键盘和显示器的帮助了,但如果没有键盘,操作树莓派将会很艰难。我听说可以使用树莓派的UART串口进入linux console。UART(Universal Asynchronous Receiver/Transmitter)是一种串行通信接口,有TX和RX两条线,分别负责发送和接收串行数据流(即比特)。

我的博客本不应该出现这么水的文章,而且通过串口登陆树莓派的教程用google一搜一大把,那为什么我还要写这篇教程呢?原因有三:

  1. 现有的教程几乎都是使用pl2302芯片的usb转串口(比如Mac OS X上使用USB转串口线连接树莓派),而淘宝上销量最高的usb转串口都是ch340芯片,不同的芯片需要使用不同的驱动;
  2. 网上针对树莓派3串口登陆的大部分中文教程(比如树莓派3 UART(串口)不可用的解决方法)都具有误导性并且操作麻烦,比如使用UART并不需要关闭蓝牙;由于被误导,看似简单的问题,却折腾了3个小时才成功;通过这次经历,我再次意识到官方文档的重要性。
  3. 很多玩树莓派的程序员对硬件知识为0,包括我,因此文中附带了对UART,TTL,RS232,GPIO,CH340G这些名词的解释;

工具

我所用的工具以及型号如下:

  • macbook pro(macos 10.12即sierra)
  • raspberry pi 3 model B
  • ch340g芯片的USB转TTL小板+杜邦线

注意:如果你的情况不同,后面的步骤可能不再适用,但仍具有一定的参考意义。

login-rpi3-via-uart.jpg

步骤

1. 安装驱动

CH340G是实现usb转串口的芯片之一。这里的串口是指硬件层的接口,比如RS-232、TTL等。RS-232是一种串行接口,它比UART更低层,负责指定物理层的电平高低。TTL与RS-232类似也是一种串行接口,区别是它们工作的电平不同。树莓派3b使用的是TTL。

类似CH340G的芯片还有PL2302,需要注意的是不同的芯片需要使用不同的驱动。 网上好多教程都是针对pl2302芯片的,对应的下载链接是PL2303 Mac OS X Driver Download。 我从淘宝上买的usb转串口是ch340g芯片的,需要从Github: adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver下载CH340G芯片的MACOS驱动CH34x_Install_V1.3.pkg,安装后需要重启才会生效。

检查驱动是否生效:打开系统偏好设置->网络,在左侧能看到USB2.0-Serial的接口。 usb2-serial.png

插入usb转串口后会看到/dev/cu.wchusbserial1420这个设备文件:

$ ls /dev/cu.wchusbserial1420
unix上所有设备都是以文件的形式使用。

2. 连线

树莓派3B的引脚对照表如下: rpi3-pins.jpg rpi-pins-40-0.png 使用杜邦线将USB转TTL的TX与树莓派的RX(图中的GPIO 15)相连,RX与TX(图中的GPIO 14)相连。这个应该很好理解,TX即发送线,相当于输出;RX即接收线,相当于输入,输出应当与输入相连。然后将小板的GND(即地线)与树莓派的GND相连。

对上面提到的GPIO进行一下说明,GPIO即General-Purpose Input /Output Ports,这里进行一下说明,树莓派提供了40个管脚(pin),其中有些管脚已经被定义了,比如接电源、地线等。另外的17个可以被设置成输入或输出,比如用来点亮LED灯,这些才是GPIO。

最后将小板的USB插入mac。

3. 树莓派启用UART

树莓派3上有两个UART,一个用于蓝牙模块上,另一个(mini AURT)用于linux console。

By default, on Raspberry Pis equipped with the wireless/Bluetooth module (Raspberry Pi 3 and Raspberry Pi Zero W), the PL011 UART is connected to the BT module, while the mini UART is used for Linux console output.

相应的设备文件和UART的对应关系如下:

/dev/ttyAMA0 -> Bluetooth
/dev/ttyS0 -> GPIO serial port

这个mini UART默认是禁用的

Also when the linux console uses the mini UART (Raspberry Pi 3, Raspberry Pi Zero W), as a consequence of the UART being disabled, the console is also disabled.

通过UART登陆树莓派也就是要①通过UART与树莓派通信,并且将②该UART接口分配给linux console,好在后者是默认行为,如果不放心,可以通过sudo raspi-config->Interfacing options-> Serial->Yes开启。

因此要通过串口进入linux console只需要启用mini UART即可:

在/boot/config.txt追加一行enable_uart=1,然后重启sudo reboot

4. 使用screen与树莓派通信

在mac上安装screen

$ brew install screen

通过串口与树莓派通信

$ screen /dev/cu.wchusbserial1420 115200
在新窗口中敲下回车就能看到登陆提示了,输入用户名pi,回车后输入密码raspberry。

这里的11520是波特率,在树莓派上的/boot/cmdline.txt进行设置。

如果执行以上命令总是出现screen is terminating请重新拔插usb接口,我就是在这里卡住的。

UART的其他用途

除了通过UART使用Linux console外还可以进行其他的串口通信,与读写文件类似,使用pyserial模块可以非常方便的操作串口文件。

参考


qq email facebook github
© 2018 - Xurui Yan. All rights reserved
Built using pelican