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
    +关注

    关注

    242

    文章

    23241

    浏览量

    660506
  • IOT
    IOT
    +关注

    关注

    187

    文章

    4200

    浏览量

    196648
收藏 人收藏

    评论

    相关推荐

    模拟计算板卡设计方案:429-基于XC7Z035+ADS5474的2路400Msps AD 光电脉冲采集处理卡

    模拟计算板卡 , XC7Z035板卡 , ADS5474处理板 , 光电脉冲采集处理
    的头像 发表于 11-27 10:04 187次阅读
    模拟计算<b class='flag-5'>板卡</b>设计方案:429-基于XC7<b class='flag-5'>Z</b>035+ADS5474的<b class='flag-5'>2</b>路400Msps AD 光电脉冲采集处理卡

    基于PYNQ和机器学习探索MPSOC笔记

    新版本中,不仅仅介绍了MPSOC的体系结构和应用场景,更是结合当前应用最广的PYNQ框架和机器学习应用进行分析。作为一本不可多得的免费电子英文书籍,本书既是使用Zynq MPSoC的开发人员的实用指南
    的头像 发表于 11-16 11:32 274次阅读
    基于<b class='flag-5'>PYNQ</b>和机器学习探索MPSOC笔记

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

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

    无人机的发展十分火热在哪些领域都有所应用

    无人机的发展确实十分火热,并且在多个领域都得到了广泛的应用。 一、无人机技术概述 无人机,即无人驾驶飞机,是一种利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机。近年来,随着科技的飞速进步
    的头像 发表于 10-22 18:14 1159次阅读

    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 716次阅读
    三<b class='flag-5'>十分钟</b>入门基础Go Java小子版

    使用PYNQ训练和实现BNN

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

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

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

    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 772次阅读
    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 1463次阅读
    锂电池回收企业间的竞争变得<b class='flag-5'>十分</b>激烈

    AD7794使用过程中出现不工作的情况怎么解决?

    电后5000s或者更久,没有确定的时间点。对SPI总线进行设置时,采用的SCK时钟为5khz。如果sck时钟为500khz时,这种死掉的情况大约十分钟或最长半个小时就会出现一次。如果AD7794死掉
    发表于 12-21 07:32