当前位置:   article > 正文

阿里云python轻应用学习笔记(五)---haas100通过python轻应用实现linkkit连接物联网平台_python linkkit 使用

python linkkit 使用

摘要:无论是哪种轻应用,一个必备的核心功能就是连接物联网平台,python轻应用也是如此。haas团队已经帮我们做好了连接云平台的案例,本文带您用最详细的步骤实现它。

目录

1.准备工作

2.准备python程序

3.如何运行linkkit程序

4.让开关控制再加一个舵机

5.完整的可一键复制的linkkit-pwm.py源代码


 

 

硬件:haas100(python固件),数据线,电源,SG90舵机,tf卡,读卡器。

软件:win7 x64,串口助理,haas固件(版本Python  on HaaS100 by 2021-03-17),vscode。

 

1.准备工作

准备工作有以下几项:

接通电源,连接数据线(确保设备管理器可以看到串口号),连接舵机。

舵机的连接方式是

  1. The SG90 circuit:

  2. # - SIGNAL connect to HaaS100 PWM3(pin 9)

  3. # - GND connect to HaaS100 GND(pin 3)

  4. # - VCC connect to HaaS100 5V(pin 5)

haas的几个信号引脚分布入下图

然后查询haas固件版本号,方法是用串口助理,以交互模式发送命令“python”,注意发送新行。当窗口交互显示“Python  on HaaS100 by 2021-03-17;  press ctrl + d  to exit ! ”时,即为正常。

如果您的固件版本不是该版本,请参考以下文章进行烧录。

阿里云python轻应用学习笔记(三)---python轻应用帮助文档升级为新地址了(基于haas100)

最后的准备工作就是将tf卡通过读卡器插入电脑。

2.准备python程序

本文的程序是在haas帮助文档基础上作出简单修改的。

文档链接如下:

https://g.alicdn.com/HaaSAI/PythonDoc/demos/index.html

在该页面的最后一个案例,就是“云端连接/控制”案例。

文章的代码可以用代码区域右上角的“一键复制”按钮进行一键复制。

复制过后,用vscode新建一个文件,粘贴进去。然后保存成为python格式,也就是.py文件类型,这里假设保存的文件名字是linkkit.py。

现在的问题来了,我们以前一直用的是“三元组”,这里怎么出现一个productSecret?从哪里获得?

三元组数据怎么获得?登陆阿里云物联网平台,查看某个指定的设备,在DeviceSecret后面点击“查看”就能看到这个三元组数据。

三元组数据是这样的。

在python轻应用示例中,为什么多出来一个数据呢?这个第四个参数从哪里获得?

这个ProductSecret参数,其实就是“一型一密”采用的。比如你设计了一种产品叫做“孙悟空打蛋器”,这种打蛋器产品你制作了100个,那么每一个打蛋器都有一个固定的DeviceSecret,而“孙悟空打蛋器”这种产品只有一个共同的ProductSecret。

关于“一机一密”和“一型一密”的区别,请参考以下文章。

阿里云物联网平台一型一密获取:DeviceSecret 示例

从产品页可以获取ProductSecret

获取了“四元组”数据后,就可以将这四个数据填入代码中。至此,一个简单的具备连接阿里云的Python轻应用程序就完成了。下一步就该运行一下观察效果了。

3.如何运行linkkit程序

首先应该将linkkit.py文件复制到tf卡并将tf卡插入开发板卡槽中。

然后打开串口助理,选择150万波特率。运行下面的指令,SSID是需要连接的wifi名字,PassWord是wifi 的密码。双引号要保留。

python /data/python-apps/network/wifi/main.py "SSID" "PassWord"

如果能搜索到wifi,并且密码是正确的,那么就可以顺利连接上。

如果搜索不到wifi,那么可能一直循环多次。所以如果连接不上,您最好查看串口信息,是不是扫描出来的wifi里面没有自己要连接的。例如下图中,scan result0-7一共8个可连接wifi,要连接的不在列表中。那么就连接不上。

问题是为什么手机连接的好好的,haas100为什么扫描不到?可能是信号的问题,也可能是摆放位置的原因。

可以移动一下开发板到另一个位置试试,也可以用手机开个热点节省时间。

wifi成功连接的信息界面如下:

连接的信息最后是下图界面。

只将开发板与wifi连接起来是不行的。要想与阿里云物联网平台通信,还需要将我们刚刚编写好并放在tf卡的程序运行起来才能观察到效果。

接下来运行联网指令

python /sdcard/linkkit.py

出现这个界面就证明连接上了。

此时设备在线,登陆阿里云物联网平台观察。

可以使用在线调试功能进行调试。

指示灯开关的控制的是开发板上的指定LED灯开关。

4.让开关控制再加一个舵机

