回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

行空板M10扩展板:智控鱼缸的创客魔法,一键开启水族黑科技! 简单

头像 潜川创客 2025.07.05 22 0

一、项目背景

        家庭鱼缸为生活增添生机与雅趣,但日常维护中的诸多痛点常令爱好者倍感困扰:水质管理依赖经验与频繁检测,稍有不慎便危及鱼群;光照、水温、氧气泵需手动定时开关,难以精准匹配生物需求且易遗忘;喂食不规律或外出时更成难题;设备突发故障难以及时察觉,可能导致灾难性后果。 这些繁琐与不确定性,消磨着养鱼的乐趣。

        为破解这些难题,我们借助行空板M10扩展板与行空板的强大能力,设计并制作了这款“智慧鱼缸控制中心”。行空板作为核心大脑,通过其丰富的GPIO接口和强大的Python编程环境,赋予项目无限可能。而M10扩展板则扮演着关键的“桥梁”与“执行者”角色: 它轻松连接各类传感器(水质PH/浊度、水温、水位),实时采集鱼缸关键数据;其集成的电机驱动模块,可直接、安全地控制电机设备如氧气泵、水循环过滤器的开关;配合舵机接口,还能实现自动喂食器的精准投喂。

        通过精心编程,我们将复杂的养鱼知识转化为自动化逻辑: 系统能根据传感器数据自动调节水温、控制光照周期、按需增氧,并在水质异常或设备故障时通过屏幕或物联网及时预警。用户更可通过手机APP或网页远程查看状态、一键喂食、手动干预,彻底告别“人工运维”。

这不仅仅是一个自动化设备,更是行空板M10扩展板赋能创客、将“黑科技”融入日常生活的生动实践。它化身为鱼缸的“智慧中枢”,让科技的力量守护一泓碧水,让养鱼真正成为轻松愉悦的享受,开启水族生态的智能新篇章。

IMG_20250706_205636.jpg

二、设计过程

步骤1 硬件选择

        行空板M10电机IO扩展板与M10电池扩展板的组合是专为行空板(UNIHIKER)M10在机器人控制、物联网终端、移动创客项目开发中遇到的无法移动供电、接口受限、动态难控制等难题,提供了便携式开发解决方案。
        行空板M10电机IO扩展板集成双路直流电机驱动、红外收发、RGB 灯效交互,还通过引出金手指扩展出行空板 M10 的剩余 I/O 接口,使设备具备动态控制与多元交互能力。行空板M10电池扩展板配备 800mAh 电池,兼具长效续航与智能充放电保护功能;二者采用乐高兼容结构及即插即用设计,方便用户迅速搭建兼具动力、感知与创意的项目原型,实现供电与功能扩展的无缝衔接,同步提升开发效率与移动便携性。

硬件组成.png

行空扩展板gif.gif

步骤2 硬件清单

材料清单

  • 行空板M10(UNIHIKER) X1 链接
  • 行空板M10扩展板组合 X1 链接
  • WS2812-12 RGB LED X1 链接
  • 370真空泵 X1 链接
  • 中英文语音合成模块V2.0 X1 链接
  • 18B20 防水温度传感器 X1 链接

步骤3 硬件组装

(1)焊接RGB灯环

IMG_20250706_203053.jpg

(2)焊接真空泵

IMG_20250706_202801.jpg

(3)组装电路

IMG_20250706_203929_1.jpg

步骤4 Mind+编程

IMG_20250706_204035.jpg

代码
#  -*- coding: UTF-8 -*-

# MindPlus
# Python
import time
from unihiker import GUI
from shield import SHIELD
from pinpong.board import Board
from pinpong.board import DS18B20
from pinpong.board import NeoPixel
from pinpong.board import Board,Pin
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin,NeoPixel,IRRemote,IRRecv
from pinpong.libs.dfrobot_speech_synthesis import DFRobot_SpeechSynthesis_I2C

