micropython做产品开发_Micropython开发实例之TPYBoard制作简易超声波测距仪
1.实验目的
1.学习在PC机系统中扩展简单I/O接口的方法。
2.进一步学习编制数据输出程序的设计方法。
3.学习超声波模块的测距原理。
4.学习LCD5110接线方法
5.学习TPYboard控制超声波模块测距。
2.所需元器件
超声波模块一个
TPYBoardv102一块
5110LCD显示屏一个
数据线一条
杜邦线若干
3.TPYBoardv102开发板
TPYBoardv102.png (181.13 KB, 下载次数: 11)
2017-7-6 16:25 上传
TPYBoardv102是一款典型的MicroPython开发板,搭载STM32F405芯片,支持DFU和SWD两种调试方式,现分为三个版本,简约版、以及分别兼容MicroPython官方板的PYBoardv1.0、PYBoardv1.1,大小64mm*54mm。功能上能完美的兼容PYBoardv1.0、v1.1的固件。是MicroPython开发和入门的不二选择!
4.超声波模块工作原理
(1)采用IO口TRIG触发测距,给最少10us的高电平信呈。
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回。
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。
如下图接线,VCC供5V电源,GND为地线,TRIG触发控制信号输入,ECHO回响信号输出等四个接口端。
2.png (161.74 KB, 下载次数: 10)
2017-7-6 16:25 上传
5.控制5110显示屏显示6x8字符
先看一下LCD5110针脚含义吧(注意:LCD5110的针脚有些不一样的)
TPYBoard的针脚与5110的针脚对应关系如下:
[AppleScript] 纯文本查看 复制代码TPYBoard LCD5110 memo
————————————————————————————
# any Pin => RST Reset pin (0=reset, 1=normal)
# any Pin => CE Chip Enable (0=listen for input, 1=ignore input)
# any Pin => DC Data/Command (0=commands, 1=data)
# MOSI => DIN data flow (Master out, Slave in)
# SCK => CLK SPI clock
# 3V3 or any Pin => VCC 3.3V logic voltage (0=off, 1=on)
# any Pin => LIGHT Light (0=on, 1=off)
# GND => GND
还是看不明白的话,直接上针脚编号吧
[AppleScript] 纯文本查看 复制代码TPYBoard LCD5110 memo
————————————————————————————
Y10 => RST Reset pin (0=reset, 1=normal)
Y11 => CE Chip Enable (0=listen for input, 1=ignore input)
Y9 => DC Data/Command (0=commands, 1=data)
X8 => DIN data flow (Master out, Slave in)
X6 => CLK SPI clock
VCC
Y12 => LIGHT Light (0=on, 1=off)
GND
3.png (7.7 KB, 下载次数: 10)
2017-7-6 16:26 上传
接线ok后,并且导入font.py文件和upcd8544.py文件,编写main.py将测到的距离显示在5110显示屏上,运行main.py就ok了。(font.py和upcd8544.py可以从官网上下载,最后会告诉下载地址)。
6.源代码
[Python] 纯文本查看 复制代码import pyb
from pyb import Pin
from pyb import Timer
import upcd8544
from machine import SPI,Pin
Trig = Pin('X2',Pin.OUT_PP)
Echo = Pin('X1',Pin.IN)
num=0
flag=0
run=1
def start(t):
global flag
global num
if(flag==0):
num=0
else:
num=num+1
def stop(t):
global run
if(run==0):
run=1
start1=Timer(1,freq=10000,callback=start)
stop1=Timer(4,freq=2,callback=stop)
while True:
if(run==1):
SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
#DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)
#CLK =>SPI(1).SCK 'X6' SPI clock
RST = pyb.Pin('Y10')
CE = pyb.Pin('Y11')
DC = pyb.Pin('Y9')
LIGHT = pyb.Pin('Y12')
lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)
Trig.value(1)
pyb.udelay(100)
Trig.value(0)
while(Echo.value()==0):
Trig.value(1)
pyb.udelay(100)
Trig.value(0)
flag=0
if(Echo.value()==1):
flag=1
while(Echo.value()==1):
flag=1
if(num!=0):
#print('num:',num)
distance=num/10000*34000/2
print('Distance')
print(distance,'cm')
lcd_5110.lcd_write_string('Distance',0,0)
lcd_5110.lcd_write_string(str(distance),6,1)
lcd_5110.lcd_write_string('cm',58,1)
lcd_5110.lcd_write_string('This is a test of Distance',0,2)
flag=0
run=0
(2)产品应用领域机器人避障、物体测距、液位检测、公共安防、停车场检测。
micropython做产品开发_Micropython开发实例之TPYBoard制作简易超声波测距仪相关推荐
- micropython做产品开发_关于MicroPython是否可以真正用在产品开发的讨论
这几天,在MicroPython官方论坛上,发起了关于MicroPython是否可以真正用在产品开发上(Is MicroPython ready for real world deployment)的 ...
- 做产品与做项目的区别
1 背景概述 在软件行业飞速发展的今天,我们可以将软件公司分大体分为两类,一类是使用框架进行开发的软件公司,另一类是套装软件产品的提供商,前者公司多数定位是项目类公司,后者则可以称为产品类公司.但做 ...
- Arduino适合做产品吗?
关注+星标公众号,不错过精彩内容 来源 | Arduino中文社区 Arduino一直受到众多非"Arduino派"的争议,下面分享几个Arduino社区常见的问题(以下观点来自A ...
- 电压放大器在超声波测距仪中的应用实例研究
超声波测距仪是一种用于测量距离的设备,其原理是利用超声波在空气中传播的速度和反射特性来计算距离.而电压放大器则是超声波测距仪中的一个重要组成部分,它可以将超声波信号放大到足够强的水平,以便于后续处理和 ...
- 实例:用C#.NET手把手教你做微信公众号开发(21)--使用微信支付线上收款:H5方式
在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下H5场景支付,使用手机浏览器打开就是H5方式,最常见的推广是短信内置链接,这种场景需要调用微信 ...
- MicroPython做嵌入式开发的优缺点
关注+星标公众号,不错过精彩内容 编排 | strongerHuang 微信公众号 | 嵌入式专栏 Python的火热程度相信大家都看到了,自然,MCU和嵌入式也紧跟"潮流",随之 ...
- 继续C#开发or转做产品
本人今年大四,C#开发,在一家公司实习了一年后,面临一个选择,是继续C#开发还是转做产品?我C#开发能力目前还一般,但很有兴趣.也喜欢设计与创意,做过产品专员.求大婶们指导! 转载于:https:// ...
- 软件开发中,做产品与做项目有什么区别?
对于个体程序员对于产品与项目的选择性问题 在IT行业,产品和项目一直是程序员们讨论的热话题.下面是我看到的一篇文章,我觉得写的比较不错.和大家来共享一下. 我始终不能避免的是程序员的最终归宿,人都有老 ...
- 实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式
在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下jsapi支付,场景就是在微信内打开某个页面,完成在线支付,同样一个网页,使用微信打开就是js ...
最新文章
- 用go语言制作读取excel模板批量生成word工具
- Python 文件写操作
- 关于Android SDK工具Lint的误报分析
- 省常中模拟 Test4
- mysql临时关闭查询日志_mysql故障排错临时打开通用日志和慢查询日志
- 对已经add的文件不在跟踪
- SQLAlchemy 嵌套事务的解决方案
- django2.0media用户上传文件配置及使用方法
- 【DCTWVRP】基于matlab遗传算法求解带容量+距离+时间窗的车辆路径规划问题【含Matlab源码 1211期】
- protues 快捷键和元件
- 阅读VDN:Value-Decomposition Networks For Cooperative Multi-Agent Learning Based On Team Reward
- 更换ip地址后虚拟机无法联网,连接失败
- 地形图测量中的等高线裁剪方法
- 短信在用户运营、召回流失用户中的重要作用
- Spring容器是什么?为什么要使用Spring容器?
- Android按键音
- 用Python实现微信翻译机器人
- Vue2:组件及组件通信
- opencv python 多张jpg图片转成avi视频
- Ubuntu 22.04 解决使用 .AppImage 文件方法