一、系统方案
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、测试结果及分析
还能用。。。
五、代码(部分,完整看工程)
#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 = "";
String LED = "";
String penwu = "";
String turangLED = "";
String comdata = "";
int mark = 0;
int led_mark;
#include <avr/wdt.h>
void watchdog()
{
wdt_reset();
}
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);
pinMode(10, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
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);
fengshan = String(comdata).substring(1, 2);
if (fengshan == "1")
{ digitalWrite(2, LOW);
digitalWrite(3, HIGH);
} else {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
}
fengshan2 = String(comdata).substring(13, 14);
if (fengshan2 == "1")
{ digitalWrite(4, LOW);
digitalWrite(5, HIGH);
} else {
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
shuibeng = String(comdata).substring(6, 7);
if (shuibeng == "1")
{
digitalWrite(8, HIGH);
digitalWrite(9, 0);
} else {
digitalWrite(9, LOW);
digitalWrite(8, LOW);
}
LED = String(comdata).substring(8, 9);
if (LED == "1")
{
led_mark=1;
} else {
led_mark=0;
}
shuibeng2 = String(comdata).substring(11, 12);
if (shuibeng2 == "1")
{ digitalWrite(6, 1);
digitalWrite(7, 0);
} else {
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
}
}
六、工程及其文件
|