0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

十分钟学会在PYNQ-Z2板卡开发IoT应用!

454398 来源:github 作者:Pynq 2020-12-25 12:04 次阅读

在本教程的带领下,你将在十分钟内学会在PYNQ-Z2板卡上使用传感器LED开发自己的IoT应用!

初始化板卡
from pynq.overlays.base import BaseOverlay
base = BaseOverlay("base.bit")

初始化LED Bar
Grove LED bar上有10个LED灯,8个绿色的LED,一个橘黄色的LED和一个红色的LED。每个LED的亮度都可以独立被控制。我们将会在Z2板卡上外接一块Arduino Shield扩展板,LED bar连接在扩展板的D6接口上。

from pynq.lib.arduino import Grove_LEDbar
from pynq.lib.arduino import ARDUINO_GROVE_G4

# Instantiate Grove LED Bar on Arduino shield G4
ledbar = Grove_LEDbar(base.ARDUINO, ARDUINO_GROVE_G4)
ledbar.reset()

初始化超声波传感器
Pmod-grove扩展板连接在PMODA接口上,超声波传感器连接Pmod-Grove转接器的G1接口上的

%%microblaze base.PMODA

#include "xparameters.h"
#include "xtmrctr.h"
#include "gpio.h"
#include "timer.h"
#include

#define TCSR0 0x00
#define TLR0 0x04
#define TCR0 0x08
#define TCSR1 0x10
#define TLR1 0x14
#define TCR1 0x18
#define MAX_COUNT 0xFFFFFFFF

void create_10us_pulse(gpio usranger){
gpio_set_direction(usranger, GPIO_OUT);
gpio_write(usranger, 0);
delay_us(2);
gpio_write(usranger, 1);
delay_us(10);
gpio_write(usranger, 0);
}

void configure_as_input(gpio usranger){
gpio_set_direction(usranger, GPIO_IN);
}

unsigned int capture_duration(gpio usranger){
unsigned int count1, count2;
count1=0;
count2=0;
XTmrCtr_WriteReg(XPAR_TMRCTR_0_BASEADDR, 0, TLR0, 0x0);
XTmrCtr_WriteReg(XPAR_TMRCTR_0_BASEADDR, 0, TCSR0, 0x190);
while(!gpio_read(usranger));
count1=XTmrCtr_ReadReg(XPAR_TMRCTR_0_BASEADDR, 0, TCR0);
while(gpio_read(usranger));
count2=XTmrCtr_ReadReg(XPAR_TMRCTR_0_BASEADDR, 0, TCR0);
if(count2 > count1) {
return (count2 - count1);
} else {
return((MAX_COUNT - count1) + count2);
}
}

unsigned int read_raw(){
gpio usranger;
usranger = gpio_open(PMOD_G1_A);
create_10us_pulse(usranger);
configure_as_input(usranger);
return capture_duration(usranger);
}

使用python即可调用超声波传感器
from pynq import Clocks

def read_distance_cm():
raw_value = read_raw()
clk_period_ns = int(1000 / Clocks.fclk0_mhz)
num_microseconds = raw_value * clk_period_ns * 0.001
if num_microseconds * 0.001 > 30:
return 500
else:
return num_microseconds/58

案例展示:超声波测距仪
靠近测距仪50cm以内,LED每近5cm多亮一格

按BTN3结束
import time
import math

btns = [base.buttons[index] for index in range(4)]
ledbar.reset()

done = False
while not done:
if (btns[3].read()==1):
ledbar.reset()
done = True

distance = read_distance_cm()
if distance ledbar.write_level(10-math.floor(distance/5), 3, 1)
else:
ledbar.write_level(0, 3, 1)
time.sleep(0.1)

编辑:hfy


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    240

    文章

    23100

    浏览量

    657646
  • IOT
    IOT
    +关注

    关注

    186

    文章

    4166

    浏览量

    196078
