Funpack第二季第三期:FireBeetle 2 ESP32-E IoT 开发板 任务一:渔业养殖水质监控系统
利用FireBeetle2-ESP32e和温度传感器 浊度传感器等采集水质数据并在lot上发布
标签
Arduino
Funpack活动
ESP32
easylot
老孙头
更新2023-01-03
670

一、项目描述

1、简介

本项目为FUNPACK第二季第三期。进行的任务为:渔业养殖水质监控系统

用FireBeetle ESP32-E开发板作为控制单元,观察养殖水质参数(温度/浊度/tds/pH值/电位/溶解氧中两项指标以上)的变化,并能把数据上传到IoT网站上,可实时动态显示监测水质的变化情况。

2、主控介绍

本项目使用DFROBOT公司出品的FireBeetle ESP32-E开发板。FireBeetle ESP32-E是一款基于ESP-WROOM-32E双核芯片的主控板,它专为IoT设计、支持WIFI和蓝牙双模通信并具有体积小巧、超低功耗、板载充电电路、接口易用等特性。可灵活的用于家庭物联网改装、工业物联网改装、可穿戴设备等等。

根据DFROBOT官网介绍,“FireBeetle是一个高性能且更mini的Arduino开源开发板系列,现在FireBeetle不仅完全兼容arduino的开发环境,并且拥有更丰富的软硬件资源,它将支持makecode、Mind+、pinpong、MicroPython的开发环境(即将完善),无论是图形化编程、C语言、python编程还是JS编程都可以随心所欲的操作硬件。”

实测它主要支持arduino IDE,和mind+ 开发环境。用下来,我觉得你完全可以当它是arduino开发板来使用,而不是按ESP32开发板来用。似乎vscode里是找不到这个开发板的,我估计esp32的官方开发环境也未必支持这个开发板。而且这个用来当arduino开发板用会非常好,一个是性能强,相关配套硬件非常全面。据说有上千种免焊接的Gravity接口传感器与执行器可与之配套。而且DF提供了详细的在线教程和应用案例,可轻松上手制作,大幅度降低学习时间。邮票孔的设计,让它可以方便的嵌入自己设计的PCB上,大大缩减你的原型开发成本以及原型测试时间。

而且试用配套的mind+开发软件后,我认为非常适合小孩子的兴趣班,还要业余爱好者。因为原厂硬件、原厂传感器、原厂例程和原厂教程(是的,每一个原厂硬件,厂家都提供了详细的中文使用说明)避免了任何出错的可能。

2.1 主控性能描述

工作电压:3.3V

输入电压:3.3V~5.5V

支持低功耗:10uA

支持最大放电电流:600mA@3.3V LDO

支持最大充电电流:500mA

支持USB充电

处理器:Tensilica LX6双核处理器(一核处理高速连接;一核独立应用开发)

主频:240MHz

SRAM:520KB

Flash:4MB

Wi-Fi标准:FCC/CE/TELEC/KCC

Wi-Fi协议:802.11 b/g/n/d/e/i/k/r (802.11n,速度高达150 Mbps),A-MPDU和A-MSDU聚合,支持0.4us防护间隔

频率范围:2.4~2.5 GHz

蓝牙协议:符合蓝牙v4.2 BR/EDR和BLE标准

蓝牙音频:CVSD和SBC音频低功耗:10uA

工作电流:80mA(平均)

频率范围:2.4~2.5GHz

支持Arduino一键下载

支持micropython

片上时钟:40MHz晶振、32.768KHz晶振

数字I/O x10(arduino默认)

模拟输入 x5(arduino默认)

SPI x1(arduino默认)

I2C x1(arduino默认)

I2S x1(arduino默认)

RGB_LED:5/D8

接口方式:FireBeetle V2系列兼容

工作温度:-40℃~+85℃

模块尺寸:25.4 × 60(mm)

安装孔尺寸:M2安装孔 孔径2.0mm

2.2 外观指示图

