本帖最后由 沧海笑1122 于 2017-5-7 15:18 编辑
【续上回,本回测试打算玩什么?】 上回书说到使用Beetle BLE加上DF的10dof姿态模块,利用seeed的计步器库,直接搭建了一个简单的手表式计步器。本地0.49寸oled显示。 但仅仅这样是不够的,没有充分发挥出Beetle BLE的潜能,这块神奇小板板的强项之一就是BLE啊。没有发挥出了怎么可以? 所以本回再续,将本地(计步器手表)计算出的心率数据,通过BLE上送至blynk server,然后在手机APP上显示。做好以后,是这样的:
【什么是blynk,怎么玩的】 我用来自网络的各家之言,试着简单描述一下这个系统: (1)台湾小狐狸事务所:http://yhhuang1966.blogspot.co.uk/2016/08/blynk.html 终于找到Blynk这个开源的专案,乍看就让我非常惊艳,因为介面做得实在漂亮,它可以让我们以手机自订介面,透过互联网(不是区网喔)控制上网的嵌入式设备,包括Arduino,Raspberry Pi,ESP8266等,参考: #在手机上使用Blynk控制Arduino #利用手机程式:Blynk控制Arduino #使用ESP8266连接到Blynk作为Arduino Uno wifi扩展板 #使用Blynk在互联网上控制你的Arduino Blynk最初是2015/1/17在Kickstarter募款网站上发起的一个提案,2015/2/15成功募集到近五万美元资金,2015/5/5正式上线,在iOS与Android系统上均可下载 使用,在额度内可免费使用,说明文件参考: #http://docs.blynk.cc 我是看小狐狸事务所的文档入门的,繁体中文的,目前除了官方文档,在中文文档中我认为小狐狸的博客是较好的入门资料。 (2)blynk的facebook:官方描述是: Blynk是一个数字仪表板,您可以通过简单地拖放小控件,为任何Arduino项目(包括类arduino,树莓派,,esp8266等等)构建图形界面。 Blynk里面设置所有东西很简单,您将在不到5分钟就可以完成程序的连接。 Arduin侧所有互联网通讯都由Blynk 库处理,所以您几乎不需要编码。
来张示意图:(图片来自blynk.cc) - 这个架构很清楚了,核心是blynk server,服务器有两种模式,一种是官方的来自互联网的blynk云服务;第二种就是你可以本地搭建服务器,比如我就是利用一块一代的树莓派搭建了一个本地服务器。blynk app是图形界面,就是所谓的数字仪表板。我会在“蓝牙心率带”的帖子中,更加详细地描述这个界面。界面很丰富,有大量的控件供使用:
按钮、滑动棒、计时器、摇杆、步进输入、数据显示窗、LED、仪表盘、LCD模拟显示、图形显示窗、菜单、表格、地图。甚至是推特\email的通知,还提供了了BLE连接,桥功能等等。 如果有兴趣,就直接访问blynk.cc进一步学习,正如官方所说,十分钟就可以搭建好一个项目。开发板侧的代码也很简单,我随后和大家一起学习。
利用上回书说到的beelte BLE+10dof,将步伐姿态结算出来,然后将数据上送至blynk server,通过APP展示出来。 第一步:建立server 。在树莓派安装blynk server。方法参见:https://github.com/blynkkk/blynk-server#blynk-server
第二步:建立一个实例,使用arduino UNO作为开发板,用BLE作为连接方式。 第三步:建立一个数据显示控件,将数据窗绑定到虚拟PIN(V2) 采集间隔为1秒。什么是虚拟PIN呢?blynk可以直接控制开发板的各个数字、模拟PIN,但是这并不能满足我们的要求,比如在这个项目中,我们用IIC接口的传感器将数据采集过来,并且通过处理、解算得到计步数据,这时用原有的实体PIN就不够了。虚拟PIN的出现就是为了扩展arduino更广泛的应用。我们把计步数据绑定到V2上。
第四步:拖一个BLE控件,用以建立开发板与server的连接。BLE的连接比较独特,目前还在测试过程中,它必须依赖手机APP才可以间接连接到server上,这与wifi模块非常不同。esp8266模块就可以直接登录到本地blynk server上。这一点提醒玩家注意。比如“桥”功能对于BLE或者蓝牙连接就不可以使用,这一点也是不同的。 打开beetel BLE的电源后,如果开发板侧的代码正确,就可以看到在面板上有一个名为bluno的蓝牙设备。这时点击“OK”进行连接。如果你的面板中,蓝牙设备的名称上一直有提取的进度圈(bluno上有旋转的进度圈)你就需要多刷新几次。然后OK。 出现这个画面,你的BLE就连接好了,否则就需要重新尝试。 第五步:点击运行。手机侧的工作就结束了
第六步:其实这是第0步,首先要把beetle BLE侧的代码写好,两边的连接就通过server沟通起来了。
【代码】 [kenrobot_code]/**************************************************************
* Blynk is a platform with iOS and Android apps to control
* Arduino, Raspberry Pi and the likes over the Internet.
* You can easily build graphic interfaces for all your
* projects by simply dragging and dropping widgets.
*
* Downloads, docs, tutorials: http://www.blynk.cc
* Ske tch generator: http://examples.blynk.cc
* Blynk community: http://community.blynk.cc
* Social networks: http://www.fb.com/blynkapp
* http://twitter.com/blynk_app
*
* Blynk library is licensed under MIT license
* This example code is in public domain.
*
**************************************************************
*
* This example shows how to use DFRobot Bluno or BLE Link module
* to connect your project to Blynk.
*
* Please be sure to update your DFRobot firmware to at least V1.97:
* https://github.com/DFRobot/BLE_firmware_V1.9
*
* For Bluno, read instructions here:
* [url=https://www.dfrobot.com/wiki/index.php/Bluno_SKU FR0267]https://www.dfrobot.com/wiki/index.php/Bluno_SKU FR0267[/url]
*
* For BLE-Link, read instructions here:
* https://www.dfrobot.com/wiki/index.php/BLE-Link_(SKU:TEL0073)
*
* NOTE: BLE support is in beta!
*2017-4-13 计步器数据上送APP(it works)
*计步器以及ADXL345库来自seeed
*
**************************************************************/
#include "U8glib.h"
#include <BlynkSimpleSerialBLE.h>
#include <Wire.h>
#include <ADXL345.h>
#include "pedometer.h"
Pedometer pedometer;
int oldstep=0;
int newstep=0;
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "41b****************687"; //你的令牌,令牌的获取请参见blynk.cc文档
void sendSensor()
{
pedometer.stepCalc();//计算步伐
newstep=pedometer.stepCount;//得到步伐数据,存在newstep
if (newstep>oldstep)//如果数据更新,则开始处理,避免频繁上送数据
{
Blynk.virtualWrite(V2,newstep);//上送计步数据blynk server,虚拟PIN,V2
char newstep_str[4];
itoa(newstep,newstep_str, 10);
// Serial.println(newstep);//调试语句
//------开始写oled
u8g.firstPage();
do {
u8g.setFont(u8g_font_ncenB18);
u8g.drawStr(39,57,newstep_str);//oled output,注意,39,57的坐标参见上贴,64*32的定义
}while( u8g.nextPage() );
//--------oled显示循环
oldstep=newstep;//更新newstep作为旧数据
delay(30);
}
}
void setup()
{
Serial.begin(115200);//这是beetle BLE的默认波特率,最好不要改
Blynk.begin(Serial, auth);//BLE连接 server
pedometer.init();//计步器初始化
}
void loop()
{
Blynk.run();//调用blynk.run
sendSensor();//调用数据采集、上送函数
}
[/kenrobot_code] [关于识别码(令牌)] 识别码(也就是令牌)在你定义完设备后,就可以从配置窗中获取了,这也是你这个设备唯一的识别码,也是确保控制安全的保障,我采用了本地server ,所以没有办法用email的办法获取,很简单,就用copy all复制到手机剪贴板上,然后发送到电脑上即可。
【小结】 这是我刚开始尝试blynk项目,感觉魅力无限。一是手机APP侧的工作完全可以通过拖动控件---定义pin和简单的参数就完成了。二是arduino侧的工作也非常简单,输入令牌---定义连接---定义虚拟pin(写一个简单的函数)即可。三是BLE功能目前正在测试,更新的频率最快1S,在实际使用过程中感觉有点卡顿。所以这个功能还有待进一步观察。 本帖尝试利用beetleBLE的BLE功能,为这块可爱的小板增加一个玩法,初次接触blynk,也希望得到大家的指导,沧海抱拳。 blynk的arduino 库你可以在官网和git上下载,连接如下:
|