【毕设参考】“摸鱼”神器,用 ESP32 + HaaS Python DIY一款全功能鱼缸 控温、过滤、换水一键执行

简介: 【毕设参考】“摸鱼”神器,用 ESP32 + HaaS Python DIY一款全功能鱼缸 控温、过滤、换水一键执行

智能水族箱

  下图是本案例除硬件连线外的3步导学,每个步骤中实现的功能请参考图中的说明。




简介

  伴随着人们生活水平的提高,养鱼已经成为了一种新的时尚,各种桌面鱼缸层出不穷,但是市面上的鱼缸系统多是比较简单的,智能鱼缸可谓是凤毛麟角,同时也价格不菲。鉴于此,我们HaaS团队打造了一款智能水族馆案例。通过监测水温,水位,以及水质,继而通过物联网平台的功能动态的调节鱼缸生态。


  本案例中用到的传感器比较多,其中包括TDS、水温,以及压力传感器(用于测水位),充分应用到我们的日常生活中,比如水质仪,净水器,温控热水壶,胎压仪,体重秤等等。


准备

  本案例打造需要如下硬件:


Nodemcu32S一台

HX710AB气压传感器一个

18B20水温传感器一个

TDS传感器一个

继电器三个

杜邦线若干

MicroUSB数据线一条

硬件连线图

  硬件连线图如下图所示:




  继电器外接的水泵,加热棒,以及过滤器,建议采购低压直流设备,如确需强电设备,请注意强电隔离,做好防护。


物联网平台开发

  整个过程包含以下4个步骤:


开通公共实例

创建产品(设备模型)

定义产品功能(物模型)

创建设备及获取三元组

开通公共实例

  对于第一次使用物联网平台的读者,需要开通实例以使用物联网平台的功能。这里可以使用免费的公共实例进行开发。


  在物联网平台中,左上角选择“华东2-上海”,点击“公共实例”,即可开通。开通后点击“公共实例”,即可进入控制台进行产品创建。




创建产品(设备模型)

  进入公共实例控制台,点击“创建产品”按钮,即可进入新建产品页面。




  进入新建产品页面,设定“产品名称”,这里我们命名为“智能水族箱”,读者也可以根据自己的喜好来命名。在“所属品类”中,选择“自定义品类”。


  产品的节点类型选择“直连设备”,数据格式选择“ICA标准数据格式”,检验类型和认证方式选择默认设定即可。开发者可根据自己的需求在“产品描述”页面添加针对此产品的描述。


  对于 ESP32 等搭载 Wi-Fi 的设备而言,联网方式选择“Wi-Fi”。




  点击“确认”按钮,即可完成产品创建。




  点击“前往定义物模型”




定义产品功能(物模型)

  开发者可以使用准备好的物模型文件来进行快速导入。点击左上角“快速导入”,选择物模型文件智能水族箱物模型并上传,就能够生成案例对应的物模型。




  生成后的效果如下:




  定义好物模型后,需要发布物模型上线,并发布产品,以使变更生效。






  产品及其物模型创建完成后就可以创建这个产品的设备了。


创建设备及获取三元组

  点击左侧栏中“设备“,在筛选框中选择要添加设备的产品,点击“添加设备”。这里这里我们命名为“test_device”,开发者也可以根据自己的喜好来命名。




  生成的设备如下。




  开发者也可以选择“批量添加”,一次性添加多个设备,并生成随机的DeviceName。




点击前往“查看”按钮,就可以看到此设备的详细信息了。




  点击右上角的“查看”按钮,就能看到设备的三元组信息了。 三元组是物联网设备端和物联网云端设备相关联的唯一标识符,在设备端连接云端的时候会使用三元组信息和云端进行鉴权,鉴权通过之后云端会认为设备已激活并上线。




  再次前往物联网平台的设备信息页面,若设备运行正确,此时应该可以看到设备名右侧的状态由“未激活”变为“在线”。 选中“实时刷新”,可以看到数据实时从设备上报到物联网平台。设备上云成功。




设备端开发

开发环境

  在进行下一步之前请确保ESP32开发环境已经搭建完毕。详情请参考esp32开发环境的说明。


创建解决方案

如下图所示,打开VS Code之后在新建一个基于helloworld的python工程,设定好工程名称(“smart_aquarium”)及工作区路径之后,硬件类型选择ESP32,点击立即创建,创建一个Python轻应用的解决方案。




下载设备端代码并解压,将解压后的所有脚本复制覆盖刚刚创建的工程目录下,之后,对代码进行如下修改。


Python脚本的详细说明请参考脚本内嵌的文字版注释


填写Wi-Fi名称及密码

  在main.py中,填写可用的Wi-Fi名称及密码。


# wifi连接的的ssid和pwd定义

wifiSsid = "请填写您的路由器名称"

wifiPassword = "请填写您的路由器密码"

修改设备端三元组

  在main.py中,填写创建的设备三元组信息。关于设备三元组的获取,请参考"创建设备及获取三元组"中的步骤。


# 三元组信息

productKey     = "产品key"

deviceName     = "设备名称"

