树莓派入坑笔记(1.上)
这个专栏分上 中 下 三部分
上篇:配置硬件和系统
0:Introduction and Hardware Preparation
如果会数电,模电和C语言,那么阅读体验更佳.如果不会上述知识也没关系,我尽力讲明白,下面先上最终效果.

通俗的说,树莓派4B (Raspberry Pi 4 Model B)可以理解成一个低配的电脑,顶配的单片机,有4个ARM Cortex A72 64位核心,2个USB3.0口,2个USB2.0口,40个GPIO口.我用的这块有8GB的内存和64G的SD卡(功能上相当于硬盘),相比于STM32F1XX的ARM Cortex M3 32位核心在性能上有了非常明显的提升,在开发方式上也相对简单了些,代价是更高的价格,更明显的费电,更严重的发热(需要有风扇).

此外,树莓派4b的通信接口数量更少了,GPIO口上只有1个IIC 1个SPI 1个串口.但是通过USB和CH340模块可以扩展到5个串口.
和STM32F103C8T6对比下,STM32F103C8T6有2个IIC 2个SPI 3个串口.另外1个Micro USB口支持USB2.0,只不过所有的驱动程序需要手写.

我去年入手一个树莓派,只是一直没怎么用到.经历了小学期的必修STM32F103ZET6课程和暑期玩(cai)耍(keng)STM32F103C8T6以后,我想玩一玩这个高端板子,于是就有了这个文章.
在这个实验里面,我们需要在面包板上给各个元件接线
有硬件清单的示意图:

仅供参考,字丑勿喷:)
用的128*64 4线制SPI接口的OLED屏幕某宝10块多钱1片 面包板某宝1块多钱1个.
接好后的效果图:


2:Briefing of GPIO and SPI Interface
GPIO(General-purpose input/output),通用型输入输出口,功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO)如当clock generator, chip select等.
串行外设接口(Serial Peripheral Interface)是一种同步外设接口,它可以使单片机与各种外围设备以串行方式进行通信以交换信息.外围设备包括Flash RAM,网络控制器,LCD显示驱动器,A/D转换器和MCU等.
SPI系统可直接与各个厂家生产的多种标准外围器件接口.它只需4条线:串行时钟线(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输人数据线(MOSI)和低电平有效的从机选择线(NSS).
(1)MISO:主设备输入/从设备输出引脚.该引脚在从模式下发送数据,在主模式下接收数据.
(2)MOSI:主设备输出/从设备输入引脚.该引脚在主模式下发送数据,在从模式下接收数据.
(3)SCK:串口时钟,作为主设备的输出,从设备的输入.
(4)NSS:从设备选择.这是一个可选的引脚,用来选择主/从设备.它的功能是用来作为片选引脚,让主设备可以单独地与特定从设备通信,避免数据线上的冲突.
SPI是一个环形总线结构,由NSS、SCK、MISO、MOSI构成,NSS引脚设置为输入,MOSI引脚相互连接,MISO引脚相互连接,数据在主和从之间串行地传输(MSB位在前).
在STM32编程中,我们需要直接配置GPIO引脚寄存器或者调用GPIO库来配置GPIO口,直接配置SPI相关寄存器或者调用SPI库(标准库 HAL库均可)来实现相关的SPI通信功能(大概要写或者copy几百行C语言代码).不过在这篇专栏中不涉及:)
在树莓派我们只需要调用类似Arduino风格的库函数即可.主流的有两种,BCM2835(有持续的更新)和WiringPi(因为作者原因现在已经停止使用).本文采用前者.

3:Software setup on Raspberry Pi
step0:烧录系统
我们用的Ubuntu(一种Linux)不用Windows 10 IoT是因为据说缺硬件驱动,支持不好.
如果不会Linux可以参考这些扫盲博客
上ubuntu官网下载最新的Ubuntu Desktop for Raspberry Pi 镜像 链接:
注意不要下Ubuntu Server因为没有桌面
下载烧录工具 我用的BalenaEtcher
把SD卡插入读卡器,连接电脑,然后打开BalenaEtcher,把刚才下载的镜像挂载进去,点击烧录
烧录完成后把SD卡插入树莓派4B的卡槽.
上电,开机,配置用户,连接自家wifi(先不考虑校园网的情况,因为比较复杂)
step1.配置国内包源
只说核心的步骤.
先联网,然后切换到root用户
有桌面的话可以用gedit打开包源文件`/etc/apt/sources.list`
否则用vim打开: sudo vim /etc/apt/sources.list
以使用清华大学镜像为例 编辑`/etc/apt/sources.list`为以下内容
保存文件(注意需要root权限)
step.2安装需要用的常用软件包
在root用户更新包源 安装和升级软件包
在raspi-config里面配置Interface 启用GPIO SPI IIC 串口 SSH
关于树莓派的SSH配置可以参考这些博客:
windows电脑上安装SSH工具putty 和 ftp传文件程序filezilla
树莓派命令行ifconfig 查看ip配置 在wlan0处应该有一个ip地址
在putty里面输入
最重要的是启用root用户
树莓派命令行passwd root 设置root密码启用root
参考下面博文配置root能够远程登录
完成以后在windows上用putty远程ssh登录树莓派(试下普通用户和root)

step.3 安装BCM2835
官方网站(下面第1个链接) 下载安装包(下面第2个链接)
在刚才下载安装包的目录打开命令行
如果没有报错,在root用户运行他里面自带的测试程序(src目录下的test)
如果任何一个环节有报错要回去检查
至此 上篇硬件配置基本上算完成了,中篇更新Python处理视频.