0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现植物生长可视化

454398 来源:wv 2019-09-05 11:28 次阅读

第1步:简介

什么是APEX?

APEX是一款智能(更不用说可爱)工厂监控设备。只需将其插入任何工厂即可显示工厂的“幸福”级别!如果您有一种忘记给它们浇水的坏习惯,这是一个很好的提醒。

它是如何运作的?

魔术。开玩笑! APEX使用连接到湿度传感器Arduino,将其插入植物的土壤中。该传感器将读取土壤的水分含量,然后Arduino计算要显示的面部。

但为什么?

为什么不呢?

第2步:收集零件和工具

让我们进入吧!对于这个Instructable,您将需要相当多的零件和工具。幸运的是,它们都列在下面:

根据微控制器竞赛的精神,这个项目完全由在亚马逊上购买的部件制成! (未赞助)

零件清单:

Arduino Uno

8x8 LED显示屏

电容式触摸传感器

湿度传感器

9V电池连接器

9V电池

工具列表:

22 Gauge Wire

电工胶带

剥线钳

焊接熨斗

拆焊泵

收集完所有必要的设备后,是时候设置了Arduino软件!

第3步:安装Arduino IDE

为了使这个项目起作用,我们需要能够对Arduino进行编程。这需要将Arduino集成开发环境(IDE)下载并安装到您的计算机上。这是一个相当简单的解释,但我将引导您完成整个过程:

1。访问Arduino网站

2。导航到下载页面(软件》下载)

第3。单击操作系统的下载链接

侧注意:该程序适用于Windows,Mac和Linux

的 4。在Windows上安装

双击下载的文件进行运行

点击“同意“同意许可

按照提示的其余部分

现在应该安装该程序!

(如果迷路,请务必查看截图)

5。在Mac上安装

单击下载的文件

选择“打开”

程序将自动安装并运行!

(如果您感到困惑,请务必查看截图)

6。就是这样!

你已经完成了!您现在已将Arduino IDE下载到您的系统中!

第4步:代码

此步骤完全是关于代码。这是一个相当短的程序,所以我将与你一起讨论并解释它是如何工作的。首先,简要概述,然后是深入解释,最后是如何将其推送到Arduino!

简要概述

对于那些你对代码的详细解释不感兴趣,我提供TL; DR段!这是基本的解释。 Arduino每隔几秒就从湿度传感器中获取值。然后,此信息用于计算和显示某个面部!最后还有一些代码,让电容式触摸按钮打开和关闭显示屏。非常简单吧?

The Nitty Gritty

这部分教程适合那些对整个程序如何工作非常感兴趣的人,一行一行。我将提供上面的截图,以帮助您理解我正在谈论的内容,并在此说明中包含一些代码行。

此程序分为五个部分:

包括库和创建变量

设置功能

面部表情的功能

在矩阵函数上写Arduino

循环函数

包括库和创建变量:

此代码的第一部分是关于我们将使用的变量和库。

#include “LedControlMS.h”

#define TouchSensor 7

LedControl lc=LedControl(12,11,10,1);

int sensorPin = A5;

int sensorValue = 0;

bool started = false;

bool on = true;

boolean pressed = LOW;

第一行包含一个名为LedControlMS的库。该库需要能够向LED显示器发送值。下一行是一个define语句,用于将触摸传感器的引脚设置为7.之后,我们还有三个变量,用于定义LED显示屏的引脚,湿度传感器及其值。最后三行是所有布尔值,用于调节触摸按钮和显示屏的状态。在此之后,我们有字节值:

byte smile[4]={B00000100,B00110010,B01100100,B01100000};

byte surprise[4]={B00001110,B00001010,B01101110,B10010000};

byte meh[4]={B00000100,B00100100,B00100100,B00100000};

byte sad[4]={B00000010,B01100100,B00110010,B00110000};

byte dead[6]={B00001010,B00100100,B00101010,B00100000,B01100000,B01101010};