deviceSecret   = "设备密钥"

运行结果

在物联网平台上查看设备数据

  再次前往物联网平台的设备信息页面,若设备运行正确,此时应该可以看到设备名右侧的状态由“未激活”变为“在线”。




物联网应用开发

IoT Studio 提供了应用快速开发的能力,可以很方便地与物联网平台进行联动。本节的开发工作也将围绕 IoT Studio展开。


新建“普通项目”

打开IoT Studio官网,在项目管理中新建一个空白项目,如下图所示,将此项目命名为“智能水族箱项目”,开发者也可以根据自己的喜好来命名。






关联产品

为了使本项目能够获取到目标设备的定位信息,我们首先需要将该项目和我们在前一节创建的产品“智能水族箱”绑定。


在项目控制台,点击左侧的“产品”,点击“关联物联网平台产品”。此时可以看见我们创建的“智能水族箱”。点击选中,并勾选“关联产品同时关联其下所有设备”,以便该项目可以访问到所有设备的信息。




创建“移动应用”



界面开发及交互配置

按下图所示依次将控件拖入界面中,可以根据自己需要添加所需要的控件。各组件的说明请参考IoT Studio组件说明。




按下图所示,为每一个按钮配置交互行为,当点击特定按钮时,设置设备物模型标签为对应值。首先配置传感器数据。




接下来配置开关按钮对应的数据源。




预览及发布应用

点击右上角按钮预览或发布,即可在手机上使用应用,可以实现随时随地远程控制啦。


————————————————

版权声明:本文为CSDN博主「HaaS技术社区」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/HaaSTech/article/details/124242224

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
1月前
|
前端开发 JavaScript UED
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
通过在Django项目中集成Channels和WebSocket,我们能够为前后端分离的应用添加实时通信功能,实现诸如在线聊天、实时数据更新等交互式场景。这不仅增强了应用的功能性,也提升了用户体验。随着实时Web应用的日益普及,掌握Django Channels和WebSocket的集成将为开发者开启新的可能性,推动Web应用的发展迈向更高层次的实时性和交互性。
73 1
|
1月前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
63 0
|
3天前
|
缓存 开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第35天】装饰器在Python中是一种强大的工具,它允许开发者在不修改原有函数代码的情况下增加额外的功能。本文旨在通过简明的语言和实际的编码示例,带领读者理解装饰器的概念、用法及其在实际编程场景中的应用,从而提升代码的可读性和复用性。
|
8天前
|
设计模式 缓存 测试技术
Python中的装饰器:功能增强与代码复用的艺术####
本文将深入探讨Python中装饰器的概念、用途及实现方式,通过实例演示其如何为函数或方法添加新功能而不影响原有代码结构,从而提升代码的可读性和可维护性。我们将从基础定义出发,逐步深入到高级应用,揭示装饰器在提高代码复用性方面的强大能力。 ####
|
9天前
|
缓存 测试技术 数据安全/隐私保护
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第29天】本文通过深入浅出的方式,探讨了Python装饰器的概念、使用场景和实现方法。文章不仅介绍了装饰器的基本知识,还通过实例展示了如何利用装饰器优化代码结构,提高代码的可读性和重用性。适合初学者和有一定经验的开发者阅读,旨在帮助读者更好地理解和应用装饰器,提升编程效率。
|
16天前
|
开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第22天】在Python的世界里,装饰器是一个强大的工具,它能够让我们以简洁的方式修改函数的行为,增加额外的功能而不需要重写原有代码。本文将带你了解装饰器的基本概念,并通过实例展示如何一步步构建自己的装饰器,从而让你的代码更加高效、易于维护。
|
18天前
|
开发框架 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第20天】在编程的海洋中,简洁与强大是航行的双桨。Python的装饰器,这一高级特性,恰似海风助力,让代码更优雅、功能更强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一步步深入其内涵与意义。
|
23天前
|
云计算 Python
用python给你写个简单的计算器功能网页啊
这张图片展示了阿里巴巴集团的组织架构图,涵盖了核心电商、云计算、数字媒体与娱乐、创新业务等主要板块,以及各板块下的具体业务单元和部门。
|
29天前
|
设计模式 开发者 Python
Python中的装饰器:简化代码与增强功能
【10月更文挑战第9天】在编程的世界里,效率和可读性是衡量代码质量的两大关键指标。Python语言以其简洁明了的语法赢得了无数开发者的青睐,而装饰器则是其独特魅力之一。本文将深入探讨装饰器的工作原理、使用方法以及如何通过自定义装饰器来提升代码的重用性和可维护性,让读者能够更加高效地编写出既优雅又功能强大的代码。
|
1月前
|
测试技术 开发者 Python
Python中的装饰器:简化代码,增强功能
在Python编程世界中,装饰器是一个强大的工具,它允许我们在不修改原有函数代码的情况下增加额外的功能。本文将通过简明的语言和实际的代码示例,引导你理解装饰器的基本概念、使用方法及其在实际应用中的巨大潜力。无论你是初学者还是有一定经验的开发者,这篇文章都将帮助你更高效地使用Python进行编程。