Zx5aCmmBulmRe7YqV+oZQo9tGjR5rlYy2YpL9mqoEx2CVGbWxYa0YDx54182KWAIaZsezK09NTM5UxJKBQAjTPCm04qm2F4VLMOTJkkpcarJs3bxpiLdRy8fZTEyhcuDBWbBv1FHyaYMgj9R8QRj2UwiRgGgI0z6bhzKeQAAmQAAmQgBEEOPZsBCyKkgAJkAAJkIBpCNA8m4Yzn0ICJEACJEACRhCgeTYCFkVJgARIgARIwDQEaJ5Nw5lPIQESIAESIAEjCNA8GwGLoiRAAiRAAiRgGgI0z6bhzKeQAAmQAAmQgBEEaJ6NgEVREiABEiABEjANAZpn03DmU0iABEiABEjACAI0z0bAoigJkAAJkAAJmIYAzbNpOPMpJEACJEACJGAEAZpnI2BRlARIgARIgARMQ4Dm2TSc+RQSIAESIAESMIIAzbMRsChKAiRAAiRAAqYhQPNsGs58CgmQAAmQAAkYQYDm2QhYFCUBEiABEiAB0xCgeTYNZz6FBEiABEiABIwgQPNsBCyKkgAJkAAJkIBpCNA8m4Yzn0ICJEACJEACRhCgeTYCFkVJgARIgARIwDQEaJ5Nw5lPIQESIAESIAEjCNA8GwGLoiRAAiRAAiRgGgI0z6bhzKeQAAmQAAmQgBEEaJ6NgEVREiABEiABEjANAZpn03DmU0iABEiABEjACAI0z0bAoigJkAAJkAAJmIYAzbNpOPMpJEACJEACJGAEAZpnI2BRlARIgARIgARMQ4Dm2TSc+RQSIAESIAESMIIAzbMRsChKAiRAAiRAAqYhQPNsGs58CgmQAAmQAAkYQYDm2QhYFCUBEiABEiAB0xD4f0Xag5X4tZRSAAAAAElFTkSuQmCC

Type-C: USB接口:4.75v-5.5v

PH2.0锂电池接口:3.5-4.2v

2/D9 LED灯:使用2/D9引脚控制的LED灯

充电指示灯:指示充电方式的红色LED,通过三种方式指示充电状态:1、充满电或未充电时熄灭2、充电时常亮3、USB供电,未连接锂电池时高频闪烁

RST复位引脚:单击复位按钮,将程序复位

5/D8 WS2812指示灯:使用5/D8引脚控制的WS2812RGB灯珠

低功耗焊盘:此焊盘专为低功耗设计,默认为连接状态,使用小刀轻轻刮断中间的细线即可断开,断开后可降低500μA静态功耗,通过程序控制主控进入睡眠模式后可将功耗降低至13μA。注意:焊盘断开后仅USB方式供电可驱动RGB灯

GDI显示接口:DFRobot专用显示屏接口,详情后文GDI显示接口

ESP32模组:乐鑫公司推出的最新ESP32-E模组

按钮:连接27/D4 的按钮

2.3 引脚布局

25re3oAAAAASUVORK5CYII=

FireBeetle ESP32-E多达22个物理GPIO,其中34-39 仅用作输入管脚,其他的既可以作为输入又可以作为输出管脚。 所有逻辑电压均为3.3V

Control :FireBeetle的使能以及复位引脚

Touch:具有电容触摸功能的引脚

Analog :具有模拟功能的引脚

Port PIN: 芯片默认的物理引脚号,可直接使用此数字控制对应引脚

IDE :在arduino IDE中,FireBeetle将引脚号码进行了重映射,您也可以直接使用此符号控制对应引脚

RTC PIN: FireBeetle具有低功耗功能,在进入deepsleep模式下仅RTC pin可以被使用

Power :FireBeetle将供电电源以及稳压后的3.3v电源通过引脚引出,方便用户使用

GND :FireBeetle的公共地引脚

6.2 Power

GND-这是所有电源和逻辑的公共接地

VCC -这是USB/锂电池输入的正电压(5V-USB 供电时输出USB电压, 3.7V-锂电池供电时输出电池电压)

3V3-这是3.3V稳压器的输出,可以提供500mA峰值

Control

RST - 与ESP32的复位引脚相连,可将程序复位

EN - 这是3.3V稳压器的使能引脚。它已上拉,因此接地能够禁用3.3V稳压器

GPIO:

D2至D13-这些都是通用引脚,通常我们将其当作数字引脚使用,也可以使用其复用功能。

A0至A4-这些都是模拟输入引脚,其中A0-A3仅能作为输入引脚使用。

SDA -I2C(线)数据引脚。

SCL -I2C(线)时钟引脚。

SCK / MOSI / MISO-这些是硬件SPI引脚,您可以将它们用作日常的GPIO引脚(但建议使其保持空闲状态,因为它们最适合用于高速SPI硬件)。

UART端口:

ESP32共有2个UART端口, 其中UART0用于与PC通信

串口名 Arduino TX RX

UART0 Serial pin1 pin3

UART2 Serial2 pin17 pin16

