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_SCK
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB
//HX711_DOUT
GPIO_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连接连接,这样就能实现把称重模块的重量通过蓝牙发送到手机端了,当然,也可以发送到电脑端