转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi

欢迎加入讨论群 64770604
 

一、实验器材

1、TPYboard V102板  一块

2、电机驱动模块L298N   一个

3、电机 两块

4、小车底盘

5、超声波模块

6、5110屏  一块

二、超声波模块

1、什么是超声波模块

超声波传感器是利用超声波的特性研制而成的传感器, 它是通过传送一个超声波(远高于人的听觉范围)和提供一个对应于爆裂回声返回到传感器所需时间的输出脉冲来工作的。超声波传感器在非接触性测量方面的应用非常广泛,如检测液体水位(特别是具有腐蚀性的液体,如硫酸、硝酸液体),汽车倒车防撞系统,金属/非金属探伤等,都可以用到超声波距离传感器。

2、超声波模块测距的原理

(1)采用IO口TRIG触发测距,给最少10us的高电平信呈。

(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回。

(3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。

三、实验一:超声波模块测距,用5110来显示

1、连线方法

(1)超声波模块连接方法

VCC 供 5V电源, GND 为地线,TRIG 触发控制信号输入,接板子的X2,ECHO 回响信号输出,接板子的X1,四个接口端。

(2)5110连线及使用方法

具体见:http://www.cnblogs.com/xiaowuyi/p/6347336.html

2、原代码

导入font.py文件和upcd8544.py文件,编写main.py

main.py的代码如下:

  1. import pyb
  2. from pyb import Pin
  3. from pyb import Timer
  4. import upcd8544
  5. from machine import SPI,Pin
  6.  
  7. Trig = Pin('X2',Pin.OUT_PP)
  8. Echo = Pin('X1',Pin.IN)
  9. num=0
  10. flag=0
  11. run=1
  12. def start(t):
  13. global flag
  14. global num
  15. if(flag==0):
  16. num=0
  17. else:
  18. num=num+1
  19. def stop(t):
  20. global run
  21. if(run==0):
  22. run=1
  23. start1=Timer(1,freq=10000,callback=start)
  24. stop1=Timer(4,freq=2,callback=stop)
  25.  
  26. while True:
  27.  
  28. if(run==1):
  29. SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
  30. #DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)
  31. #CLK =>SPI(1).SCK 'X6' SPI clock
  32. RST = pyb.Pin('Y10')
  33. CE = pyb.Pin('Y11')
  34. DC = pyb.Pin('Y9')
  35. LIGHT = pyb.Pin('Y12')
  36. lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)
  37. Trig.value(1)
  38. pyb.udelay(100)
  39. Trig.value(0)
  40. while(Echo.value()==0):
  41. Trig.value(1)
  42. pyb.udelay(100)
  43. Trig.value(0)
  44. flag=0
  45. if(Echo.value()==1):
  46. flag=1
  47. while(Echo.value()==1):
  48. flag=1
  49. if(num!=0):
  50. #print('num:',num)
  51. distance=num/10000*34299/2
  52. print('Distance:')
  53. print(distance,'cm')
  54. lcd_5110.lcd_write_string('Distance',0,0)
  55. lcd_5110.lcd_write_string(str(distance),0,1)
  56. lcd_5110.lcd_write_string('cm',50,1)
  57. flag=0
  58. run=0

3、效果

(1)靠近障碍物

(2)远离障碍物

四、实验二:避障小车

1、什么是电机驱动模块

电机驱动模块主要是可以控制电机的运行:调速、运行、停止、步进、匀速等操作

2、L298N的连接及使用方法

L298N模块是2路的H桥驱动,所以可以同时驱动两个电机,接法如图所示使能ENA ENB之后,可以分别从IN1 IN2输入PWM信号驱动电机1的转速和方向,可以分别从IN3 IN4输入PWM信号驱动电机2的转速和方向。我们将电机1接口的OUT1与OUT2与小车的一个电机的正负极连接起来,将电机2接口的OUT3与OUT2与小车的另一个电机的正负极连接起来。然后将两边的接线端子,即供电正极(中间的接线端子为接地)连接TPYboard的VIN,中间的接线端子即接地,连接TPYBoard的GND,In1-In4连接TPYBoard的Y1,Y2,Y3,Y4,通过Y1,Y2与Y3,Y4的高低电平,来控制电机的转动,从而让小车前进,后退,向左,向右。

3、利用底盘+V102+超声波+L298N当小车往前开时,遇到障碍会自己拐弯,躲避

(1)原代码 main,py文件

  1. # main.py -- put your code here!
  2. import pyb
  3. from pyb import Pin
  4. from pyb import Timer
  5.  
  6. def start(t):
  7. global flag
  8. global num
  9. if(flag==0):
  10. num=0
  11. else:
  12. num=num+1
  13. def stop(t):
  14. global run
  15. if(run==0):
  16. run=1
  17. def left():
  18. x1.high()
  19. x2.low()
  20. y1.high()
  21. y2.low()
  22. def go():
  23. x1.high()
  24. x2.low()
  25. y1.low()
  26. y2.high()
  27.  
  28. def back():
  29. x1.low()
  30. x2.high()
  31. y1.high()
  32. y2.low()
  33. def right():
  34. x1.low()
  35. x2.high()
  36. y1.low()
  37. y2.high()
  38. def stop():
  39. x1.low()
  40. x2.low()
  41. y1.low()
  42. y2.low()
  43.  
  44. Trig = Pin('X9',Pin.OUT_PP)
  45. Echo = Pin('X10',Pin.IN)
  46. num=0
  47. flag=0
  48. run=1
  49.  
  50. start1=Timer(1,freq=10000,callback=start)
  51. stop1=Timer(4,freq=2,callback=stop)
  52.  
  53. x1 = Pin('X1', Pin.OUT_PP)
  54. x2 = Pin('X2', Pin.OUT_PP)
  55. y1 = Pin('Y1', Pin.OUT_PP)
  56. y2 = Pin('Y2', Pin.OUT_PP)
  57.  
  58. while True:
  59. if(run==1):
  60. Trig.value(1)
  61. pyb.udelay(100)
  62. Trig.value(0)
  63. while(Echo.value()==0):
  64. Trig.value(1)
  65. pyb.udelay(100)
  66. Trig.value(0)
  67. flag=0
  68. if(Echo.value()==1):
  69. flag=1
  70. while(Echo.value()==1):
  71. flag=1
  72. if(num!=0):
  73. #print('num:',num)
  74. distance=num/10000*34299/2
  75. print('Distance')
  76. print(distance,'cm')
  77. if distance>=20:
  78. go()
  79. if distance<=20:
  80. stop()
  81. back()
  82. flag=0
  83. run=0

 (2)实现效果

以上视频如果浏览不了,请访问http://admin.turnipsmart.com/IMG_3362.mp4

[TPYBoard - Micropython之会python就能做硬件 8] 学习使用蓝牙模块及舵机的更多相关文章

  1. [TPYBoard-Micropython之会python就能做硬件 7] 学习使用蓝牙模块及舵机

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi            欢迎加入讨论群 64770604 一.实验器材 1.TPYboard V102板  一块 2 ...

  2. [TPYBoard - Micropython之会python就能做硬件 8] 学习使用超声波模块制作避障小车

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604   一.实验器材 1.TPYboard V102板  一块 2.电机驱动模块L2 ...

  3. [TPYBoard - Micropython之会python就能做硬件 6] 学习使用OLED显示屏

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi            欢迎加入讨论群 64770604 一.实验器材 1.TPYBoard板子一块 2.数据线一条 ...

  4. [TPYBoard - Micropython之会python就能做硬件 1] 运行第一个脚本——点亮LED

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 会python就能做硬件! 一.TPYBoard V102开发板 TPYBoard V102 ...

  5. [TPYBoard - Micropython之会python就能做硬件 开篇]会python就能做硬件!

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 会python就能做硬件! 在写这套教程之前,首先感觉山东萝卜电子科技有限公司(turnip ...

  6. [TPYBoard - Micropython 之会python就能做硬件 9] 五分种学会用TPYBoard V102 制作避障小车(升级版)

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 感谢山东萝卜电子科技公司授权   一.实验器材 1.TPYboard V102板 ...

  7. [TPYBoard-Micropython之会python就能做硬件 4] 学习使用电位器和1602显示屏

    一.实验器材 1.TPYboard V102板  一块 2.电位器   一个 3.1602 屏 一块 4.杜邦线:若干 二.电位器的使用 电位器 (英文:Potentiometer)是可变电阻器的一种 ...

  8. [TPYBoard-Micropython之会python就能做硬件 5] 学习使用重力传感器及PWM

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi            欢迎加入讨论群 64770604 一.实验器材 1.TPYboard V102板  一块 2 ...

  9. [TPYBoard-Micropython之会python就能做硬件 2] 利用micropython控制NOKIA 5110屏

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板  一块 2.DS3231 ...

随机推荐

  1. [TPYBoard-Micropython教程之1] 运行第一个脚本——点亮LED

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 会python就能做硬件! 一.TPYBoard V102开发板 TPYBoard V102 ...

  2. 关于在官网上下载Eclipse遇到的问题!!

    首先Eclipse是什么? Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境. 幸运的是,Eclipse 附带了一 ...

  3. SQL Server 2008 sp3启用1433端口的方法

    SQL Server 2008 SP3一般的默认端口是1433,但有时候会遇到一些问题导致1433端口无法启用.这是笔者给大家指导如何开启1433端口   工具/原料 SQL Server 2008 ...

  4. Codeforce 712A Memory and Crow

    A. Memory and Crow time limit per test:2 seconds memory limit per test:256 megabytes input:standard ...

  5. 微信小程序 引用其他js里的方法

    微信小程序中,在微信官方开发文档我们可以知道 小程序的目录结构 . 一个小程序页面由四个文件组成,一个小程序页面的四个文件具有相同路径与文件名,由此我们可知一个小程序页面对应着一个跟页面同名的js文件 ...

  6. sql增删查改

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  7. Jenkins的新建job和配置job

    这里,我们说一下如何新建并且配置一个job,Jenkins的工作其实有很多都是靠job来完成的,job有很多的功能,这里我们只介绍如何新建和配置一个建构项目的job. 新建job          新 ...

  8. 开发mis系统的技术

    一.b/s架构 b/s架构:就broser/server,浏览器/服务器的说法.服务器端要运行tomcat,提供链接数据库服务供java代码读写数据,这个可以在eclipse中配置运行.浏览器则解释j ...

  9. HTML5 DOM扩展

    一.选择符 1. querySelector()方法:返回与该模式匹配的第一个元素 //取得body元素 var body = document.querySelector("body&qu ...

  10. phpcms 替换首页

    利用phpcms制作企业站,首先要将静态的企业主页替换成后台可编辑的动态主页. 首先做一个静态的企业站主页: <!DOCTYPE html> <html> <head&g ...