Blynk是一款著名的物联网应用,安卓,苹果都可安装使用,可谓是神器。
千里马,一款小巧可爱的车子。玩开源硬件,谁还没几辆小车,这些年,盘点一下自己玩过的车子。从mbot小车开始,到好搭的nova小车,向金老师的microbit小车,DF的各种小车,古德微的树莓派小车,都玩了个遍。
但想要实现遥控,要么是红外,要么是蓝牙。
真正能wifi联网,拿来遥控着玩的,好像还真没有。直到千里马出现在我面前。掌控板可以连wifi,mpython支持Blynk,所有条件都将具备了。那就开工吧。
一、Blynk环境准备
1.blynk支持安卓和苹果系统,所以在各大手机应用商店搜索blynk即可,ipad可以哦。
2.注册账号:
打开APP后,点击 creat new account,开始注册账号。
3.在此,我们要将服务器修改为mpython的服务器。
地址为blynk.mpython.cn 端口号为9443
以上是我瞎猜的,猜的还挺准,亲测有效。
ps:之所以不适用blynk官方服务器,还有一点原因就是官方服务器有点数限制,你没几个项目好做。
4.输入邮箱、密码之后,注册就完成了。
二、小试牛刀。
先来一个点灯的项目吧。即使用blynk点亮和关闭掌控的板载led即可。
先说说blynk的设置:
1.点击 + new project新建项目
输入项目名称:点灯板载灯,选择主板为esp 32 dev board,没错,掌控板载了esp32。连接方式选择为WIFI。
如下图所示:
其余选项不用管,点击create创建新项目。
2.添加按钮。
点击右上角的加号键,会看到部件框内有许多可以选择的内容,以后我们在慢慢研究。先选择第一个button。
此时是这样一个界面。
我们已经成功添加了一个按钮。
3.轻触这个按钮,对它进行设置。
内容如下:
修改按钮名字为:开灯。
修改output端口为V0
修改模式为switch。
4.用同样方式,再添加一个关灯按钮。
设置好以后,返回到主界面。
5.此时,我们可以长按按钮,拖动以改变按钮布局。
6.点击上图中 看起来像螺帽的 六边形按钮,进入项目设置页面。
在此环节,我们需要做的是获取项目的auth tokens。点击copy all即可复制到内存中,通过微信发送到电脑上,以备后用。
7.接下来,就是mpython中的程序设置了。
先是添加blynk扩展。
接下图形化来一波。
直接上图:
自己看图吧,不解释了。
上传程序后,如果能在右下角看到blynk的图标,并且提示blynk connected,恭喜你,成功了。
现在,你就可以用手机来开关灯了。
三、迁移一下,用按钮来控制小车的前进、后退、和移动。
blynk这边,只需要再增加一个停止按钮。
而mpython这边,用我上篇文章介绍的方法,将开灯命令换成前进,后退命令即可。
具体代码如下:
祝你玩的开心。
from mpython import *
import network
import blynklib
import time
from horse import *
car = Car()
_value = None
my_wifi = wifi()
my_wifi.connectWiFi('fish1', 'tongxin8758')
blynk = blynklib.Blynk('3af837bcc07d4d95bcd5b0ff46203bac', server='blynk.mpython.cn', port=8080)
@blynk.handle_event("connect")
def connect_handler():
print('Blynk connected')
@blynk.handle_event("disconnect")
def connect_handler():
print('Blynk disconnected')
@blynk.handle_event('write V0')
def write_virtual_pin_handler(pin, _value):
for i in range(0, len(_value)):
try: _value[i] = eval(_value[i])
except: pass
if len(_value) == 1: _value = _value[0]
car.forward()
time.sleep_ms(1)
@blynk.handle_event('write V1')
def write_virtual_pin_handler(pin, _value):
for i in range(0, len(_value)):
try: _value[i] = eval(_value[i])
except: pass
if len(_value) == 1: _value = _value[0]
car.backward()
time.sleep_ms(1)
@blynk.handle_event('write V2')
def write_virtual_pin_handler(pin, _value):
for i in range(0, len(_value)):
try: _value[i] = eval(_value[i])
except: pass
if len(_value) == 1: _value = _value[0]
car.stop()
time.sleep_ms(1)
while True:
blynk.run()