时间已经很晚了,今天波波写的笔记是树莓派利用Blinker远程开关灯。整个开发很简单,但是由于python语言是波波最近初学,所以费了一些功夫。不过在实践过程中也发现了一些问题。
实验材料:树莓派3b+一块,导线两根,LED灯珠一个。
实验步骤:
1、将LED灯的正极连接树莓派37号端口(GPIO),将负极连接39号接口(GPIO,这个是GND)
2、在树莓派上安装Blinker,开发文档地址:https://diandeng.tech/doc/getting-start-rpi-wifi
3、写入口程序,源码如下:
- from Blinker import Blinker,BlinkerButton
- from Blinker.BlinkerDebug import *
- import RPi.GPIO as GPIO
- auth = "" #你申请的secret key
- BLINKER_DEBUG.debugAll()
- Blinker.mode("BLINKER_WIFI") #这是连接模式设置,可以选择蓝牙具体参考官方文档
- Blinker.begin(auth)
- button = BlinkerButton("btn-light") #按钮的组件名称,根据你自己在APP上定义的填写
- GPIO.setmode(GPIO.BOARD) #参考gpio编程手册,用板载序号方便编程,也可以用BCM编码
- GPIO.setwarnings(False)
- GPIO.setup(37,GPIO.OUT,initial=GPIO.LOW)
- light1 = 0 #定义一个全局变量,后边用到!!!
- def button_callback(state):
- global light1
- BLINKER_LOG('Button state:',state)
- #light1 = GPIO.output(37, not GPIO.input(37) )
- if light1 == 1:
- GPIO.output(37,0)
- light1 = 0
- else:
- GPIO.output(37,1)
- light1 = 1
- button.print(state)
- def data_callback(data):
- BLINKER_LOG("Blinker readString: ",data);
- button.attach(button_callback)
- Blinker.attach(data_callback)
- if __name__ == '__main__':
- while True:
- Blinker.run()
在上面实验中其实本可以不必定义light1这个全局变量的,这个变量的设置目的是为了一个按钮,点一下开灯,再点一下关灯。但是第21行代码返回的数据是“None”可能是GPIO的开发文档的问题,这个回头再研究。
最终我们看下具体实现的效果图。
下载Blinker手机App就可以体验了哈。
最近工作比较多,有时间的话会为大家分享如何用PHP语言写一个物联网的平台。当然了这中间可能会掺杂C语言、Python语言,至于Web开发用的就不说了,感兴趣的朋友可以关注下。