树莓派利用Blinker远程开关灯

时间已经很晚了,今天波波写的笔记是树莓派利用Blinker远程开关灯。整个开发很简单,但是由于python语言是波波最近初学,所以费了一些功夫。不过在实践过程中也发现了一些问题。

实验材料:树莓派3b+一块,导线两根,LED灯珠一个。

实验步骤:

1、将LED灯的正极连接树莓派37号端口(GPIO),将负极连接39号接口(GPIO,这个是GND)

2、在树莓派上安装Blinker,开发文档地址:https://diandeng.tech/doc/getting-start-rpi-wifi

3、写入口程序,源码如下:

  1. from Blinker import Blinker,BlinkerButton
  2. from Blinker.BlinkerDebug import *
  3. import RPi.GPIO as GPIO
  4. auth = ""  #你申请的secret key
  5. BLINKER_DEBUG.debugAll()
  6. Blinker.mode("BLINKER_WIFI")   #这是连接模式设置,可以选择蓝牙具体参考官方文档
  7. Blinker.begin(auth)
  8. button = BlinkerButton("btn-light")   #按钮的组件名称,根据你自己在APP上定义的填写
  9. GPIO.setmode(GPIO.BOARD)  #参考gpio编程手册,用板载序号方便编程,也可以用BCM编码
  10. GPIO.setwarnings(False)
  11. GPIO.setup(37,GPIO.OUT,initial=GPIO.LOW)
  12. light1 = 0  #定义一个全局变量,后边用到!!!
  13. def button_callback(state):
  14.     global light1
  15.     BLINKER_LOG('Button state:',state)
  16.     #light1 = GPIO.output(37, not GPIO.input(37) )
  17.    if light1 == 1:
  18.         GPIO.output(37,0)
  19.         light1 = 0
  20.     else:
  21.         GPIO.output(37,1)
  22.         light1 = 1
  23.   button.print(state)
  24. def data_callback(data):
  25.     BLINKER_LOG("Blinker readString: ",data);
  26. button.attach(button_callback)
  27. Blinker.attach(data_callback)
  28. if __name__ == '__main__':
  29.     while True:
  30.         Blinker.run()

在上面实验中其实本可以不必定义light1这个全局变量的,这个变量的设置目的是为了一个按钮,点一下开灯,再点一下关灯。但是第21行代码返回的数据是“None”可能是GPIO的开发文档的问题,这个回头再研究。

最终我们看下具体实现的效果图。

树莓派利用Blinker远程开关灯

下载Blinker手机App就可以体验了哈。

最近工作比较多,有时间的话会为大家分享如何用PHP语言写一个物联网的平台。当然了这中间可能会掺杂C语言、Python语言,至于Web开发用的就不说了,感兴趣的朋友可以关注下。

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!