byte error[8]={B00111100,B01000010,B10100001,B10010001,B10001001,B10000101,B01000010,B00111100};

//Evil Faces

byte esmile[4]={B00000010,B00101010,B01000100,B01000000};

byte elaugh[4]={B00000010,B00101010,B01100100,B01100000};

byte eplain[4]={B00000010,B00101010,B00100100,B00100000};

byte eyell[4]={B00000001,B01101001,B01100010,B01100000};

byte etalk[4]={B00000001,B00101001,B01100010,B01100000};

这些值代表APEX的所有面。每个字节是一个数组,其中包含多个位,用于指示给定行中每个像素的状态。 “1”和“0”分别表示开/关。

设置功能:

转到下一部分,我们有设置功能。

void setup() {

//MS Serial Output

Serial.begin(9600);

pinMode(TouchSensor, INPUT);

//LED Matrix Setup

lc.shutdown(0,false);

lc.setIntensity(0,4);

lc.clearDisplay(0);

}

这个名字很好地解释了它。这是我们“设置”我们的触摸传感器和显示器的地方。前两行开始我们的串行输出(用于调试)。第三行将触摸传感器引脚设置为输入,最后四行启动显示。

面部表情的功能:

这可能是最长的部分,但它都非常简单和重复。

void broken() {

lc.setRow(0,0,error[0]);

lc.setRow(0,1,error[1]);

lc.setRow(0,2,error[2]);

lc.setRow(0,3,error[3]);

lc.setRow(0,4,error[4]);

lc.setRow(0,5,error[5]);

lc.setRow(0,6,error[6]);

lc.setRow(0,7,error[7]);

}

void happy() {

lc.setRow(0,0,smile[0]);

lc.setRow(0,1,smile[1]);

lc.setRow(0,2,smile[2]);

lc.setRow(0,3,smile[3]);

lc.setRow(0,4,smile[3]);

lc.setRow(0,5,smile[2]);

lc.setRow(0,6,smile[1]);

lc.setRow(0,7,smile[0]);

}

void plain() {

lc.setRow(0,0,meh[0]);

lc.setRow(0,1,meh[1]);

lc.setRow(0,2,meh[2]);

lc.setRow(0,3,meh[3]);

lc.setRow(0,4,meh[3]);

lc.setRow(0,5,meh[2]);

lc.setRow(0,6,meh[1]);

lc.setRow(0,7,meh[0]);

}

void surprised(){

lc.setRow(0,0,surprise[0]);

lc.setRow(0,1,surprise[1]);

lc.setRow(0,2,surprise[2]);

lc.setRow(0,3,surprise[3]);

lc.setRow(0,4,surprise[3]);

lc.setRow(0,5,surprise[2]);

lc.setRow(0,6,surprise[1]);

lc.setRow(0,7,surprise[0]);

}

void dying() {

lc.setRow(0,0,dead[0]);

lc.setRow(0,1,dead[1]);

lc.setRow(0,2,dead[2]);

lc.setRow(0,3,dead[3]);

lc.setRow(0,4,dead[4]);

lc.setRow(0,5,dead[5]);

lc.setRow(0,6,dead[1]);

lc.setRow(0,7,dead[0]);

}

void crying() {

lc.setRow(0,0,sad[0]);

lc.setRow(0,1,sad[1]);

lc.setRow(0,2,sad[2]);

lc.setRow(0,3,sad[3]);

lc.setRow(0,4,sad[3]);

lc.setRow(0,5,sad[2]);

lc.setRow(0,6,sad[1]);

lc.setRow(0,7,sad[0]);

}

void evilsmile() {

lc.setRow(0,0,esmile[0]);

lc.setRow(0,1,esmile[1]);

lc.setRow(0,2,esmile[2]);

lc.setRow(0,3,esmile[3]);

lc.setRow(0,4,esmile[3]);

lc.setRow(0,5,esmile[2]);

lc.setRow(0,6,esmile[1]);

lc.setRow(0,7,esmile[0]);

}

void evillaugh() {

lc.setRow(0,0,elaugh[0]);

lc.setRow(0,1,elaugh[1]);

lc.setRow(0,2,elaugh[2]);

lc.setRow(0,3,elaugh[3]);

lc.setRow(0,4,elaugh[3]);

lc.setRow(0,5,elaugh[2]);

lc.setRow(0,6,elaugh[1]);

lc.setRow(0,7,elaugh[0]);

}

void evilplain() {

lc.setRow(0,0,eplain[0]);

lc.setRow(0,1,eplain[1]);

lc.setRow(0,2,eplain[2]);

lc.setRow(0,3,eplain[3]);

lc.setRow(0,4,eplain[3]);

lc.setRow(0,5,eplain[2]);

lc.setRow(0,6,eplain[1]);

lc.setRow(0,7,eplain[0]);

}

void evilyell() {

lc.setRow(0,0,eyell[0]);

lc.setRow(0,1,eyell[1]);

lc.setRow(0,2,eyell[2]);

lc.setRow(0,3,eyell[3]);

lc.setRow(0,4,eyell[3]);

lc.setRow(0,5,eyell[2]);

lc.setRow(0,6,eyell[1]);

lc.setRow(0,7,eyell[0]);

}

void eviltalk() {

lc.setRow(0,0,etalk[0]);

lc.setRow(0,1,etalk[1]);

lc.setRow(0,2,etalk[2]);

lc.setRow(0,3,etalk[3]);

lc.setRow(0,4,etalk[3]);

lc.setRow(0,5,etalk[2]);

lc.setRow(0,6,etalk[1]);

lc.setRow(0,7,etalk[0]);

}

这些函数用于使用第一部分中的字节值定义每个面部表情。每行定义 x 位置和字节值,然后将值应用于该列。某些函数需要更多行,因为有更多行用于显示该面的值。每个面都是对称的,这就是我们重复这些线条的原因。

WriteArduinoOnMatrix功能:

第四部分用于计算和写入LED显示屏上的正确面。它由一系列if语句组成,用于检查水值,然后通过调用上一节中的不同函数来设置显示。

void writeArduinoOnMatrix() {

if(sensorValue 》 0 && sensorValue 《= 30) {

broken();

} else if(sensorValue 》 30 && sensorValue 《= 100){

dying();

} else if (sensorValue 》 100 && sensorValue 《= 200) {

crying();

} else if (sensorValue 》 200 && sensorValue 《= 400) {

plain();

} else if (sensorValue 》 400 && sensorValue 《= 650) {

happy();

} else if (sensorValue 》 650 && sensorValue 《= 800) {

surprised();

} else {

broken();

}

}

您可能会注意到,为了防止传感器超出工作范围,我们添加了“破损”面。这可以防止发生一些奇怪的空错误,并让我们更好地直观地了解代码中发生的事情。

循环函数:

最后但并非最不重要的是循环函数。这段代码正是它的名字所说的,它循环!虽然这个函数有很多行,但它实际上相当简单。代码首先读取按钮状态并查看显示是否为“On”。如果它发现这是真的,它将调用 WriteArduinoOnMatrix 函数,然后在APEX上绘制一个面。由于此函数循环,它将根据需要随时更新显示。此延迟由 delaytime 变量决定。

void loop() {

if (started == true){

delaytime = 3000;

}

//Read Button

pressed = digitalRead(TouchSensor);

if (pressed) {

if (on == true) {

lc.clearDisplay(0);

on = false;

delay(delaytime);

} else {

on = true;

delay(delaytime);

}

}

sensorValue = analogRead(sensorPin);

delay(delaytime);

if (on == true) {

//Draw Faces

writeArduinoOnMatrix();

}

started = true;

}

这就是代码的全部内容。希望现在你能更好地理解它是如何工作的,并且可以利用这些知识开始为你的项目定制它!

将代码推送到Arduino

现在我们已经涵盖了所有代码,是时候把它推到Arduino了!幸运的是,IDE使这非常简单。您只需使用USB线将Arduino插入计算机,然后只需单击IDE左上角的右箭头即可。让代码推送,如果你做得对,你应该在程序底部看到成功消息!

步骤5:电路图

与代码类似,电路图并不太复杂。它只包含三个传感器和Arduino,所以我会告诉你每个传感器的引脚,如果你需要任何其他帮助,请参考上图。

LED显示屏:

VCC - 》 5V

GRD - 》 GRD

DIN - 》 Pin 12

CS - 》引脚10

CLK - 》引脚11

湿度传感器:

正面 - 》 5V

负面 - 》 GRD

信号 - 》 A5

电容触摸传感器:

VCC - 》 5V

GRD - 》 GRD

SIG - 》 7

不太难,对吧?如果你对这个引脚有任何问题,请务必参考下面的视频,我将指导你如何连线。

第6步:全部放在一起

这是很难解释文本如何适合所有,所以我肯定建议查看这部分的视频。我实际上并没有准确地解释我是如何把我放在一起的,这太难了。但为了模糊地解释事情,我在电线连接上焊接并将它们包裹在电路板背面。然后我放置传感器并使用电工胶带将它们固定在一起。最后,我用9V电池对它进行了测试,然后一旦我知道它有效,就将电池放在背面并将其粘贴在上面。就像我之前说过的那样,检查这个步骤的视频,它有一个很好的小焊接部分,它可以帮助你正确地包裹电线。如果迷路,请随意暂停或以半速播放。

恭喜! 如果一切顺利,您现在应该拥有一个功能齐全的APEX单元!

测试您的设备,找到浇灌的植物并插上它!您应该发现它既快乐又感到惊讶,这意味着它应该正常工作!完成项目的好工作!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2547

    文章

    50545

    浏览量

    751491
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186571
收藏 人收藏

    评论

    相关推荐

    智慧地铁站可视化建设的意义

    地铁站 可视化建设的意义、关键技术和应用场景。 智慧地铁站可视化的意义 智慧地铁站可视化建设是指通过信息技术、物联网技术和大数据分析等手段,实现地铁站内设备、乘客流动、安全状况等各类数
    的头像 发表于 07-26 14:16 216次阅读

    大屏数据可视化 开源

    可以使信息一目了然,还能帮助用户深入分析数据,发现潜在的规律和洞察。以下是古河云科技实现大屏数据可视化的关键步骤。 1.确定需求和目标 确定大屏数据可视化的具体需求和目标,包括展示内容、受众群体、交互方式等。 2.数据收集
    的头像 发表于 06-27 16:06 367次阅读
    大屏数据<b class='flag-5'>可视化</b> 开源

    如何实现园区大屏可视化

    孪生可视化 构建平台利用Web三维可视化技术对现实场景进行仿真,实现园区级业务场景 的可视化呈现,助力企业快速完成项目的实施。实现园区场景立
    的头像 发表于 06-19 15:39 374次阅读
    如何<b class='flag-5'>实现</b>园区大屏<b class='flag-5'>可视化</b>?

    三维可视化系统平台介绍及优势

    三维可视化 系统平台是一种基于三维技术开发的软件系统,主要用于实现对三维空间中数据、模型、场景等内容的可视化展示和操作。这样的系统平台在各个领域都具有广泛的应用,包括但不限于建筑设计、工程建设
    的头像 发表于 06-12 16:02 573次阅读
    三维<b class='flag-5'>可视化</b>系统平台介绍及优势

    态势数据可视化技术有哪些

    智慧华盛恒辉态势数据可视化技术是一种将数据以图形、图像、动画等视觉形式展现出来的技术,特别是在处理和分析态势数据时,该技术能够将复杂的数据转化为直观、易于理解的视觉表现。以下是态势数据可视化技术
    的头像 发表于 06-11 15:47 349次阅读

    智慧大屏是如何实现数据可视化的?

    智慧大屏,作为数据可视化的重要载体,已在城市管理、交通监控、商业运营等领域广泛应用。本文旨在阐述智慧大屏实现数据可视化的关键技术和方法,包括数据源管理、数据处理、视觉编码、用户界面与交互设计等。
    的头像 发表于 06-04 15:02 542次阅读
    智慧大屏是如何<b class='flag-5'>实现</b>数据<b class='flag-5'>可视化</b>的?

    大屏数据可视化的作用和意义

    大屏数据可视化是指利用大屏幕设备展示数据信息,通过图表、图像、动画等视觉手段将数据呈现出来,以便用户能够直观、清晰地理解数据背后的含义和关联。在信息化时代,数据已经成为企业决策和运营的重要依托,而
    的头像 发表于 06-03 17:56 616次阅读

    智慧城市-可视化,进一步提高信息建设水平

    智能城市可视化是指整合各种城市信息资源,以地图、虚拟现实等形式展示各种城市数据,更直观地了解和管理城市的运行和发展。智能城市可视化主要通过地理信息系统(GIS)、实现大数据、虚拟现实等技术,呈现城市
    的头像 发表于 05-22 16:49 414次阅读

    数据可视化:企业数字建设效果的呈现

    数据可视化即通过图表的形式将数据的内在信息有逻辑性地呈现给用户,使用户更容易发现数据中蕴藏的规律,找出问题,进而做出决策;另一方面,数据可视化项目也是一张重要的名片,是企业数字建设效果的呈现。本文
    的头像 发表于 04-29 10:18 407次阅读
    数据<b class='flag-5'>可视化</b>:企业数字<b class='flag-5'>化</b>建设效果的呈现

    FUXA基于Web的过程可视化软件案例

    FUXA——基于Web的过程可视化软件
    发表于 04-24 18:32 0次下载

    态势数据可视化技术有哪些

    确,计算方法不实用,可视化效果不直观等技术问题,设计并实现了基于地理信息系统,网络拓扑图,攻击路径等的安全态势可视化分析系统方法, 通过可视化技术将安全态势数据以多视图,多角度,多层次
    的头像 发表于 04-22 15:17 373次阅读

    物联网可视化监控大屏如何实现?有什么功能?

    在物联网飞速发展的时代,可视化监控大屏成为了众多企业和机构实现智能管理和监控的重要工具。它将各种各样设备的运行状态和数据以图形、图表、动画等形式展示在大屏或其他移动设备上,使得用户能够直观地了解
    的头像 发表于 04-11 09:25 771次阅读

    可视化全程追溯,可视化资产管理系统

    摘要:本文将从应用价值、系统功能、资产盘点、资产出入库、资产定位以及系统实现能效等几个方面,阐述新导物联可视化资产管理系统为企业提供的优势,以提升资产管理的效率和准确度。 一、应用价值 可视化资产
    的头像 发表于 01-11 13:54 455次阅读
    <b class='flag-5'>可视化</b>全程追溯,<b class='flag-5'>可视化</b>资产管理系统

    一键生成可视化图表/大屏 这13款数据可视化工具很强大

    前言 数字经济时代,我们每天正在处理海量数据,对数据可视化软件的需求变得突出,它可以帮助人们通过模式、趋势、仪表板、图表等视觉辅助工具理解数据的重要性。 如果遇到数据集需要分析处理,但是你不又知道
    的头像 发表于 12-19 17:27 5188次阅读
    一键生成<b class='flag-5'>可视化</b>图表/大屏 这13款数据<b class='flag-5'>可视化</b>工具很强大

    基于LVGL驱动的OLED屏的FFT声音实时可视化

    本项目旨在利用LVGL驱动的 Xiao-expansion-board的OLED显示屏实现FFT声音数据的实时可视化。关键内容包括利用LVGL库在OLED屏幕上进行数据可视化展示,在XIAO ESP32S3 Sense 上进行声
    的头像 发表于 11-25 14:20 3302次阅读
    基于LVGL驱动的OLED屏的FFT声音实时<b class='flag-5'>可视化</b>