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

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

3天内不再提示

如何制作水族馆管理系统

454398 来源:工程师吴畏 2019-08-14 09:51 次阅读

步骤1:组件

如何制作水族馆管理系统

这里我们将列出该项目所需的所有组件。

Arduino Uno

超声波传感器

LCD(16x2)

电位计(10k)

伺服电机

5V 2通道继电器

水温传感器

跳线电缆

光敏电阻

水泵水平型

1x 2.2k欧姆,1x220欧姆,1x1k欧姆,1x 4.7欧姆电阻器

6V可充电电池

有机玻璃中的4x白色LED二极管

2x Led二极管

Arduino Box

水泵软管

CSA电缆组件LL83498 AWM色带连接器

DS电缆LIYCY 8x0.5 mm2阻燃剂

RVVB 2x1.5 mm2

KCD11-101开/关开关

镁片盒

晶体管7805

水族箱

Bi g 10 Litters Water Bottle

金属盒(用于超声波,伺服)

步骤2:使用光敏电阻和开关进行盒切割和LCD安装

首先,我们测量LCD的长度,在我们的情况下为7x2.5厘米,因此它可以放在盒子的正面。稍后我们测量开关按钮(2x1.3 cm)和光敏电阻,我们将它们添加到盒子的正面。

然后,在盒子的一侧,我们钻了几个孔,2个用于Arduino,1个用于水温传感器,1个用于水泵,1个用于DS电缆。这些电缆后来连接在水族箱上方的金属盒中。另一方面,我们钻了2个孔,一个用于电位器,一个用于电源

接下来,我们从两侧切割带状连接器,如普通电线,以便将它们与Arduino连接另一边和LCD,光敏电阻和电位计在另一边。从功能区到Arduino的接线如下:

带有VSS的1-s导线,带有VSS的LCD和带Arduino的GND

带状的2-wire导线在LCD上使用VDD,在Arduino上使用VCC(5v)

带有R0的3线电缆和LCD电位器(中间引脚)

带有RS的带状线的第4根电线在Arduino上的LCD和数字引脚5上

带有LED的第5条线,LCD上的RW和Arduino上的GND

带有数字引脚4的LCD上带有E的带的第6条线在Arduino上

带有D4的7号线在LCD上带有模拟引脚2在Arduino

第8条线从带有D5的LCD上带有模拟引脚3在Arduino上

第9条导线,带有D6的LCD,带有模拟引脚4,位于Arduino

第10根导线,带有D7的LCD,带有模拟引脚5,位于Arduino上

带有A的第11条导线,带有A的LCD + 2.2k电阻,带有VCC(5v)的Arduino

第12根导线来自带状,带有K的LCD,带有GND的Arduino

带有VCC光纤的带状第13条线在Arduino上使用VCC进行电压调整

带光纤电阻器上带有GND的第14根导线,带有1.1k电阻+ GND和Arduino上的模拟引脚1(来自Arduino的GND线和引脚线与电阻器焊接在一起)与带状导线连接)

盒子前面的所有元件都用胶枪粘合。

注意:全部所有模块的VCC线焊接在Arduino上VCC引脚的一根导线上。所有模块的GND线也一样。

步骤3:将Arduino与继电器屏蔽,泵和LED连接

首先,我们需要将继电器与Arduino连接起来。继电器的VCC到Arduino的VCC,继电器的GND到Arduino的GND,继电器的IN1引脚,Arduino的数字引脚10和Arduino的数字2的IN2。

接下来我们要连接水泵通过开关连接到第一个继电器,并将温度信号指示灯发送到第二个继电器。

开关的第一个引脚连接到电源插孔上的VCC引脚,而另一个引脚则连接到电源插孔上。引脚连接到晶体管的输入引脚。电源插孔的GND引脚,晶体管的GND引脚和泵的GND引线焊接在一起。泵的VCC线与第一个继电器的NO引脚连接,而晶体管的输出引脚连接到继电器的COM引脚。

