最佳娱乐365bet

使用Raspberry Pi 4进行电子制作 入门!【第4篇】 使用Raspberry Pi 4和GPIO,挑战基础的电子作品制作!

使用Raspberry Pi 4进行电子制作 入门!【第4篇】 使用Raspberry Pi 4和GPIO,挑战基础的电子作品制作!

※本文最初发表于2020年2月12日,对其重新编辑后于2022年3月14日再次发表。

第1篇:开始使用新产品“Raspberry Pi 4”!

第2篇:Raspberry Pi 4的设置!

第3篇:无头模式下熟练使用Raspberry Pi 4!

大家好,我是吉田!

在本系列连载中,我将使用Raspberry Pi 4 Model B(Raspberry Pi4),和各位读者朋友一起,对Raspberry Pi的设置以及电子制作的基础知识进行回顾,本篇是最终篇。

在第一篇到第3篇中,我已经给大家介绍了Raspberry Pi OS(Raspbian Buster)的安装、环境设置以及基本使用方法。在本篇中,我将使用GPIO(数据输入输出端口),连接传感器等器件,实际进行电子作品的制作。

目录

本项目所需部件

Raspberry Pi和硬件的连接(GPIO)

Raspberry Pi 4连接传感器并进行测量

点亮LED(NeoPixel)

LED和传感器联动工作

总结

1. 本项目所需部件

Raspberry Pi 4Model B

(如果使用入门套件等套装产品,里面会包含启用所需的相关部件。)

BME280温湿度传感器

16-LED neopixel 环

迷你面包板

2. Raspberry Pi和硬件的连接(GPIO)

Raspberry Pi上有很多用于硬件连接的接口,包括用于数字输入输出的GPIO和摄像头、音响等接口。通过这些接口与硬件连接,就可以制作各种各样的电子作品。

GPIO连接

Raspberry Pi主要是通过40个被称为GPIO(General Purpose Input Output)的端口与硬件进行连接,也就是Raspberry Pi左下角的1号引脚到右上角的40号引脚。通过下图所示的GPIOxx编号,可以在程序中进行指定。

[GPIO引脚分配] https://www.raspberrypi.org/documentation/usage/gpio/

各个GPIO引脚的功能事先已经分配完毕,这些引脚的功能区分大致如下:

电源和GND: Raspberry Pi上事先已经指定了3.5V和5V的供电引脚各2个,除此以外,还有8个GND引脚(电压0V)。

数字输入输出: 除了上述端口之外,其他的端口都可以用于数字输入输出。具体来说,就是可以根据需要,通过GPIO2〜27来连接LED和开关等部件,进行电子作品的制作。另外,这些端口可以支持数字输入输出和PWM(模拟输出)等通信方式。

PWM:Raspberry Pi虽然原则上只能处理数字信号(0或1),但实际上也能进行伪模拟输出(电压的阶梯输出)。通过伪模拟输出,可以调节LED的亮度,也可以指定伺服电机的角度。这种控制方式叫PWM(Pulse Width Modulation),26个GPIO引脚都可以作为软件PWM使用。

除此之外,有些引脚还支持用于连接LCD显示器等设备的I2C(Inter-Integrated Circuit)标准、UART(Universal Asynchronous Receiver Transmitter)、SPI(Serial Pheripheral Interface)等串行通信方式。这些引脚也是事先指定的,如果启用这些串行通信方式,则与之重复的引脚不能用作GPIO引脚。

3. Raspberry Pi 4连接传感器并进行测量

接下来,我们将Raspberry Pi 4和传感器连接,进行相应的测量。首先,我们尝试使用BME280这款常用的温湿度传感器。

该传感器在刚刚提到的GPIO中,也是使用I2C通信方式。为此,我们先需要通过Raspberry Pi的配置工具raspi-config来启用I2C。具体的做法就是在raspi-config中选择“Interfacing Options”,然后选择“Enable I2C”。

$ sudo raspi-config

在实际进行连接时,请参照引脚分配的图片和下表,连接BME280和Raspberry Pi的GPIO。

BME280引脚 (左起)

Raspberry Pi GPIO

Vio

3.3V

Vcore

NA(无连接)

GND

GND

CSB

3.3V

SDI

GPIO2

SCK

GPIO3

SDO

GND

传感器和Raspberry Pi连接完成之后,为了操控传感器,需要安装几个I2C库。安装完成后,我们再通过命令,确认连接的传感器是否可以使用。

$ sudo apt install i2c-tools python-smbus

$ sudo i2cdetect -y 1

运行I2C Detect命令后,如下图所示,确认可以通过BME280的默认地址0x76进行通信。

确认连接正常后,因为BME280有相应的示例程序,所以我们来试用一下。

$ sudo git clone https://github.com/SWITCHSCIENCE/BME280.git

$ sudo pip install smbus2

$ python BME280/Python27/bme280_sample.py

运行该程序,轻轻松松地就得到了温度、湿度、气压的相应数值!

4. 点亮LED(NeoPixel)

通过使用GPIO的数字输入输出,能够正常获取传感器的测量数值之后,我们接下来试一下其他的硬件。在本项目中,我用的是LED中可以发出多色光的NeoPixel这款产品。该产品只要连接三根电线,就能让连接在一起的LED发光,而且该产品还有对应的库文件,作为灯饰使用不仅非常方便快捷,装饰效果也非常亮眼。

