树莓派实验报告.docx

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名称:实验12-PIR传感器和语音识别实验

专业班级:姓名:学号:实验日期:

一、实验目的:

(1)熟悉人体红外传感器、语音识别和文本转语音(TTS)。

(2)掌握在Windows 10 IoT Core中使用GPIO读取人体红外传感器输出的方法。

(3)掌握在Windows 10 IoT Core中使用SpeechRecognition和SpeechSynthesis进行语音识别和语音合成的方法。

二、实验内容:

(1)将人体红外传感器PIR、LED灯分别连接到树莓派的GPIO5和GPIO6,运行程序12-1后,先点击初始化PIR按钮,若附近有人活动时,即程序检测到上升沿,指示的LED灯亮;没有人活动时,即程序检测到下降沿,LED灯熄灭,与应用程序界面上的状态同步。

如下图所示。

在实验12-1的基础上,使用树莓派、人体红外传感器PIR、LED灯、电阻、面包板和跳线,实现Security Camera。即检测到附近有人活动时,程序自动拍照,存储到本地。

(2)使用树莓派(IoT Core系统烧写版本为14986)、USB声卡、耳机、麦克风、LED 灯、电阻、面包板和跳线,实现本地的语音合成和语音识别,从而达到控制LED灯的目的。程序12-2给出了语音控制一个LED的场景,即使用语音turn on bedroom led或者turn off bedroom led来控制GPIO5引脚连接的LED灯。同时,可以在Visual Studio 的Output窗口看到语音识别的实时结果。如下图所示。

用户可以在应用程序界面输入文字,点击按钮,可以让系统读出该内容,如下图所示。

请在此基础上,添加LED灯,修改语音定义文件和程序,从而达到控制两个不同的LED 的功能。

三、实验结果(注意:所有截图需要加注自己的姓名+学号水印):

1. 利用Fritzing软件画出硬件连接图,给出实验内容1对应的所有关键代码,给出测

试结果和说明,附调试截图。

硬件连接图:

硬件连接图如左图所示,将led连接在GPIO5上,将

pri的数据输出接口接在GPIO18上

关键代码:

private void PinPIR_ValueChanged(GpioPin sender,

GpioPinValueChangedEventArgs e)

{

// toggle the state of the LED every time the button

is pressed

if (e.Edge == GpioPinEdge.RisingEdge)

{

ledPin.Write(GpioPinValue.Low);

}

if (e.Edge == GpioPinEdge.FallingEdge)

{

ledPin.Write(GpioPinValue.High);

}

var task = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => {

if (e.Edge == GpioPinEdge.FallingEdge)

{

ledEllipse.Fill = grayBrush;

GpioStatus.Text = "PIR FallingEdge";

}

if (e.Edge == GpioPinEdge.RisingEdge)

{

ledEllipse.Fill = redBrush;

GpioStatus.Text = "PIR RisingEdge";

takePhoto_Click(takePhoto, new RateChangedRoutedEventArgs());

}

});

}

如上面的代码所示在原来的代码段中调用takePhoto_Click(takePhoto, new RateChangedRoutedEventArgs());函数,在主页面的圆点控制的代码中添加调用拍照功能的代码。当人体红外传感器检测到时输出高电平,GPIO口接受到后检测到上升沿便会进行拍照并且点亮led

实验结果:

实验结果如图所示,当红外设备检测到有人时就会进行拍照,并且将照片进行保存,于此同时,照片展示框下的指示点便会由灰色变为红色以指示检测到红外信息,同时连

接在树莓派GPIO上的led小灯点亮。没有检测到红外信息时,便不会拍照。也不会执行任何操作。

2. 利用Fritzing软件画出硬件连接图,给出实验内容2对应的所有关键代码,给出测试结果和说明,附调试截图。

硬件连接图:

如右图所示,在此次的试验中需要用到两个GPIO引脚,分别为GPOI6和GPIO12。

关键代码:

private async void LightControl(string command, string target)

{

if (target == "Bedroom")

{

//===========================

if (command == "ON")

{

if (BedRoomLED_GpioPin != null)

{

await CoreApplicationCoreDispatcherPriority.Normal, () =>

{

bedRoomTimer.Start();

}

);

}

}

else if (command == "OFF")

{

await CoreApplicationCoreDispatcherPriority.Normal, () =>

{

bedRoomTimer.Stop();

if (BedRoomLED_GpioPinValue == GpioPinValue.Low)

{

BedRoomLED_GpioPinValue = GpioPinValue.High;

BedRoomLED_GpioPin.Write(BedRoomLED_GpioPinValue);

//LED.Fill = redBrush;

}

}

);

}

//===========================

}

else if (target == "kitchen")

{

相关文档
最新文档