由于LED位于水族箱内部,而Arduino位于水族箱内,因此我们需要使用长线连接它们。这就是DS Cable LIYCY 8x0.5 mm2阻燃剂的用武之地。该电缆中有8根电线,因此我们将其中的2根分别与LED的阳极连接。这些导线必须连接到第二继电器,因此与绿色LED连接的导线连接在第二继电器的NC引脚上,而来自红色LED的导线与来自第二继电器的NO引脚连接。 LED阴极与220欧姆电阻和1线(GND)焊接在一起,并与Arduino的GND连接在一起。在第二个继电器上的COM引脚来自Arduino的VCC。

步骤4:连接其他传感器

从图片中我们可以看到,我们有一个带孔的红色塑料板,它是金属盒的一部分在水族馆上方。在那个洞里,带有伺服系统的Magnesium Tablet Box会不时地旋转以喂鱼。有机玻璃中的LED二极管粘在电路板上,所以当它变暗时,它会通过光敏电阻激活。电路板上的另一个传感器是超声波传感器,通过电路板的孔,水温传感器将进入水中。

首先,我们将开始将水温传感器与Arduino连接。由于我们在Arduino的盒子上钻了一个洞(查看以前部件的图片),我们不需要额外的电线来连接。来自传感器的GND线连接到Arduino上的GND引脚,来自传感器的VCC线连接到VCC引脚,来自传感器的数据线连接到Arduino上的数字引脚8。然而,数据线也与来自传感器的VCC线连接,与4.7k欧姆电阻焊接在一起。

接下来是超声波传感器。该传感器通过DS电缆的4根线连接(请参阅前一部分)。 VCC线与Arduino的VCC和传感器的VCC引脚相连。 GND线连接Arduino的GND和传感器的GND。其余2根线用于传感器的Echo和Trigger引脚。 Echo引脚连接在Arduino上的数字引脚7上,触发引脚分别通过导线连接到Arduino上的数字引脚6上。但是,我们需要钻两个孔,这样超声波的“眼睛”就会指向水面。

之后是伺服电机。我们将取出伺服的旋转盖,我们将用镁盒盖替换它。伺服的连接很简单。 DS电缆的VCC线与伺服的VCC线连接,电缆的GND线与伺服的GND线连接,伺服的数据线通过Arduino上的数字引脚9连接。电线离开了。

最后它出现了有机玻璃中的LED二极管。从技术上讲,有机玻璃中有4个LED。但在这里我们不需要电阻器。在这里,来自LED的阳极与DS电缆的剩余电线之一焊接在一起,其末端连接到数字引脚12.Kathodes与GND电线焊接在一起,并与GND连接Arduino上的pin。

第5步:结论

代码:

#include

#include

#include

#include

//digital pin 8 for data for DS18B20 water temperature sensor

#define ONE_WIRE_BUS 8

//digital pin 10 for relay1

#define RELAY1 10

//digital pin 2 for relay2

#define RELAY2 2

OneWire oneWire(ONE_WIRE_BUS);

// initialize the library by associating any needed LCD interface pin

// with the arduino pin number it is connected to

const byte rs = 5, en = 4, d4 = 16, d5 = 17, d6 = 18, d7 = 19;

byte trigPin = 6; // Trigger

byte echoPin = 7; // Echo

byte servoPin = 9; // Servo

byte light = 12; // Light

byte photocellPin = 1; //Photoresistor (analog pin 1)

Servo servo;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

DallasTemperature sensors(&oneWire);

int i=0;

int val = 0; //analog value from photoresistor

int cm; //water level distance in cm

float Celsius = 0; // Water temperature

int servoAngle = 0; // Servo angle

unsigned long lastOccur = 0; // last time the servo was called (in milliseconds)

unsigned long current; // keep track of current time (in milliseconds)