这款NeoPixel是由16颗LED连在一起的环状产品。它背面有三个连接端口,我们需要在端口处用焊上电线,用来连接Raspberry Pi。在进行连接时,只需要连接Raspberry Pi的电源正、电源负和输入引脚这三个引脚即可。请参考下表进行接线。

NeoPixel

(顺时针方向)

Raspberry PiGPIO

Input

GPIO18 (黄色)

5V DC

5V (橙色)

Ground

GND (黑色)

接着,我们参照Adafruit 网站的提示,进行库的安装。

$ sudo pip3 install adafruit-circuitpython-neopixel

该网页上还提供了示例程序“neopixel_simpletest.py”,该程序也需要下载。下载完成后,打开该程序,对下述部分进行修改,这样才能用在Raspberry Pi上。

# pixel_pin = board.NEOPIXEL #注释掉

pixel_pin = board.D18 #取消注释(启用D18)

num_pixels = 16 #这次用的是16-LED neopixel环,所以需要对它进行指定

然后,使用python3运行修改之后的程序。此时需要注意的是,程序运行有权限要求,需要用sudo运行。

$ sudo python3 neopixel_simpletest.py

使用该示例程序时,LED会先后亮R(红)、G(绿)、B(蓝)这三种颜色,再变成旋转的霓虹色,看起来非常炫酷。

5. LED和传感器联动工作

接下来是最后一个环节,我们要让该LED(NeoPixel)根据传感器测量出来的数值,改变发光方式。具体而言,就是要根据房间内的温度和湿度,改变NeoPixel的颜色。我们先将BME280和NeoPixel都安装到Raspberry Pi上,然后把它们放入盒子等容器中。

在程序方面,我们设定为当室温低于15℃时发蓝光,表示室内“寒冷!”;当温度处于15~25℃之间时发绿光,表示室内温度“适宜!”;当湿度达到70%以上时发红光,表示室内“闷热!”。

我们先复制刚刚使用的BME280示例程序,并创建temp_led.py程序。

$ sudo cp ~/BME280/Python27/bme280_sample.py ~/Programs/temp_led.py

具体做法就是在原来的bme280_sample程序中,添加下图所示的黄色部分的内容。

#coding: utf-8

from smbus2 import SMBus

import time

import RPi.GPIO as GPIO

interrupted = False

GPIO.setwarnings(False)

import time

import board

import neopixel

pixel_pin = board.D18

num_pixels = 16

ORDER = neopixel.GRB

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.2, auto_write=False,

pixel_order=ORDER)

bus_number = 1

i2c_address = 0x76

setup()

get_calib_param()

if __name__ == '__main__':

try:

temp, press, hum = readData()

except KeyboardInterrupt:

pass

if temp:

msg = "今の室温は、" + str(round(temp,1)) + "度、湿度は、" + str(round(hum,1)) + "パーセントです!"

if temp > 25:

msg += "暑くないですか?"

pixels.fill((255, 0, 0))

elif temp < 15: msg += "寒いですね!" pixels.fill((0, 0, 255)) elif hum > 70:

msg += "蒸し蒸ししますね"

pixels.fill((255, 0, 0))

else:

msg += "快適です!"

pixels.fill((0, 255, 0))

pixels.show()

print (msg)

time.sleep(3)

pixels.fill((0, 0, 0))

pixels.show()

bme280_sample.ino hosted with ❤ by GitHub然后,通过sudo python3运行该程序。

这样,如果室内温度过低,就会亮蓝光。

寒冷状态

另外,当我们通过向传感器吹气等方式改变室内温度或湿度时,LED的发光颜色也会发生相应的变化。

舒适状态(15℃– 25℃,湿度70%以下)

温度、湿度过高

6. 总结

本文是介绍Raspberry Pi 4的系列连载中的第4篇,在本篇中,我们使用传感器等器件,完成了一款电子作品的制作。大家应该也学到了传感器的连接、LED(NeoPixel)的使用等基础知识吧。

Raspberry Pi4经过增加内存容量等产品升级后,已经能够适用于高性能的处理等应用场景,不过本文仅仅介绍了很基础的电子制作方法。

如果各位读者朋友读了本系列连载文章之后,对Raspberry Pi和电子制作已经产生了兴趣,建议大家一定要使用Raspberry Pi4来挑战更为有趣的电子作品的制作。

最后,祝愿大家在Raspberry Pi的陪伴下,充分感受到电子制作的乐趣!

本系列连载的内容

第1篇:开始使用新产品“Raspberry Pi 4”!

第2篇:Raspberry Pi 4的设置!

第3篇:无头模式下熟练使用Raspberry Pi 4!

第4篇:使用Raspberry Pi 4和GPIO,挑战基础的电子作品制作!(本文)

吉田 显一(Yoshiken)

在普通公司工作的上班族,非常喜欢创作的周末创客,出版了电子书MESHBOOK,平时也写写博客。

http://blog.ktrips.net

← SMSboom:短信轰炸、短信测压开源程序 气体检测仪器上标识的COMB是什么意思 →

相关推荐