玩转树莓派python3

  1. 树莓派官网下载种子,下载固件
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
2.烧录到树莓派SD卡内,烧制完成后如果发现32G或者16G 都会只剩下几十M,不用担心因为他是img格式。在接下来的步骤里不影响使用。
注:如果你是淘宝上买的已经烧制好了的,发现有些问题或者想换个固件玩,那么可以通过SD卡格式化工具,先进性格式化,然后再重新烧制你想要的固件。

3.安装python\PIP\vim\rpi.gpio
sudo pip install rpi.gpio
安装python参考:
这个可以在百度上搜索,根据个人需要安装。

中间会遇到权限问题,操作如下:
第一步 打开树莓派命令行界面用普通账号pi登录后输入
sudo passwd root系统会提示你设置密码
然后紧接着输入 sudo passwd 解锁root,接下来的指令都是先解锁,su root
输入密码后会出现#号,代表解锁完成。
如果发现涉及vim的指令出现找不到文件夹,那就安装vim

安装vim参考文献
https://blog.csdn.net/kxwinxp/article/details/78370980
vim支持多文件编辑、块复制,这对于我们在Linux上进行一些配置文件的修改工作时是很棒好功能。

4.安装vsftpd
http://blog.chinaunix.net/uid-28887367-id-4546597.html
中间遇到编辑文件,无法退出时参考:vi 或vim编辑文件指令
https://jingyan.baidu.com/article/5553fa8284fc7865a239341a.html

5.设置VNC
https://shumeipai.nxez.com/2018/08/31/raspberry-pi-vnc-viewer-configuration-tutorial.html
提示树莓派的初始user:pi 密码:raspberry
6. linux安装谷歌输入法:参考文献
https://blog.csdn.net/qq_41204464/article/details/82941348https://blog.csdn.net/qq_41204464/article/details/82941348
7.树莓派设置中文:参考文献
https://shumeipai.nxez.com/2016/03/13/how-to-make-raspberry-pi-display-chinese.html

8.树莓派安装wiringpi库不介绍了,WiringPi是应用于树莓派平台的GPIO控制库函数, wiringPi可使用C或者C++开发。
在这里插入图片描述
如果你使用C或者C++程序,在linux下运行,要用到如下两个指令。
g++ wall –o xx.cpp -1wirngPi //使用C++编程时。
gcc –wall –o xx.c -1wirngPi //使用C编程时。-wall是为了使能所有警告,
在写程序时注意加载树莓派自带的include <stdio.h>

9.使用rpi.gpio,轻松完成车辆“黑色或暗色”循迹和红外线蔽障实验以及超声波测距防碰撞实验。
车辆循迹传感器:由于黑色具有吸收光线作用,所以当在黑色区域红外线发射的光被吸收,B3输出高电平。反之白色区域三极管导通输出低电平0。树莓派引入GPIO.setup(B3, GPIO.IN, pull_up_down=GPIO.PUD_UP) 对B3浮空管脚做0和1的判断,去决定车向哪个方向行驶。
在这里插入图片描述在这里插入图片描述
红外线蔽障:
红外线向外发出,如果前面有遮挡物,则光线无法吸收,三极管不导通,B3输出0,前面有遮挡物,B3输出1,树莓派引入GPIO.setup(B3, GPIO.IN, pull_up_down=GPIO.PUD_UP) 对B3浮空管脚做0和1的判断,去决定车向哪个方向行驶。
超声波测距:
通过发射、反射,去判断前方距离,根据距离前方的距离,决定车辆停止、后退、掉头等操作。
关键性测距函数:

def distance():#就是距离前方距离
	GPIO.output(TRIG, 0)#发射超声波
	time.sleep(0.000002)

	GPIO.output(TRIG, 1)
	time.sleep(0.00001)#延时操作
	GPIO.output(TRIG, 0)

	
	while GPIO.input(ECHO) == 0:#探测接收超声波
		a = 0
	time1 = time.time()#获取当前时间
	while GPIO.input(ECHO) == 1:
		a = 1
	time2 = time.time()

	during = time2 - time1  #探测发出时间和接收时差
	return during * 340 / 2 * 100

总结:通过树莓派rpi.gpio库采用BCM引脚绑定方式(GPIO.setmode(GPIO.BCM)
),去控制某个引脚的输出、监听等等,都比51、STM等M系列单片机方便一些,其主要原因是由于底层的各功能寄存器都被rpi.gpio库收拾了。另外像IIC、SPI、RS232通讯都可以下载对应的库,例如:import serial、re、smbus,,另外可以自己买一个MCP2515通过spi控制,进而实现Can收发
在这里插入图片描述

#GPIO控制常用方法:
import RPi.GPIO as GPIO#导入RPI.GPIO

GPIO.setwarnings(False)#设置管脚复用时不引起警告
GPIO.setmode(GPIO.BCM)#设置BCM引脚对应方式
GPIO.setup(引脚 GPIO.OUT)#将GPIO管脚XX 设置为输出模式,,输入模式是GPIO.setup(xx, GPIO.IN))
GPIO.input(引脚)#获取引脚状态
q = GPIO.PWM(xx, 440)	# 将xx号引脚初始化为PWM实例,频率为440Hz  
q.start(50)					# xx引脚占空比设置为50%  XX.stop()//停止输出PWM波,start开始输出
GPIO.output(xx,1)设置xx引脚为高电平

在C里一般配置GPIO时如下
GPIO_InitTypeDef GPIO_InitStructure;//结构体	
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TX  锁定管脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//配置时钟
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//配置输出模式
GPIO_Init(GPIOA,&GPIO_InitStructure);//锁定那一组的管脚
........

在这里插入图片描述

参考文献:
https://blog.csdn.net/kxwinxp/article/details/78370980
http://blog.chinaunix.net/uid-28887367-id-4546597.html
https://jingyan.baidu.com/article/5553fa8284fc7865a239341a.html
https://shumeipai.nxez.com/2018/08/31/raspberry-pi-vnc-viewer-configuration-tutorial.html
https://blog.csdn.net/qq_41204464/article/details/82941348https://blog.csdn.net/qq_41204464/article/details/82941348
https://shumeipai.nxez.com/2016/03/13/how-to-make-raspberry-pi-display-chinese.html

扫描二维码关注公众号,回复: 10942764 查看本文章
发布了2 篇原创文章 · 获赞 1 · 访问量 185

猜你喜欢

转载自blog.csdn.net/weixin_44435894/article/details/105585264