新树莓派配置

参考资料:CSCN博客园
除标注来源的以外,本文全部内容为mxyr原创。

  最近,学校给我们每个小组发了(要还的)两个树莓派。目测应该是树莓派3。新货(其实不知道用了多少届了)到手,赶紧拿来玩一玩。相信有些同学是第一次接触树莓派,甚至是第一次接触编程,那我先简要整理一下,如何通过一个刚到手的树莓派来完成第一次小组作业。真乃,开局一个派,内容全靠写。

基本准备

  硬件学校给的挺全的,电池都给了。首先,鼠标键盘插上电池,树莓派接上排线塞到屏幕后面的插槽里。然后就可以开机了,树莓派没有开机按钮,通电之后自动开机。但是,这里有一点需要注意,那个屏幕自带的接线是由一个电源适配器(英标220V交流转5V,USB-A母口的那个转换头)同时给树莓派和屏幕供电,学校发的电源适配器功率不太大(10W),如果按照默认的接线方式的话会导致供电不足,屏幕右上角会有一个闪电的小标志。这倒没什么大问题,但严重的是,在使用过程中,由于供电不足,树莓派会间歇性抽风,具体表现为花屏,停止响应等等。所以,我建议大家使用两个电源适配器分别为树莓派和屏幕供电。如果分开供电的话,一定要先接通屏幕的电源再接通树莓派的电源。否则屏幕不会有任何输出。具体原因我也不太清楚,但是我猜大概是因为树莓派在开机的时候会自检是否存在视频输出,如果没有检测到的话就不会再尝试任何图像输出以节省计算资源。

  好了,开机之后我们就来到了桌面,我们的树莓派搭载的是linux系统的一个种类,绝大部分linux指令都可以正常执行。

  首先,我们先来配置树莓派的SSH服务。SSH是一种加密的网络传输协议,允许我们通过局域网,乃至互联网来远程与树莓派交换数据。(可以不严谨地类比为windows上的远程桌面)。SSH方便快捷,缺点是没有图形化界面,通过命令行的形式来控制。老师上课介绍的是VNC远程连接的方式,VNC有图形化界面,看起来比较友好。但是,Howard大佬教育我,VNC是“邪教”。所以本文只介绍SSH的连接方法。
  为了之后的一些操作,也为了之后我们可以便捷地远程默认获取树莓派的管理员权限,我们需要先配置一下root账户。root账户是linu系统的默认管理员账户,拥有最高系统权限,类似于windows系统的administrator账户。

  首先,ctrl+alt+T,打开命令行。输入sudo passwd root

  然后设置你的密码,确认密码,完毕。

  我们开机自动登陆的这个账户是pi,不具有root权限。想要获取root权限有三种办法:
  1.在想要执行的指令前加上sudo,那么这句指令就会获得root权限;
  2.su root,使命令行的指令账户转变为root账户,之后执行的所有指令都有root权限;
  3.在图形化界面关机,选择登出,然后以root账户登录。
  当然,类似与之前的操作,我们也可以通过sudo passwd pi来设置pi账户的密码。登录pi账户同理。

  为了使用SSH服务,我们需要先连接到学校的无线网。由于学校网络采用特殊的验证方式,我们需要更改一下无线网络配置。
  熟悉命令行以及vi或vim编辑器的同学可以直接执行sudo vi /etc/wpa_supplicant/wpa_supplicant.conf。然后将以下配置覆盖原有配置:(感谢我的室友mightnent提供配置方法)

country=SG

