树莓派串口设置

最近总有人遇到树莓派串口通信的问题, 这里我简单说明一下。

Raspberry Pi和串口

默认情况下,Raspberry Pi的串行端口配置为用于控制台输入/输出。虽然如果您想使用串行端口登录,这虽然在调试时候很有用,但这意味着您无法在程序中使用串行端口。为了能够使用串行端口连接并与其他设备(例如Arduino)通信,需要禁用串行端口控制台登录。

不用说,您需要一些其他方式来登录Raspberry Pi,我们建议使用SSH链接通过网络上执行此操作

禁用串行端口登录

要启用自己使用的串行端口,需要禁用端口上的登录。有两个文件需要编辑

第一个和主要的是 /etc/inittab

此文件具有启用登录提示的命令,需要禁用此命令。编辑文件并移至文件末尾。你会看到类似的一行

T0:23:respawn:/ sbin / getty -L ttyAMA0 115200 vt100

通过在开头添加#字符来禁用它。保存文件。

#T0:23:respawn:/ sbin / getty -L ttyAMA0 115200 vt100

禁用启动信息

当Raspberry Pi启动时,所有启动信息都将发送到串行端口。禁用此启动信息是可选的,您可能希望保持启用状态,因为有时查看启动时发生的情况很有用。如果您在启动时连接了设备(即Arduino),它将通过串行端口接收此信息,因此由您决定是否存在此问题。

您可以通过编辑文件/boot /cmdline.txt 来禁用它。

该文件的内容如下所示

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

删除对ttyAMA0的所有引用(这是串行端口的名称)。该文件现在看起来像这样

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

重启

为了启用您所做的更改,您需要重新启动Raspberry Pi

sudo shutdown -r now 或者sudo init 6

测试串口

测试串口的一个好方法是使用minicom程序。如果您没有安装此运行

sudo apt-get install minicom

使用适当的串行端口适配器和接线将PC连接到Raspberry Pi串口,然后在PC端打开Putty或类似的串行终端程序。使用9600波特的串行端口设置连接。

现在使用Raspberry Pi运行minicom

minicom -b 9600 -o -D /dev/ttyAMA0

输入minicom终端屏幕的内容应出现在串行PC终端上,反之亦然。

下面想接串口GPS就接上去使用好啦~

如果想用python去读取GPS信号,通过:

pip install pyserial 

然后编写文档:

import serial 

import time

 

ser = serial.Serial('/dev/ttyAMA0',  115200, timeout=2)

try:

    while True:

        if ser.is_open:

            data = ser.read(100)

            print(data)

except Exception as e:

    print(e)

当看到数据了再分析一下就好,时间不多了,我就简单说到这里。

白了个白~

利用shell脚本批量转换DTS文件到Stereo AC3

有些人可能会遇到一些带有DTS音轨的AVI电影。

有时我们不想将其保留为DTS。

不幸的是,为了提取和转换DTS音频,必须要烧一下大脑,因为LINUX中的A/V工具对这种格式不兼容,很不爽是不是?

这是我创建的一个脚本,用于翻录一堆AVI文件,DTS跟踪并自动将它们转换为Stereo AC3音轨。

将其复制/粘贴到文本文件并将其另存为“avidts2ac3”:

#!/bin/bash

#avidts2ac3 (extracts DTS tracks from video file and converts it to ac3)

#requirements: mplayer / ffmpeg

#variables
current_directory=$( pwd )
OUTPUT_AVI="output_avi.av" #'av' extension used to prevent filename conflict
OUTPUT_WAV="output_wav.wav"
OUTPUT_AC3="output_ac3.ac3"

#remove spaces
for i in *.avi; do mv "$i" `echo $i | tr ' ' '_'`; done > /dev/null 2>&1 &

#remove uppercase
for i in *.[Aa][Vv][Ii]; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done > /dev/null 2>&1 &

#rip with Mencoder / encode with ffmpeg
for i in *.avi ; do nice -n 10 mencoder $i -oac pcm -ovc copy -o $OUTPUT_AVI && nice -n 10 ffmpeg -i $OUTPUT_AVI -acodec copy $OUTPUT_WAV && nice -n 10 ffmpeg -i $OUTPUT_WAV -ac 2 -ab 192 -ar 48000 $OUTPUT_AC3 && mv $OUTPUT_AC3 "`basename "$i"`.ac3" && rm $OUTPUT_WAV ;done

#Cleanup
rm $OUTPUT_AVI

exit;

您可能希望将其作为root复制到自己的环境变量PATH中去,这样使用命令就不用给绝对路径了。(/usr/bin或/urs/local/bin)

别忘了给它权限:chmod + rx avidts2ac3

然后将要转换的所有AVI影片放在一个目录中,并使用该目录中的脚本。

对于那些想要或需要了解它的机制的人来说,它是按照分步指南为您分解的:

DTS到AC3

1)在WAV PCM中转换电影中的音频:

nice -n 10 mencoder input_video.avi -oac pcm -ovc copy -o output_movie.avi

2)从新的AVI中提取WAV文件:

nice -n 10 ffmpeg -i output_movie.avi -acodec copy movie_audio.wav

3)将WAV转换为AC3立体声

nice-n 10 ffmpeg -i movie_audio.wav -ac 2 -ab 192 -ar 48000 audio.ac3

之后,您可以将mpeg2电影与新的AC3音轨复用

*请注意,一旦提取了WAV,你就可以将其转换为你喜欢的任何内容。