首先在STM32cubeIDE中新建新的工程,本工程共需要控制6个继电器和一个串口以及对PH、温度、水位的读取。将这些所需要的功能管脚在STM32cubeIDE中设置好就可以直接生成代码了。
在这里需要注意的是,使用hal库时要对串口的收发进行重定向。记得加上这个#include <stdio.h>
void Usart_SendString(uint8_t *str){ unsigned int k=0; do { HAL_UART_Transmit(&UartHandle,(uint8_t *)(str + k) ,1,1000); k++; } while(*(str + k)!='\0'); }
int fputc(int ch, FILE *f){ HAL_UART_Transmit(&UartHandle, (uint8_t *)&ch, 1, 1000); return (ch);}
int fgetc(FILE *f){ int ch; while (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) == RESET); HAL_UART_Receive(&UartHandle, (uint8_t *)&ch, 1, 1000); return (ch);}
然后在串口屏的软件中对串口屏的界面功能进行设计
传感器的选择:
我采用的是 DS18B20 温度传感器,它具有体积小,硬件开销低,抗干扰能力强,精度高的特点,主要根据应 用场合的不同而改变其外观,我们采用的是不锈钢封装防水性 DS18B20 温度探头,适合我们的水溶液测温。 溶液PH值采集传感器模块通过 BNC 接头与 PH 复合电极进行连接,扩展有 DS18B20 温度传感 器接口,方便进行软件温度补偿设计。调节 10K 蓝色电位器的旋钮可以进行放大倍数调节。MCU 通过 ADC 模拟 采集获得原始数据,在通过公式计算最终获取 PH 值。
功能上的设计:
温度检测与水温控制 温度检测是通过 DS18B20 温度传感器检测,DS18B20 输出的是数字信号,所以可以直接与 STM32F103 连接,通过单总线协议来实现温度数据的读取。温度的控制是根据检测的温度值控制加热棒的开启。 PH 检测与净水控制 PH 检测通过 PH 传感器检测,PH 值检测是通过 A/D 转换进行PH 值采集并控制水泵来开启 净水系统。水位监测与控制是通过检测水位变换并实现加水换水。而喂食也可以定时进行,同时这些数据的范围都可以在串口屏上进行设置以及监控!
最终的成品