前言

原创文章,转载引用务必注明链接。

最近在闲鱼上与别人用RPi2尸体+好的BBB换了个Arduino Yun,等了几天赶在节前收到了。出奇的轻巧,产地台湾,官方正品做工就是精细~采用5v MicroUSB接口供电。开机上电参考葉難大大写的文章就行啦。

本文使用Markdown写成,为获得更好的阅读体验和正常的图片、链接,请访问我的博客:

http://www.cnblogs.com/sjqlwy/p/arduino_blynk.html

Arduino Yun

入手Arduino Yun,配合Blynk搞一波事情-LMLPHP

优点

  • 有Wifi
  • 可以与Linux通信
  • 完整兼容Arduino,比如DHT22这种传感器可以直接使用

缺点

  • 没蓝牙
  • 超低配版Intel Edison,价格不低
  • 由于LAN和USB接口的存在,盾板(Shield)不能完全插上去,害怕短路。。。

Blynk

在我之前的项目里面有介绍,Virtual Pin很棒,不赘述啦。非常好用,就是点数要购买。本项目算是上手Arduino Yun的,分为三部分组合而成:

一、LED Blynk

安装Blynk库之后,选择Boards_Wifi——Arduino_Yun即可。手机安装Blynk程序并注册。添加按钮,设置LED所在的数字引脚

二、读取温度传感器数值

使用grove官方例程,传送到虚拟引脚V5,手机APP 标签控件可以接收到。但是历史记录曲线图控件工作不正常,是不是Virtual Pin的值无法复用,不能够啊?使用push方法由Arduino主动推送而不是Blynk程序去请求,参考blynk官方示例使用SimpleTimer库。

三、将温度传感器值在LCD上显示出来

也是官方示例,具体可以看看grove lcd的库文件和示例。

完整代码

#include <Bridge.h>
#include <BlynkSimpleYun.h>
#include <math.h>
#include <Wire.h>
#include "rgb_lcd.h"
#include <SimpleTimer.h> // here is the SimpleTimer library char auth[] = "APP里面的token"; // Put your token here rgb_lcd lcd; const int B=4275; // B value of the thermistor
const int R0 = 100000; // R0 = 100k
const int pinTempSensor = A1; // Grove - Temperature Sensor connect to A1 SimpleTimer timer; // Create a Timer object called "timer"! void setup()
{
// Serial.begin(9600);
Blynk.begin(auth);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// turn off backlight:
// lcd.setRGB(0, 0, 0);
lcd.print("Currnet TEMP is");
lcd.setCursor(5,1);
// or use CustomCHaracter to display ℃
lcd.print(" C");
timer.setInterval(1000L, sendUptime); // Here you set interval (1sec) and which function to call
} void sendUptime()
{
// This function sends Arduino up time every 1 second to Virtual Pin (V1)
// In the app, Widget's reading frequency should be set to PUSH
// You can send anything with any interval using this construction
// Don't send more that 10 values per second
float temperature = getTemperature();
lcd.setCursor(0,1);
lcd.print(temperature);
Blynk.virtualWrite(V5, temperature);
} void loop()
{
Blynk.run(); // all the Blynk magic happens here
timer.run(); // SimpleTimer is working
} float getTemperature()
{
int a = analogRead(pinTempSensor);
float R = 1023.0/((float)a)-1.0;
R = 100000.0*R;
float temperature=1.0/(log(R/100000.0)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
return temperature;
// Serial.print("temperature = ");
// Serial.println(temperature);
}

入手Arduino Yun,配合Blynk搞一波事情-LMLPHP

每秒钟更新温度值。开了背光之后还是很耗电的。另外Arduino Yun空载170mA左右,远高于Intel Edison的70mA,以及Arduino UNO R3 的20mA。

入手Arduino Yun,配合Blynk搞一波事情-LMLPHP

2018年2月20日更新

采用自建Blynk服务器可以获得大量点数,目前用docker建了一个,还阔以,有需要的PM我

05-11 20:53