5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: 自制遥控BB响,这下再也不怕找不到飞机了! [打印本页]

作者: xxdcq    时间: 2015-10-12 11:46
标题: 自制遥控BB响,这下再也不怕找不到飞机了!
本帖最后由 xxdcq 于 2015-10-12 11:48 编辑

众所周知最初由第三人称转第一人称飞穿越机极容易飞丢飞机,这玩意又小,掉在树林草堆里很难发现,有次找了1个多小时才找到
为此做了一个遥控BB响。
电路非常简单,采用宏晶单片机STC15F102W,成本不超过3元钱


(, 下载次数: 146)

只需利用一个遥控器没用的通道来控制,最好是两档的拨杆
本人用的第七通道来控制
(, 下载次数: 156)

视频:

?from=y1.7-1.2[/media]

程序源代码:
;******************************************************************************
;程序功能:遥控器控制蜂鸣器鸣叫
;mcu STC15F102W;内部晶振11.0592M,1.38T
;******************************************************************************
;特殊功能寄存器定义
p1m1                equ        91h
p1m0                equ        92h
p0m1                equ        93h
p0m0                equ        94h
p2m1                equ        95h
p2m0                equ        96h
p3m1                equ        0b1h
p3m0                equ        0b2h
p1asf                equ        9dh                                ;p1.x口作为a/d的使能
auxr                equ        8eh
auxr1                equ        0a2h                                ;选择双指针
ie2                equ        0afh
adcontr                equ        0bch                                ;a/d控制
adres                equ        0bdh                                ;a/d结果
wdtrst                equ        0c1h
isp_data        equ        0c2h
isp_addh        equ        0c3h
isp_addl        equ        0c4h
isp_cmd                equ        0c5h
isp_trig        equ        0c6h
isp_contr        equ        0c7h
p5m1                equ        0c9h
p5m0                equ        0cah
t2h                equ        0d6h
t2l                equ        0d7h
;******************************************************************************
;引脚定义
pin                bit        p3.3                                ;标准IO
spout                bit        p3.4                                ;推挽输出
;******************************************************************************
;所用的寄存器
;00h--0bh        工作寄存器
;0ch--13h        堆栈
;******************************************************************************
;位状态
alestatus        bit        00h                                ;0为不报警,1为报警
;******************************************************************************
;isp参数定义(常数)
enable_isp        equ        3eh                                ;<12MHz
enable_isp1        equ        7dh
enable_isp2        equ        52h
ispwaitcmd        equ        00h
isprdcmd        equ        01h
ispwrcmd        equ        02h
isperasecmd        equ        03h
;******************************************************************************
;命令(常数)
;******************************************************************************
                org        0000h
                ljmp        start
                org        0003h
                reti
                org        000bh
                ljmp        t0_int
                org        0013h
                reti
                org        001bh
                reti
;******************************************************************************
;11.0592M晶震,延时25ms
dt25ms:
                mov        r6,#200
dt0:
                mov        r7,#125
dt1:
                mov        wdtrst,#00110001b                ;清看门狗
                nop
                nop
                nop
                nop
                djnz        r7,dt1
                djnz        r6,dt0
                ret
                org        0043h
;******************************************************************************
start:
                clr        ea
                mov        sp,#0ch
                mov        wdtrst,#00110001b                ;启动看门狗,看门狗溢出时间为142.2ms
                lcall        ioinit
                lcall        sysinit
;主程序开始
                lcall        go
                mov        r5,#32                                ;蜂鸣器叫800ms
main:
                lcall        dt25ms
                djnz        r5,main
                clr        alestatus                        ;停止鸣叫
main5:
                lcall        pcl                                ;测量脉冲宽度
                mov        a,t2h
                cjne        a,#4bh,main6
                mov        a,t2l
                cjne        a,#0ach,main7
                ljmp        main9
main6:
                jnc        main8
                ljmp        main9
main7:
                jnc        main8
                ljmp        main9
main8:
                setb        alestatus                        ;报警
                ljmp        main5
main9:
                clr        alestatus                        ;停止报警
                ljmp        main5
;******************************************************************************
ioinit:
                mov        p0,#0ffh
                mov        p1,#0ffh
                mov        p2,#0ffh
                mov        p3,#0ffh
                mov        p3m1,#00000000b
                mov        p3m0,#00010000b
                ret
;******************************************************************************
sysinit:
                mov        tmod,#11h                        ;t0,t1都为16位定时器方式
                mov        auxr,#04h                        ;先禁止t2工作,t2不需要12分频
                mov        th0,#0ffh                        ;200us定时,产生2.5KHz的信号驱动蜂鸣器
                                                                      ;实测2.5KHz频率能使蜂鸣器最响
                mov        tl0,#48h
                clr        psw.4                                ;第一组工作寄存器
                clr        psw.3
                clr        c
                clr        ex1
                clr        tf0
                clr        tf1
                clr        tr1
                setb        alestatus                        ;上电先叫一下
                ret
;******************************************************************************
go:
                setb        et0
                setb        ea
                setb        tr0
                ret
;******************************************************************************
;测量输入脉冲宽度
pcl:
                mov        wdtrst,#00110001b                ;清看门狗
                jb        pin,pcl                                ;如果是高电平需要等到变低
