資料介紹
描述
現(xiàn)在是時候?qū)懴轮腔鄢鞘械亩x了。與其祖先一樣,智慧城市現(xiàn)在具備成為現(xiàn)實的所有因素。從農(nóng)業(yè)革命和后來的工業(yè)革命中發(fā)展起來的城市受到類似因素的驅(qū)動——人口增長和技術(shù)進步促進并推動了生活條件的改變。現(xiàn)代城市也有這些相同的因素,但規(guī)模要大得多;如前所述,全球人口呈指數(shù)級增長,我們需要應(yīng)對的方法。
人口對資源的壓力是使我們當(dāng)前的城市模型更加智能化的一個主要因素。而且,這樣做的技術(shù)最終以超連接、改進和更便宜的傳感器、人工智能和數(shù)據(jù)分析的形式出現(xiàn)。這里的線索就在數(shù)據(jù)中;數(shù)據(jù)是現(xiàn)代智慧城市的新能源。數(shù)據(jù),或者更確切地說,對這些數(shù)據(jù)的分析和應(yīng)用,將成為智慧城市發(fā)展的支點。因此,智慧城市應(yīng)該結(jié)合多種技術(shù)來改善城市的重要方面和任務(wù),例如監(jiān)測水和空氣、廢物管理、停車、照明和車輛。
在這個項目中,我們專注于借助智能垃圾箱和 IOTA tangle 改善一個地區(qū)(包括許多智能城市)的智能垃圾管理,以加快智能垃圾管理的進程,減少擁堵、污染,并幫助改善能源優(yōu)化。
廢物管理的主要問題之一是未優(yōu)化的垃圾收集卡車路線。未優(yōu)化的卡車路線會導(dǎo)致使用過多的燃料并在人口稠密的城市造成擁堵。此外,有些垃圾箱可能會因此而被裝滿而其他垃圾箱則可能因此而裝滿。所以我們真正要解決的是垃圾收集車路線的優(yōu)化,以避免擁堵和過度使用燃料。
這就是該項目的運作方式。我們在垃圾箱中連接填充液位傳感器,持續(xù)監(jiān)測垃圾箱內(nèi)的填充液位。在每天早上的固定時間(比如早上 7 點),數(shù)據(jù)會上傳到 tangle。垃圾車司機能夠使用合適的設(shè)備從節(jié)點檢索數(shù)據(jù),并且他可以優(yōu)化卡車路線。
硬件組件
1.紅外接近傳感器
可以使用下圖解釋紅外傳感器作為物體檢測傳感器的原理。紅外傳感器由紅外 LED 和紅外光電二極管組成;它們一起被稱為光電耦合器或光電耦合器。
當(dāng) IR 發(fā)射器發(fā)射輻射時,它會到達物體,并且一些輻射會反射回 IR 接收器。根據(jù) IR 接收器的接收強度,定義傳感器的輸出。
IR 接近傳感器用作液位傳感器。接近傳感器放置在垃圾箱頂部附近的垃圾箱內(nèi)。
一旦垃圾箱裝滿,傳感器返回 1,否則返回 0。(超聲波傳感器可以代替使用并且被廣泛使用。為簡單起見,我們使用 IR 接近傳感器。)
2.樹莓派
樹莓派是用于將數(shù)據(jù)發(fā)布到 tangle 的板。對于每個垃圾箱,我們都將 Raspberry Pi zero 與紅外接近傳感器連接起來。傳感器監(jiān)控填充水平,Raspberry Pi 會在每天早上的預(yù)定時間將數(shù)據(jù)歸零發(fā)布到 tangle。
軟件組件
1.蟒蛇
Python 是一種解釋型、高級、通用的編程語言。我們使用 python 構(gòu)建整個項目。
2. PyOTA:IOTA Python API 庫
這是 IOTA 核心的官方 Python 庫。它實現(xiàn)了官方 API以及新提出的功能(例如簽名、捆綁、實用程序和轉(zhuǎn)換)。
3.漂亮的桌子
PrettyTable 是一個簡單的 Python 庫,旨在使在視覺上吸引人的 ASCII 表格中快速輕松地表示表格數(shù)據(jù)。
程序
1. 安裝樹莓派
通過安裝 Raspbian OS 或任何其他合適的操作系統(tǒng)來設(shè)置 Raspberry Pi。如果需要,請遵循本教程。
2. 安裝所需軟件
如果之前未安裝,請下載并安裝Python 3.5或更高版本。然后安裝其他庫,如PyOTA和PrettyTable。
如果安裝了 pip,請在終端中輸入以下命令來安裝庫。
pip install pyota
pip install PrettyTable
3.創(chuàng)建IOTA地址
我們可以使用 IOTA 手機錢包創(chuàng)建一個 IOTA 錢包地址。使用 IOTA 錢包生成新地址或在https://thetangle.org上搜索現(xiàn)有地址時,您會找到一個二維碼。
4.代碼
我們有兩個用于該項目的 python 代碼。一個在與傳感器連接的 Raspberry Pi 零上運行。這段 python 代碼不斷地從傳感器讀取數(shù)據(jù),并將箱子編號和箱子的狀態(tài)發(fā)送給 tangle。
sensorread.py
#Developed by CodersCafe
from datetime import datetime
import time
import schedule
import RPi.GPIO as GPIO
#Setup sensor as input
sensor1 = 16
sensor2 = 12
GPIO.setmode(GPIO.BOARD)
GPIO.setup(sensor1,GPIO.IN)
GPIO.setup(sensor2,GPIO.IN)
# Import the PyOTA library
import iota
# Import json
import json
# Define IOTA address where all transactions are stored, replace with your own address.
# IOTA addresses can be created with the IOTA Wallet
Addr = b"RLLQQVU9ZPWF9EPOVTJ9AXVJOBQWJWDPGGMALZQANY9GWR99XPITQJQBVLYCX9XLGIGLB9TBUNDTDWYBZACGWGQSLZ"
# Create IOTA object, specify full node to be used when sending transactions.
api = iota.Iota("https://nodes.thetangle.org:443")
# Define static variable
city = "Smart City"
#Define the post function
def 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 at 7 am
schedule.every().day.at("07:00").do(datapost)
#Main loop
try:
while True:
# Show welcome message
print("\n Welcome to Smart City")
print("Press Ctrl+C to exit the system")
# Get bin number
bin_number1 = sensor1
print ("bin number = ",bin_number1)
bin_number2 = sensor2
print ("bin number = ",bin_number2)
# Get status from bins
id1 = GPIO.input(sensor1)
if id1==1:
status="Full"
else:
status="Not Full"
id2 = GPIO.input(sensor2)
if id1==1:
status="Full"
else:
status="Not Full"
# Create json data to be uploaded to the tangle
data1 = {'city': city, 'bin_number': bin_number1,'Status': status}
data2 = {'city': city, 'bin_number': bin_number2,'Status': status}
# Define new IOTA transaction
pta = 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 up function when user press Ctrl+C (exit)
except KeyboardInterrupt:
GPIO.cleanup()
另一個 python 代碼由垃圾車司機或任何其他授權(quán)人員使用。此代碼從 tangle 中讀取數(shù)據(jù)并以綜合方式顯示 bin 的數(shù)據(jù)。
displaydata.py
#Developed by CodersCafe
# Imports from the PyOTA library
from iota import Iota
from iota import Address
from iota import Transaction
from iota import TryteString
# Import json library
import json
# Import datetime libary
import datetime
# Import from PrettyTable
from 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 records
iotaNode = "https://nodes.thetangle.org:443"
# Create an IOTA object
api = Iota(iotaNode)
# Create PrettyTable object
x = PrettyTable()
# Specify column headers for the table
x.field_names = [ "city", "bin_number","Status", "last_time"]
# Find all transacions for selected IOTA address
result = api.find_transactions(addresses=address)
# Create a list of transaction hashes
myhashes = result['hashes']
# Print wait message
print("Please wait while retrieving data from the tangle...")
# Loop trough all transaction hashes
for txn_hash in myhashes:
# Convert to bytes
txn_hash_as_bytes = bytes(txn_hash)
# Get the raw transaction data (trytes) of transaction
gt_result = api.get_trytes([txn_hash_as_bytes])
# Convert to string
trytes = str(gt_result['trytes'][0])
# Get transaction object
txn = Transaction.from_tryte_string(trytes)
# Get transaction timestamp
timestamp = txn.timestamp
# Convert timestamp to datetime
last_time = datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
# Get transaction message as string
txn_data = str(txn.signature_message_fragment.decode())
# Convert to json
json_data = json.loads(txn_data)
# Check if json data has the expected json tag's
if all(key in json.dumps(json_data) for key in ["city","bin_number","Status"]):
# Add table row with json values
x.add_row([json_data['city'], json_data['bin_number'], json_data['Status'], last_time])
# Sort table by cleaned datetime
x.sortby = "last_time"
# Print table to terminal
print(x)
5.工作
將 IR 傳感器連接到 Raspberry Pi 零,并將液位傳感器放入垃圾箱內(nèi)。然后在樹莓派零中運行代碼sensorread.py,讓它永遠工作,它會在每天早上的固定時間無縫返回填充水平狀態(tài)。
然后在 Android 設(shè)備或計算機(或其他 Raspberry Pi)中運行代碼 displaydata.py。它將顯示帶有箱號及其填充水平狀態(tài)的數(shù)據(jù)。通過查看數(shù)據(jù),駕駛員可以優(yōu)化卡車路線。
?
- 開源硬件-警燈
- 支付檢測智能貨架開源硬件
- 視障人士智能手杖開源硬件
- 智能籃球記分牌開源硬件
- 智能積木開源硬件
- 智能插頭開源硬件
- 智能鏡子開源硬件
- 智能帽開源硬件
- 智能玻璃容器開源硬件
- 家庭智能家居開源硬件
- 智能鞋開源硬件
- 垃圾分類開源硬件
- 開源硬件智能鏡子
- 智能插座開源硬件
- 主流的開源硬件有哪些詳細資料說明
- 智能垃圾回收箱功能實驗 298次閱讀
- 智能垃圾回收箱系統(tǒng)軟件設(shè)計 345次閱讀
- 用小安派開源硬件制作一個桌面天氣站 809次閱讀
- 新型智能垃圾桶方案設(shè)計介紹 1475次閱讀
- 尋找開源硬件成功的觸發(fā)器 636次閱讀
- 源創(chuàng)通信BPI-M1+ 開源硬件開發(fā)板介紹 2648次閱讀
- 源創(chuàng)通信開源智能路由器 MTK 7623N 介紹 2897次閱讀
- 智能垃圾桶傳感器應(yīng)用解決方案 5351次閱讀
- 三大主流開源硬件對比:Arduino vs BeagleBone vs Raspberry Pi 6363次閱讀
- 智能垃圾桶有哪些功能及特點_智能垃圾桶市場前景_智能垃圾桶怎么用 1.6w次閱讀
- 智能垃圾桶的工作原理詳解 5.6w次閱讀
- 智能感應(yīng)垃圾桶有什么優(yōu)缺點 3.3w次閱讀
- 基于LD3320的語音識別智能垃圾桶設(shè)計 2.3w次閱讀
- 470MHz無線模塊在智能垃圾桶中的應(yīng)用 2534次閱讀
- 開源硬件究竟有多“Open”?看完這個你就清楚了 6939次閱讀
下載排行
本周
- 1使用單片機實現(xiàn)七人表決器的程序和仿真資料免費下載
- 2.96 MB | 44次下載 | 免費
- 2聯(lián)想E46L DAOLL6筆記本電腦圖紙
- 1.10 MB | 2次下載 | 5 積分
- 3MATLAB繪圖合集
- 27.12 MB | 2次下載 | 5 積分
- 4PR735,使用UCC28060的600W交錯式PFC轉(zhuǎn)換器
- 540.03KB | 1次下載 | 免費
- 5UCC38C42 30W同步降壓轉(zhuǎn)換器參考設(shè)計
- 428.07KB | 1次下載 | 免費
- 6DV2004S1/ES1/HS1快速充電開發(fā)系統(tǒng)
- 2.08MB | 1次下載 | 免費
- 7模態(tài)分解合集matlab代碼
- 3.03 MB | 1次下載 | 2 積分
- 8美的電磁爐維修手冊大全
- 1.56 MB | 1次下載 | 5 積分
本月
- 1使用單片機實現(xiàn)七人表決器的程序和仿真資料免費下載
- 2.96 MB | 44次下載 | 免費
- 2UC3842/3/4/5電源管理芯片中文手冊
- 1.75 MB | 15次下載 | 免費
- 3DMT0660數(shù)字萬用表產(chǎn)品說明書
- 0.70 MB | 13次下載 | 免費
- 4TPS54202H降壓轉(zhuǎn)換器評估模塊用戶指南
- 1.02MB | 8次下載 | 免費
- 5STM32F101x8/STM32F101xB手冊
- 1.69 MB | 8次下載 | 1 積分
- 6HY12P65/HY12P66數(shù)字萬用表芯片規(guī)格書
- 0.69 MB | 6次下載 | 免費
- 7華瑞昇CR216芯片數(shù)字萬用表規(guī)格書附原理圖及校正流程方法
- 0.74 MB | 6次下載 | 3 積分
- 8華瑞昇CR215芯片數(shù)字萬用表原理圖
- 0.21 MB | 5次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935119次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73807次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65987次下載 | 10 積分
評論
查看更多