“开源智能桌面提醒底座/zh”的版本间的差异
(Created page with "{| style="width: 800px;" |- | ==概述== *项目名称:Microduino智能电子秤 *目的:智能饮水提醒,有趣的桌面秤 *难度:中 *耗时:2小时 *制作者...") |
(没有差异)
|
2016年1月5日 (二) 14:05的版本
概述
本次教程我们将使用Microduino产品模块快速搭建一个智能桌面秤。它能够称量出2KG左右较小物体的重量,并将重量显示在OLED屏幕上,而且还能将数据传回手机,使用饮水提示功能,如果长时间没有喝水手机会做出提示。 材料清单
实验原理Mircoduino-Weight模块和底座上的压力传感器组成惠斯通电桥,能够测量底座上承受的重量,然后核心Core收集重量数据并实时显示到OLED屏上,使用户能够观察到秤上的数据变化。然后在桌面秤秤测量的数据稳定后,核心CPU即认为此时的重量数据即为测量到的最终重量 整体系统的控制原理即接入以上两个部分,Microduino-Core核心通过PIR传感器探测到附近有人靠近后,控制Lantern模块变换颜色,Auido模块播报“欢迎光临”语音,从而达到迎宾欢迎的效果。
Microduino-Weight/zh 电阻应变式称重传感器是基于这样一个原理:弹性体(弹性元件,敏感梁)在外力作用下产生弹性变形,使粘贴在它表面的电阻应变片(转换元件)也随同产生变形,电阻应变片变形后,它的阻值将发生变化(增大或减小),再经相应的测量电路把这一电阻变化转换为芯片可以识别的电信号。 为了测量称重传感器的应变片的电阻变化,通常采用应变片组成桥式电路(惠斯通电桥)来进行测量,当被测重力作用在应变片上时,粘附在弹性体上的惠斯通电桥就产生不平衡输出,该输出信号正比于被测重力。 文档调试过程
将Microduino-Core与Microduino-USBTTL叠加(无上下顺序),通过USB数据与电脑连接起来。 打开Arduino IDE编程软件,点击【文件】->【打开】 浏览到项目程序地址,点击“watercontrol.ino”程序打开。 点击【工具】,在板选项里面选择板卡(Microduino-Core),在处理器选项里面选择处理器(Atmega328p@16M,5V),再在端口选项里面选择正确的端口号,然后直接烧录程序。
将Microduino-Duo-H底板固定在一侧的亚克力透明板上,把Microduino-OLED接到Microduino-Duo-H的OLED接口。注意:OLED的连线要从电桥中间的孔穿过 固定Duo-H底板 OLED穿过电桥中间的孔洞 之后将压力传感器接到Microduino-Weight模块。 把用到的设备叠加到Microduino-Duo-H的两侧,一边两块。
使用两颗长螺丝将固定了底板的亚克力透明板与称重电桥固定在一起,注意中间有一块小长方形的垫片 将另一块透明亚克力板使用两颗长螺丝和垫片固定好。 注意:将垫片螺丝孔与电桥上的螺丝孔对齐之后再固定 此时给电子称上电,等候1-2秒,然后就可以放置物品称重了,由于是桌面称,所以称重限额在2KG左右 单个Microduino模块 tips:根据重量左侧的小人还会被压低哦。 程序说明
unsigned long HX711_Read(void) //增益128
{
unsigned long count;
unsigned char i;
digitalWrite(HX711_DT, HIGH);
delayMicroseconds(1);
digitalWrite(HX711_SCK, LOW);
delayMicroseconds(1);
count=0;
while(digitalRead(HX711_DT));
for(i=0;i<24;i++)
{
digitalWrite(HX711_SCK, HIGH);
delayMicroseconds(1);
count=count<<1;
digitalWrite(HX711_SCK, LOW);
delayMicroseconds(1);
if(digitalRead(HX711_DT))
count++;
}
digitalWrite(HX711_SCK, HIGH);
count ^= 0x800000;
delayMicroseconds(1);
digitalWrite(HX711_SCK, LOW);
delayMicroseconds(1);
return(count);
}
重量获取函数 float Get_Weight()
{
Weight_Shiwu = (HX711_Read() - Weight_Maopi)+800; //获取实物的AD采样数值。
Serial.println(Weight_Shiwu);
if(Weight_Shiwu < 0)
{
return 0;
}
else
{
return Weight_Shiwu/GapValue;
}
}
视频 |