pcl1:
                mov        wdtrst,#00110001b                ;清看门狗
                jnb        pin,pcl1                        ;等待上升沿
                mov        t2h,#00h                        ;最大5.92ms
                mov        t2l,#00h
                orl        auxr,#10h                        ;启动T2
pcl2:
                mov        wdtrst,#00110001b                ;清看门狗
                jb        pin,pcl2                        ;等待脉冲结束
                anl        auxr,#0efh                        ;停止T2
                ret
;******************************************************************************
t0_int:
                jnb        alestatus,t0_int1
                cpl        spout                                ;蜂鸣器响
                ljmp        t0_int2
t0_int1:
                setb        spout                                ;蜂鸣器停止响
t0_int2:
                clr        tf0
                mov        th0,#0ffh                        ;200us定时
                mov        tl0,#48h
                reti
;******************************************************************************
                end





作者: 中华龙    时间: 2015-10-12 11:47
其实用个费舵机加个蜂鸣器即可。

作者: liuweilovr    时间: 2015-10-12 12:33
兄弟。到这里秀汇编。  服了。偶汇编可写不出这程序来。

作者: prowerboy    时间: 2015-10-12 12:43
单个蜂鸣器多少伏电压的?够响吗

作者: 炸香机    时间: 2015-10-12 12:44
一个拉烟开关和一个有源蜂鸣器搞定

作者: kiss500    时间: 2015-10-12 12:47
厉害

作者: 小哲    时间: 2015-10-12 13:02
联系厂商或者淘宝卖家量产吧

作者: xiaowang2183    时间: 2015-10-12 13:39


作者: hcc    时间: 2015-10-12 14:02
这东西炸鸡掉水里就嗝屁了啊!我上次就掉水沟了,BB叫不出来了!后来靠DVR录像找回的!所以DVR是王道!

作者: 水国大兵II    时间: 2015-10-12 14:05
玩汇编的是老手啊

作者: sdxgy    时间: 2015-10-12 15:24


作者: dexing    时间: 2015-10-12 15:35
(, 下载次数: 15)


作者: zhouyou    时间: 2015-10-12 16:02
汇编吗?  C还能看看,汇编全是门外汉。



作者: 依赖烟    时间: 2015-10-14 12:28
这东西好   我的cx20 掉在稻田里找了一下午没找到   太阳下山 提控回家

作者: nyway    时间: 2015-11-3 17:20
炸机把电池或者接收器炸坏了,就over了

作者: 侯伟玺    时间: 2015-11-4 05:08
楼主这个高端不太懂  但是买个蜂鸣器 插板子上 调参MODE里面BEEPER随便设置个开关不就OK?

作者: ttc    时间: 2015-11-5 02:11
hcc 发表于 2015-10-12 14:02
这东西炸鸡掉水里就嗝屁了啊!我上次就掉水沟了,BB叫不出来了!后来靠DVR录像找回的!所以DVR是王道!

没图传信号自由降落看你dvr如何王道?!


作者: ulwmgh    时间: 2015-12-28 19:26
你这个那几个角是 写入接口

作者: 随我乐吧    时间: 2015-12-28 20:39
楼主可是试一下用坏的舵机来做一个试试也管用

作者: mayiit    时间: 2015-12-29 08:39
楼主我想跟你说:没必要这么折腾,直接买一个有源蜂鸣器焊到飞控上不就OK啦,成本0.45,你这个太贵了

作者: 股股阳光    时间: 2016-1-2 20:00
中华龙 发表于 2015-10-12 11:47
其实用个费舵机加个蜂鸣器即可。

可以说得具体一点吗


作者: 18742200530    时间: 2016-1-26 20:15
不错嘛

作者: L缺碘    时间: 2016-1-26 20:41
总觉得汇编是神一般的存在

作者: nzg8899    时间: 2016-1-27 12:48
侯伟玺 发表于 2015-11-4 05:08
楼主这个高端不太懂  但是买个蜂鸣器 插板子上 调参MODE里面BEEPER随便设置个开关不就OK?

我就是这样 但是一个bb声音太小  想弄2个

作者: 侯伟玺    时间: 2016-1-27 20:44
nzg8899 发表于 2016-1-27 12:48
我就是这样 但是一个bb声音太小  想弄2个

留意的话 还是能听到的

作者: 雨不能停    时间: 2016-1-30 11:39
很多接收机不是带电压回传吗》。

作者: nanfudianchi    时间: 2016-1-31 15:59
安个儿童定位手表或者gps追踪器在飞机上,然后就可以定位了

作者: 破人破車    时间: 2016-2-6 20:56
我用C写的。  没找到大声音的蜂鸣器。用了一个普通的有源蜂鸣器

作者: li373737    时间: 2016-2-9 23:23
厉害

作者: one486    时间: 2016-8-21 09:43
DVR是王道!

作者: DoubleOSeven    时间: 2016-8-21 10:16
汇编写的。。。前辈。。。

作者: DooDoo512    时间: 2016-8-21 12:20
佩服。bl电调支持寻机功能,四个电机就是四个bb响

作者: boutd    时间: 2018-10-30 08:22
炸香机 发表于 2015-10-12 12:44
一个拉烟开关和一个有源蜂鸣器搞定

        噢噢 直接买成品好了




欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://bbs.5imx.com/) Powered by Discuz! X3.3