当前位置:   article > 正文

如何使用 Python 进行 Raspberry Pi 树莓派硬件编程、网络配置等详细教程_树莓派 python

树莓派 python

01、树莓派安装操作系统

官网下载网址:https://www.raspberrypi.org/downloads/

官网为不同的电脑操作系统提供了烧录软件,大家可以根据不同的操作系统下载对应软件。而且Raspberry Pi Imager文件不大,下载很快。树莓派官方提供的 Raspberry Pi imager 系统写入程序:
在这里插入图片描述
界面也很清晰明了,第一个选项是选择系统,第二个选择相应SD卡,最后确认无误后点击WRITE按钮写入。选择操作系统的镜像文件,选择SD Card的目录,开始进行写入:
在这里插入图片描述
点击第一个按钮Operating System 里边有很多操作系统供大家选择,但因为外网的原因下载速度很慢,在这里推荐大家先在官网上下载操作系统的种子文件,从种子文件得到自己所需的操作系统,之后点击如上页面的最后一项Use custom,即使用本地文件,选中自己下载的操作系统文件(注意是.img文件)。

VNC (Virtual Network Console) 虚拟网络控制台

Tiger VNC(Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。

在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多数情况下,普通用户的使用只需要其中的两个命令:vncserver 和 vncviewer。

有线网络远程连接树莓派
在这里插入图片描述
在系统写入内存卡之后,内存卡的容量会发生变化。
在这里插入图片描述
修改 cmdline.txt 文件如下,分配IP:

ip=192.168.137.100 console=serial0,115200 console=tty1 root=PARTUUID=7e39db9c-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh splash plymouth.ignore-serial-consoles
  • 1

增加ssh文件,开放ssh远程连接服务

SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。

1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
在这里插入图片描述
在电脑启动cmd窗口进行Ping连接测试

ping (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP;回声请求消息给目的地并报告是否收到所希望的ICMP echo (ICMP回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令:
在这里插入图片描述

02、树莓派HDMI连接电视机

在Windows下,进入已写入树莓派系统的SD卡,找到 config.txt(最好备份一下这个)。建议,不管你是什么显示器,或者高清电视机,最好在没显示的情况,请将 config.txt 中的分辨率调低一些,不要老想着,我的显示设备支持1080p,就非得一步到位,建议从下面的低分辨率尝试开始。
计算机显示器使用的分辨率 :

hdmi_mode=4    640x480   60Hz 
hdmi_mode=9    800x600   60Hz 
hdmi_mode=16   1024x768  60Hz 
  • 1
  • 2
  • 3

CEA规定的电视规格分辨率 :

hdmi_mode=2    480p  60Hz 
hdmi_mode=4    720p  60Hz 
  • 1
  • 2

另外:若直接使用的是HDMI线接显示设备,请在config.txt中添加一条:

hdmi_ignore_edid=0xa5000080
  • 1

这个是命令树莓派不检测HDMI设备的任何信息,只按照我们指定的分辨率输出。 这样就不会自动检测显示设备的分辨率,而避免掉很多可能不显示的造成因素,就会按照你自己设置的分辨率显示。分辨率也按照上面列出的尝试,修改 config.txthdmi_mode=xx 值。

03、树莓派Linux指令介绍

在命令提示符前面,可以看到你当前所处的工作目录。在Linux中,你的主目录会被缩写为波浪线(~)。刚刚打开LX终端( LXTerminal)时,它会把当前的工作目录切换到你的主目录下,命令提示符会显示如下:

pi@raspberrypi:~ $
  • 1

➊ 你的用户名: pi, 后面加上@符号。

❷ 你的主机名 ( 默认的主机名是raspberrypi )

❸ Shell的当前工作目录。默认是你的主目录 ( ~ )

❹ 这是命令提示符。你输人的一切内容都会出现在它的右侧,按回车键执行你所输入的命令。

Raspbian文件系统中部分重要的目录
在这里插入图片描述
操作文件或目录常用命令

pwd # 显示当前工作目录(print working directory)

touch # 创建空文件				     
               
mkdir # 创建目录(make directoriy)

-p # 父目录不存在情况下先生成父目录 (parents)    
        
cp # 复制文件或目录(copy)

-r # 递归处理,将指定目录下的文件与子目录一并拷贝(recursive)  
   
mv # 移动文件或目录、文件或目录改名(move)

rm # 删除文件(remove)

-r # 同时删除该目录下的所有文件(recursive)

-f # 强制删除文件或目录(force)

rmdir # 删除空目录(remove directoriy)

cat # 显示文本文件内容 (catenate)

more、less # 分页显示文本文件内容

head、tail # 查看文本中开头或结尾部分的内容

head -n  5  a.log # 查看a.log文件的前5行

tail  -F b.log # 循环读取(follow)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

Linux中zip压缩和unzip解压缩命令详解

# 把 /home 目录下面的mydata目录压缩为 mydata.zip
zip -r mydata.zip mydata #压缩mydata目录

# 把 /home 目录下面的 mydata.zip 解压到 mydatabak 目录里面
unzip mydata.zip -d mydatabak

# 把 /home 目录下面的abc文件夹和123.txt压缩成为abc123.zip
zip -r abc123.zip abc 123.txt

# 把 /home 目录下面的 wwwroot.zip 直接解压到 /home 目录里面
unzip wwwroot.zip

# 把 /home 目录下面的 abc12.zip、abc23.zip、abc34.zip 同时解压到 /home 目录里面
unzip abc*.zip

# 查看把/home目录下面的wwwroot.zip里面的内容
unzip -v wwwroot.zip

# 验证/home目录下面的wwwroot.zip是否完整
unzip -t wwwroot.zip

# 把/home目录下面wwwroot.zip里面的所有文件解压到第一级目录
unzip -j wwwroot.zip
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

查看系统信息:-a --all : print all information, in thefollowing order

[root@VM-4-4-centos ~]# uname -a

Linux VM-4-4-centos 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
  • 1
  • 2
  • 3

04、Linux网络配置设定

在互联网上防火墙是一种非常有效的网络安全模型,通过它可以 隔离风险区域 (即Internet或有一定风险的网络)与 安全区域 (局域网)的连接,同时不会妨碍人们对 风险区域的访问 。所以它一般连接在核心交换机与外网之间。

开启防火墙:servicefirewalld start

关闭防火墙:service firewalld stop

查看端口状态:netstat -tunlp
在这里插入图片描述
完整的防火墙系统通常是由 屏蔽路由器 和 代理服务器 组成

屏蔽路由器:

是一个多端口的IP路由器,它通过对每一个到来的IP包依据组规则进行检查来判断是否对之进行转发。屏蔽路由器从包头取得信息,例如协议号、收发报文的IP地址和端口号、连接标志以至另外一些IP选项,对IP包进行过滤。

代理服务器:

是防火墙中的一个服务器进程,它能够代替网络用户完成特定的TCP/TP功能。一个代理服务器本质上是一个 应用层的网关 ,网关我们前天讲到过,它就是一个关口。

一个为特定网络应用而连接两个网络的网关。用户就一项TCP/TP应用,比如Telnet或者FTP,同代理服务器打交道,代理服务器要求用户提供其要访问的远程主机名。

当用户答复并提供了正确的用户身份及认证信息后,代理服务器连通远程主机,为两个通信点充当中继。整个过程可以对用户完全透明。用户提供的用户身份及认证信息可用于用户级的认证。

防火墙从诞生开始,已经历了四个发展阶段:

基于路由器的防火墙
用户化的防火墙工具套
建立在通用操作系统上的防火墙
具有安全操作系统的防火墙

05、Pycharm运行Micropython

安装MicroPython插件(Plugins)

运行PyCharm IDE,点击插件[Plugins] (见图3)。在”Search”编辑框输入:micropython,点击绿色背景的[Install]按钮安装MicroPython插件,具体操作见图3中的红色椭圆框所示。
在这里插入图片描述
接下来可安装树莓派Pico开发板MicroPython固件(若已在树莓派Pico开发板中事先安装了MicroPython固件,则忽略此步骤)
在这里插入图片描述
配置结果展示如下:接下来Pycharm会帮我们安装MicroPython编程相应的Package库
在这里插入图片描述

06、树莓派单片机应用

流水灯的实现

树莓派实验板的实现流水灯:

[Pin(i, Pin.OUT) for i in range(0,8)]
  • 1

这是列表生成器,在基础研究篇讲到过,迭代器的思想。

from machine import Pin
from utime import sleep

# 定义LED 管理
leds = [Pin(i, Pin.OUT) for i in range(0,8)]

while True:
    for n in range(0,8):
        leds[n].value(1)
        sleep(0.05)
    for n in range(0,8):
        leds[n].value(0)
        sleep(0.05)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

光敏电阻的测试

光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。

from machine import Pin
from time import sleep

makerobo_D0 = 15


def init_makerobo():
    global D0
    D0 = Pin(makerobo_D0, Pin.IN)


def print_infor(value):
    if value == 1:
        print("\n****** 现在是黑夜 ******\n")
    else:
        print("\n****** 现在是白天 ******\n")


def makerobo_loop():
    makerobo_status = 1
    while True:
        makerobo_temp = D0.value()
        if makerobo_temp != makerobo_status:
            print_infor(makerobo_temp)
            makerobo_status = makerobo_temp

        sleep(0.1)


if __name__ == "__main__":
    init_makerobo()
    makerobo_loop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

步进电机测试

ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。
在这里插入图片描述
代表“反相器”,就是输入端和输出端的信号是反相的,比如如果输入端是低电平时,输出端就是高电平;当输入端是高电平时,输出端就是低电平。

LN2003也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平,继电器得电吸合。

from machine import Pin
from time import sleep

makerobo = 15

def init_makerobo():
    global motor
    motor = Pin(makerobo, Pin.OUT)
    
    
def start_motor():
    choose = 1
    while True:
        choose = input("请输入( 1 | 开 )或( 0 | 关 ):")
        motor.value(int(choose))

if __name__ == "__main__":
    init_makerobo()
    start_motor()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

蜂鸣器的实验测试:

蜂鸣器设置为高电平,关闭蜂鸟器,蜂鸣器为低电平触发,所以使能蜂鸣器让其发声。

from machine import Pin
from time import sleep

makerobo_Buzzer = 0    # 有源蜂鸣器管脚定义

# GPIO设置函数
def makerobo_setup(pin):
    global makerobo_BuzzerPin
    global buzzer
    makerobo_BuzzerPin = pin

    buzzer=Pin(makerobo_BuzzerPin,Pin.OUT)       
    # 设置有源蜂鸣器管脚为输出模式
    buzzer.value(1)                             
    # 蜂鸣器设置为高电平,关闭蜂鸟器

#  打开蜂鸣器
def makerobo_buzzer_on():
    buzzer.value(0)         
    # 蜂鸣器为低电平触发,所以使能蜂鸣器让其发声
# 关闭蜂鸣器
def makerobo_buzzer_off():
    buzzer.value(1)         
    # 蜂鸣器设置为高电平,关闭蜂鸟器

# 控制蜂鸣器鸣叫
def makerobo_beep(x):
    makerobo_buzzer_on()     
    # 打开蜂鸣器控制
    sleep(x)            
    # 延时时间
    makerobo_buzzer_off()    
    # 关闭蜂鸣器控制
    sleep(x)            
    # 延时时间

# 循环函数
def loop():
    while True:
        makerobo_beep(0.5) 
        # 控制蜂鸣器鸣叫,延时时间为500mm

# 程序入口
if __name__ == '__main__':
    makerobo_setup(makerobo_Buzzer) 
    # 设置GPIO管脚
    loop()                          
    # 调用循环函数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/510913
推荐阅读
相关标签
  

闽ICP备14008679号