3. 传感器

3.1 Turbidity sensor浊度传感器模块.

此传感器的DF产品编号为SKU:SEN0189。浊度传感器是利用光学原理,通过液体溶液中的透光率和散射率来综合判断浊度情况。传感器内部是一个红外线对管,当光线穿过一定量的水时,光线的透过量取决于该水的污浊程度,水越污浊,透过的光就越少。光接收端把透过的光强度转换为对应的电流大小,透过的光多,电流大,反之透过的光少,电流小,再通过电阻将流过的电流转换为电压信号。 应用范围:可以用于洗衣机、洗碗机等产品的水污浊程度的测量。通过测量水的污浊程度来判断所洗物品洁净程度,确定最佳的洗涤时间和漂洗次数,用较少的能耗和耗水量获得满足要求的洗净比。也可以用于工业现场控制,环境污水采集等需要浊度检测控制的场合。

本传感器模块通过数模切换开关,可以选择输出的是模拟量或者数字量。如果选择输出是模拟量,利用A/D转换器进行采样处理,单片机就可以获知当前水的污浊度。如果选择输出是数字量,通过模块上的电位器调节触发阈值,当浊度达到设置好的阈值后,Dout指示灯会被点亮,传感器模块输出由高电平变成低电平,单片机通过监测该电平的变化,就可以知道水的浊度超标,从而预警或者联动其他设备。

本项目使用利用模拟量方式工作。

3.2 温度传感器

本项目使用防水DS18B20温度传感器配合DF原厂Plugable Terminal转换器。 Plugable Terminal转接器数字口增加了上拉电阻,使用跳线帽切换使用,这样可以直接将防水DS18B20温度传感器连接到Arduino上了。它能够在3.0V到5.5V的电源下工作 温度显示范围为-10°C to +85°C(误差±0.5°C) 使用温度范围:-55 to 125°C (-67°F to +257°F) 分辨率选择范围:9-12比特 使用单线接口:通信时只需要一个数字接口 芯片内嵌入一个64位的ID 并联的传感器可共用一个接口 温度限制报警系统 查询时间少于750ms 长为35mm,直径为6mm的不锈钢管 电缆直径:4mm 长度:90cm

3.3 模拟TDS传感器

TDS(Total Dissolved Solids),中文名总溶解固体,又称溶解性固体总量,表明1升水中溶有多少毫克溶解性固体。一般来说,TDS值越高,表示水中含有的溶解物越多,水就越不洁净。因此,TDS值的大小,可作为反映水的洁净程度的依据之一。DF的这款arduino兼容的TDS传感器,连接至控制板后,就可用于测量水的TDS值。 该产品专为arduino设计,即插即用,使用简单方便。3.3~5.5V的宽电压供电,0~2.3V的模拟信号输出,使得这款产品兼容5V、3.3V控制系统,能非常方便的接到现成的控制系统中使用。测量用的激励源采用交流信号,可有效防止探头极化,延长探头寿命的同时,也增加了输出信号的稳定性。TDS探头为防水探头,可长期浸入水中测量。 该产品可应用于生活用水、水培等领域的水质检测。有了这个传感器,就可轻松DIY一套TDS检测仪了,轻松检测水的洁净程度。

4,项目搭建,

本项目使用FireBeetle ESP32-E开发板,利用36,39引脚(对应A0 A1)连接TDS和浊度传感器。26引脚(对应D3)接入18bd20温度传感器。

由主控板按一定时间间隔读取传感器数据,并上传至LOT平台。对数进行实时监控和分析。

