赞
踩
摘要:无论是哪种轻应用,一个必备的核心功能就是连接物联网平台,python轻应用也是如此。haas团队已经帮我们做好了连接云平台的案例,本文带您用最详细的步骤实现它。
目录
硬件:haas100(python固件),数据线,电源,SG90舵机,tf卡,读卡器。
软件:win7 x64,串口助理,haas固件(版本Python on HaaS100 by 2021-03-17),vscode。
准备工作有以下几项:
接通电源,连接数据线(确保设备管理器可以看到串口号),连接舵机。
舵机的连接方式是
The SG90 circuit:
# - SIGNAL connect to HaaS100 PWM3(pin 9)
# - GND connect to HaaS100 GND(pin 3)
# - VCC connect to HaaS100 5V(pin 5)
haas的几个信号引脚分布入下图
然后查询haas固件版本号,方法是用串口助理,以交互模式发送命令“python”,注意发送新行。当窗口交互显示“Python on HaaS100 by 2021-03-17; press ctrl + d to exit ! ”时,即为正常。
如果您的固件版本不是该版本,请参考以下文章进行烧录。
最后的准备工作就是将tf卡通过读卡器插入电脑。
本文的程序是在haas帮助文档基础上作出简单修改的。
文档链接如下:
https://g.alicdn.com/HaaSAI/PythonDoc/demos/index.html
在该页面的最后一个案例,就是“云端连接/控制”案例。
文章的代码可以用代码区域右上角的“一键复制”按钮进行一键复制。
复制过后,用vscode新建一个文件,粘贴进去。然后保存成为python格式,也就是.py文件类型,这里假设保存的文件名字是linkkit.py。
现在的问题来了,我们以前一直用的是“三元组”,这里怎么出现一个productSecret?从哪里获得?
三元组数据怎么获得?登陆阿里云物联网平台,查看某个指定的设备,在DeviceSecret后面点击“查看”就能看到这个三元组数据。
三元组数据是这样的。
在python轻应用示例中,为什么多出来一个数据呢?这个第四个参数从哪里获得?
这个ProductSecret参数,其实就是“一型一密”采用的。比如你设计了一种产品叫做“孙悟空打蛋器”,这种打蛋器产品你制作了100个,那么每一个打蛋器都有一个固定的DeviceSecret,而“孙悟空打蛋器”这种产品只有一个共同的ProductSecret。
关于“一机一密”和“一型一密”的区别,请参考以下文章。
从产品页可以获取ProductSecret
获取了“四元组”数据后,就可以将这四个数据填入代码中。至此,一个简单的具备连接阿里云的Python轻应用程序就完成了。下一步就该运行一下观察效果了。
首先应该将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灯开关。
为了更加直观地观察运行效果,在python轻应用案例基础上增加一个舵机控制,让小灯闪烁的同时,舵机也有响应。
舵机控制的文档请参考。
还有几处更改。修改完毕后,将程序命名为linkkit-pwm.py。
分别运行命令行:
- python /data/python-apps/network/wifi/main.py "SSID" "PassWord"
- python /sdcard/linkkit_pwm.py
就可以看到LED开关的同时,舵机也开始动起来了。
物联网通信成功后,我们就可以用这个板子驱动舵机做一些有创意的演示了。下一篇文章将用它来做一个有趣的小玩具,再用Iot Studio做一个手机app来控制。
大家拭目以待吧。
- # coding=utf-8
- # This is a sample Python script.
- # SG90 Micro Servo with Aliyun linkkit
- # Connect with Aliyun
- # Dive an Micro Servo
- # HaaS 100 with Micropython firmware is the basic materials.
- # Experimental steps:
- # step1:Copy this code to your .py file(e.g linkkit-pwm.py).
- # step2:Copy the file to the tf card.
- # step3:Insert the tf card to your HaaS100.
- # step4:Connect your HaaS100 to your computer with a USB cable.
- # stet5:Connect your SG90 to your HaaS100,the port is pwm3.
- # step6:Open your serial debugging assistant such as PuTTY,with the baud rete 1500000.
- # step7:Type "python /data/python-apps/network/wifi/main.py "SSID" "PassWord"",connect to your wifi.
- # step8:Type "python /sdcard/linkkit-pwm.py",and enjoy it.
-
-
- # The SG90 circuit:
- # - SIGNAL connect to HaaS100 PWM3(pin 9)
- # - GND connect to HaaS100 GND(pin 3)
- # - VCC connect to HaaS100 5V(pin 5)
-
-
- # created 25 Mar 2021
- # by aliyun
- # The source from:
- # https://g.alicdn.com/HaaSAI/PythonDoc/demos/index.html#iii
- # modified 4 Apr 2021
- # by TMS320VC5257
- # https://blog.csdn.net/youngwah292/article/details/115424021
- import iot
- import utime
- from driver import PWM
- # 请替换物联网平台申请到的产品和设备信息,可以参考文章:https://blog.csdn.net/HaaSTech/article/details/114360517
- productKey = "a1iMX3LQlFd"
- productSecret = "1OAZZWK8t4u94q2k"
- deviceName = "vibrate501"
- deviceSecret = "2637e56f0fa113ac214d82eceadeaba5"
- # 初始化linkkit sdk
- key_info = {
- 'region' : 'cn-shanghai' ,
- 'productKey': productKey ,
- 'deviceName': deviceName ,
- 'deviceSecret': deviceSecret ,
- 'productSecret': productSecret
- }
- device = iot.Device(key_info)
- # 物联网平台连接成功的回调函数
- def on_connect():
- print('linkkit is connected ')
- device.on('connect',on_connect)
- print("-------------------pwm test--------------------")
- pwm = PWM()
- pwm.open("pwm3")
- # 设置props 事件接收函数(本案例是云端控制led事件)
- def on_props(request):
- from driver import GPIO
- import ujson
- ON = 0
- OFF = 1
- #服务端返回的json 转换成dict
- payload = ujson.loads(request)
- #获取dict 中的led 状态字段
- stat = payload["LightSwitch"]
- gpio = GPIO()
- # open 函数支持的参数列表如下:
- # led1;led2;led3;led4;led5
- gpio.open('led1')
- if stat == 1:
- gpio.write(ON)
- # the period is 20ms,so the freq is 50 Hz
- pwm.setConfig(50, 0.1)
- # delay 2s,without this operation the servo will not drive
- utime.sleep_ms(2000)
- else:
- gpio.write(OFF)
- pwm.setConfig(50, 0.8)
- utime.sleep_ms(2000)
- utime.sleep_ms(200)
- gpio.close()
- device.on('props',on_props)
- # 连接物联网平台
- device.connect()
- # 触发linkit sdk持续处理server端信息
- while(True):
- device.do_yield(200)
- # 断开连接
- device.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。