天天看點

使用IOTA整合物聯網硬體

本教程面向iota初學者,我們将學習如何開發基于指定IOTA位址的餘額來閉合或斷開一個連接配接到樹莓派上的繼電器,點亮或熄滅LED。教程雖然簡單,但足以展示IOTA的強大能力。

我們将使用一個聯網的樹莓派作為物聯網裝置,使用Python來檢查IOTA tangle上的餘額,并使用樹莓派的内部GIO管腳來切換所連接配接的繼電器的閉合與斷開。然後我們會将繼電器連接配接到一個電池供電的簡單LED電路,用來表示我們項目中的實體裝置。

要快速掌握區塊鍊和數字貨币應用開發,推薦彙智網的 區塊鍊開發系列線上教程 。 内容涵蓋比特币、以太坊、EOS、超級賬本、Tendermint等多種主流區塊鍊 平台,同時支援Java、C#、Python、PHP、JavaScript、Dart等多種開發 語言。

元器件

先讓我們看一下項目需要的元器件。你應當可以在大多數電子元器件商店或者淘寶上賣到這些元器件,不會超過350元。

樹莓派

項目的大腦是樹莓派。樹莓派将運作用來監視IOTA位址的餘額并處理樹莓派的通用輸入輸出(GIO)管腳上的信号:

使用IOTA整合物聯網硬體

繼電器

繼電器用來切換電路以及裝置(我們這裡就是LED)的開關。為了簡化電路我們将使用一個繼電器子產品,它包含了所有必須的元器件、管腳和接插件。注意你也可以購買多通道繼電器子產品,隻要每個通道可以單獨開關即可。

面包闆

面包闆用來進行電路的連接配接而無需進行焊接,這使得裝配過程更加簡單。

使用IOTA整合物聯網硬體

發光二極管

當供電時LED會點亮,我們用它來表示項目中的實體裝置(比如冰箱)。

使用IOTA整合物聯網硬體

300歐電阻

電阻用來限制通過LED的電流。沒有電阻的話,LED和樹莓派可能會因為

電流過大而損壞。要使用的電阻取決于你的LED以及電路電壓。在我的

示範中,使用了9V電池,是以330歐姆的電阻應當就可以了。

使用IOTA整合物聯網硬體

電池

電池為電路提供能力。我的示範中使用的是9v電池。

使用IOTA整合物聯網硬體

連接配接線

我們當然也需要一些電線将各個部件連接配接起來:

使用IOTA整合物聯網硬體

二維碼

如果你希望使用手機IOTA錢包來支付使用LED(冰箱、洗衣機....)的費用,

那麼一個列印好的IOTA收款位址二維碼會很友善。當使用IOTA錢包生成

位址時,你會找到一個二維碼。或者在

THETANGLE

網站查詢已有位址的二維碼。

使用IOTA整合物聯網硬體

組裝電路

現在我們看下組裝好的電路:

使用IOTA整合物聯網硬體

樹莓派的管腳如下:

使用IOTA整合物聯網硬體

參考以下說明連接配接管腳:

  • 樹莓派的pin 2(5v)連接配接到繼電器子產品的VCC管腳
  • 樹莓派的pin 6(地)連接配接到繼電器子產品的GND管腳
  • 樹莓派的pin 12(GPIO18)連接配接到繼電器子產品的IN管腳
  • 繼電器子產品的COM端子連接配接到電池的正極
  • 繼電器子產品的NO端子通過電阻連接配接到LED的正極
  • 電池的負極連接配接到LED的負極

需要的軟體和庫

在我們開始編寫Python代碼之前,需要先确認已經在樹莓派上安裝了所需要的軟體和庫。

首先,我們需要在樹莓派上安裝一個作業系統。任何樹莓派支援的LInux發行版應該都可以。在我的示範中,使用的是Raspbian發行版,因為它已經預置了Python和幾個Python編輯器。Raspbian發行版的安裝指令可以在這裡找到:

https://www.raspberrypi.org/downloads/raspbian/

如果你要單獨安裝Python,可以參考這裡:

https://www.python.org/downloads/

最後,我們需要安裝PyIOTA API庫,利用它我們就可以使用Python來通路IOTA tangle了。PyIOTA API庫及安裝指令參見: ttps://github.com/iotaledger/iota.lib.py。

Python代碼

現在開始寫代碼:

# 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)           

運作代碼

要運作上面的代碼,我們需要先在樹莓派上儲存到檔案中,例如let_there_be_light.py。

然後使用如下指令:

python let_there_be_light.py           

現在你應當可以在終端視窗中看到代碼在執行了,顯示目前的餘額,并且每隔10秒鐘檢查一次LED對應的IOTA位址的餘額。

支付LED的使用費

要點亮LED,你隻需要使用喜歡的IOTA錢包向LED的IOTA位址轉一些IOTA币。隻要轉賬交易被IOTA tangle确認,LED應該就會點亮并直到消耗完餘額。在我的示範當中,我設定的收費标準是1秒鐘1個IOTA。

原文連結:

iota物聯網硬體內建新手教程 - 彙智網