# 事件回调函数
def ir_callback(data):
    hw.config(text=data)
    if (data == 0xfd20):
        np1.range_color(0,4,0xFFFFFF)
        RGB.range_color(0,1,0xFFFFFF)
        gzzt.config(color="#00FF00")
        gzzt.config(text="光照开")
        p_gravitysynthesis.speak("遥控光照开")
    if (data == xffff1):
        gzzt.config(color="#FF0000")
        gzzt.config(text="光照关")
        RGB.range_color(0,1,0x00FF00)
        p_gravitysynthesis.speak("遥控光照关")
    if (data == xffff3):
        shield.m1.run(1,512)
        np1.range_color(0,4,0xFFFF00)
        RGB.range_color(0,1,0xFFFF00)
        zyzt.config(color="#00FF00")
        zyzt.config(text="增氧开")
        p_gravitysynthesis.speak("遥控增氧开")
    if (data == xffff6):
        zyzt.config(color="#FF0000")
        zyzt.config(text="增氧关")
        RGB.range_color(0,1,0x00FF00)
        p_gravitysynthesis.speak("遥控增氧关")


u_gui=GUI()
Board().begin()
Board().begin()
shield = SHIELD()
RGB = NeoPixel(Pin((Pin.P13)),3)
ir = shield.ir
ir.set_receive_callback(ir_callback)
bj=u_gui.draw_image(image="bj1.png",x=0,y=0)
p_gravitysynthesis = DFRobot_SpeechSynthesis_I2C()
p_gravitysynthesis.begin(p_gravitysynthesis.V2)
p_gravitysynthesis.speak("行空板M10扩展板")
p_gravitysynthesis.speak("智控鱼缸的创客魔法")
p_gravitysynthesis.speak("一键开启水族黑科技!")
p_gravitysynthesis.speak("欢迎使用智慧鱼缸控制系统")
bj.config(image="bj2.png")
bt=u_gui.draw_text(text="智慧鱼缸控制系统",x=23,y=15,font_size=18, color="#CC33CC")
sw=u_gui.draw_text(text="鱼缸水温:",x=39,y=76,font_size=15, color="#FF9900")
swz=u_gui.draw_text(text="",x=151,y=76,font_size=15, color="#3366FF")
gz=u_gui.draw_text(text="环境光照:",x=39,y=106,font_size=15, color="#FF9900")
gzz=u_gui.draw_text(text="",x=160,y=106,font_size=15, color="#3366FF")
gzzt=u_gui.draw_text(text="光照关",x=26,y=156,font_size=15, color="#CC33CC")
zyzt=u_gui.draw_text(text="增氧关",x=151,y=156,font_size=15, color="#CC33CC")
ds1 = DS18B20(Pin((Pin.P21)))
np1 = NeoPixel(Pin((Pin.P22)),8)
np1.brightness(128)
np1.range_color(0,7,0x00FF00)
hw=u_gui.draw_text(text="",x=168,y=291,font_size=16, color="#FFFF00")
while True:
    ShuiWenDu = ds1.temp_c()
    GuangZhaoDu = light.read()
    swz.config(text=ShuiWenDu)
    gzz.config(text=GuangZhaoDu)
    if (GuangZhaoDu <= 100):
        np1.range_color(0,4,0xFFFFFF)
        RGB.range_color(0,1,0xFFFFFF)
        gzzt.config(color="#00FF00")
        gzzt.config(text="光照开")
        time.sleep(3)
    else:
        gzzt.config(color="#FF0000")
        gzzt.config(text="光照关")
        RGB.range_color(0,1,0x00FF00)
    if (ShuiWenDu >= 35):
        shield.m1.run(1,512)
        np1.range_color(0,4,0xFFFF00)
        RGB.range_color(0,1,0xFFFF00)
        zyzt.config(color="#00FF00")
        zyzt.config(text="增氧开")
        p_gravitysynthesis.speak("增氧开")
        time.sleep(3)
    else:
        zyzt.config(color="#FF0000")
        zyzt.config(text="增氧关")
        RGB.range_color(0,1,0x00FF00)

步骤5 功能调试

IMG_20250706_205249.jpg

三、作品展示

特别说明:本项目赶上6月考试月,是一年中最忙的时候。项目没能使用3D打印设计外壳支架,后续会带领学生使用3D打印实物模型,加入物联网等技术,进一步迭代更新,将科技融入日常生活中。让科技的力量守护一泓碧水,让养鱼真正成为轻松愉悦的享受,开启水族生态的智能新篇章。持续更新,敬请关注!!!

评论

user-avatar