资料介绍
描述
现在是时候写下智慧城市的定义了。与其祖先一样,智慧城市现在具备成为现实的所有因素。从农业革命和后来的工业革命中发展起来的城市受到类似因素的驱动——人口增长和技术进步促进并推动了生活条件的改变。现代城市也有这些相同的因素,但规模要大得多;如前所述,全球人口呈指数级增长,我们需要应对的方法。
人口对资源的压力是使我们当前的城市模型更加智能化的一个主要因素。而且,这样做的技术最终以超连接、改进和更便宜的传感器、人工智能和数据分析的形式出现。这里的线索就在数据中;数据是现代智慧城市的新能源。数据,或者更确切地说,对这些数据的分析和应用,将成为智慧城市发展的支点。因此,智慧城市应该结合多种技术来改善城市的重要方面和任务,例如监测水和空气、废物管理、停车、照明和车辆。
在这个项目中,我们专注于借助智能垃圾箱和IOTA tangle 改善一个地区(包括许多智能城市)的智能垃圾管理,以加快智能垃圾管理的进程,减少拥堵、污染,并帮助改善能源优化。
废物管理的主要问题之一是未优化的垃圾收集卡车路线。未优化的卡车路线会导致使用过多的燃料并在人口稠密的城市造成拥堵。此外,有些垃圾箱可能会因此而被装满而其他垃圾箱则可能因此而装满。所以我们真正要解决的是垃圾收集车路线的优化,以避免拥堵和过度使用燃料。
这就是该项目的运作方式。我们在垃圾箱中连接填充液位传感器,持续监测垃圾箱内的填充液位。在每天早上的固定时间(比如早上 7 点),数据会上传到 tangle。垃圾车司机能够使用合适的设备从节点检索数据,并且他可以优化卡车路线。
硬件组件
1.红外接近传感器
可以使用下图解释红外传感器作为物体检测传感器的原理。红外传感器由红外LED和红外光电二极管组成;它们一起被称为光电耦合器或光电耦合器。
当 IR 发射器发射辐射时,它会到达物体,并且一些辐射会反射回 IR接收器。根据 IR 接收器的接收强度,定义传感器的输出。
IR 接近传感器用作液位传感器。接近传感器放置在垃圾箱顶部附近的垃圾箱内。
一旦垃圾箱装满,传感器返回 1,否则返回 0。(超声波传感器可以代替使用并且被广泛使用。为简单起见,我们使用 IR 接近传感器。)
2.树莓派
树莓派是用于将数据发布到 tangle 的板。对于每个垃圾箱,我们都将 RaspberryPizero 与红外接近传感器连接起来。传感器监控填充水平,Raspberry Pi 会在每天早上的预定时间将数据归零发布到 tangle。
软件组件
1.蟒蛇
Python是一种解释型、高级、通用的编程语言。我们使用 python 构建整个项目。
2. PyOTA:IOTA Python API 库
这是 IOTA 核心的官方 Python 库。它实现了官方 API以及新提出的功能(例如签名、捆绑、实用程序和转换)。
3.漂亮的桌子
PrettyTable 是一个简单的 Python 库,旨在使在视觉上吸引人的 ASCII 表格中快速轻松地表示表格数据。
程序
1. 安装树莓派
通过安装 Raspbian OS 或任何其他合适的操作系统来设置 Raspberry Pi。如果需要,请遵循本教程。
2. 安装所需软件
如果之前未安装,请下载并安装Python 3.5或更高版本。然后安装其他库,如PyOTA和PrettyTable。
如果安装了 pip,请在终端中输入以下命令来安装库。
pip install pyota
pip install PrettyTable
3.创建IOTA地址
我们可以使用 IOTA手机钱包创建一个 IOTA 钱包地址。使用 IOTA 钱包生成新地址或在https://thetangle.org上搜索现有地址时,您会找到一个二维码。
4.代码
我们有两个用于该项目的 python 代码。一个在与传感器连接的 Raspberry Pi 零上运行。这段 python 代码不断地从传感器读取数据,并将箱子编号和箱子的状态发送给 tangle。
sensorread.py
#Developed by CodersCafefrom datetime import datetimeimport timeimport scheduleimport RPi.GPIOasGPIO#Setup sensorasinputsensor1 =16sensor2 =12GPIO.setmode(GPIO.BOARD)GPIO.setup(sensor1,GPIO.IN)GPIO.setup(sensor2,GPIO.IN)# Import the PyOTA libraryimport iota# Import jsonimport json# Define IOTA address where all transactions are stored, replacewithyour own address.# IOTA addressescanbe createdwiththe IOTA WalletAddr = b"RLLQQVU9ZPWF9EPOVTJ9AXVJOBQWJWDPGGMALZQANY9GWR99XPITQJQBVLYCX9XLGIGLB9TBUNDTDWYBZACGWGQSLZ"# Create IOTAobject, specify full nodetobe usedwhensending transactions.api = iota.Iota("https://nodes.thetangle.org:443")# Define staticvariablecity ="Smart City"#Define the post functiondef datapost():FinalBundle = api.send_transfer(depth=3,transfers=[pta],min_weight_magnitude=14)['bundle']FinalBundle = api.send_transfer(depth=3,transfers=[ptb],min_weight_magnitude=14)['bundle']print("Success")#Schedule data posting at7amschedule.every().day.at("07:00").do(datapost)#Main looptry:whileTrue:# Show welcome messageprint("\n Welcome to Smart City")print("Press Ctrl+C to exit the system")# Get bin numberbin_number1 = sensor1print ("bin number = ",bin_number1)bin_number2 = sensor2print ("bin number = ",bin_number2)# Get status from binsid1 =GPIO.input(sensor1)ifid1==1:status="Full"else:status="Not Full"id2 =GPIO.input(sensor2)ifid1==1:status="Full"else:status="Not Full"# Create json datatobe uploadedtothe tangledata1 = {'city': city, 'bin_number': bin_number1,'Status': status}data2 = {'city': city, 'bin_number': bin_number2,'Status': status}# DefinenewIOTA transactionpta = iota.ProposedTransaction(address=iota.Address(Addr),message = iota.TryteString.from_unicode(json.dumps(data1)),tag = iota.Tag(b'SMARTCITY'),value =0)ptb = iota.ProposedTransaction(address=iota.Address(Addr),message = iota.TryteString.from_unicode(json.dumps(data2)),tag = iota.Tag(b'SMARTCITY'),value =0)schedule.run_pending()time.sleep(50)# Clean upfunctionwhenuser press Ctrl+C (exit)except KeyboardInterrupt:GPIO.cleanup()
另一个 python 代码由垃圾车司机或任何其他授权人员使用。此代码从 tangle 中读取数据并以综合方式显示 bin 的数据。
displaydata.py
#Developed by CodersCafe# Imports from the PyOTA libraryfrom iota import Iotafrom iota import Addressfrom iota import Transactionfrom iota import TryteString# Import json libraryimport json# Import datetime libaryimport datetime# Import from PrettyTablefrom prettytable import PrettyTable# Define IOTA address where all transactions are stored, replace with your own address.address = [Address(b'RLLQQVU9ZPWF9EPOVTJ9AXVJOBQWJWDPGGMALZQANY9GWR99XPITQJQBVLYCX9XLGIGLB9TBUNDTDWYBZACGWGQSLZ')]# Define full node to be used when retrieving cleaning recordsiotaNode = "https://nodes.thetangle.org:443"# Create an IOTA objectapi = Iota(iotaNode)# Create PrettyTable objectx = PrettyTable()# Specify column headers for the tablex.field_names = ["city", "bin_number","Status", "last_time"]# Find all transacions for selected IOTA addressresult = api.find_transactions(addresses=address)# Create a list of transaction hashesmyhashes = result['hashes']# Print wait messageprint("Please wait while retrieving data from the tangle...")# Loop trough all transaction hashesfor txn_hash in myhashes:# Convert to bytestxn_hash_as_bytes = bytes(txn_hash)# Get the raw transaction data (trytes) of transactiongt_result = api.get_trytes([txn_hash_as_bytes])# Convert to stringtrytes = str(gt_result['trytes'][0])# Get transaction objecttxn = Transaction.from_tryte_string(trytes)# Get transaction timestamptimestamp = txn.timestamp# Convert timestamp to datetimelast_time = datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')# Get transaction message as stringtxn_data = str(txn.signature_message_fragment.decode())# Convert to jsonjson_data = json.loads(txn_data)# Check if json data has the expected json tag'sif all(key in json.dumps(json_data) for key in ["city","bin_number","Status"]):# Add table row with json valuesx.add_row([json_data['city'], json_data['bin_number'], json_data['Status'], last_time])# Sort table by cleaned datetimex.sortby = "last_time"# Print table to terminalprint(x)
5.工作
将 IR 传感器连接到 Raspberry Pi 零,并将液位传感器放入垃圾箱内。然后在树莓派零中运行代码sensorread.py,让它永远工作,它会在每天早上的固定时间无缝返回填充水平状态。
然后在Android设备或计算机(或其他 Raspberry Pi)中运行代码 displaydata.py。它将显示带有箱号及其填充水平状态的数据。通过查看数据,驾驶员可以优化卡车路线。
- 视障人士智能手杖开源硬件0次下载
- 开源硬件之明星有多亮0次下载
- 智能积木开源硬件0次下载
- 智能插头开源硬件0次下载
- 智能镜子开源硬件1次下载
- 智能帽开源硬件0次下载
- 智能玻璃容器开源硬件0次下载
- 家庭智能家居开源硬件0次下载
- 智能鞋开源硬件2次下载
- 垃圾分类开源硬件0次下载
- 机械臂开源硬件6次下载
- 开源硬件智能镜子1次下载
- 智能插座开源硬件2次下载
- 基于Arduino硬件光控灯制作资料6次下载
- 主流的开源硬件有哪些详细资料说明0次下载
- 基于CW32单片机做的软硬件开源项目469次阅读
- 小安派-SCP-2.4 无线中控器参数概述508次阅读
- 用小安派开源硬件制作一个桌面天气站512次阅读
- 新型智能垃圾桶方案设计介绍921次阅读
- 寻找开源硬件成功的触发器553次阅读
- 源创通信BPI-M1+开源硬件开发板介绍2412次阅读
- 源创通信开源智能路由器 MTK 7623N 介绍2652次阅读
- 智能垃圾桶传感器应用解决方案5174次阅读
- 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi6179次阅读
- 智能垃圾桶有哪些功能及特点_智能垃圾桶市场前景_智能垃圾桶怎么用1.6w次阅读
- 智能垃圾桶的工作原理详解5.4w次阅读
- 智能感应垃圾桶有什么优缺点3.3w次阅读
- 基于LD3320的语音识别智能垃圾桶设计2.2w次阅读
- 470MHz无线模块在智能垃圾桶中的应用2465次阅读
- 开源硬件究竟有多“Open”?看完这个你就清楚了6799次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB |532次下载 |免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB |339次下载 |免费
- 3TC358743XBG评估板参考手册
- 1.36 MB |330次下载 |免费
- 4DFM软件使用教程
- 0.84 MB |295次下载 |免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB |227次下载 |免费
- 6迪文DGUS开发指南
- 31.67 MB |194次下载 |免费
- 7元宇宙底层硬件系列报告
- 13.42 MB |182次下载 |免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB |178次下载 |免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB |234315次下载 |免费
- 2555集成电路应用800例(新编版)
- 0.00 MB |33566次下载 |免费
- 3接口电路图大全
- 未知 |30323次下载 |免费
- 4开关电源设计实例指南
- 未知 |21549次下载 |免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB |15349次下载 |免费
- 6数字电路基础pdf(下载)
- 未知 |13750次下载 |免费
- 7电子制作实例集锦 下载
- 未知 |8113次下载 |免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB |6656次下载 |免费
总榜
- 1matlab软件下载入口
- 未知 |935054次下载 |免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB |537798次下载 |免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 |420027次下载 |免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB |234315次下载 |免费
- 5Altium DXP2002下载入口
- 未知 |233046次下载 |免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 |191187次下载 |免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M |183279次下载 |免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 |138040次下载 |免费
评论
查看更多