找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2321|回复: 10
打印 上一主题 下一主题
收起左侧

狗的眼睛瞎了想做一个超声波测距报警装置

[复制链接]
跳转到指定楼层
楼主
ID:396179 发表于 2018-9-10 20:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神,我的狗瞎了经常会摔下台阶,所以我想弄一个超声波距离报警装置,但是本人没有这方面基础,头很疼,希望各位大神帮我一下。功能要求类似于扫地机器人的防跌落传感器,例如:前方高度差超过x值会蜂鸣警报。在淘B上看到一款成品超声波测距装置(装置链接),功能为测距小于x值报警,我想改成距离大于x值报,所以在此发布求助。

制作过程中的零件开销由我支付,并可额外支付报酬,希望得到各位大神的帮助,联系方式:15759179377 微信同号
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:386381 发表于 2018-9-11 08:00 来自手机 | 只看该作者
用红外测距或激光测距,用别的方法吧,超声波测距狗的耳朵能听得到,他会感觉很吵,一直在响

评分

参与人数 1黑币 +11 收起 理由
凌净清河 + 11 赞一个!从实际考虑问题的人不多了

查看全部评分

回复

使用道具 举报

板凳
ID:280876 发表于 2018-9-11 14:35 | 只看该作者
做出来了又如何,就算报警狗也不会判断吖
回复

使用道具 举报

地板
ID:111634 发表于 2018-9-12 07:40 | 只看该作者
这是几十年前就有的成功课题,不过不是狗,是盲人,办法是超声测距。
回复

使用道具 举报

5#
ID:396179 发表于 2018-9-18 12:27 | 只看该作者
wushiye54 发表于 2018-9-11 14:35
做出来了又如何,就算报警狗也不会判断吖

如果实现该功能那么在报警之后狗还跌下台阶 ,在摔几次之后自然就会在听到警报的时候停下,类似于止吠器
回复

使用道具 举报

6#
ID:396179 发表于 2018-9-18 12:29 | 只看该作者
文凤轩 发表于 2018-9-11 08:00
用红外测距或激光测距,用别的方法吧,超声波测距狗的耳朵能听得到,他会感觉很吵,一直在响

问题是不管是红外还是激光 还是超声波我都不会做
回复

使用道具 举报

7#
ID:396179 发表于 2018-9-18 12:31 | 只看该作者
zl2168 发表于 2018-9-12 07:40
这是几十年前就有的成功课题,不过不是狗,是盲人,办法是超声测距。

是这样的,这样的装置类似于倒车雷达,是可以实现的,问题是我自己没有这方面知识,所以很尴尬
回复

使用道具 举报

8#
ID:400950 发表于 2018-9-21 13:11 | 只看该作者
#include<reg52.h>   
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit LED1 = P2^0;
sbit LED2 = P2^1;
sbit LED3 = P2^2;
sbit beep = P2^3;           //蜂鸣器//
sbit trig = P2^5;      //超声波测距模块Trig
sbit echo = P3^2;     //超声波测距模块Echo
bit flag1;         //触发信号标志位//

uchar count;           //中断累加变量
long int distance;    //测量所得距离
uchar code DSY_CODE[]=
{
        0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90                         //数码管编码//
};
uchar s = 0;
                                                                                                                          

void DelayMS(uint x)         /*延时函数*/
{
    uchar i;
    while (x--)
    {
                for (i = 120;i > 0;i--);
    }
}
void fmq()                                 /*蜂鸣器函数*/
{
        beep = ~beep;
        DelayMS(200);
        beep = ~beep;
}


/*------------------------------------------------
                  延时函数
------------------------------------------------*/
void delayt(uint x)
{
    uchar j;
    while(x-- > 0)
    {
              for(j = 0;j < 125;j++)
        {
          ;
        }
    }
}


/*------------------------------------------------
定时器0初始化,用于计算响应信号时间
------------------------------------------------*/
void init_t0()
{
       
        TMOD = 0x01;         
    TL0 = 0x66;
    TH0 = 0xfc;              //1ms
    ET0 = 1;            
    EA = 1;                     
}


/*------------------------------------------------
    超声波模块触发信号
------------------------------------------------*/
void trigger()
{
    trig = 0;
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
        trig=1;      
}


/*------------------------------------------------
   超声波模块相应端口初始化函数
------------------------------------------------*/
void init_measuring()
{
        trig = 1;
        echo = 1;
        count = 0;
}


/*------------------------------------------------
     超声波模块距离测试函数
------------------------------------------------*/
void measuring()
{
        uchar l;
        uint h,y;
        TR0 = 1;
        while(echo==1)
    {
        ;
    }        
        TR0 = 0;
        l = TL0;
        h = TH0;
        y = (h << 8) + l;
        y = y - 0xfc66;//us部分
        distance = y + 1000 * count;//计算总时间,单位是微秒
        TL0 = 0x66;
        TH0 = 0xfc;
        delayt(30);
        distance = 3453* distance / 20000;//原始为:(0.34毫米/us)*时间/2//        
}

/*------------------------------------------------
              主函数
------------------------------------------------*/
void main()            
{   init_t0();          //定时器0初始化   
    init_measuring();  //超声波相应端口初始化
        P1 = 0x00;                                 //数码管初始化//



        while(1)
        {
                trigger();      //触发超声波启动
                 while(echo==0)          //等待回声
                 {
                           ;
                 }
            measuring();           //进行距离测量
                   if(distance < 100)
                                {
                                        P1 = ~DSY_CODE[s];                  //数码管显示//
                            s = (s+1)%10;
                                        fmq();                                         //蜂鸣器报警//
                                          LED1 = 1;                                //流水灯//
                        LED2 = 0;
                                     LED3 = 0;
                                    DelayMS(500);
                                        fmq();
                                    LED1 = 0;
                                        LED2 = 1;
                                        LED3 = 0;
                                    DelayMS(500);
                                        fmq();
                                        LED1 = 0;
                                        LED2 = 0;
                                        LED3 = 1;
                                        DelayMS(500);
                                }
            init_measuring();    //超声波相应端口初始化
            delayt(600);        //每次测量间隔60ms
        }
}



回复

使用道具 举报

9#
ID:400950 发表于 2018-9-21 16:04 | 只看该作者
wawvvv 发表于 2018-9-21 13:11
#include   
#include
#define uint unsigned int

额  忘把数码管的去掉了。。
回复

使用道具 举报

10#
ID:398621 发表于 2018-9-21 20:05 | 只看该作者
超声波测距,对人来说是超声,可能对狗狗来说在可听的波段,这么说的话,它会感到很吵闹
回复

使用道具 举报

11#
ID:401135 发表于 2018-9-21 20:19 | 只看该作者
那狗狗歪着脑袋走路就会无效啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表