前奏 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

在Windows中烧录SD卡

第一次开机*


第1课:数字LED发光模块

学习目标


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

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

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

学习内容——LED闪烁


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

所需原件

硬件连接

代码

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)       #延时一秒

第2课:数字大按钮模块

学习目标


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

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

学习内容——按键控制LED


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

所需元件

硬件连接

代码

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秒,在在这里的作用是控制查询按键的频率

第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线性温度传感器

第4课:I2C数字功率计

学习内容


介绍I2C数字功率计

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

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

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

sudo apt-get install i2c-tools

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

学习内容


导语

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

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

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

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

介绍I2C颜色识别传感器

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

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

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

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顺序"接线。

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

第7课:130直流电机风扇

学习内容


介绍130直流电机风扇

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

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

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

第8课:JoyStick摇杆

学习内容


介绍JoyStick摇杆

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

新版摇杆特性:

注意事项

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

在树莓派上使用JoyStick摇杆

第9课:模拟光线传感器

学习内容


介绍模拟光线传感器

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

注意事项

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

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

第10课:数字震动传感器

学习内容


介绍数字震动传感器

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

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

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

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

import RPi.GPIO as GPIO
import time
import atexit

LED=12
Vibration=8

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

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

第11课:模拟声音传感器

学习内容


介绍模拟声音传感器

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

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

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

注意事项

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

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

第12课:心率传感器

学习内容


介绍心率传感器

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

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

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

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

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

注意事项

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

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

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

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)

第13课:电导开关传感器

前言


导语

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

介绍电导开关传感器

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

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

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

学习准备


学习内容


硬件连接

工作原理

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

原理图

软件程序

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秒,在在这里的作用是控制查询按键的频率

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

前言


介绍模拟电压检测模块

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

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

学习准备


学习内容


硬件连接

软件程序

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

前言


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

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

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

学习准备


学习内容*


硬件连接

原理图及工作原理

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

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

软件程序

第16课:URM09超声波传感器

前言


介绍URM09超声波传感器

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

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

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

学习准备


导语

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

所需原件

学习内容*


硬件连接

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

软件程序

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

第17课:数字触摸传感器

前言


介绍数字触摸传感器

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

学习准备*


导语

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

所需原件

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


硬件连接

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

软件程序

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秒,在在这里的作用是控制查询按键的频率

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

前言


介绍数字钢球倾角传感器

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

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

工作原理

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

学习准备


所需原件

学习内容


硬件连接

软件程序

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)

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

前言


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

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

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

学习准备


所需原件

学习内容


硬件连接

软件程序

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秒,在在这里的作用是控制查询磁感应的频率

第20课:Vibration微型振动模块

前言


导语

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

介绍Vibration微型振动模块

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

学习准备


所需原件

学习内容


硬件连接

原理图

原件布局图

软件程序

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秒,在在这里的作用是控制查询按键的频率