继电器
继电器用来切换电路以及设备(我们这里就是LED)的开关。[IOTA+ 物联网硬件集成实战教程]。为了简化电路我们将使用一个继电器模块,它包含了所有必须的元器件、管脚和接插件。注意你也可以购买多通道继电器模块,只要每个通道可以单独开关即可。
面包板
面包板用来进行电路的连接而无需进行焊接,这使得装配过程更加简单。
发光二极管
当供电时LED会点亮,我们用它来表示项目中的物理设备(比如冰箱)。
300欧电阻
电阻用来限制通过LED的电流。没有电阻的话,LED和树莓派可能会因为电流过大而损坏。要使用的电阻取决于你的LED以及电路电压。在我的演示中,使用了9V电池,因此330欧姆的电阻应当就可以了。
电池
电池为电路提供能力。我的演示中使用的是9v电池。
连接线
我们当然也需要一些电线将各个部件连接起来:
二维码
如果你希望使用手机IOTA钱包来支付使用LED(冰箱、洗衣机....)的费用,那么一个打印好的IOTA收款地址二维码会很方便。当使用IOTA钱包生成地址时,你会找到一个二维码。或者在THETANGLE网站查询已有地址的二维码。
现在我们看下组装好的电路:
树莓派的管脚如下:
参考以下说明连接管脚:
在我们开始编写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库及安装指令参见:
https://github.com/iotaledger/iota.lib.py。
现在开始写代码:
# 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,你只需要使用喜欢的IOTA钱包向LED的IOTA地址转一些IOTA币。只要转账交易被IOTA tangle确认,LED应该就会点亮并直到消耗完余额。在我的演示当中,我设置的收费标准是1秒钟1个IOTA。
原文链接:iota物联网硬件集成新手教程 - 汇智网