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

    关注

    243

    文章

    24436

    浏览量

    687445
  • IOT
    IOT
    +关注

    关注

    189

    文章

    4369

    浏览量

    206591
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ALINX教程分享_Zynq UltraScale+ MPSoC PYNQ3.1.2移植

    本教程在 Ubuntu22.04.1 虚拟机中安装了 Xilinx 2024.1 的开发环境,基于该环境从源码编译 PYNQ 3.1.2 工程,生成能够在 ALINX AXU15EGB 开发板上运行的
    的头像 发表于 11-30 16:06 2626次阅读
    ALINX教程分享_Zynq UltraScale+ MPSoC <b class='flag-5'>PYNQ</b>3.1.2移植

    智元推出真机强化学习,机器人训练周期从“数周”减至“数十分钟

    行业芯事行业资讯
    电子发烧友网官方
    发布于 :2025年11月05日 14:19:48

    今日看点:智元推出真机强化学习;美国软件公司SAS退出中国市场

    智元推出真机强化学习,机器人训练周期从“数周”减至“数十分钟”   近日,智元机器人宣布其研发的真机强化学习技术,已在与龙旗科技合作的验证产线中成功落地。据介绍,此次落地的真机强化学习方案,机器人
    发表于 11-05 09:44 896次阅读

    无线充电25w:30分钟满血复活

    25W无线充电提升充电速度,实现30分钟补电,提升用户体验,推动无线充电技术发展。
    的头像 发表于 10-21 08:31 566次阅读
    无线充电25w:30<b class='flag-5'>分钟</b>满血复活

    智能雷电预警实时监测系统的防雷工作原理与应用

    、光学探测等综合手段,对雷电活动进行实时监测、分析和提前预警的防雷系统。它既不同于单纯的避雷针被动防护,也区别于浪涌保护器的事后防护,而是事前提前数分钟到数十分钟发出预警信号,为人员撤离、设备停机、系统
    的头像 发表于 08-12 10:56 713次阅读
    智能雷电预警实时监测系统的防雷工作原理与应用

    迅为RK3576开发板高算力低成本工业级核心板卡开发平台

    迅为RK3576开发板高算力低成本工业级核心板卡开发平台
    的头像 发表于 06-09 15:13 1441次阅读
    迅为RK3576<b class='flag-5'>开发</b>板高算力低成本工业级核心<b class='flag-5'>板卡</b><b class='flag-5'>开发</b>平台

    10分钟上手睿擎平台GUI开发:第一个LVGL图形应用

    ,在睿擎平台上支持LVGL能够更好地发挥其优势,为开发者带来更多便利。一环境搭建:5分钟极速配置1.睿擎派硬件准备开发板:睿擎派(RK3506J,三核Cortex
    的头像 发表于 06-06 18:41 2252次阅读
    10<b class='flag-5'>分钟</b>上手睿擎平台GUI<b class='flag-5'>开发</b>:第一个LVGL图形应用

    在IDE中运行固件内自带的AI程序,约2分钟左右就死机了,为什么?

    1、在IDE中运行固件内自带的AI程序,约2分钟左右就死机,点击停止报 繁忙,点连接也报 忙碌中。从资源管理器中点击CanMV可以访问下一级文件夹。 2、过几分钟后在IDE中点击“连接
    发表于 06-06 07:28

    技术分享 | 迅为RK3568开发板如何将 Linux 板卡虚拟成U盘

    技术分享 | 迅为RK3568开发板如何将 Linux 板卡虚拟成U盘
    的头像 发表于 06-04 10:57 885次阅读
    技术分享 | 迅为RK3568<b class='flag-5'>开发</b>板如何将 Linux <b class='flag-5'>板卡</b>虚拟成U盘

    LuatOS协程深度解析:小白也能10分钟学会,代码效率直接起飞!

    嵌入式开发如何兼顾效率与简洁?LuatOS协程给出完美答案!它用类线程的语法封装异步逻辑,让多任务开发像单线程一样简单。本文用图文并茂的方式拆解协程原理,10分钟带你轻松入门!   LuatOS协程
    的头像 发表于 04-10 15:23 455次阅读
    LuatOS协程深度解析:小白也能10<b class='flag-5'>分钟</b><b class='flag-5'>学会</b>,代码效率直接起飞!

    10分钟上手写代码,LuatOS协程轻松掌握!

    10分钟学会LuatOS协程,从此你的程序也能像通勤族利用碎片时间一样游刃有余。现在就去动手试一试,开启异步编程新体验! 写给第一次听说协程的你‌: 别怕!协程不是复杂概念,看完这篇,10分钟就能
    的头像 发表于 04-10 15:18 492次阅读
    10<b class='flag-5'>分钟</b>上手写代码,LuatOS协程轻松掌握!

    1分钟学会T113-i核心板串口调试技巧

    前言:本篇开始将对全志T113-i这款极具性价比的工业评估板的使用和调试展开介绍。通过这些使用技巧和调试方法可以让您快速上手,加深对于评估板的认识。本篇将从调试登录说起,帮助您只需一分钟即可成功掌握
    的头像 发表于 04-10 08:31 1119次阅读
    1<b class='flag-5'>分钟</b><b class='flag-5'>学会</b>T113-i核心板串口调试技巧

    调试TVP7002(VGA接口)芯片,十分烫手是怎么回事?

    最近在调试TVP7002(VGA接口)芯片,发现7002裸板在室温下正常工作时的芯片温度为60度,十分烫手,查了一下电源好像也没什么异常,希望哪位有用个的高手指点一下调试方向。
    发表于 02-08 07:30

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核简介

    学到本章节,大家应该对Linux操作系统都有了一定的了解,但可能还不知道我们拿到手的内核源码都经历了什么。linux有一个庞大的开源社区,每个人都可以向开源社区提交代码。由于linux内核十分庞大
    发表于 12-16 13:08

    飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核简介

    学到本章节,大家应该对Linux操作系统都有了一定的了解,但可能还不知道我们拿到手的内核源码都经历了什么。linux有一个庞大的开源社区,每个人都可以向开源社区提交代码。由于linux内核十分庞大
    发表于 12-13 09:03