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

前言

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

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

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

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

Arduino Yun

入手Arduino Yun,配合Blynk搞一波事情_第1张图片

优点

  • 有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 
#include 
#include 
#include 
#include "rgb_lcd.h"
#include  // 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搞一波事情_第2张图片

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

入手Arduino Yun,配合Blynk搞一波事情_第3张图片

2018年2月20日更新

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

转载于:https://www.cnblogs.com/sjqlwy/p/arduino_blynk.html

你可能感兴趣的:(入手Arduino Yun,配合Blynk搞一波事情)