with open(image_file, ‘rb’) as image_file:
if plate_found == True:
GPIO.setup(TRIG,GPIO.OUT)
get_seed(plate_id)
except KeyboardInterrupt: # If there is a KeyboardInterrupt (when you press ctrl+c), exit the program and cleanup
“Plate/SEED数据库”是对某种范例的会合式存储的引用,个中每个车牌号均与将用作IOTA代价生意业务的发送方的IOTA SEED配对。 在本教程中,我将利用一个简朴的逗号脱离的文本文件(或CSV)文件,该文件存储在Raspberry PI的当地文件中。 可是,在任何故安详性为重中之重的现实糊口中,SEED都应存储在会见受限的某种加密数据库中。
# Create transaction object
while GPIO.input(ECHO)==1:
汽车
capture_image()
r_str = json.loads(json.dumps(r.json(), indent=2))
print(plate_id)
# Function for capturing image using the Raspberry PI camera
在开始为这个项目编写Python代码之前,我们需要确保在Raspberry PI上安装了所有必须的软件和库。对付本教程,除了PyOTA自己之外,还需要以下库:
# Define api object
请求(pip安装请求)
iotaNode = “https://nodes.thetangle.org:443”
OpenALPR是一种自动车牌识别(ALPR)软件,用于从图片或图像中识别车牌号。您可以选择在内部安装OpenALPR SDK,也可以利用哪里的云处事执行ALPR。在本教程中,我们将利用云处事。 请留意OpenALPR是许可软件,但您可以注册一个免费帐户,该帐户每月最多可免费执行1000次ALPR。
camera.start_preview()
1. 一辆新车进入旅馆停车场,盖住了超声波传感器。
在查察这个项目标Python代码之前,让我们一步一步地查察当一辆新车进入旅馆停车场时产生的事件。
print(“Plate was found in DB, seed: ” + seed)
else:
try:
超声波传感器用于检测车辆何时进入或分开停车场。 超声波传感器通过发生和吸收声音脉冲来丈量间隔。 因此,它根基上只是一个扬声器和麦克风,并将一些其他电子设备组合在一起。 通过丈量从扬声器发出脉冲到麦克风吸收到脉冲之间的时间,我们可以计较出反射的物体(在这种环境下为车辆)的间隔(我们知道声速) 脉冲。
pulse_end = time.time()
在现实糊口中,您大概需要某种范例的指示器来汇报车主是否以及何时接管(或不接管)生意业务/付款。这可以通过将指示灯从赤色切换为绿色来完成,甚至可以移除物理屏障。
4. 在搜索Plate / SEED DB举办匹配之前,我们将车牌号从json工具转换为字符串。
我们还需要一些代表汽车自己的工具。 从本教程的图像中可以看到,我正在利用在四周跳蚤市场上发明的玩具车。 对付构建和测试,您只需要一个简朴的盒子,盒子的一侧印有牌照,如下所示。 甚至更低的温度,利用真实的汽车和车牌在预期的情况中配置系统。GPIO.setmode(GPIO.BCM)
GPIO.output(TRIG, False)
import json
在我的示例中,当新车进入停车场时,Raspberry PI完成了有关建设和签署所需IOTA代价生意业务的所有事情。您很快就会留意到,由于PI的资源有限,这是一个相当迟钝的进程。在现实糊口中,这大概是不行接管的,我们必需寻找其他选择。一种选择是将这些勾当外包给具有有效执行这些勾当资源的会合式实体。
import iota
虽然,您可以利用多种技能来检测车辆何时进入或分开停车场。我为此项目利用超声波传感器的独一原因是,我已经在上一个项目中安排了一个超声波传感器。
tx1 = iota.ProposedTransaction( address = iota.Address(hotel_address), message = None, tag = iota.Tag(iota.TryteString.from_unicode(plate_id)), value = price)
在Cloud API页面上,您会找到一个奥机密钥,该奥机密钥会将图像上传到OpenALPR云处事时将在我们的python剧本中利用。 while GPIO.input(ECHO)==0:
url = ‘https://api.openalpr.com/v2/recognize_bytes?recognize_vehicle=1&country=us&secret_key=%s’ % (SECRET_KEY)
pulse_duration = pulse_end – pulse_start
distance = round(distance, 2)
所需软件和库
这是一系列初学者教程,我们将探讨如何将物理设备与IOTA协议集成。这一次,我们将着眼于利用物联网协议简化和自动化典范的汽车相关处事的付出,如停车、收费公路、洗车等。 The Plate/SEED DB OpenALPR 留意电路中的两个电阻。 电阻用于低落HC-SR04的5V输出引脚到PI上的3.5 V输入引脚的电压。电路中没有电压电阻器大概会损坏您的Raspberry PI。 在开始研究该项目标编码之前,我们应该退后一步,研究一下总体观念和所利用的各类组件。 利用以下电路图将HC-SR04毗连到Raspberry PI。 确保在车牌号周围画一个边框,如上所示。 不然,OpenALPR算法将无法识别车牌在图片中的位置。 这是OpenALPR解码的图片
这是这个项目标python代码。。
要注册免费的OpenALPR帐户,请会见https://www.openalpr.com/
# Hotel owner recieving address, replace with your own recieving address
怎么运行的
import base64
# Imports some libraries required by OpenALPR communication
# Convert returned json to string
# Setup the camera
5. 假如找到匹配项,则利用返回的SEED作为生意业务的发送者,在将有价生意业务发送到纠结之前,我们将返回相关的IOTA SEED。
csv_reader = csv.reader(csv_file, delimiter=’,’)
camera = PiCamera()
from iota import Address
3. 图片被上传到OpenALPR Cloud处事,该处事以json工具的形式返回标识的车牌号。
car_found = True
实践用例
camera.rotation = 270
if car_found == False:
while True:
此刻,您应该看到python剧本开始每2秒查抄一次传入的汽车。利用超声波传感器。当发明新车时,我们将凭据“事情道理”一章中的说明启动序列。跟着序列的举办,查抄树莓终端的状态。
# Function for sending the IOTA value transaction
try:
以供参考:
# Specify GPIO pins used by ultrasonic sensor
# Setup the GPIO pins
except:
ECHO = 24
在我们旅馆的后头有一个停车场,供旅馆客人和员工利用。最近在未付出所需停车费的环境下,利用停车设施的授权人员和未授权人员都呈现了问题。我们旅馆业主认为,这与今朝的人工操纵和巨大的停车费处理惩罚流程有关。假如有一个自动化系统,可以在不打搅客人或事恋人员的环境下收取停车费就好了。
# Depends on how you monted the camera
plate_found = False
image_file = “/home/pi/Desktop/image.jpg”
# Variable used for monitoring when car enters/exits the sensor area
超声波传感器
# Import the GPIO library
for row in csv_reader:
def capture_image():
def send_transaction(hotel_address, price, plate_id, seed):
time.sleep(0.00001)
# Search the Plate/SEED DB for a matching lisence plate
SentBundle = api.send_transfer(depth=3,transfers=[tx1], inputs=None, change_address=None, min_weight_magnitude=14)
# Imports some required PyOTA libraries
# URL to IOTA fullnode used when interacting with the Tangle
GPIO.output(TRIG, False)
构成部门
# Price of the parking service (10 IOTA)
# Rotate the image so that the lisence plate is placed horizontaly within the picture
拍照机
print(“Plate was not found in DB”)
# Convert distance to cm
distance = pulse_duration * 17150
plate_found = True
2. 摄像头拍下了汽车牌照区域的照片。
car_found = False
GPIO.cleanup()
请留意,传感器发生的声音脉冲处于人耳无法检测到的频率范畴内,因此当传感器处于勾当状态时,您将听不到任何声音。
在第一个教程中,我们将实验利用一种凡是称为自动车牌识别(Automatic License Plate Recognition,简称ALPR)的技能来办理这个用例。
摄像机用于进入车位区域时对车牌举办照相。我正在为此项目利用Raspberry PI摄像头模块V2,但您根基上可以利用任何可以通过Python剧本节制的摄像头。 您应该可以从eBay或从内地的PI商店购置此相机模块。
plate_id = r_str[‘results’][0][‘plate’]
print(“Capturing image…”)
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。