前几天入了个树莓派3B+,之前用过树莓派zero W觉得很方便,但是外围接口少了点。准备用3B+做个远程多路视频监控系统,现在还在熟悉树莓派的硬件和系统接口,后续会更新实现过程和原码。
树莓派里引出了40个pin,其中有8个引脚可以作为GPIO口使用。实验的主要功能就是验证树莓派中使用Python控制GPIO输入输出的功能。用户指南里用的是面包板插线的方法来进行实验的,我手上没有这些器件,但是有好几块单片机开发板,可以用这些单片机作为扩展板实现上面的实验。扩展板选的是个人比较喜欢的ST家的STM32L476VGT6G Discovery开发板。
感谢Eben大牛做的贡献,让我们这些小白能以低廉的价格用到性能如此卓越的计算机。Eben大牛写的《Raspberry Pi用户指南》入门必备书籍,在这里分享给大家,还有一些树莓派书籍买板子送的:
《Raspberry用户指南》中文第3版:https://pan.baidu.com/s/19s9PDvrXWtu_eSl7GWPuRg 提取码:2gg2
英文第4版:https://pan.baidu.com/s/1pP8PZPa2pPW9MuxcJOqGdQ 提取码:fa5v
其他书籍:链接:https://pan.baidu.com/s/1-27kV8ko4vH8FEd9vswpAg 提取码:66s7
实现流程: STM32板上的按键JOY_DOWN被按下后翻转LED4的状态,同时把和LED4连接的PB2引脚用杜邦线和树莓派上的GPIO12连接。树莓派上检测到GPIO12的状态改变就会打印一段信息到屏幕上。功能很简单,但是在第一次实验时还是遇到一些问题。
树莓派的引脚图:
从上图看到按照引脚标号顺序看第12引脚对应GPIO18,第32引脚对应GPIO12。
先看用户指南里给的demo:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN)
while True:
input_value = GPIO.input(12)
if input_value == False:
print("The button has been pressed.")
while input_value == False:
input_value = GPIO.input(12)
其中第2行定义的就是GPIO和引脚的对应关系,这里参考https://www.linuxhub.org/?p=629。所以BOARD模式使用的是物理引脚的定义,而BCM模式的引脚对应CPU上的GPIO。
下面再来看STM32板上的连线,板上的按键连接PA5引脚,而LED灯和PB2连接,这里把PB2和树莓派的第12 引脚相连。还要注意把STM32 板上的GND和树莓派的GND连接,使2者共地,否则会看不到结果。
树莓派和STM32的连线:
STM32实现的核心代码:
void Key_Scan(void)
{
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_5) == GPIO_PIN_SET)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);
while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_5) == GPIO_PIN_SET);
}
}
功能很简单,就是按键按下后翻转LED状态。
树莓派上的代码是检测到GPIO12状态改变后打印提示:
#!/usr/bin/env python
import RPi.GPIO as GPIO
#忽略警告信息,没有这句每次重新运行会提示警告
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN)
flag = GPIO.input(12)
#GPIO12状态改变后打印提示
while True:
input_value = GPIO.input(12)
if input_value == (not flag):
print("The button has been pressed.")
flag = not flag
上面运行后,每当STM32上的按键按下,树莓派就会打印“The button has been pressed.”,同时STM32板上的LED4翻转。
实验用其他单片机开发板也能实现,只要更改单片机的引脚就行。
前几天入了个树莓派3B+,之前用过树莓派zero W觉得很方便,但是外围接口少了点。准备用3B+做个远程多路视频监控系统,现在还在熟悉树莓派的硬件和系统接口,后续会更新实现过程和原码。
树莓派里引出了40个pin,其中有8个引脚可以作为GPIO口使用。实验的主要功能就是验证树莓派中使用Python控制GPIO输入输出的功能。用户指南里用的是面包板插线的方法来进行实验的,我手上没有这些器件,但是有好几块单片机开发板,可以用这些单片机作为扩展板实现上面的实验。扩展板选的是个人比较喜欢的ST家的STM32L476VGT6G Discovery开发板。
感谢Eben大牛做的贡献,让我们这些小白能以低廉的价格用到性能如此卓越的计算机。Eben大牛写的《Raspberry Pi用户指南》入门必备书籍,在这里分享给大家,还有一些树莓派书籍买板子送的:
《Raspberry用户指南》中文第3版:https://pan.baidu.com/s/19s9PDvrXWtu_eSl7GWPuRg 提取码:2gg2
英文第4版:https://pan.baidu.com/s/1pP8PZPa2pPW9MuxcJOqGdQ 提取码:fa5v
其他书籍:链接:https://pan.baidu.com/s/1-27kV8ko4vH8FEd9vswpAg 提取码:66s7
实现流程: STM32板上的按键JOY_DOWN被按下后翻转LED4的状态,同时把和LED4连接的PB2引脚用杜邦线和树莓派上的GPIO12连接。树莓派上检测到GPIO12的状态改变就会打印一段信息到屏幕上。功能很简单,但是在第一次实验时还是遇到一些问题。
树莓派的引脚图:
从上图看到按照引脚标号顺序看第12引脚对应GPIO18,第32引脚对应GPIO12。
先看用户指南里给的demo:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN)
while True:
input_value = GPIO.input(12)
if input_value == False:
print("The button has been pressed.")
while input_value == False:
input_value = GPIO.input(12)
其中第2行定义的就是GPIO和引脚的对应关系,这里参考https://www.linuxhub.org/?p=629。所以BOARD模式使用的是物理引脚的定义,而BCM模式的引脚对应CPU上的GPIO。
下面再来看STM32板上的连线,板上的按键连接PA5引脚,而LED灯和PB2连接,这里把PB2和树莓派的第12 引脚相连。还要注意把STM32 板上的GND和树莓派的GND连接,使2者共地,否则会看不到结果。
树莓派和STM32的连线:
STM32实现的核心代码:
void Key_Scan(void)
{
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_5) == GPIO_PIN_SET)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);
while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_5) == GPIO_PIN_SET);
}
}
功能很简单,就是按键按下后翻转LED状态。
树莓派上的代码是检测到GPIO12状态改变后打印提示:
#!/usr/bin/env python
import RPi.GPIO as GPIO
#忽略警告信息,没有这句每次重新运行会提示警告
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN)
flag = GPIO.input(12)
#GPIO12状态改变后打印提示
while True:
input_value = GPIO.input(12)
if input_value == (not flag):
print("The button has been pressed.")
flag = not flag
上面运行后,每当STM32上的按键按下,树莓派就会打印“The button has been pressed.”,同时STM32板上的LED4翻转。
实验用其他单片机开发板也能实现,只要更改单片机的引脚就行。
举报