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

前言

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

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

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

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

Arduino Yun

90fd3da6gy1fc0ndyp9vpj209x0d10z3.jpg

优点

  • 有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);
}

90fd3da6gy1fc0nh6o0z4j20v40hl4ml.jpg

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

90fd3da6gy1fc0nholys0j20gn0grgoj.jpg

2018年2月20日更新

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值