stm32单片机远程智能WIFI鱼缸设计与实现
难度系数:3分工作量:2分创新点:3分1 简介基于STM32的智能鱼缸系统,该系统通过检测水温水体浊度和水深来控制继电器开关选择打氧,、加热、照明或者水泵加水,通过wifi与onenet进行数据传输并数据可视化。

4 设计原理4.1 水位传感器
简介
Water Sensor水位传感器是一款简单易用、性价比较高的水位/水滴识别检测传感器,其是通过具有一系列的暴露的平行导线线迹测量其水滴/水量大小从而判断水位。轻松完成水量到模拟信号的转换,,达到水位报警的功效。
优点
简单易用、小巧轻便、性价比高
特点
1、水量到模拟量的转换2、可塑性强,本传感器输出为基础模拟值3、低功耗,灵敏度高4、可直接与魏处理器或其他逻辑电路相连接,适合各种开发板和控制器(如:Arduino控制器、STC单片机、AVR单片机等)
4.2 光敏传感器简介
光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管、光电倍增管、光敏电阻、光敏三极管、太阳能电池、红外线传感器、紫外线传感器、光纤式光电传感器、色彩传感器、CCD和CMOS图像传感器等。光传感器是目前产量最多、应用最广的传感器之一,它在自动控制和非电量电测技术中占有非常重要的地位。光敏传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。光传感器不只局限于对光的探测,它还可以作为探测元件组成其他传感器,对许多非电量进行检测,只要将这些非电量转换为光信号的变化即可。总结:照射光敏二极管的光强不同,通过光敏二极管的电流大小就不同,所以可以通过检测电流大小,达到检测光强的目的。利用这个电流变化,我们串接一个电阻,就可以转换成电压的变化,从而通过ADC读取电压值,判断外部光线的弱。
优点
采用灵敏型光敏电阻传感器比较器输出,信号干净,波形好,驱动能力超过15mA。配可调电位器可调节检测光线亮度工作电压3.3V-5V输出形式 :数字开关量输出(0和1)设有固定螺栓孔,方便安装原理图
4.3 ESP-01S WIFI模块简介
ESP8266 系列模组是深圳市安信可科技有限公司开发的一系列基于乐鑫ESP8266的低功耗UART-WiFi芯片模组,可以方便地进行二次开发,接入云端服务,实现手机3/4G全球随时随地的控制,加速产品原型设计。
尺寸、管脚定义
ESP8266的指令介绍
AT指令可以细分四种类型:1.测试指令:AT+=?该命令用于查询设置指令的参数以及取值的范围
2.查询指令:AT+?该命令用于返回参数的当前值
3.设置指令:AT+=<’’’>该命令用于设置用户自定义的参数
4.执行指令:AT+该命令用于执行受模块内部程序控制的变参数不可变的功能
ESP8266的指令测试可以通过STM开发板转为电平转换的功能连接上ESP8266模块在通过串口显示窗口在PC机上热输入AT指令来进行操作。
ESP8266的AT指令一览
5 部分核心代码#include "water.h"#include "delay.h"#define WA GPIO_Pin_11 / 配置LED用到的I/O口 /void Water_GPIO_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); // 使能端口时钟 GPIO_InitStructure.GPIO_Pin = WA; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化端口 //GPIO_SetBits(GPIOB, WA); // 关闭所有LED}int Water_state(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin_x){Delay_ms(10);if( GPIO_ReadInputDataBit(GPIOx, GPIO_Pin_x) == 0){return 1;}else{return 0; }}
#include "gm.h" void gm_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_SetBits(GPIOD,GPIO_Pin_11); }
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!
记得点赞、关注、收藏、转发哦!
点击这里找小助理0元领取:扫码进群领资料