stm32+称重模块hx711+蓝牙模块hc05
本项目使用主控stm32f103c8t6,称重模块hx711,蓝牙模块hc05上传至手机app/电脑app显示数值

模块
1、stm32f103c8t6最小系统板



2、hx711
HX711 模块 A 通道带有 128 倍信号增益,可以将 5mV 的电压放大 128 倍,然后采样输
出 24bit AD 转换的值,单片机通过指定时序将 24bit 数据读出

3、蓝牙模块hc05
HC-05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了。
因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。
HC-05蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动连接工作模式。在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。
当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;
当模块处于命令响应工作模式时能执行AT命令,用户可向模块发送各种AT 指令,为模块设定控制参数或发布控制命令。


过程
1、首先蓝牙模块hc05与串口模块连接

注意,蓝牙模块的vcc千万不能接3.3v会烧坏芯片

蓝牙模块tx 接 串口模块rx
蓝牙模块rx 接 串口模块tx
蓝牙模块vcc 接 串口模块5v
蓝牙模块gnd 接 串口模块gnd
然后按住蓝牙模块上的小按钮,上电,
观察蓝牙模块上的小灯是否是一秒闪一秒灭,如果是,就是进入at模式
正常的蓝牙模式是灯快闪
打开串口工具,设置好参数,尤其是波特率38400

发送AT进行测试,是否返回OK


所以接下来的设置步骤
AT
AT+ROLE=0 //设置为被动连接
AT+NAME=XXX //设置名字
AT+UART=115200,0,0 //设置蓝牙波特率
AT+PSWD=1234 //设置密码
这样就差不多了
然后用重新上电,手机蓝牙打开搜索
然后打开手机蓝牙APP

电脑串口助手发送字符串

手机app接收到字符串
蓝牙部分就这样差不多了
2、stm32+hx711



按如图所示,接到hx711模块上

然后另一边的vcc接单片机的3.3v,gnd接gnd
还有一个DT和SCK又自己配置引脚使用
void Init_HX711pin(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PF端口时钟//HX711_SCKGPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHzGPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB//HX711_DOUTGPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//输入上拉GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_0); //初始化设置为0
}
然后就是hx711的处理过程函数了
//****************************************************
//读取HX711
//****************************************************
u32 HX711_Read(void) //增益128
{unsigned long count; unsigned char i; HX711_DOUT=1; delay_us(1);HX711_SCK=0; count=0; while(HX711_DOUT); for(i=0;i<24;i++){ HX711_SCK=1; count=count<<1; delay_us(1);HX711_SCK=0; if(HX711_DOUT)count++; delay_us(1);} HX711_SCK=1; count=count^0x800000;//第25个脉冲下降沿来时,转换数据delay_us(1);HX711_SCK=0; return(count);
}//****************************************************
//获取毛皮重量
//****************************************************
void Get_Maopi(void)
{Weight_Maopi = HX711_Read();
} //****************************************************
//称重
//****************************************************
void Get_Weight(void)
{HX711_Buffer = HX711_Read();if(HX711_Buffer > Weight_Maopi) {Weight_Shiwu = HX711_Buffer;Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取实物的AD采样数值。Weight_Shiwu = (s32)((float)Weight_Shiwu/GapValue); //计算实物的实际重量//因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的GapValue这个除数。//当发现测试出来的重量偏大时,增加该数值。//如果测试出来的重量偏小时,减小改数值。}
}
3、把蓝牙模块接上单片机,并使用手机APP连接连接,这样就能实现把称重模块的重量通过蓝牙发送到手机端了,当然,也可以发送到电脑端

项目代码请点击下载














