树莓派 ubuntu 系统介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派 ubuntu 系统介绍相关的知识,希望对你有一定的参考价值。

参考技术A

树莓派作为仅有 200 元上下的 Linux 电脑,其最大的特点就是可玩性,当然不是玩各式各样的电脑游戏,而是其高度的可定制性,DIY 爱好者可以自定义 GPIO 来实现各种各样的功能。

作为一个电脑,当然就要有与之配套的系统来支持它的运行,树莓派官方有两个系统,分别为 Raspbian Raspbian Lite ,两者都是基于 Debian 的系统,前者具有完整的 LXDE 桌面环境,而后者为精简的无桌面环境系统,在 树莓派官网 里,还有 ubuntu MATE Windows 10 Iot 等系统可供选择,其实树莓派可用的 ubuntu 系统不仅仅是 ubuntu MATE 还有其他 ubuntu 系统可以用,下面我就来介绍一下树莓派可用的 ubuntu 系统并分析一下优缺点。

1)除 PC 用的原版 ubuntu,这个版本的各项环境最完整。
2)内置多种界面排布方式,可以随意切换(如:open suse 样式、unity 样式)。
3)高度可定制化界面。

1)MATE 桌面对于老式笔记本和老式台式机来说显然很轻松的就能流畅运行,但是作为树莓派来说i就有些吃力了,经常发生反应迟钝现象。

1)占用储存卡的空间小。
2)小清新的感觉,看时间长了也不疲惫。

1)不支持 Community Support 且不可以通过 apt-get 进行安装

1)超轻量级的桌面环境,比 Xface 还要轻量。
2)桌面反应速度快。
3)占用储存卡空间最小(仅限于在 ubuntu 桌面环境内比较)

1)可定制性不如前两者,不过正常使用桌面环境足矣。

这是 ubuntu 服务器 版的系统,如果说要用树莓派搭建一个小型服务器的话可以考虑使用这个版本的系统。其中 minimal 版本没有预装 Raspberry Pi Python Stack standard 版本有预装,并且 Raspberry Pi Python Stack 暂时不可以通过 apt-get 进行获取安装。

桌面环境中:
流畅度:Lubuntu > Xubuntu > ubuntu MATE
外观定制度:ubuntu MATE > Xubuntu > Lubuntu

图例:

树莓派ubuntu系统RPi引脚库权限问题 不使用sudo操控RPi库方法

 

树莓派ubuntu系统RPi引脚库权限问题 不使用sudo操控RPi库方法

  • 前言
  • 一 、ubuntuRPi引脚库权限问题
  • 二、解决方法
  • 总结

 


前言

在使用树莓派进行人脸识别云台追踪时遇见RPI库和opencv不兼容问题,于是提供一种不适应管理员权限操控rpi库的方法

树莓派云台追踪博客:树莓派云台追踪


一 、ubuntuRPi引脚库权限问题

因为笔者也是第一次在树莓派上使用ubuntu镜像 还是最新版,所以在编写代码时先对不同功能进行分块测试。
1矫正舵机
这里需要下载RPi.GPIO库并使用pwm控制舵机。
下载完毕后在运行文件时如果使用命令

pyrhon3 filename

会出现RPi.GPIO权限不够问题 如果使用

sudo pyrhon3 filename

则可正常使用

2使用opencv测试摄像头功能(仅仅打开摄像头并显示)

如果运行文件时使用命令

sudo pyrhon3 filename

会出现找不到视频的问题
如果使用

pyrhon3 filename

则可正常使用

问题来了 当代码融合后 这就无法使用,不管采用哪个命令都会报错,于是在查阅资料后找到了一种不使用管理员权限操控RPi.GPIO库的方法。

二、解决方法

实际上 Raspbian上的Rpi.GPIO库是可以在普通用户下控制树莓派的GPIO的,然而在ArchlinuxARM下,却需要root用户才行这就引起了冲突。
好在RPi.GPIO提供了一个获取权限的脚本:create_gpio_user_permissions.py
然而这个脚本是没法在ArchlinuxARM上直接运行的,因为Archlinux缺少adduser命令。
脚本如下

import grp
import subprocess

def ensure_gpiogroup():
    try:
        grp.getgrnam(\'gpio\')
    except KeyError:
        print(\'GPIO group does not exist - creating...\')
        subprocess.call([\'groupadd\', \'-f\', \'-r\', \'gpio\'])
        subprocess.call([\'adduser\', \'pi\', \'gpio\'])
        # in future, also for groups:
        #   spi
        #   i2c
        add_udev_rules()

def add_udev_rules():
    with open(\'/etc/udev/rules.d/99-gpio.rules\',\'w\') as f:
        f.write("""SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", PROGRAM="/bin/sh -c \'chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport\'"
SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", PROGRAM="/bin/sh -c \'chown root:gpio /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value ; chmod 660 /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value\'"
""")

if __name__ == \'__main__\':
    ensure_gpiogroup()

那么我们手动执行脚本就行。
(以下命令请在终端操作)

1
首先建一个gpio组:

groupadd -f -r gpio

2
然后把当前用户加入到gpio组
(如果你没有新建过用户,username就是pi)

 gpasswd -a username gpio

然后建立udev的规则文件:/etc/udev/rules.d/99-gpio.rules
进入目录下

cd /etc/udev/rules.d/

然后新建一个名为99-gpio.rules的文件

touch 99-gpio.rules

记得给它权限

sudo chmod +777 99-gpio.rules

然后将以下内容复制到文件内并保存。

SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", PROGRAM="/bin/sh -c \'chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport\'"
SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", PROGRAM="/bin/sh -c \'chown root:gpio /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value ; chmod 660 /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value\'"

然后重启,就可以直接在普通用户下操作GPIO了,经测试,不光Rpi.GPIO库,wiringpi等其他库也可以了。 

 

以上是关于树莓派 ubuntu 系统介绍的主要内容,如果未能解决你的问题,请参考以下文章

树莓派系列一(树莓派基本介绍,系统安装)

树莓派开发笔记:入手研华ADVANTECH工控树莓派UNO-220套件:介绍和运行系统

简单介绍一下树莓派zero w

树莓派介绍

怎样从Ubuntu安装树莓派系统

树莓派登录密码又双叒叕忘了怎么办?而且你还没有显示器!今天给大家介绍一个办法