美文网首页物联网物联网之家我爱编程
物联网开发,SO EASY——基于Blynk的物联网应用开发

物联网开发,SO EASY——基于Blynk的物联网应用开发

作者: hznupeter | 来源:发表于2018-02-16 16:09 被阅读370次

    前言

    最近这两三年,“物联网”一词开始进入我们普通大众的耳朵。但对大多人来说这似乎还是一个挺高大上的事物。随着智能家居产品的兴起,其实物联网已经在逐渐走进我们的生活,比如家里的可以远程控制的扫地机器人、智能插座及空调。这些都是物联网给我们生活带来的便利,物联网将电器加上能够连接互联网的设备,使之成为互联网中的一部分,方便我们随时按需控制。
    那么,我们自己可以制作物联网产品吗?答案是肯定的。今天笔者就要与大家分享一个低成本,而且简单的物联网产品的制作方法。

    准备材料

    (1)WeMos D1开发板一块:WeMos是一块基于ESP8266的Arduino UNO 兼容Wi-Fi开发板,这么说起来似乎有点难懂。我们可以把它理解成是一块带Wi-Fi功能的Arduino UNO开发板。
    (2)电子元器件若干,如:5mm LED,LM35温度传感器,DHT11温湿度传感器等。
    (3)智能手机一部(苹果或安卓手机):用于远程控制WeMos D1主控板。

    准备工作

    安装Arduino

    先从Arduino官网下载最新版的Arduino(下载地址为:http://www.arduino.cc)。双击arduino-1.8.2-windows.exe安装Arduino官方版本,点击下一步,按照默认参数安装即可。

    安装ESP8266库

    打开Arduino软件,找到文件-首选项,在首选项的附加开发板管理器网址中输入以下地址:http://arduino.esp8266.com/stable/package_esp8266com_index.json,如图 1所示。

    图1 填写附加开发板管理器网址
    再依次点击工具-开发板-开发板管理器,搜索关键词“8266”,搜到esp8266后点击安装,稍等几分钟后,该开发板库文件就会安装完毕,如图 2所示。
    安装完毕后,再次点击工具-开发板,就可以找到WeMos D1(Retired),单击选中该选项。
    图2 开发板管理器安装Esp8266开发库
    安装完Esp8266开发库之后,Arduino IDE已经可以为8266类开发板上传程序,但是为了可以使用Blynk平台, 还需要安装Blynk库。从GitHub下载最新版的Blynk库,下载地址为https://github.com/blynkkk/blynk-library/releases/latest。再将Blynk库解压到Arduino项目文件夹,项目文件夹路径可以通过Arduino软件中文件-首选项找到,如图 3所示。解压后项目文件夹结构如图 4所示。
    图 3查找Arduino项目文件夹
    图 4 Blynk文件夹解压后文件夹结构

    安装Blynk APP并初始设置

    安卓用户扫描下方二维码安装Blynk App。


    二维码

    iOS用户可以在App Store 中搜索Blynk并安装。
    安装好App后,打开App后点击Create New Account(注册新用户),然后在注册页面填写自己的邮箱和密码即可完成注册。首次登录后可以看到App内暂时还没有任何项目,点击Create New Project(创建新项目)。在创建项目页面填写项目基本信息,其中的CHOOSE DEVICE (选择设备)要选择WeMos D1,下面的CONNECTION TYPE(连接类型)选择Wi-Fi并保存。保存之后,App会提示授权码已经生成并发送到了你的邮箱。App端的准备工作就这么多,只要你耐心一步一步操作,相信不会难倒你,步骤如下图所示。

    app首页 注册用户 首页
    创建项目 授权码

    牛刀小试:远程开灯

    一切准备就绪之后,我们就可以通过Blynk来远程控制一盏小灯啦。在控制小灯的过程中,我们一起来了解它的工作原理。

    生成案例代码

    首先利用Blynk案例生成器(https://examples.blynk.cc/)产生一段简单的范例程序。网站左侧的设置如图 6所示,其中的Auth Token是在App端创建项目之后邮箱中收到的授权码,将它复制进来即可。
    ![图 6在Blynk案例生成器中填写授权码](http:https://img.haomeiwen.com/i10215886/7798b2c16d858263.png?!将右侧生成的代码全部复制到Arduino IDE中,在IDE中的选择开发板信息,其中开发板选择WeMos D1(Retired),CPU频率选择80MHz,Upload Speed选择115200,端口选择WeMos D1所在的端口,设置如图 7所示。

    图7设置开发板USB选项
    将程序中的ssid修改成你当前位置的Wi-Fi名称,将pass修改成该Wi-Fi的密码,注意此处的引号一定要保留,如图 8所示。
    图 8在代码中修改自己的Wi-Fi信息
    点击上传按钮就可以将程序上传到WeMos D1开发板中,当在Arduino IDE中看到如图 9信息时表示程序上传成功。
    图9上传成功信息

    App端项目设置

    开发板的程序上传好之后,接下来需要设置手机上的App端。这样通过App就可以控制开发板了。点击空白处增加组件。选择第一个组件——Button,然后在按钮设置界面设置按钮信息。WeMos D1板载的LED在D5口,所以在output处选择D5,MODE可以选择PUSH(按住有效)或者SWITCH(按下有效),再设置按钮标签文本。
    全部设置完毕后,返回主界面,点击右上角的三角图标,启动该项目。然后按下自己创建的按钮试一试,当你按下时,WeMos D1开发板上的SCK灯就会点亮;松开按钮,SCK灯就会熄灭,步骤如下图所示。

    添加组件 设置组件 完成设置

    通过这个小项目,是不是发现控制一盏小灯其实很简单?除了修改几个参数,我们自己并不需要写一行代码。
    当你完成这个实例之后,你还可以试着创建一个Slider组件。OUTPUT也选择D5,再启动该项目,拖动slider的滑块,观察SCK灯,是不是还可以用这个滑块控制SCK灯的亮度呢?slider组件可以输出PWM值,而WeMos D1开发板除了D0口,其他接口全部支持PWM输出,因此我们就可以通过一个slider组件来控制D5接口的LED亮度。如果D5接口连接的是一个小风扇,那么是不是也可以用该方法控制风速呢?

    程序剖析

    当我们实现了远程控制开发板上的LED之后,我们再来研究程序,梳理思路。
    删除注释之后,我们发现,在WeMos D1开发板上传的程序只有短短的16行,那么这16行分别有什么含义呢?

    #define BLYNK_PRINT Serial//宏定义
    #include <ESP8266WiFi.h>//导入库文件
    #include <BlynkSimpleEsp8266.h>//导入库文件
    char auth[] = "YourAuthToken";//设置授权码,该授权码是App端创建项目后生产的唯一的授权码。手机app通过该授权码与开发板通信。
    char ssid[] = "YourNetworkName";//Wi-Fi名称
    char pass[] = "YourPassword";//Wi-Fi密码
    void setup()
    {
     Serial.begin(9600);
     Blynk.begin(auth, ssid, pass);//连接到blynk云
    }
    void loop()
    {
     Blynk.run();//blynk开始工作
    }
    
    图 12用Blynk与WeMos D1控制小灯示意图

    上面两个实例中,我们并没有修改代码,修改的只是App端的设置。其实这16行程序可以看做是多用途程序,在对I/O口进行简单读写操作时,都可以用这段程序。
    如果我们继续推广,还可以在此基础上进行拓展。如果想要用WeMos D1远程控制家里的一盏台灯,只需要再加继电器模块即可。将继电器的控制端接在WeMos D1的D5端口,将台灯的火线剪断,接入继电器即可,接线如图 13所示。


    图 13通过继电器控制电器的电路示意图

    看到这里,我们已经可以利用Blynk制作物联网应用,实现很多神奇的功能了,而实现这些功能并不需要太多的代码。

    远程获取数据

    在物联网应用中,除了简单的控制以外,我们也常常会有其他的需求。比如远程获取温度就是一种常用的情况。当我们人在外面,希望通过手机查看家里的温度。此时,该如何借助Blynk远程读取LM35温度传感器的数据呢?

    硬件连接

    LM35温度传感器是一款线性模拟电压传感器,该传感器的输出电压与摄氏温度呈线性关系,0℃时输出电压为0V,每升高1℃,输出电压增加10mv。WeMos D1开发板上支持模拟输入的引脚只有A0,那么就可以将LM35温度传感器连接在A0引脚。温度与A0口读数之间的换算公式为:温度=A0读数×3.3÷1024×100。(注:WeMos D1开发板的A0接口输出电压为3.3V)

    APP端设置

    在手机端需要设置一个可以显示数值的模块,这个数值是从开发板传输过来的。在App端可以增加Value Display 或者Labeled Value组件,前者只能显示数值,后者可以标注数值名称及单位。
    在此,选择Labeled Value组件,在组件设置中设置参数,如下图所示。其中最关键的是要将INPUT一栏设置成V1,此处要与程序中设置的端口保持一致。

    添加显示组件 设置组件

    程序剖析

    #define BLYNK_PRINT Serial
    #include <ESP8266WiFi.h>
    #include <BlynkSimpleEsp8266.h>
    char auth[] = "xxxxxxxxxxx";//授权码
    char ssid[] = "wifi-ssid";//wifi名称
    char pass[] = "wifi-password";//wifi密码
    BlynkTimer timer;
    int value,Temperature;
    void myTimerEvent()
    {
    value=analogRead(A0);//获取到A0口测得数据
    Temperature=value3.3/1024100;//计算温度值
    Blynk.virtualWrite(V1, Temperature);//将温度值写入V1端口
    }
    void setup()
    {
    Serial.begin(9600);
    Blynk.begin(auth, ssid, pass);
    timer.setInterval(1000L, myTimerEvent);//每隔1秒执行一次myTimerEvent
    }
    void loop()
    {
    Blynk.run();
    timer.run();
    }
    

    程序效果

    将程序上传后,开启App端,则可以看到温度组件可以显示当前测到的温度。如果给传感器适当加热,APP端的数值马上就会发生变化。如果想要在App端显示温度的变化曲线,还可以增加History Graph组件,利用该组件就可以很方便地显示温度变化曲线了,效果如下图所示。

    显示温度 显示历史温度

    如果想要把记录的数值导出来,可以在History Graph组件上向左滑动,会出现导出数据和擦除数据选项,如图 17所示。选择导出数据,你就可以收到一份邮件,邮件中的.csv文件中包括了你导出的数据,有了这份数据后,如果想要做一些数据分析就变得很方便了。
    几十年前竺可桢爷爷记录气象日记需要每天观察记录,而如今,我们只需要制作一个简单的物联网应用就可以轻松解决了。


    图 17 App端导出历史数据

    结语

    通过几个简单的例子,相信你已经初步掌握了物联网应用的开发了吧。借助常用的传感器,制作一些炫酷的作品,让物联网技术尽早走进你的生活吧!

    (本文发表于《无线电》2017年10月刊)

    相关文章

      网友评论

      • 爱猫猫的老狗:明白原因了
      • 爱猫猫的老狗:难道是因为我这继电器是低电平触发?
      • 爱猫猫的老狗:继电器线路连接肯定没有问题,我之前做成功过蓝牙控制的。
      • 爱猫猫的老狗:为什么我在D5接LED可以远程开关,D5接继电器就不能起作用,很困扰。
      • 爱猫猫的老狗:你好,你是这篇文章的原创作者吗?我在无线电杂志读到了,已经成功了一半,还有点问题要请教您。

      本文标题:物联网开发,SO EASY——基于Blynk的物联网应用开发

      本文链接:https://www.haomeiwen.com/subject/upsptftx.html