繼電器
繼電器用來(lái)切換電路以及設(shè)備(我們這里就是LED)的開(kāi)關(guān)。[IOTA+ 物聯(lián)網(wǎng)硬件集成實(shí)戰(zhàn)教程]。為了簡(jiǎn)化電路我們將使用一個(gè)繼電器模塊,它包含了所有必須的元器件、管腳和接插件。注意你也可以購(gòu)買(mǎi)多通道繼電器模塊,只要每個(gè)通道可以單獨(dú)開(kāi)關(guān)即可。
面包板
面包板用來(lái)進(jìn)行電路的連接而無(wú)需進(jìn)行焊接,這使得裝配過(guò)程更加簡(jiǎn)單。
發(fā)光二極管
當(dāng)供電時(shí)LED會(huì)點(diǎn)亮,我們用它來(lái)表示項(xiàng)目中的物理設(shè)備(比如冰箱)。
300歐電阻
電阻用來(lái)限制通過(guò)LED的電流。沒(méi)有電阻的話,LED和樹(shù)莓派可能會(huì)因?yàn)殡娏鬟^(guò)大而損壞。要使用的電阻取決于你的LED以及電路電壓。在我的演示中,使用了9V電池,因此330歐姆的電阻應(yīng)當(dāng)就可以了。
電池
電池為電路提供能力。我的演示中使用的是9v電池。
連接線
我們當(dāng)然也需要一些電線將各個(gè)部件連接起來(lái):
二維碼
如果你希望使用手機(jī)IOTA錢(qián)包來(lái)支付使用LED(冰箱、洗衣機(jī)....)的費(fèi)用,那么一個(gè)打印好的IOTA收款地址二維碼會(huì)很方便。當(dāng)使用IOTA錢(qián)包生成地址時(shí),你會(huì)找到一個(gè)二維碼?;蛘咴赥HETANGLE網(wǎng)站查詢已有地址的二維碼。
現(xiàn)在我們看下組裝好的電路:
樹(shù)莓派的管腳如下:
參考以下說(shuō)明連接管腳:
在我們開(kāi)始編寫(xiě)Python代碼之前,需要先確認(rèn)已經(jīng)在樹(shù)莓派上安裝了所需要的軟件和庫(kù)。
首先,我們需要在樹(shù)莓派上安裝一個(gè)操作系統(tǒng)。任何樹(shù)莓派支持的LInux發(fā)行版應(yīng)該都可以。在我的演示中,使用的是Raspbian發(fā)行版,因?yàn)樗呀?jīng)預(yù)置了Python和幾個(gè)Python編輯器。Raspbian發(fā)行版 的安裝指令可以在這里找到:
https://www.raspberrypi.org/downloads/raspbian/。
如果你要單獨(dú)安裝Python,可以參考這里:
https://www.python.org/downloads/。
最后,我們需要安裝PyIOTA API庫(kù),利用它我們就可以使用Python來(lái)訪問(wèn)IOTA tangle了。PyIOTA API庫(kù)及安裝指令參見(jiàn):
https://github.com/iotaledger/iota.lib.py。
現(xiàn)在開(kāi)始寫(xiě)代碼:
# Imports some Python Date/Time functions import time import datetime # Imports GPIO library import RPi.GPIO as GPIO # Imports the PyOTA library from iota import Iota from iota import Address # Setup O/I PIN's LEDPIN=18 GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(LEDPIN,GPIO.OUT) GPIO.output(LEDPIN,GPIO.LOW) # Function for checking address balance on the IOTA tangle. def checkbalance(): print("Checking balance") gb_result = api.get_balances(address) balance = gb_result['balances'] return (balance[0]) # URL to IOTA fullnode used when checking balance iotaNode = "https://nodes.thetangle.org:443" # Create an IOTA object api = Iota(iotaNode, "") # IOTA address to be checked for new light funds # IOTA addresses can be created using the IOTA Wallet address = [Address(b'GTZUHQSPRAQCTSQBZEEMLZPQUPAA9LPLGWCKFNEVKBINXEXZRACVKKKCYPWPKH9AWLGJHPLOZZOYTALAWOVSIJIYVZ')] # Get current address balance at startup and use as baseline for measuring new funds being added. currentbalance = checkbalance() lastbalance = currentbalance # Define some variables lightbalance = 0 balcheckcount = 0 lightstatus = False # Main loop that executes every 1 second while True: # Check for new funds and add to lightbalance when found. if balcheckcount == 10: currentbalance = checkbalance() if currentbalance > lastbalance: lightbalance = lightbalance + (currentbalance - lastbalance) lastbalance = currentbalance balcheckcount = 0 # Manage light balance and light ON/OFF if lightbalance > 0: if lightstatus == False: print("light ON") GPIO.output(LEDPIN,GPIO.HIGH) lightstatus=True lightbalance = lightbalance -1 else: if lightstatus == True: print("light OFF") GPIO.output(LEDPIN,GPIO.LOW) lightstatus=False # Print remaining light balance print(datetime.timedelta(seconds=lightbalance)) # Increase balance check counter balcheckcount = balcheckcount +1 # Pause for 1 sec. time.sleep(1)
運(yùn)行代碼
要運(yùn)行上面的代碼,我們需要先在樹(shù)莓派上保存到文件中,例如let_there_be_light.py。然后使用如下命令:
python let_there_be_light.py
現(xiàn)在你應(yīng)當(dāng)可以在終端窗口中看到代碼在執(zhí)行了,顯示當(dāng)前的余額,并且每個(gè)10秒鐘檢查一次LED對(duì)應(yīng)的IOTA地址的余額。
要點(diǎn)亮LED,你只需要使用喜歡的IOTA錢(qián)包向LED的IOTA地址轉(zhuǎn)一些IOTA幣。只要轉(zhuǎn)賬交易被IOTA tangle確認(rèn),LED應(yīng)該就會(huì)點(diǎn)亮并直到消耗完余額。在我的演示當(dāng)中,我設(shè)置的收費(fèi)標(biāo)準(zhǔn)是1秒鐘1個(gè)IOTA。
原文鏈接:iota物聯(lián)網(wǎng)硬件集成新手教程 - 匯智網(wǎng)