找回密码
 立即注册

QQ登录

只需一步,快速开始

Blynk物联网系列(5)-花草伴侣
(基于Blynk平台+WeMos D1 WIFI开发板)
一、材料准备

228.png

  • 土壤湿度传感器

土壤湿度传感器是专门用于监测土壤湿度的模拟信号传感器,使用时要将其埋在土壤中,硬件电路通过分析土壤中的水分含量测算出土壤湿度,会返回一个0~1023的数值表示湿度。土壤湿度传感器上有个A0的输出针脚,说明这个传感器是一款模拟传感器,接线时需要将其连到开发板的A0管脚。

  • 8X8点阵屏幕

8X8点阵屏幕是由横向8行、纵向8列,共64个LED组成的点阵屏幕,利用该屏幕可以实现一些简单图形、文字、符号的显示。同时,该屏幕支持扩展和级联,可以级联多块8X8点阵屏幕,以显示更多内容。

二,项目实践-花草伴侣
(1)思路分析

在本项目中,我们可以通过手机查看土壤湿度值,同时用8X8点阵屏显示植物的心情。

(2)硬件连接

土壤湿度传感器                  Wemos D1WiFi
VCC     <------>     3.3V
GND    <------>     GND
DO      <------>     D3(GPIO5)
AO      <------>     AO
8X8点阵屏幕     WemosD1 WiFi
VCC      <------>     5V
GND     <------>     GND
DIN      <------>     D7(GPIO13)
CS     <------>     D6(GPIO12)
CLK    <------>     D5(GPIO14)

(3)创建项目


Blynk APP中,点击“New Project”,在“Create New Project”页面输入项目名称“花草伴侣”,选择ESP8266硬件类型,然后单击“Create”按钮,即可创建项目。

229.png

(4)添加Gauge(仪表)组件

为了能显示土壤湿度传感器检测到的土壤湿度值,我们需要使用一个“Gauge“组件,添加“Gauge“组件后,设置输入管脚为“ADC0”,其他采用默认值。         

Gauge组件设置参数说明如下:

230.png

(5)程序实现

用Mixly编写程序
在Mixly软件模块类别中,打开Blynk IoT,选择“服务器信息”,输入正确的服务器地址、WiFi名称、WiFi密码及Blynk授权码。

之前已经学习过如何设置在手机端直接读取I/O口数据,故在本项目中,直接上传以下程序即可在Blynk APP端的Gauge组件中查看土壤湿度值。

231.png

为了显示植物的心情,我们需要再加入8X8点阵屏幕的程序。先对8X8点阵屏幕进行初始化操作。

232.png

接下来对检测到的土壤湿度值进行分段,用不同的湿度显示不同的表情,比如湿度值小于600时显示开心的表情,湿度大于600时显示伤心的表情。程序如下:

233.png

需要注意的是,不同的表情需要用不同的数组变量定义,如图中的”face1”、“face2”,否则只能显示同一个表情。

用Arduino IDE编写程序
打开Arduino IDE软件,项目->加载库->管理库,搜索“LedControl”,安装LED矩阵库;
复制以下代码,修改程序中的授权码、WiFi名称和密码,模块对应管脚号,具体程序如下:

  1. #define BLYNK_PRINT Serial // 开启串口监视
  2. #include <ESP8266WiFi.h>
  3. #include <BlynkSimpleEsp8266.h>
  4. #include "LedControl.h"
  5. LedControl lc=LedControl(13,14,12,1);
  6. unsigned long delaytime=3000;
  7. char auth[] = "PZxcXWQnBYvlYfVCg62PlfJ_PZNVLkhq";//授权码
  8. char ssid[] = "bangong2";//wifi名称
  9. char pass[] = "lejuxingyuanli";//wifi密码
  10. BlynkTimer timer;
  11. void myTimerEvent()
  12. { // 发送数据的频率不要超过每秒10次。
  13. lc.clearDisplay(0);
  14.   // put your main code here, to run repeatedly:
  15. byte smile[8]={B00000000,B01000010,B10100101,B00000000,B00000000,B00100100,B00011000,B00000000};//笑脸
  16. byte unhappy[8]={B00000000,B01100110,B10000001,B00000000,B00000000,B00011000,B00100100,B00000000};//不开心
  17.   if(analogRead(A0) < 600){
  18.    for(int i=0;i<8;i++){
  19.    lc.setRow(0,i,smile[i]);
  20.    delay(0);
  21.    }
  22.   }
  23.   else {
  24.    for(int i=0;i<8;i++){
  25.    lc.setRow(0,i,unhappy[i]);
  26.    delay(0);
  27.    }
  28.   }
  29. }
  30. void setup() {
  31.   // put your setup code here, to run once:
  32.   Serial.begin(115200);
  33.   lc.shutdown(0,false);
  34.   lc.setIntensity(0,8);
  35.   lc.clearDisplay(0);
  36.   Blynk.begin(auth, ssid, pass);//官方服务器
  37.   timer.setInterval(1000L, myTimerEvent);//每隔1000毫秒执行一次myTimerEvent函数
  38. }
  39. void loop() {
  40. Blynk.run();
  41. timer.run();
  42. Serial.println(analogRead(A0));
  43. delay(delaytime);
  44. }
复制代码

APP端显示如下:

234.png
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册