查看: 277|回复: 2

[项目] 【智控万物】NFC打开“3D门”

[复制链接]
IMG_20210126_204447.jpg

【设计思路】
Arduino加NFC模块,利用Mind+的Python模式,使用Pinpong库,VPython库,pyttsx3库,实现NFC控制打开“3D”门,并进行语音播报。
【NFC模块】
近场通信(Near Field Communication,NFC),又称近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在十厘米内)交换数据。这个技术由免接触式射频识别(RFID)演变而来,并向下兼容RFID,最早由Sony和Philips各自开发成功,主要用于手机等手持设备中提供M2M(Machine to Machine)的通信。由于近场通讯具有天然的安全性,NFC技术被广泛用于POS机移动支付、公交卡、银行卡、门禁卡、饭卡、水卡等多种场合。
TueJanuary-202101264322..png

【VPython】

VPython是一套简单易用的三维图形库,使用它可以快速创建三维场景和动画。和TVTK相比,它更适合于创建交互式的三维场景,而TVTK则更适合于对数据进行三维可视化。
TueJanuary-202101262198..png

TueJanuary-202101262535..png


【pinpong】
pinpong 库是用于连接硬件设备进行在线编程的 Python 库。可创作丰富有趣的软硬件互动项目。
TueJanuary-202101268124..png

pyttsx3
pyttsx3是Python中的文本到语音转换库,他可以脱机工作。
TueJanuary-202101261352..png

演示代码
  1. import pyttsx3
  2. engine = pyttsx3.init()
  3. engine.say("开门")
  4. engine.runAndWait()
复制代码
【演示视频】

【完整代码】
  1. from vpython import *
  2. import time
  3. from pinpong.board import Board
  4. from pinpong.libs.dfrobot_pn532 import PN532
  5. import pyttsx3
  6. engine = pyttsx3.init()
  7. Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别
  8. wallR = box(pos=vector(10,0,0), axis = vector(0,0,1),size=vector(0.2,20,20), color=color.green)
  9. wallL = box(pos=vector(-10,0,0),axis = vector(0,0,1), size=vector(0.2,20,20), color=color.red)
  10. label( pos=vector(0,15,0), text='YunTian' )
  11. t = 1
  12. nfc = PN532()
  13. while not nfc.begin():
  14.   print("initial failure")
  15.   time.sleep(1)
  16. print("Please place the info card/tag on module..... ")
  17. def open_door():
  18. engine.say("开门")
  19. engine.runAndWait()
  20. for i in range(160):
  21.   rate(100)
  22.   wallR.rotate(angle=radians(t),axis = vector(0,1,0),origin=vector(20,0,0))
  23.   wallL.rotate(angle=radians(-t),axis = vector(0,1,0),origin=vector(-20,0,0))
  24. def close_door():
  25. engine.say("关门")
  26. engine.runAndWait()
  27. for i in range(160):
  28.   rate(100)
  29.   wallR.rotate(angle=radians(-t),axis = vector(0,1,0),origin=vector(20,0,0))
  30.   wallL.rotate(angle=radians(t),axis = vector(0,1,0),origin=vector(-20,0,0))
  31. while True:
  32.   if nfc.scan():
  33.       open_door()
  34.       time.sleep(2)
  35.       close_door()
复制代码

rzegkly  版主

发表于 2021-1-27 08:15:19

智控万物,赞
回复

使用道具 举报

szjuliet  版主

发表于 2021-1-27 09:10:45

知识点很多,好有趣~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail