IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于arduino的物联网蔬菜大棚检测控制系统 -> 正文阅读

[嵌入式]基于arduino的物联网蔬菜大棚检测控制系统

一、系统方案

1、 主控制器件的论证与选择

1.1.1 控制器选用

选用两块arduino UNO R3芯片,一主一从,主机负责接收传输数据,与上位机app进行物联网通讯,从机负责做控制处理,其强大的库函数和内核以及足以我们控制检测了。

1.1.2 控制系统方案选择

控制系统在mos管和继电器中选择,最终选择了继电器,因为实验室比较多。
控制方案分为四种,一种是主动控制开关,一种是智能调节,还有一种是远程控制,以及语音控制。

2、 模块的论证与选择

因为这算我第一个完成的比赛项目成品,所以模块上没有太多论证和选择,基本以实现功能为主。

选择的模块有:
DHT11温湿度传感器
Openmv视觉识别模块
光敏电阻
WS2812彩灯条
12V电机驱动块
12V水泵
电容式土壤湿度检测模块(耐腐蚀)
24V电机驱动块
24V风扇
继电器
DT-18蓝牙模块
220vAC转24vDC电源
220vAC转12vDC电源
两块半导体制冷片
水位检测模块

3、控制系统的论证与选择

控制系统由上位机以及下位机组成,上位机是手机app以及工业平板端的app,有实时监测和控制的功能。
下位机负责传输数据和处理数据,在具体功能上进行控制。

二、系统理论分析与计算

我觉得行就行。。。

三、电路与程序设计

1、电路的设计

无。。。。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、程序的设计

(1)程序功能描述与设计思路

主要流程图:
在这里插入图片描述

app流程图:在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四、测试方案与测试结果

1、测试方案

“望”“闻”“问”“切”

2、测试条件与仪器

万用表,示波器,电源

3、测试结果及分析

还能用。。。

五、代码(部分,完整看工程)

/*

  TX RX 0 1

  风扇改为 pin 23 45   2低3高  4低5高

  水泵1:IN1 IN2 pin4 pin5

  水泵2:IN3 IN4 pin6 pin7
  水泵改为 6高7低 8高9低

  LED灯 引脚9 高低电平控制继电器
  改为A0

  喷雾 引脚10 高低一次为开起关闭  做个地址记录
  改为A1
  以下为继电器
  机器臂开关  A2
  制冷开关 A3
  制热开关 A4


*/

#include <SimpleTimer.h>
#include <Wire.h>
#include <Adafruit_NeoPixel.h>

void ledinit();
long PIDkongzhi(int liangdu);
void PID_led_go_go_go();
volatile boolean dbsbkg;//设置一个布尔值为底部水泵开关
volatile boolean pwkg;
SimpleTimer timer;  //设置一个简单定时器
String fengshan = ""; //设置一个全局的整数变量为风扇
String fengshan2 = ""; //设置一个全局的整数变量为风扇
String shuibeng = "";  //设置一个全局的整数变量为 水泵
String shuibeng2 = "";  //设置一个全局的整数变量为 水泵2
String LED = "";  //设置一个全局的整数变量为LED灯
String penwu = ""; //设置一个全局的整数变量为喷雾
String turangLED = ""; //设置一个全局的整数变量为亮度
String comdata = "";
int mark = 0;                                     //发送标志位
int led_mark;
#include <avr/wdt.h>
void watchdog()//做个看门狗 防止程序跑飞
{
  wdt_reset(); //喂狗  setup定义了两秒钟不喂狗就复位
}
void setup()
{
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  pinMode(9, OUTPUT);
  
  pinMode(2, OUTPUT);
  digitalWrite(2, LOW);
  pinMode(3, OUTPUT);
  digitalWrite(3, LOW);

  pinMode(13, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  pinMode(8, OUTPUT);
  //  timer.setInterval(15000L, Simple_timer_1);//设置定时器的时间
  //  dbsbkg = false;

  pinMode(10, OUTPUT);
 // pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(A3, OUTPUT);
  //  pinMode(A4, OUTPUT);
  //  timer.setInterval(1000L, Simple_timer_2);
  pwkg = false;
  wdt_enable(WDTO_4S);
ledinit();
}
void loop()
{
PID_led_go_go_go();
  shujujieshou();
  comdata = String("");      //清空数据,不清空会一直叠加
  timer.run();
  watchdog();
  mark = 0;
}

void shujujieshou()
{
  int j = 0;
  while (Serial.available() > 0)
  {
    comdata += char(Serial.read());
    delay(2);
    mark = 1;
  }
  if (mark == 1)
  {
    Serial.println(comdata);                     //打印所有的数据
    //赋值变量 String("123").toInt();
    //    LED = String(comdata).substring(1, 3);
    //    shidu = String(comdata).substring(7, 9);
    //    turangShidu = String(comdata).substring(13, 17);
    //    turangLED = String(comdata).charAt(21);         //求单个字符位置21


    fengshan = String(comdata).substring(1, 2);   //w出风风扇
    if (fengshan == "1")
    { digitalWrite(2, LOW);
      digitalWrite(3, HIGH);
      //   Serial.println(fengshan);
    } else {
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      //     Serial.println(fengshan);
    }

    fengshan2 = String(comdata).substring(13, 14);  //CO2 排风风扇
    if (fengshan2 == "1")
    { digitalWrite(4, LOW);
      digitalWrite(5, HIGH);
    } else {
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
    }


    shuibeng = String(comdata).substring(6, 7);  //TS


    if (shuibeng == "1")
    {
   //   Serial.println(shuibeng);
      digitalWrite(8, HIGH);
      digitalWrite(9, 0);
    } else {      
     // Serial.println(shuibeng);
      digitalWrite(9, LOW);
      digitalWrite(8, LOW);
    }

    LED = String(comdata).substring(8, 9);        //L


    if (LED == "1")
    {// digitalWrite(A0, HIGH);
      led_mark=1;
    } else {
     // digitalWrite(A0, LOW);
     led_mark=0;
    }

    shuibeng2 = String(comdata).substring(11, 12);        //SW

    if (shuibeng2 == "1")
    { digitalWrite(6, 1);
      digitalWrite(7, 0);
    } else {
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
    }
  }
}

六、工程及其文件

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:11:07  更:2021-09-05 11:12:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:31:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码