收藏 人收藏

    评论

    相关推荐

    冷机启动板卡时,LMX2572锁定时间在2分钟以上,为什么?

    冷机启动板卡时,LMX2572锁定时间在2分钟以上。当LMX2572锁定后重新启动,锁定时间在1-3秒内。
    发表于 11-11 08:09

    INA122U如何让上电就能在短时间让ADC采集值趋于稳定?

    如图1所示电路,仪表放大器输出通过RC接单片机ADC口,对于传感器零点或某定点,单片机ADC口采集上电时AD值上升,达到某值后稳定,波形类似图2,但此过程时间较长,约在十分钟左右,方能趋于稳定
    发表于 09-11 08:17

    十分钟入门基础Go Java小子版

    前言 Go语言定义 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态、强类型、编译型语言。Go 语言
    的头像 发表于 08-12 14:32 662次阅读
    三<b class='flag-5'>十分钟</b>入门基础Go Java小子版

    使用PYNQ训练和实现BNN

    使用 PYNQ 可以轻松在 FPGA 上实现加速 AI/ML,而无需编写一行 HDL!让我们看看如何做到这一点。
    的头像 发表于 08-05 17:15 413次阅读
    使用<b class='flag-5'>PYNQ</b>训练和实现BNN

    安徽合肥启动全省首条无人机医疗物资飞行航线

    据了解,此次无人机航线由迅蚁科技独家运营,能在短短几分钟内完成原本需数十分钟车程的任务,保障急需医疗用品的迅速到达,降低患者长时间等待的风险。
    的头像 发表于 05-17 14:27 275次阅读

    stm8l051 RTC LSI作为实时时钟不准怎么校准?

    (CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1); CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); 现在以LSI作为实时时钟,十分钟内快了2分钟
    发表于 04-30 07:13

    STM32CubeIDE编译就卡住是什么原因导致的?

    安装后就创建stm的项目, 在CubeMX里随便加了IO, 使能了uart, 之后就产生Code, 啥也没改过, 先编译看一下速度 结果就一直卡在18%, 等了差不多十分钟。 有碰到类似问题的吗? 是什么问题?
    发表于 04-19 07:08

    用stm32cubemx的串口中断接收时,过一段时间串口中断不进了怎么解决?

    我用stm32cubemx建的工程本来跑的挺好的,最近发现有bug。 我用uart1 在TIM3里边 1s定时发送数据,采用问答式通讯,对端收到了之后发送8个字节的应答。问题是跑了几十分钟之后或者一
    发表于 04-17 06:48

    5分钟学会制作高速吹风机

    前言:高速吹风机量价齐升市场竞争格局初显吹风机是居家生活必备物品,然而传统型吹风机所带来的体验并不佳,高频使用的女性群体对此更是深有感触。究其原因主要有:转速低,通常在每分钟2万转左右,导致干发
    的头像 发表于 03-29 08:22 716次阅读
    5<b class='flag-5'>分钟</b><b class='flag-5'>学会</b>制作高速吹风机

    能否在QEMU上面支持VisionFive 2开发板?

    在进行VisionFive 2开发板软件开发的过程中,每修改一次代码就要重新烧录一次镜像,十分的不方便,能否在QEMU上面支持VisionFive
    发表于 01-15 07:00

    锂电池回收企业间的竞争变得十分激烈

    2023年随着锂盐价格大幅下跌及锂电池回收行业的产能大幅度增长,锂电池回收企业间的竞争变得十分激烈。
    的头像 发表于 12-29 10:26 1357次阅读
    锂电池回收企业间的竞争变得<b class='flag-5'>十分</b>激烈

    使用AD7730进行工业六线制天平测量时,数据出现剧烈跳动是怎么回事?

    我在使用AD7730进行工业六线制天平测量时,发现前十分钟测量正常,测量一段时间后测量数据出现剧烈跳动,系统断电重启后又恢复正常。下面是我的电路图 下面是我进行AD7730初始化的程序 下面是我AD7730读数据程序 很奇怪一直出现这种问题,有没有人帮我解释一下
    发表于 12-13 09:32

    AD7730数据采样不稳定的原因?怎么解决?

    我在使用AD7730进行工业六线制天平测量时,发现前十分钟测量正常,测量一段时间后测量数据出现剧烈跳动,系统断电重启后又恢复正常。下面是我的电路图 下面是我进行AD7730初始化的程序 下面是我AD7730读数据程序 很奇怪一直出现这种问题,有没有人帮我解释一下
    发表于 12-13 08:49

    AD7671上电2分钟才能工作是为什么?

    AD7671上电2分钟左右才能开始正常工作,前面会一直采集到0电平(busy口无电平变化,内部未进行转换??);两路AD恢复正常时间不一致,但也就差个几秒钟。 配置端口都检查过了,配置口电压也是稳定的
    发表于 12-11 06:16

    ADAU1761 DAC输出只有噪音是为什么?

    我在使用PYNQ-Z2开发板上的ADAU1761芯片实现锯齿波的输出,通过ZYNQ-7020驱动,ADAU1761作为I2S的从机,输入MCLK是12.5MHz,BCLK3MHz,LRCLK 48.5KHz。在我对DAC输入锯齿
    发表于 11-28 07:55