为了更加直观地观察运行效果,在python轻应用案例基础上增加一个舵机控制,让小灯闪烁的同时,舵机也有响应。

舵机控制的文档请参考。

阿里云python轻应用学习笔记(四)---haas100通过python轻应用驱动舵机

还有几处更改。修改完毕后,将程序命名为linkkit-pwm.py。

分别运行命令行:

  1. python /data/python-apps/network/wifi/main.py "SSID" "PassWord"
  2. python /sdcard/linkkit_pwm.py

 

就可以看到LED开关的同时,舵机也开始动起来了。

物联网通信成功后,我们就可以用这个板子驱动舵机做一些有创意的演示了。下一篇文章将用它来做一个有趣的小玩具,再用Iot Studio做一个手机app来控制。

大家拭目以待吧。

5.完整的可一键复制的linkkit-pwm.py源代码

  1. # coding=utf-8
  2. # This is a sample Python script.
  3. # SG90 Micro Servo with Aliyun linkkit
  4. # Connect with Aliyun
  5. # Dive an Micro Servo
  6. # HaaS 100 with Micropython firmware is the basic materials.
  7. # Experimental steps:
  8. # step1:Copy this code to your .py file(e.g linkkit-pwm.py).
  9. # step2:Copy the file to the tf card.
  10. # step3:Insert the tf card to your HaaS100.
  11. # step4:Connect your HaaS100 to your computer with a USB cable.
  12. # stet5:Connect your SG90 to your HaaS100,the port is pwm3.
  13. # step6:Open your serial debugging assistant such as PuTTY,with the baud rete 1500000.
  14. # step7:Type "python /data/python-apps/network/wifi/main.py "SSID" "PassWord"",connect to your wifi.
  15. # step8:Type "python /sdcard/linkkit-pwm.py",and enjoy it.
  16. # The SG90 circuit:
  17. # - SIGNAL connect to HaaS100 PWM3(pin 9)
  18. # - GND connect to HaaS100 GND(pin 3)
  19. # - VCC connect to HaaS100 5V(pin 5)
  20. # created 25 Mar 2021
  21. # by aliyun
  22. # The source from:
  23. # https://g.alicdn.com/HaaSAI/PythonDoc/demos/index.html#iii
  24. # modified 4 Apr 2021
  25. # by TMS320VC5257
  26. # https://blog.csdn.net/youngwah292/article/details/115424021
  27. import iot
  28. import utime
  29. from driver import PWM
  30. # 请替换物联网平台申请到的产品和设备信息,可以参考文章:https://blog.csdn.net/HaaSTech/article/details/114360517
  31. productKey = "a1iMX3LQlFd"
  32. productSecret = "1OAZZWK8t4u94q2k"
  33. deviceName = "vibrate501"
  34. deviceSecret = "2637e56f0fa113ac214d82eceadeaba5"
  35. # 初始化linkkit sdk
  36. key_info = {
  37. 'region' : 'cn-shanghai' ,
  38. 'productKey': productKey ,
  39. 'deviceName': deviceName ,
  40. 'deviceSecret': deviceSecret ,
  41. 'productSecret': productSecret
  42. }
  43. device = iot.Device(key_info)
  44. # 物联网平台连接成功的回调函数
  45. def on_connect():
  46. print('linkkit is connected ')
  47. device.on('connect',on_connect)
  48. print("-------------------pwm test--------------------")
  49. pwm = PWM()
  50. pwm.open("pwm3")
  51. # 设置props 事件接收函数(本案例是云端控制led事件)
  52. def on_props(request):
  53. from driver import GPIO
  54. import ujson
  55. ON = 0
  56. OFF = 1
  57. #服务端返回的json 转换成dict
  58. payload = ujson.loads(request)
  59. #获取dict 中的led 状态字段
  60. stat = payload["LightSwitch"]
  61. gpio = GPIO()
  62. # open 函数支持的参数列表如下:
  63. # led1;led2;led3;led4;led5
  64. gpio.open('led1')
  65. if stat == 1:
  66. gpio.write(ON)
  67. # the period is 20ms,so the freq is 50 Hz
  68. pwm.setConfig(50, 0.1)
  69. # delay 2s,without this operation the servo will not drive
  70. utime.sleep_ms(2000)
  71. else:
  72. gpio.write(OFF)
  73. pwm.setConfig(50, 0.8)
  74. utime.sleep_ms(2000)
  75. utime.sleep_ms(200)
  76. gpio.close()
  77. device.on('props',on_props)
  78. # 连接物联网平台
  79. device.connect()
  80. # 触发linkit sdk持续处理server端信息
  81. while(True):
  82. device.do_yield(200)
  83. # 断开连接
  84. device.close()

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号