void setup(){

Serial.begin(9600);

// set up the LCD‘s number of columns and rows:

lcd.begin(16,2);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

servo.attach(servoPin);

pinMode(RELAY1, OUTPUT);

digitalWrite(RELAY1, HIGH);

pinMode(RELAY2, OUTPUT);

digitalWrite(RELAY2, HIGH);

pinMode(light, OUTPUT);

}

void loop(){

//Check time (used as timer for the servo)

current = millis();

//Read the value from the analog pin from the photoresistor

val = analogRead(photocellPin);

//Calculate the temperature in celsius

Celsius = calcTemp();

// Convert the time into a distance

cm = ultrasonic_distance();

// Print the temperature and water level

printLCD(cm,Celsius);

//Activate pump if water level is less than 18 cm

if(cm 》 18){

pump();

}

// Activate heater if temperature is below 22 degrees celsius

if(Celsius 《 22){

heat();

}

// Activate light

if(val 《= 412){

digitalWrite(light, HIGH);

}

else{

digitalWrite(light, LOW);

}

//timer 30s

if(current - lastOccur 》= 30000){

callServo();

lastOccur=millis();

}

}

float calcTemp() {

sensors.requestTemperatures();

// returns the temperature in celsius

return sensors.getTempCByIndex(0);

}

int ultrasonic_distance(){

// Clears the trigPin

digitalWrite(trigPin, LOW);

delay(0.002);

//Sets the trigPin on HIGH state for 10 micro seconds

digitalWrite(trigPin, HIGH);

delay(0.01);

digitalWrite(trigPin,LOW);

return calcDistanceInCm(pulseIn(echoPin, HIGH));

}

int calcDistanceInCm(long dur){

//divide by 29.1 or multiply by 0.0343

return (dur/2)*0.0343;

}

void heat(){

delay(1000); // wait 1 second

digitalWrite(RELAY2, LOW); // turn on relay2

delay(5000); //wait for 5 seconds

digitalWrite(RELAY2, HIGH); // turn off relay2

delay(1000); // wait 1 second

}

void pump(){

delay(1000); //wait 1 second

digitalWrite(RELAY1, LOW); // turn on relay1

delay(20000); // wait 20 seconds

digitalWrite(RELAY1, HIGH); // turn off relay1

delay(1000); // wait 1 second

}

void printLCD(int cm, float temp){

lcd.clear();

// set the cursor to column 0, line 0

// (note: line 0 is the first row, since counting begins with 0):

lcd.setCursor(0, 0);

lcd.print(“Distance: ”);

//print the water level in cm

lcd.print(cm);

lcd.print(“cm”);

lcd.setCursor(0, 1);

lcd.print(“Temperature:”);

//print the temperature in celsius

lcd.print((int)temp);

lcd.print((char)223);

lcd.print(“C”);

delay(1000)

}

void callServo(){

for(i=0;i《2;i++){

for(servoAngle = 0; servoAngle 《 180; servoAngle++){ // move the micro servo from 0 degrees to 180 degrees

servo.write(servoAngle);

delay(7); // servo start speed (faster)

}

delay(2000);

for(servoAngle = 180; servoAngle 》 0; servoAngle--){ // now move back the servo to 0 degrees

servo.write(servoAngle);

delay(10); //servo back speed (slower)

}

}

}

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

    关注

    131

    文章

    5014

    浏览量

    145953
  • 超声波传感器

    关注

    18

    文章

    550

    浏览量

    35597