Iot平台选用DFROBOT自家Easy LoT平台(https://iot.dfrobot.com.cn)使用非常简单。

二、各功能对应的主要代码片段及说明

使用DF配套的mind+软件,变成变得特别简单。只要拖拽图形即可实现。而且好多功能只需要一个图标就完成了。前期的设置可以由mind+软件替你完成

1、18b20传感器使用代码

在mind+里使用18B20非常简单,不需要在setup部分进行初始设置。只是需要选一下使用的引脚,直接这一条命令就可以读取传感器的温度信息。本例中,把DS18B20接在D2引脚上

nqXwiEJSXYAAAAAElFTkSuQmCC

2、TDS传感器和浊度传感器

因为他们都是走的模拟输入,所以图形如下(使用端口分别为A0和A1)

I7PKgUMLtFwAAAABJRU5ErkJggg==

注意此处浊度的数值这里增加了一个*5/1024的变换,而TDS则是直接读数未作处理,这里都是根据DFrobot自己wiki上的例程来的。至于数值变换的原理是什么,DF并没有给出。然后通过DF自己的例程对比,就可以发现用mind+可以比arduino IDE省事很多。真是小朋友和初学者的福音哈。

3、网络通讯代码

3.1 这里也是很简单,但是不可以直接使用了,需要先设置一下,然后就可以用了。设置部分的代码有两端,一个是关于设置WIFI连接的。只要把要连接的SSID名称和密码填进去就可以了。

i5kD2T9wM6AAAAAElFTkSuQmCC

MQTT也一样,只是参数多了一些。

h1SVqPcAAAAAElFTkSuQmCC

我使用的是DF提供的免费LOT,easyLOT 。这个平台不得不说实在是太简单了。我估计5分钟就能掌握怎么用,要远远简单过阿里云的LOT平台。阿里云LOT平台的使用方法,DFrobot给了详细的使用手册和例子。结果我研究半个月,楞是没搞明白它的Topic在哪里设置……幸好又发现了这个easyLOT,终于挽救了我的作业。

3.2 LOT的调用和上传部分代码如下,同样属于小朋友就可以轻松掌握的级别。注意这里其实真正有用的只有那3条蓝紫色的代码和下面那个等待3秒。粉红色部分是为了方便在串口读出数据,用来简单的监控程序的运行状态。

1x+UPUYAAAAASUVORK5CYII=

4、整体代码

最后展示一下整体的代码,不得不说,真是太方便太简单了。各位初学者和带小朋友玩的,完全可以不用学怎么用arduino了,用这个mind+完全可以解决任务。

AAAAAElFTkSuQmCC

三、功能展示及说明(可右上角点“上传”插入图片进行展示并说明)

1、硬件组合效果

Z

2、lot网站监测效果

GuYBOhkzrzAAAAABJRU5ErkJggg==

浊度部分:其中从右到左,Y轴数值的变化对应的是空气中、一层塑料袋子、二层、三层、四层、拿开塑料袋的情况。数值起伏,是因为正经这种测试是应该在全黑的情况,否则环境光线的变化会导致传感器接收数值的变化,造成数据变化。

Vl9oDgAAAABJRU5ErkJggg==

温度上看,基本对应了室温、手握后温度渐渐升高、沾水温度迅速回到室温、逐渐平衡的过程

3、串口监视器的数据效果

AMFrDWzqN+zgAAAAAElFTkSuQmCC

Xi72HdxpipwAAAAASUVORK5CYII=

TDS部分:其中从右到左,Y轴数值的变化对应的是空气中、自来水、盐水、稀一些的盐水、盐水、糖水、纯水。最左侧的小起伏是最后收起来的时候没关闭电源,湿润的探头不知道碰到了什么

四、对本活动的心得体会(包括意见或建议)

1、首先感觉本期活动的产品选择非常好,总的来说硬件很强大,功能很丰富,而任务实际上既适合初哥,也适合发烧友和专业人士,丰俭由人。我觉得从选题角度出发,有一定难度但又不至于不能完成,同时又能解决一些实际问题的题目才是一个好的题目。无论商业上,还是带动烧友水平提高的角度出发。只有参与的人多,能够完成的人多,这样的活动才是成功的。

2、陆陆续续参加过几期活动,我觉得硬件的选择上,最好还是多选择一些本地化比较好的硬件,当然国产的就更好了,肥水不流外人田嘛。因为这种本地化做的比较好的硬件,才不太容易是一锤子买卖。比如过去有一期关于wio terminal的。用下来感觉非常好,于是又买了一些。而像那种没什么中文资料更甚至动不动还得翻墙才能开发的,对开发者的用途就很有限了。这样对digital也不见得是好事。这一期的硬件我觉得也很棒,开发板、传感器、屏幕陆陆续续又买了不少,估计以后肯定是不会再用arduino公司那些产品了。

3、我觉得DF和阿里云合作有点失败,弄的那些物联网应用例程很麻烦,然后一些东西还只能免费用1个月,过一个月就开始要收费(且费用不菲)才能用。是个坑。

4、补充,完成整个作业后,逛了知乎,据说esp32的ADC线性度较差,不准。专业用途请慎用。

5、又补充,建议视频的时间可以要求为3分钟以上,而不是3-5分钟,主要是这个时间太短了。我这个视频大概10分钟左右,依然导致很多内容只能一笔带过。

附件下载
test-1215-TdsAnd18bd20-ZuoDu.sb3
使用mind+软件打开和编辑
团队介绍
资深点灯级菜鸟
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号