前奏 1: 初识树莓派

学习目标


  • 初识树莓派

学习内容


介绍树莓派

什么是树莓派

Raspberry Pi(中文名为“树莓派”,简写为RPi,(或者RasPi /
RPI)是为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,其系统基于Linux。
随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。
自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。

树莓派由注册于英国的慈善组织“Raspberry Pi
基金会”开发,Eben·Upton/埃·厄普顿为项目带头人。2012年3月,英国剑桥大学埃本·阿普顿(Eben
Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry
Pi电脑板,中文译名"树莓派"。这一基金会以提升学校计算机科学及相关学科的教育,让计算机变得有趣为宗旨。基金会期望这
一款电脑无论是在发展中国家还是在发达国家,会有更多的其它应用不断被开发出来,并应用到更多领域。在2006年树莓派早期概念是基于Atmel的
ATmega644单片机,首批上市的10000“台”树莓派的“板子”,由中国台湾和大陆厂家制造。

它是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100
以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。
Raspberry Pi B款只提供电脑板,无内存、电源、键盘、机箱或连线。

树莓派型号区别

树莓派外接设备

课堂小结


在大家对树莓派有了初步的认识之后,接下来的一段时间里,我们将学习在树莓派4B上使用Gravity:37件传感器套装

前奏2:准备

所需硬件


安装树莓派系统


推荐8G以上的闪迪 Class10
SD卡,网上购买的SD卡可能已经烧录好镜像了,但是系统总是会更新的,而且树莓派的系统有那么多(根本玩不过来),时不时的自己烧录是必备技能,本文以Raspbian系统为例。

下载最新镜像

建议下载Raspberry Pi OS (32-bit) with desktop and recommended software

  • 可以直接下载,但鉴于有墙隔着,速度会比较慢,这时可以先下载BT种子,然后活用百度网盘的离线下载。

在Windows中烧录SD卡

安装好了就这样

  • 插入SD卡,并记下盘符

  • 打开上面的烧录软件

  • 选中上面下载的镜像文件,并选中对应的盘符,千万不要搞错了,接着就可以开始Write了

  • 若无法正常写入可以尝试格式化SD卡再试

  • 写入完成后弹出SD卡,插入树莓派即可使用

第一次开机*


  • 如图将树莓派与屏幕链接

  • 将树莓派扩展板与烧好系统的SD卡正确的插入树莓派然后给树莓派上电开机。

  • 第一次开机后进行一系列配置,点击Next

  • 选择自己所在的国家然后点击Next

  • 设置密码(如果不设置将会是树莓派默认密码raspberry)然后点击Next

  • 这里根据自己需要选择并点击Next

  • 选择自己的WIFI名称并点击Next然后输入密码,也可以点击Skip跳过。

  • 根据自己需要选择Skip还是Next。

  • 点击Restart重启树莓派

  • 启动树莓派的I2C、SPI、GPIO、串口等接口。点击确认并重启树莓派(如已经启用请忽略)

  • 安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车:

sudo apt-get install build-essential python-dev python-smbus git

  • 跟新WiringPi库。在终端中,依次键入如下指令,并回车:

cd /tmp

wget https://project-downloads.drogon.net/wiringpi-latest.deb //下载wiringpi库

sudo dpkg -i wiringpi-latest.deb //安装wiringpi库

gpio readall //查看GPIO编号

  • 至此准备工作已经全部完成。

第1课:数字LED发光模块

学习目标


从LED开启我们的树莓派之旅吧!

在硬件方面,你将学习到树莓派LED,GPIO输出相关知识,这对于之后的项目非常重要。在这个过程中,你将接触Python编程,编程其实也没你想象的那么困难。

让我们从一个最基本的项目,使用树莓派控制一个数字LED发光模块的闪烁

学习内容——LED闪烁


**导读:**在第一个项目中我们将学习数字LED发光模块内部电路解析,和Thonny Python
IDE基础使用和操作GPIO的基础Python代码。

所需原件

硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接

  • 将树莓派IO扩展板安装在树莓派上并将LED发光模块接入扩展板12号数字端口然后开机

  • 通过分析LED发光模块电路了解到,信号脚直接接入一个NPN三极管的基极,三极管及集电极和发射极分别接的LED的负极和电源负极,LED的正极接着一个限流电阻然后接在VCC上。也就是说当信号脚出现高电平的时候三极管的集电极与发射极接通,电路形成回路LED发亮。当信号脚接低电平的时候LED熄灭。

  • 打开Thonny Python IDE将下面程序复制到其中

代码

import RPi.GPIO as GPIO   #导入树莓派提供的python模块
import time      #导入时间包,用于控制闪烁
	
LED=12     #定义LED接入的引脚号

  GPIO.setmode(GPIO.BCM)      #设置GPIO模式,BCM模式在所有数莓派通用
  GPIO.setup(LED,GPIO.OUT)     #设置GPIO12为输出模式
  while True:             #无限循环执行下面的指令
    GPIO.output(LED,GPIO.HIGH)    #将LED信号脚置高(即点亮LED)
    time.sleep(1)       #延时一秒
    GPIO.output(LED,GPIO.LOW)     #将LED信号脚置低(即熄灭LED)
    time.sleep(1)       #延时一秒

  • 点击IDE中的保存,放到你想要的位置和名字

  • 点击运行此时可观察到LED不停亮灭

第2课:数字大按钮模块

学习目标


在上次的教程中我们已经成功的学会了怎么简单的控制LED模块的亮灭了。

本次教程我们将在上次教程的基础上学习树莓派按键,GPIO输入相关知识,这对于之后的项目非常重要。在这个过程中,你将接触新的Python程序,这些都是最基础的,不会很困难。

学习内容——按键控制LED


**导读:**在这个项目中我们将学习到按键模块的基础原理和巩固上项目中学到的Thonny
Python IDE基础使用和操作GPIO的基础Python代码。

所需元件

硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接

  • 将树莓派IO扩展板安装在树莓派上并将LED发光模块接入扩展板12号数字端口,数字大按钮模块接入8号数字端口,然后开机

  • 通过分析数字大按钮模块的原理图可以了解到,当按键没有按下的时候信号输出引脚为低电平,指示灯熄灭。当按键按下的时候信号引脚为高电平,指示灯亮起。这就可以对应LED发光模块的两种状态,通过树莓派简单的判断即可实现按键控制LED灯的亮灭了。

  • 打开Thonny Python IDE将下面程序复制到其中

代码

import RPi.GPIO as GPIO    #导入树莓派提供的python模块
import time    #导入时间包,用于控制闪烁

LED=12       #定义LED接入的引脚号
Blue=8       #定义按钮接入的引脚号

GPIO.setmode(GPIO.BCM)    #设置GPIO模式,BCM模式在所有数莓派通用
GPIO.setup(LED,GPIO.OUT)    #设置GPIO12为输出模式
GPIO.setup(Blue,GPIO.IN)      #设置GPIO8为输入模式

while True:        #无限循环执行下面的指令
    if GPIO.input(Blue):  # GPIO.input(Blue)将返回GPIO8的状态然后判断,如果GPIO8为高电平(即按键按下)就执行下面的语句
        GPIO.output(LED,GPIO.HIGH)      #将LED信号脚置高(即点亮LED)
    else :          #如果GPIO8为低电平(即按键没按下)就执行下面的语句
        GPIO.output(LED,GPIO.LOW)   #将LED信号脚置低(即熄灭LED)
time.sleep(0.1)   #延时0.1秒,在在这里的作用是控制查询按键的频率

  • 点击IDE中的保存,放到你想要的位置和名字

  • 点击运行当按下数字大按钮时灯亮。等松开数字大按钮时灯熄。

第3课:模拟LM35线性温度传感器

学习内容


介绍模拟LM35线性温度传感器

基于LM35半导体的温度传感器,可以用来对环境温度进行定性的检测。LM35半导体温度传感器是美国国家半导体公司生产的线性温度传感器。其测温范围是-40℃到150℃,灵敏度为10mV/℃,输出电压与温度成正比。LM35线性温度传感器与Arduino专用传感器扩展板结合使用,可以非常容易地实现与环境温度感知相关的互动效果。

温度测量常用的传感器包括热电偶,铂电阻,热敏电阻和半导体测温芯片,其中热电偶常用于高温测量,铂电阻用于中温测量(到摄氏800度左右),而热敏电阻和半导体温度传感器适合于100-200度以下的温度测量,其中半导体温度传感器的应用简单,有较好的线性度和较高的灵敏度。

注意事项:

新版模拟传感器的端口布局具备以下两项改进。请参考我们博客中"如何更改数据线接头布局"的说明(http://www.dfrobot.com/community/trick-for-changing-sensor-cable-pin-mapping.html),当在IO扩展板上使用该传感器时,你可能会需要调整接头的布局。为了方便您的使用,我们将会做出更多改进,尽请关注。

在树莓派上使用模拟LM35线性温度传感器

  • 将模拟LM35线性温度传感器接入扩展板0号模拟引脚

  • 打开Thonny Python IDE将下面程序复制到其中

第4课:I2C数字功率计

学习内容


介绍I2C数字功率计

Gravity: I2C数字功率计是一款可测量26V
8A以内各类电子模块、用电设备的电压、电流和功率,最大相对误差不超过±0.2%的高分辨、高精度、大量程测量模块(使用前需进行一次简单的手动校准)。可用于太阳能系统、电池库仑计、电机、主控板或电子模块的功耗测量、电池续航评估与实时电源参数在线监控。

模块采用TI
INA219零温漂电流/功率监控芯片和2W大功率低温漂10mΩ合金采样电阻,电压和电流分辨率分别可达4mV与1mA,在满量程测量条件下,电压与电流的最大测量相对误差不超过±0.2%,并提供4个可通过拨码开关配置的I2C地址。模块可对双向高侧电流(流经电源或电池正极的电流)进行准确测量,这在太阳能或库仑计应用,电池既需要充电,也需要放电的场合尤为有用,用户可通过电流的正负读数了解电池的充放电状态,也可以了解电池的冲放电的实时电压、电流与功率。在电机应用场景,可通过实时监控电机电流是否由于堵转或负载过大导致电流过大,从而及时采取保护措施。此外,也可以使用该模块测量各类电子模块或整个项目的实时功耗,从而评估电池的续航时间。

在树莓派上使用I2C数字功率计

  • 将树莓派开机并将正确安装树莓派扩展板

  • 将传感器连接至扩展板的IIC接口

  • 配置使能I2C并重启树莓派,如已配置,可跳过该步骤。按如下流程配置树莓派并重启。

  • 安装I2C库和工具,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车:

sudo apt-get install i2c-tools

  • 当连接上I2C设备后,可以通过以下命令查看I2C地址。在终端中,依次键入如下指令,并回车:

sudo i2cdetect -y -a 1

  • 读取I2C设备所有寄存器数据。在终端中,依次键入如下指令,并回车:

sudo i2cdump -y 1 0x45

-y 代表取消用户交互过程,直接执行命令

1 代表I2C设备号

0x45 代表I2C设备地址

  • 安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车:

sudo apt-get install build-essential python-dev python-smbus git

  • 安装驱动库。在终端中,依次键入如下指令,并回车:

cd \~

git clone https://github.com/DFRobotdl/37\_Pcs\_Sensor.git

  • 进入37_Pcs_Sensor\4_I2C_Digital_Wattmeter文件夹找到get_voltage_current_power.py文件使用Thonny
    Pyth IDE打开并运行就可以看到打印的数据了

  • 点击运行会显示电流电压等信息

第5课:I2C颜色识别传感器 - TCS34725

学习内容


导语

想知道《人与自然》中变色龙是怎么变色的吗?想知道时下最流行的电子取色笔是怎么取色的吗?

不要多想,它们的原理很简单。大自然是人类最好的老师,很多奇趣创意的灵感都是从自然界的生物中获得的。

变色龙在经过几千万年的衍化后,形成了一种生物本能,可以通过变换皮肤的保护色完美隐藏在周边的环境中。这是一种从“取色”到“配色”的过程。

而现今的电子取色笔也是同样原理,通过检测物体的颜色,得到RGB三基色数值,再通过融合这些数值,调配出物体的颜色。就和小时候捏橡皮泥似得,在知道一定配比之后就能捏出你想要的颜色。

介绍I2C颜色识别传感器

TCS34725是一款低成本,高性价比的RGB全彩颜色识别传感器,传感器通过光学感应来识别物体的表面颜色。支持红、绿、蓝(RGB)三基色,支持明光感应,可以输出对应的具体数值,帮助还原颜色本真。

为了提高精度,防止周边环境干扰,在传感器底部特意添加了一块红外遮光片,最大程度减小了入射光的红外频谱成份,让颜色管理更加准确。板载自带四个高亮LED,可以让传感器在低环境光的情况下依然能够正常使用,实现“补光”的功能。模块采用I2C通信,拥有PH2.0和XH2.54(面包板)两种接口,用户可以根据自己的需求来选择接口,更加便利。

在树莓派上使用I2C颜色识别传感器

  • 将树莓派开机并将正确安装树莓派扩展板

  • 将数字颜色识别传感器接入扩展板对应的IIC接口

  • 配置使能I2C并重启树莓派,如已配置,可跳过该步骤。按如下流程配置树莓派并重启。

  • 安装I2C库和工具,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车:

sudo apt-get install i2c-tools

  • 当连接上I2C设备后,可以通过以下命令查看I2C地址。在终端中,依次键入如下指令,并回车:

sudo i2cdetect -y -a 1

  • 读取I2C设备所有寄存器数据。在终端中,依次键入如下指令,并回车:

sudo i2cdump -y 1 0x29

-y 代表取消用户交互过程,直接执行命令

1 代表I2C设备号

0x29 代表I2C设备地址

  • 打开Thonny Python IDE将下面程序复制到其中
import smbus
import time
bus = smbus.SMBus(1)

addr = 0x29

CDATAL = 0x94
CDATAH = 0x95
RDATAL = 0x96
RDATAH = 0x97
GDATAL = 0x98
GDATAH = 0x99
BDATAL = 0x9a
BDATAH = 0x9b

while True:
   ClearL = bus.read_byte_data(addr , CDATAL)
   ClearH = bus.read_byte_data(addr , CDATAH)
   Clear = ClearH * 0x100 + ClearL
   print("Clear = 0X%x" %Clear)
   
   RedL = bus.read_byte_data(addr , RDATAL)
   RedH = bus.read_byte_data(addr , RDATAH)
   Red = RedH * 0x100 + RedL
   print("Red   = 0X%x" %Red)
   
   GreenL = bus.read_byte_data(addr , GDATAL)
   GreenH = bus.read_byte_data(addr , GDATAH)
   Green = GreenH * 0x100 + GreenL
   print("Green = 0X%x" %Green)
   
   BlueL = bus.read_byte_data(addr , BDATAL)
   BlueH = bus.read_byte_data(addr , BDATAH)
   Blue = BlueH * 0x100 + BlueL
   print("Blue  = 0X%x" %Blue)
   
   print("    ")
   time.sleep(1)

  • 点击运行将自动打印出颜色信息。

第6课:模拟角度传感器

学习内容


介绍模拟角度传感器Rotation Sensor V2

普通的电位器的旋转角度最多只有300度。所以把Arduino的5V供电分配到每1度后,精度是相当低的。

如果你想制作一个角度或者模拟量精确控制的项目,最好是选择这款精密角度传感器。

它是基于多圈精密电位器,可以旋转10圈左右,可将电压细分为1024份。可通过3P的连接线与传感器扩展板结合,可以精确地实现角度微小变化的互动效果。

该款商品已进行更新。V2版具体线序请参考页面下方产品资料库。V1版请根据模块上丝印标注“1、2、3顺序"接线。

在树莓派上使用模拟角度传感器

  • 将树莓派开机并将正确安装树莓派扩展板

  • 将模拟角度传感器接入扩展板的0号模拟口如图:

  • 安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车:

sudo apt-get install build-essential python-dev python-smbus git

  • 下载驱动库及程序。在终端中,依次键入如下指令,并回车:

cd \~

git clone https://github.com/DFRobotdl/37\_Pcs\_Sensor.git

  • 进入37_Pcs_Sensor\6_Analog_Rotation_Potentiometer_Sensor文件夹中找到Analog_Rotation_Potentiometer_Sensor_V2.py文件使用Thonny
    Pyth
    IDE打开并运行就可以看到打印的模拟数值了,转动模拟角度传感器数值会发生变化。

第7课:130直流电机风扇

学习内容


介绍130直流电机风扇

130直流电机风扇模块是个很趣的模块,该模块不需要额外的电机驱动板,就可以使用Arduino轻松驱动起来,你也可以使用PWM脉冲宽度来调节电机转速,适合轻应用或者DIY小制作。简单,但又不简单。

在树莓派上使用130直流电机风扇

  • 将树莓派开机并将正确安装树莓派扩展板

  • 将130 直流电机风扇接到扩展板0号PWM端口,模拟角度传感器接到0号模拟端口如图:

  • 安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车:

sudo apt-get install build-essential python-dev python-smbus git

  • 下载驱动库及程序。在终端中,依次键入如下指令,并回车:

cd \~

git clone https://github.com/DFRobotdl/37\_Pcs\_Sensor.git

  • 进入\37_Pcs_Sensor\7_130_DC_Motor_Module文件夹中找到130_DC_Motor_Module.py文件使用Thonny
    Pyth IDE打开并运行可以通过角度传感器对风扇进行调速。

第8课:JoyStick摇杆

学习内容


介绍JoyStick摇杆

DFRobot的JoyStick摇杆采用原装优质金属PS2摇杆电位器制作,具有(X,Y)2轴模拟输出,(Z)1路按钮数字输出。不管你怎么折腾,它都能保持良好的接触和机械性能。3路信号分别通过3P线接到Arduino传感器扩展板,只需占用3个端口就可以控制了。

新版摇杆特性:

  • 工作电压3.3V/5V,适应更多3.3V的控制器

  • 标准尺寸:两个直径3mm的安装孔之间的距离为5mm的若干倍

  • 易于识别:两个模拟的输出接口上S的字样,而数字接口标有D字样

  • 高品质接头,耐反复插拔

  • 沉金工艺,不仅PCB板的质量提高,而且带有金色字体哦

注意事项

新版模拟传感器的端口布局具备以下两项改进。请参考我们博客中"如何更改数据线接头布局"的说明(http://www.dfrobot.com/community/trick-for-changing-sensor-cable-pin-mapping.html),当在IO扩展板上使用该传感器时,你可能会需要调整接头的布局。为了方便您的使用,我们将会做出更多改进,尽请关注。*

在树莓派上使用JoyStick摇杆

  • 将树莓派开机并将正确安装树莓派扩展板

  • 将JoyStick摇杆X轴输出口接在扩展板0号模拟端口,Y轴输出口接在扩展板1号模拟端口,Z轴输出接数字8号端口如图:

  • 安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车:

sudo apt-get install build-essential python-dev python-smbus git

  • 下载驱动库及程序。在终端中,依次键入如下指令,并回车:

cd \~

git clone https://github.com/DFRobotdl/37\_Pcs\_Sensor.git

  • 进入\37_Pcs_Sensor\8_Joystick_Module_V2文件夹中找到7_Joystick_Module_V2.py文件使用Thonny
    Pyth IDE打开并运行就可以看到打印的X,Y,Z轴的数据了。扳动遥感或按下值会变化。

第9课:模拟光线传感器

学习内容


介绍模拟光线传感器

基于PT550环保型光敏二极管的光线传感器,可以用来对环境光线的强度进行检测。通常用来制作随光线强度变化产生特殊效果的互动作品。整个模块用3P的模拟数据线同IO扩展板连接,只要对应颜色就不会插错,非常方便。

  • 更宽的工作电压范围:3.3V到5V

  • 标准固定孔设计,两个3毫米固定孔,分别间隔5厘米

此LCD屏能够显示传感器的检测到的光强度,通过圆圈大小体现

注意事项

新版模拟传感器的端口布局具备以下两项改进。请参考我们博客中*"如何更改数据线接头布局"的说明,当在IO扩展板上使用该传感器时,你可能会需要调整接头的布局。为了方便您的使用,我们将会做出更多改进,尽请关注。

在树莓派上使用模拟光线传感器

  • 将树莓派开机并将正确安装树莓派扩展板

  • 将模拟光线传感器接入扩展板的0号模拟口如图:

  • 安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车:

sudo apt-get install build-essential python-dev python-smbus git

  • 下载驱动库及程序。在终端中,依次键入如下指令,并回车:

cd \~

git clone https://github.com/DFRobotdl/37\_Pcs\_Sensor.git

  • 在\37_Pcs_Sensor\9_Analog_Ambient_Light_Sensor文件夹找到Analog_Ambient_Light_Sensor.py文件使用Thonny
    Pyth IDE打开并运行就可以看到打印的光线对应值了。

第10课:数字震动传感器

学习内容


介绍数字震动传感器

如何让电子设备感知环境中的振动?最简单的办法就是用一个振动开关,通过振动来通断电路,产生信号。

DF这款精致的数字振动传感器虽然结构简单,但是在奇思妙想的创客手里,它能发挥出各种作用。比如,通过振动来计算脚步,变成计步器;交通工具碰撞振动触发信号灯,变成振动报警灯。。。。只要你有想法,简单元件的用法也会变化无穷。

这是一个非常简单的计步器,能够计算你走路的步数

在树莓派上使用数字震动传感器

  • 将数字LED发光模块接入扩展板12脚,将数字震动传感器接入扩展板8脚

  • 打开Thonny Python IDE将下面程序复制到其中

    import RPi.GPIO as GPIO
    import time

    LED=12
    Vibration=8

    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(LED,GPIO.OUT)
    GPIO.setup(Vibration,GPIO.IN,GPIO.PUD_UP)

    def KEYInterrupt(KEY):
    GPIO.output(LED,GPIO.HIGH)
    print("LED ON")

    while True:
    GPIO.output(LED,GPIO.LOW)
    print("LED OFF")
    time.sleep(0.1)

  • 运行程序当震动传感器检测到震动的时候LED灯会熄灭。

第11课:模拟声音传感器

学习内容


介绍模拟声音传感器

这是一款简单、实惠的麦克风,Arduino能够通过它来感知声音的大小,并转化为模拟信号。即通过反馈的电压值来体现声音的大小。

该模拟数据线与IO扩展板V7上的模拟口直接对应。直接插上,烧录代码,即可使用。

完全静音是传感器读数为O。当旁边有音乐,它会随音量产生各种读数。

注意事项

新版模拟传感器的端口布局具备以下两项改进。请参考我们博客中*"如何更改数据线接头布局"*的说明,当在IO扩展板上使用该传感器时,你可能会需要调整接头的布局。为了方便您的使用,我们将会做出更多改进,尽请关注。

在树莓派上使用模拟声音传感器

  • 将树莓派开机并将正确安装树莓派扩展板。

  • 将模拟光线传感器接入扩展板的0号模拟口如图。

  • 安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车。

sudo apt-get install build-essential python-dev python-smbus git

  • 下载驱动库及程序。在终端中,依次键入如下指令,并回车。

cd \~

git clone https://github.com/DFRobotdl/37\_Pcs\_Sensor.git

  • 进入\37_Pcs_Sensor\11_Analog_Sound_Sensor文件夹中找到Analog_Sound_Sensor.py文件使用Thonny
    Pyth
    IDE打开并运行就可以看到打印的声音值了,值越小说明音量越大,值越大说明越安静。

第12课:心率传感器

学习内容


介绍心率传感器

DFRobot推出的超小型心率传感器,只有拇指大小,却可以检测人体心率变化。

模块直接兼容Arduino主控器,自带Gravity 3-Pin接口,即插即用,使用非常便利。

传感器采用PPG光电容积脉搏波描记法(Photo Plethysmo
Graphy)测量心率。这是一种低成本光学技术,通过检测皮下毛细血管内的血氧量变化量来检测对应的人体心率。该技术拥有响应性快,性能稳定,适应性强等特点。

传感器配有两个安装孔,可以佩戴于手指,手腕,耳垂等皮肤直接接触处。

模块拥有方波和脉搏波两种信号输出模式,可以通过板载开关去自由切换输出信号。脉搏波将输出一个连续的心率波形,而方波将根据心率的变化输出对应的方波。板载Gravity
3-Pin接口,可以直接兼容Arduino
I/O扩展板,使用简单,平台兼容性好,可广泛应用于手环,腕带等可穿戴饰品的DIY制作。

注意事项

1.此为静态心率传感器,测量时请勿随意移动,也勿按压过紧。

2.本品并非专业医疗仪器,不能作为辅助配件参与诊断和治疗。

在树莓派上使用心率传感器

  • 将数字LED发光模块接入扩展板12脚,将心率传感器接入扩展板8脚将模拟光线传感器接入扩展板的0号模拟口如图。

  • 打开Thonny Python IDE将下面程序复制到其中。

    import RPi.GPIO as GPIO
    import time
    import atexit

    LED=12
    Heart_Rate=8

    atexit.register(GPIO.cleanup)
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(LED,GPIO.OUT)
    GPIO.setup(Heart_Rate,GPIO.IN)

    while True:
    if GPIO.input(Heart_Rate):
    GPIO.output(LED,GPIO.HIGH)
    else :
    GPIO.output(LED,GPIO.LOW)
    time.sleep(0.1)

  • LED就会随你的心跳而亮灭。

第13课:电导开关传感器

前言


导语

这节我们介绍电导开关传感器,我们利用电导传感器可以测试物体的导电性,也可以用作特殊场合的开关器件。

介绍电导开关传感器

所谓电导开关,就是通过两个裸露的导电先,当两边通过某种介质相连时,就导通。电导开关用来检测物体是否具有导电性能,当电导开关的两个金属片之间有物体联通时,传感器就会输出一个高电平。

你可以用它来做一个水果钢琴,音乐风铃,握手感应灯等等有趣的应用。 Conductivity
Switch Sensor
电导开关传感器可以检测两极之间有无物体连接,当连接物体阻值小于10M时,可以输出一个高电平。

模块拥有方波和脉搏波两种信号输出模式,可以通过板载开关去自由切换输出信号。脉搏波将输出一个连续的心率波形,而方波将根据心率的变化输出对应的方波。板载Gravity
3-Pin接口,可以直接兼容Arduino
I/O扩展板,使用简单,平台兼容性好,可广泛应用于手环,腕带等可穿戴饰品的DIY制作。

学习准备


学习内容


硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接。

  • 将树莓派IO扩展板安装在树莓派上并将LED灯模块接入扩展板12号数字端口,电导开关传感器模块接入8号数字端口。当我们用手或者其他的导电物体触碰连接两个鳄鱼夹时,就能看到相应的现象。

  • 扩展板接线。

工作原理

通过两个金属片导通,改变电平信号,作为开关的作用。

原理图

软件程序

  • 打开Thonny Python IDE将下面程序复制到其中。

import RPi.GPIO as GPIO                      #导入树莓派提供的python模块
import time                                 #导入时间包,用于延时时间

LED = 12                                    #定义LED灯接入引脚
Electrical_switch = 8                        #定义电导开关接入引脚

GPIO.setmode(GPIO.BCM)                    #设置GPIO模式,BCM模式在所有数莓派通用
GPIO.setup(Electrical_switch,GPIO.IN)      #设置GPIO12为输入模式
GPIO.setup(LED,GPIO.OUT)                    #设置GPIO8为输出模式
GPIO.output(LED,GPIO.HIGH)	              #定义LED初始值

while True:                               #无限循环执行下面的指令
    key = GPIO.input(Electrical_switch)
    if (key ):                            #判断按键是否按下
        GPIO.output(LED,GPIO.LOW)         #按键按下,启动微型振动器
    else :                     #如果GPIO8为低电平(即按键没按下)就执行下面的语句
        GPIO.output(LED,GPIO.HIGH)        #未启动微型振动器
time.sleep(0.01)                   #等待0.1秒,在在这里的作用是控制查询按键的频率
  • 复制完成后点击保存。

  • 选择保存路径和保存文件名。

  • 点击运行,也可以停止正在运行的程序。

  • 运行后,检查对应现象。

http://https://www.bilibili.com/video/BV1z54y1b763/

第14课:模拟电压检测模块

前言


介绍模拟电压检测模块

基于电阻分压原理的电压检测模块,配合Arduino传感器扩展板可以完成对电压电量大小的检测,以监控互动媒体作品的电量或机器人供电的电量。

电压检测模块能使输入的电压缩小5倍。由于Arduino模拟输入电压最大为5V,故电压检测模块的输入电压不能大于5Vx5=25V。

学习准备


学习内容


硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接。

  • 将模拟电压检测模块引脚与树莓派扩展板的Analog板块的0号引脚相连,示意图如下。

  • 接着我们给模块供电,接入一个电源,接线示意图如下。

软件程序

  • 打开系统,进入终端。

  • 安装Python依赖库与git。树莓派需要联网,如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车。

sudo apt-get install build-essential python-dev python-smbus git

  • 下载驱动库及程序。

git clone https://github.com/DFRobotdl/111.git

  • 在下载的文件中找到DFR0051.py,打开点击运行。

  • 调整输入电压,模拟口读取到输入电压。

第15课:模拟电阻式土壤温度传感器

前言


介绍模拟电阻式土壤温度传感器

这是一个简易的水分传感器,可用于检测土壤的水分。当土壤缺水时,传感器输出值将减小,反之将增大。

土壤湿度传感器又名:土壤水分传感器、土壤墒情传感器、土壤含水量传感器。主要用来测量土壤相对含水量,做土壤墒情监测及农业灌溉和林业防护。

学习准备


学习内容*


硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接。

  • 将土壤湿度传感器接入树莓派扩展板的模拟端口A0口,接线示意图如下。

  • 找出元件并连接。

原理图及工作原理

土壤湿度传感器是判断土壤中水分含量的多少来判定土壤的湿度大小。

如图所示,当土壤湿度传感器探头悬空时,三极管基极处于开路状态,三极管截止输出为0;当插入土壤中时由于土壤中水分含量不同,土壤的电阻值就不同,三极管的基极就提供了大小变化的导通电流,三极管集电极到发射极的导通电流受到基极控制,经过发射极的下拉电阻后转换成电压。

软件程序

  • 安装Python依赖库与git。树莓派需要联网,如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车。

sudo apt-get install build-essential python-dev python-smbus git

  • 下载驱动库及程序。

git clone https://github.com/DFRobotdl/111.git

  • 在下载的文件夹中找到SEN0114.py文件使用Thonny Pyth
    IDE打开并运行就可以看到打印的数据了。

第16课:URM09超声波传感器

前言


介绍URM09超声波传感器

这是一款开放式双探头超声波测距模块,采用Gravity标准PH2.0-3P立式贴片座接口,输出为模拟电压,兼容arduino、树莓派等各种3.3V或5V逻辑电平的主控板。

该模块自带温度补偿,避免高温或低温环境对测量结果产生影响。模拟电压值输出,ADC简单转化即可直接读取温度值,简化操作步骤,降低实验难度。经测试,平整墙面的有效测距量程为2–500cm,分辨率为1cm,误差约为±1%。双探头设计,极大缩小探测盲区。板载状态指示小灯,方便查看测试进程。

本款测距模块体积小,环境适用性强,精度高,测量范围广,即插即用,方便快捷,可以广泛应用于户外环境中,尤其适用于温差变化较快的环境。是机器人自动避障行走,汽车倒车报警器、门铃、警戒报警器、地铁安全线提示、银行及取款机的一米线提示等等项目的绝佳选择。

学习准备


导语

URM09超声波传感器采用模拟电压输出,我们通过转换,得到相应的测试距离。下面我们通过使用Thonny
Python IDE基础使用和例程adc,来做一个简单的超声波测距。

所需原件

学习内容*


硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接。

  • 我们把超声波模块连接到树莓派扩展板的Analog中的0号,也就是模拟口A0。

  • 我们找到这个位置,将超声波传感器正确接上。

当我们移动超声波传感器时,就能接收到反馈,检测出不同的距离值

软件程序

  • 安装Python依赖库与git。树莓派需要联网,如已安装,可跳过该步骤。在终端中,依次键入如下指令,并回车。

sudo apt-get install build-essential python-dev python-smbus git

  • 下载驱动库及程序。

git clone https://github.com/DFRobotdl/111.git

  • 在下载的文件夹中找到SEN0307.py文件,打开并运行。

  • 得到结果。

第17课:数字触摸传感器

前言


介绍数字触摸传感器

这是一个基于电容感应的触摸开关模块。人体或金属在传感器金属面上的直接触碰会被感应到。 除了与金属面的直接触摸,隔着一定厚度的塑料、玻璃等材料的接触也可以被感应到,感应灵敏度随接触面的大小和覆盖材料的厚度有关。

学习准备*


导语

于led的控制我们已经很清晰了,下面我们使用Thonny Python
IDE基础使用和操作GPIO的基础Python代码,通过数字模拟传感器来控制led。

所需原件

学习内容-用数字触摸传感器控制led亮灭


硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接。

  • 将树莓派IO扩展板安装在树莓派上并将LED发光模块接入扩展板12号数字端口,数字模拟传感器接入扩展板8号端口然后开机。

如果有金属物体或者手指触碰金属片,8号引脚输入高电平,触发12引脚高电平,led亮,当没有金属物体或者手指触碰时,12引脚低电平,led熄灭。

软件程序

  • 打开Thonny Python IDE将下面程序复制到其中。

import RPi.GPIO as GPIO    #导入树莓派提供的python模块
import time    #导入时间包,用于触碰时间检测

LED=12  		#定义LED接入的引脚号
KEY=8       	#定义数字传感器接入的引脚号

GPIO.setmode(GPIO.BCM)    	#设置GPIO模式,BCM模式在所有数莓派通用
GPIO.setup(LED,GPIO.OUT)    #设置GPIO12为输出模式
GPIO.setup(KEY,GPIO.IN)    #设置GPIO8为输入模式

while True:        #无限循环执行下面的指令
    if GPIO.input(KEY):        # GPIO.input(KEY)将返回GPIO8的状态然后判断,如果GPIO8为高电平(即数字传感器接受到信号)
 		GPIO.output(LED,GPIO.HIGH)      #将LED信号脚置高(即点亮LED)
   else :          #如果GPIO8为低电平(数字传感器没有接受到信号)
     GPIO.output(LED,GPIO.LOW)   #将LED信号脚置低(即熄灭LED)
time.sleep(0.1)   #延时0.1秒,在在这里的作用是控制查询按键的频率
  • 保存。

  • 选择保存路径和文件名。

  • 点击运行,然后根据操作得到想要的效果。

  • 附上视频。

http://https://www.bilibili.com/video/BV1gy4y14786/

第18课:数字钢球倾角传感器

前言


介绍数字钢球倾角传感器

基于钢球开关的数字模块,利用钢球的特性,通过重力作用使钢球向低处滚动,从而使开关闭合或断开,因此也可以作为简单的倾角传感器使用。

钢球开关数字输入模块,与树莓派专用传感器扩展板结合使用,能够实现非常有趣的互动作品,比使用水银开关更加安全。

工作原理

利用钢球的特性,通过重力作用使钢球向低处滚动,从而使开关闭合或断开。

学习准备


所需原件

学习内容


硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接。

  • 把数字钢球倾角传感器与树莓派扩展板的8引脚相连,为了方便测试,我们再在12引脚连接一个led开关。

软件程序

  • 打开Thonny Python IDE将下面程序复制到其中。

import RPi.GPIO as GPIO
import time

LED = 12
dip_key = 8

GPIO.setmode(GPIO.BCM)
GPIO.setup(LED,GPIO.OUT)
GPIO.setup(dip_key,GPIO.IN)

while True:
    if GPIO.input(dip_key):
        GPIO.output(LED,GPIO.HIGH)
    else:
        GPIO.output(LED,GPIO.LOW)
time.sleep(0.1)
  • 保存文件。

  • 选择保存路径和文件名。

  • 点击运行,通过测试,可以看到效果。

  • 实际效果如图。

http://https://www.bilibili.com/video/BV14A411L7Lu/

第19课:数字贴片磁感应传感器

前言


介绍数字贴片磁感应传感器

这是一款基于高品质干簧管的磁力传感器,能够感知3cm(探测距离随磁力大小而变化)以内的磁力。与我们的IO传感器扩展板V7搭配,能够快速搭建磁力互动的项目。

干簧管在无磁场的环境下为断开。当磁力足够强时,能够让其中的簧片接触并导通。整个导通的过程非常快,因而使其成为高效可靠的开关元件。

学习准备


所需原件

学习内容


硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接。

  • 我们将LED灯和数字贴片磁感应传感器分别接入树莓派扩展板的12引脚和8号引脚,接线图如下。

软件程序

  • 打开Thonny Python IDE将下面程序复制到其中。

import RPi.GPIO as GPIO    #导入树莓派提供的python模块
import time    #导入时间包,用于感应时间检测

LED = 12          #定义LED接入的引脚号
magnetic_key = 8           #定义数字传感器接入的引脚号

GPIO.setmode(GPIO.BCM)      #设置GPIO模式,BCM模式在所有数莓派通用
GPIO.setup(LED,GPIO.OUT)    #设置GPIO12为输出模式
GPIO.setup(magnetic_key ,GPIO.IN)    #设置GPIO8为输入模式

while True:        #无限循环执行下面的指令
    if GPIO.input(magnetic_key ):        #GPIO.input(magnetic_key )
      GPIO.output(LED,GPIO.HIGH)         #将LED信号脚置高(灭LED)
    else :          #如果GPIO8为低电平(数字磁感应没有接受到信号)
      GPIO.output(LED,GPIO.LOW)          #将LED信号脚置低(即亮LED)
time.sleep(0.1)   #延时0.1秒,在在这里的作用是控制查询磁感应的频率
  • 保存文件。

  • 选择保存路径和文件名。

  • 点击运行,通过测试,可以看到效果。

  • 实际效果如图。

http://https://www.bilibili.com/video/BV1Ai4y1A7oX/

第20课:Vibration微型振动模块

前言


导语

前面我们已经介绍了数字大按钮模块,今天我们利用数字大按钮模块加上Vibration
微型振动模块控制其震动来给大家做一个简单项目。

介绍Vibration微型振动模块

振动模块采用振动电机作为激振源,振动电机是在转子轴一端安装一组可调偏心块,利用轴及偏心块高速旋转产生的离心力得到激振力。

学习准备


所需原件

学习内容


硬件连接

  • 将树莓派正确的与屏幕电源键盘鼠标等设备链接。

  • 将树莓派IO扩展板安装在树莓派上并将按键模块接入扩展板12号数字端口,Vibration
    微型振动模块接入8号数字端口,把模块接入树莓派扩展板。

原理图

原件布局图

  • 当我们按下开关后,振动器开始振动,时间为5s,然后停止,等待下一次的按键触发。

软件程序

  • 打开Thonny Python IDE将下面程序复制到其中。

import RPi.GPIO as GPIO                          #导入树莓派提供的python模块
import time                                      #导入时间包,用于控制闪烁

button = 12                                      #定义按钮接入引脚
vibration = 8                                    #定义振动器接入引脚

GPIO.setmode(GPIO.BCM)                    #设置GPIO模式,BCM模式在所有数莓派通用
GPIO.setup(button,GPIO.IN)                       #设置GPIO12为输入模式
GPIO.setup(vibration,GPIO.OUT)                   #设置GPIO8为输出模式
while True:                                      #无限循环执行下面的指令
    key = GPIO.input(button)
    if (key ):                                   #判断按键是否按下
        GPIO.output(vibration,GPIO.HIGH)         #按键按下,启动微型振动器
        time.sleep(5)                            #等待5s
        GPIO.output(vibration,GPIO.LOW)          #关闭微型振动器
    else :                                       #如果GPIO8为低电平(即按键没按下)就执行下面的语句
        GPIO.output(vibration,GPIO.LOW)          #未启动微型振动器
time.sleep(0.1)                                  #等待0.1秒,在在这里的作用是控制查询按键的频率
  • 保存文件。

  • 选择保存路径和文件名。

  • 点击运行,通过测试,可以看到效果。

  • 实际效果如图。

http://https://www.bilibili.com/video/BV1fy4y1x7XS/