收藏 人收藏

    评论

    相关推荐

    WMS仓库管理系统介绍

    MES系统管理系统
    h1710143100.8307
    发布于 :2024年04月17日 11:27:57

    性价比8位MCU TM57P8640/P8645在水族箱中的应用

    性价比8位MCU TM57P8640/P8645在水族箱中的应用
    的头像 发表于 04-17 09:31 67次阅读
    性价比8位MCU TM57P8640/P8645在<b class='flag-5'>水族</b>箱中的应用

    2023年回顾-隧道安全管理系统

    管理系统
    恩田智能设备
    发布于 :2024年01月26日 16:56:38

    深度解析:DLT8P65SA芯片驱动的220V RGB水族灯创新方案

    这款DLT8P65SA芯片驱动的220V RGB水族灯是一项创新的照明解决方案,专为水族爱好者设计。该方案以其高效的1K OTP程序存储器和支持高频8MHZ RC振荡时钟源的DLT8P65SA芯片
    的头像 发表于 01-17 21:02 179次阅读
    深度解析:DLT8P65SA芯片驱动的220V RGB<b class='flag-5'>水族</b>灯创新方案

    物联网应用之智慧档案八防十防一体化平台

    ​ 原标题:智能化档案八防九防十防十二防一体化监控系统方案​ 监控室一角 随着科技的快速发展,智能化已成为现代档案发展的必然趋势。为了提高档案的安全性、可靠性和
    发表于 09-14 10:33

    物联网传感器的应用之智慧档案八防一体化监控系统

    数据通过RS485总线全部传送至档案监控中心,在监控中心即可实时观看库房内的环境情况,并可设置自动化恒温恒湿消毒净化系统,无需管理人员操作即可实现档案库房的恒温恒湿状态,并且所有数据均可实时存储记录
    发表于 09-12 11:34

    水族馆饲养区追踪器开源分享

    电子发烧友网站提供《水族馆饲养区追踪器开源分享.zip》资料免费下载
    发表于 07-13 10:22 0次下载
    <b class='flag-5'>水族馆</b>饲养区追踪器开源分享

    Arduino UNO水族馆自动化

    电子发烧友网站提供《Arduino UNO水族馆自动化.zip》资料免费下载
    发表于 07-06 15:00 0次下载
    Arduino UNO<b class='flag-5'>水族馆</b>自动化

    水族智能补水器是如何做到缺水加水满水即停的

    水族智能补水器是一种智能化的水族箱补水设备,它可以自动检测水族箱中的水位,当水位低于设定值时,自动加水,直到水位达到设定值后停止加水。那么,水族智能补水器是如何做到缺水加水满水即停的呢
    的头像 发表于 06-17 15:17 422次阅读
    <b class='flag-5'>水族</b>智能补水器是如何做到缺水加水满水即停的

    水族箱中的TDS测量开源分享

    电子发烧友网站提供《水族箱中的TDS测量开源分享.zip》资料免费下载
    发表于 06-15 10:53 0次下载
    <b class='flag-5'>水族</b>箱中的TDS测量开源分享

    使用NodeMCU ESP8266板制作水族箱控制器的疑问求解

    我正在使用 NodeMCU ESP8266 板制作水族箱控制器。我有 2 个继电器板连接到它,每个继电器板上有 4 个继电器,还有一个 DS18B20 连接到另一个引脚。 我发现的问题是,当我的水箱
    发表于 05-30 06:06

    #BMS电池管理系统

    电池管理系统bms
    jf_97106930
    发布于 :2023年05月17日 20:34:30

    TynecastleTech团队为初学者提供的鱼菜共生系统

    《初学者水培》是团队开始建立自己的水培系统之旅的教科书。他们了解了细菌如何将鱼类排泄物转化为硝酸盐肥料,给植物施肥,以及在这样的系统中可以茁壮成长的鱼类类型。当地水族馆商店的工作人员以及一位园艺专家的家庭成员为那些生长良好的植物
    的头像 发表于 05-08 11:20 545次阅读
    TynecastleTech团队为初学者提供的鱼菜共生<b class='flag-5'>系统</b>

    如何构建一个简单的传感器?

    您可以自己构建一个简单的传感器。 我的博客上有一个 PNP 和一个 NPN 晶体管、一个电阻器和一个电容器的示例。 非常灵敏且易于构建,只需几美元。也许您甚至已经有库存的电子产品。 可以连接到 ESP8266 或 ESP32 以远程监控您的洗衣机、水箱、水族馆、植物土壤监测器等。
    发表于 04-28 08:23