土壤湿度检测讲解
基于ARM2410土壤湿度检测 设计及实现
组长:林强 组员:王策 毕占谨
1
主要内容
1 设计内容 2 主要器件选择 3 软件程序设计 4 程序脱离虚拟机运行
1 设计内容
✓实现湿度的采集; ✓设计实现湿度采集中断; ✓调试程序,实现程序固化。
2 主要器件的选择
1)主控制器芯片ARM2410cl
➢韩国三星公司推出的基于 ARM920T内核和AMBA( Advanced Microcontroller Bus Architecture )总线的 一款微处理器; ➢使用0.18um CMOS工艺 ; ➢集成LCD、UART、IIC、 SPI、IIS、USB、SD控制器 等片内外围接口; ➢支持ROM和NAND Flash 引导; ➢适合面向功耗较低、成本 敏感、应用环境较好的消费 类电子产品.
/ /检测时间设定
4)程序运行界面
/*读取GPIO_B5引脚的状态*/ { unsigned char ret;
ret = read_gpio_bit(GPIO_B5); 读取引脚电平 0,1 copy_to_user(buf,&ret,1); 将内核地址空间送到用户空间
return 1; }
qt控制代码部分
MyLed::MyLed()
fd = open("/dev/s3c2410-leds", 0);//设备未找到 if (fd < 0) {
printf("open error\n"); } }
void MyLed::test()
{
read(fd,&buf,1);
if((int(buf))==1)
/ /湿度未达到阈值
{
bel->setText("Current Status: OK!!");
2)湿度传感器FC-28
它以FC-28湿度传感器作 探 头 , LM393 做 比 较 器 , 两个电极插入土壤后充当 电阻,与电路中的电阻分 压 , 再 送 到 LM393 同 相 端中与变阻器得到的电压 比较,最后得出湿度
LM393典型应用 引脚说明:
传感器工作原理
在土壤湿度达 不到设定阈值 时,D0口输出 高电平,当土 壤湿度超过设 定阈值时,模 块D0输出低电 平
}
if((int(buf))==0)
/ /湿度未达到阈值
{
bel->setText("Current Status: WARNING!!"(int a) {
set_time=a; timer->start(set_time*1000); }
{
ui.setupUi(this);
set_time=2;
//初始化时间2s检查一次
timer=new QTimer(this); //初始化定时器
timer->start(set_time*1000);//启动定时器
/*分别定义信号与槽连接*/
QObject::connect(timer,SIGNAL(timeout()),this,SLOT(test())); QObject::connect(ui.horizontalScrollBar, SIGNAL(sliderMoved(int)), ui.lcdNumber, SLOT(display(i QObject::connect(ui.horizontalScrollBar, SIGNAL(sliderMoved(int)), this, SLOT(changetemp(int)))
3)软件程序设计
主程序设计流程图
单片机接收传感器送 出的电压值,通过中断向 量,判断是否达到阈值, 若未达到阈值,于界面上 显示OK;若达到阈值,于 界面上显示Warning
开始 传感器发送电压信号 延时(1~20S)读取
是否达到阈值
N
Y
OK
Warning
主要代码注释
驱动代码读取部分
static ssize_t s3c2410_IO_read (struct file *filp, char *buf, size_t len)