network={
        ssid="SUTD_Wifi"
        proto=RSN
        key_mgmt=WPA-EAP
        eap=PEAP
        identity="你的学生号"
        password="你的密码"
        phase1="peaplabel=0"
        phase2="auth=MSCHAPv2"
        priority=1
}

  不熟悉命令行以及vi或vim编辑器的同学先用上文说明的方法切换到root账户(因为这个配置文件是系统文件,我们需要root权限才能更改)。之后打开资源管理器,在路径/etc/wpa_supplicant/下找到文件wpa_supplicant.conf,打开,之后使用复制粘贴将上文的配置覆盖原有配置。

  更改之后请重启(执行sudo reboot)!

  现在,不出意外的话,我们已经连接上了学校网络了。

  由于这个树莓派的系统被学校魔改了,常规自启动ssh的方法都不太行,我们换一种办法。
  熟悉命令行以及vi或vim编辑器的同学可以直接执行sudo vi /etc/rc.local然后在最后一行exit 0上一行添加/etc/init.d/ssh start,其他同学可以直接登录root账户在图形化界面修改该文件。

  重启树莓派。

  ctrl+alt+T,打开命令行,输入service ssh status查看ssh状态。不出意外的话,我们能在第三行看到active(running),成功!(ctrl+C可以退出该指令)

  万事俱备,只欠东风。现在,我们在windows系统下安装ssh连接软件putty以及文件管理软件winscp。(已附下载链接,请点击下载)

  在树莓派上通过指令ifconfig,在wlan0下查询其内网ip地址。之后在putty上配置其ip,使用账户pi登录,成功!

  Winscp直接从putty导入配置,启动!成功!

  但是现在有个问题,无论是putty还是winscp我们都不能以root账户登录。

  putty里倒没什么问题,sudo搞定一切。但是在winscp里,当我们想修改系统目录的时候,就需要远程获取root账户权限了。然而这在树莓派中是默认禁止的。所以我们需要更改一下配置。在/etc/ssh/sshd_config文件中,找到#PermitRootLogin prohibit-password,把它改成PermitRootLogin yes(注意去掉#)

  重启树莓派!搞定!

可选:配置静态网络:

  我不确定学校网络的ip地址分配的生存周期是多长时间,保险起见,我们可以给树莓派配置静态ip,避免由于动态ip分配导致的目标丢失。在/etc/dhcpcd.conf里加入配置

interface wlan0
static ip_address=你的ip

  搞定,我们终于可以开始做作业了!

作业

  首先,这个机器人需要几个python的库来配置,我们需要先检查一下这几个库是否安装。输入python3进入python3控制台。输入import pythymiodw如果返回为:

pygame 1.9.4 
Hello from the pygame community. https://www.pygame.org/contribute.html

  则说明安装正常,否则执行一下命令来安装必需的库。

  输入指令exit()退出python3。之后,我们使用老师给的事例文件来测试一下。通过winscp将示例文件thymio_sample.py拷贝到树莓派上,路径随意。
  给机器人充好电,长按中间的圆圈开机,通过usb连接至树莓派,输入python3 你的文件路径来执行,等待一会,如果执行成功的话,机器人的轮子会交替转动并在屏幕上返回如下字样。

  否则会报错。这里需要注意,我们之后会给这个机器人写程序,如果因为我们写的程序本身bug,或者操作不当,导致执行失败的话,会有一个名为asebamedulla的进程卡在后台,导致之后向机器人的通讯全部超时。这时,我们可以用ps aux查询其进程编号,然后kill他的编号。

  我眼神儿不太好,可以使用ps -aux | grep asebamedulla直接查询其进程编号。

  现在我们正式开始作业。首先,附上这个机器人的指令列表(汉化进行中)。这一次作业不会全部用到,只会用到其中的五个。代码和解释如下:

#导入机器人指令解析库pythymiodw
from pythymiodw import *
#定义温度显示函数
def print_temp():
    #object.temperature是机器人的预设温度输出函数
    c=robot.temperature
    #转换为华氏度
    f=9/5*c+30
    #显示三位小数
    c=("%.3f" % c)
    f=("%.3f" % f)
    #在屏幕上显示
    print("The temperature in Celsius is",c,"and Fahrenheit is",f)
    pass
#定义前进函数
def forward(v,t):
    #双轮以速度v前进
    robot.wheels(v,v)
    #等待t秒
    robot.sleep(t)
    pass
#初始化对象robot,当然,起啥名字无所谓,但是注意之前的函数内的robot都要替换成这个名字!
robot = ThymioReal()
#调用前进函数
forward(100,5)
#调用温度显示函数
print_temp()
#结束通讯
robot.quit() 

  上传代码至树莓派,连接机器人,运行,成功!

  至此,完!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注