最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 电子DIY > led显示/灯光 > led显示 >

CDMA自动校时袖珍时钟 (支持语音呼叫)

时间:2015-06-16 21:16来源:www.crystalradio.cn 作者:gaochongjun1 点击:
本帖最后由 gaochongjun1 于 2014-2-7 14:29 编辑 电子钟大家肯定比较熟悉,从各大超市到小街摊贩,无不有它们的身影。然而市面上的电子钟,基本都是一样,装上电池就标志着必须校调好时间,才能投入使用,如果中途断电,钟表就无法走时了,同时走时的误差也
本帖最后由 gaochongjun1 于 2014-2-7 14:29 编辑

CDMA自动校时袖珍时钟 (支持语音呼叫) 

        电子钟大家肯定比较熟悉,从各大超市到小街摊贩,无不有它们的身影。然而市面上的电子钟,基本都是一样,装上电池就标志着必须校调好时间,才能投入使用,如果中途断电,钟表就无法走时了,同时走时的误差也是一个不可避免的问题。

        针对这些问题,使用ATMEGA16+MC8331A制作了一款可以自动从手机基站获取标准原子时的时钟,这样就保证了时间的准确性。本机最不同于手机的一点在于即便是没有UIM电话卡,同样可以获取到标准时间,同时还实现了接打电话的功能及一些显示方面的设置,另外可以利用自带的TCP/IP协议栈轻易实现网络天气预报功能。

        整机成本不过百元,而市场上所说的“电波钟”,百元以下的产品我是没有找到。至于选择CDMA网络授时的原因,我们可以先看看短波、中长波授时台,我国只有一台——位于陕西天文台的国家授时中心,但其电波并没有覆盖到我国的所有领土,比如西部地区的高原,如果接收环境不好的话,根本无法进行授时;因此,信号不稳定是放弃电波授时台的原因。曾今试验过GPS授时,但是GPS需要一根笨重的天线才能保证室内信号的质量,因此并不适合袖珍时钟的制作。最后,选择了CDMA无卡授时,只要CDMA手机信号能覆盖到的地方,时钟都能正常工作,同时还实现了实现语言通话,一举两得。

       有人可能会问,现在的智能手机基本上带有从“网络获取时间”的功能,为什么还要有这样的一部时钟,其实随着电子设备的发展,现代的钟表更多的用途是作为一种装点的摆设,以及一目了然的时间显示,当然,手机是不能作为摆设放在什么地方的……
       
       最后一点,放出这个作品,是为了抛砖引玉,希望能引发更多的思维,同时也提供了一个交流的平台。要说作品和坛内的老前辈相比,实在是相差甚远,不敢匹及的,而且坛子的主题也是模电,不是数电,呵呵。

       时钟支持红外遥控,取消了所有按键,使机身更简洁。有3钟显示模式,包括经典模式、大字体模式、完整模式,可通过遥控器切换,并且将自动保存当前的显示模式。大字体模式显示见下文之图,非常适合我这样的近视眼使用。同时还支持实时温度显示,Zeller算法计算星期。

关于语言通话功能,时钟支持拨打电话,接听电话,同时提供显示当前的信号强度的界面。

授时原理:
CDMA自动校时袖珍时钟 (支持语音呼叫) 
图中,Client是终端(本机),server可以看成是服务器。整个授时过程可以说是本机与基站RTC两个时钟的校对。
开机时,MC8331A完成设置的读取及射频模块的初始化,开始搜索基站,并选择信号质量最优的基站连接,进行网络注册及身份验证,与基站成功握手后,实时读取基站上RTC的时间,时钟的时间就可以与标准原子时相校对了。至于没有UIM电话卡也能进行授时的原因是模块支持以漫游身份注册网络,并且重要的是没有身份模块验证机制,这一点是大多数手机所不能的。

CDMA自动校时袖珍时钟 (支持语音呼叫) 

CDMA自动校时袖珍时钟 (支持语音呼叫) 

CDMA自动校时袖珍时钟 (支持语音呼叫) 

具有自动开关LCD背光的功能,在白昼时自动关闭背光以节省耗电量(可设置)。
CDMA自动校时袖珍时钟 (支持语音呼叫) 

CDMA自动校时袖珍时钟 (支持语音呼叫) 

软件部分:
        使用BASCOM语言已经足够实现钟的所有功能,而且节省了开发时间。不过因为事情较多,业余时间较少,历时多个月,一点一点地构建起来。

关于源代码:
        源代码已上传,见百度网盘:http://pan.baidu.com/s/1reRiI
        编译环境BASCOM V2.0.1,按F7键编译生成hex文件,直接烧入单片机即可运行,单片机熔丝位设置见原理图。

MC8331A的基本控制指令:
        MC8331A采取的指令标准是中兴的AT指令标准,其具体内容可在《中兴模块AT指令手册》一文中找到。下面的控制指令在调试中可能会用到,因此贴在此处供参考。

        查询基站RTC时间:AT+CCLK?

        接通语音通话:ATD+电话号码+;   ,例如:ATD10000; 即可拨通电信10000号服务台。
        挂断语音通话:ATH
        接听呼叫       :ATA

在使用电路前,必须先对模块波特率进行设置,方法如下:
        1、MC8331A模块的ON/OFF引脚与MCU连接。
        2、对模块波特率进行设置,将之前留出的RXD,TXD接入TTL转接器(如MAX232),再通过串口接入电脑。计算机运行超级终端,打开串口,波特率115200,无数据流控制。这样接线的目的是单片机完成模块的复位启动,由电脑对模块进行操作。
        3、电路(MCU与MC8331A)上电,约3秒后,模块复位,屏幕出现+ZIND:8,约1秒后屏幕出现+ZIND:0。过一段时间后输入AT+CCLK?,回车,看到模块返回当前时间,则说明测试成功。
        4、键入AT+IPR=19200设置模块的USART波特率,回车,模块返回OK表完成设置。
        5、关闭整机电源,所有电路按下文图纸复原,重新打开整机电源,待系统初始化后,LCD正常显示时间,此后模块即可投入使用。

关于Zeller算法:
        用如此篇幅提出Zeller算法是有原因的,因为要满足Zeller算法,还有很多需要注意的地方,而网上的很多资料不完整,导致某些特殊的日期计算结果出错,下面把完整的计算方法写出来。
        蔡勒公式:W =〔 [c/4] - 2c + y + [y/4] + [13 * (m+1) / 5] + d - 1 〕% 7
        其中变量W为星期,c为世纪数,y为年数,m为月数,d为天数。
有两点需要特别注意的地方:第一个就是当年的1,2月要当成上一年的13,14月进行计算;第二个就是对于负数的取模运算,可以参考下面的BASIC代码,很容易翻译为c语言。

   While Intweek <= 7
      Intweek = Intweek + 7
   Wend

   Intweek = Intweek Mod 7
   Intweek = Intweek + 7
   Intweek = Intweek Mod 7


硬件部分:
        时钟使用的是ATMEGA16单片机+MC8331A C网模块,下图是之前测试时所拍摄的CDMA模块照片供参考:

CDMA自动校时袖珍时钟 (支持语音呼叫) 
MC8331A CDMA模块可在淘宝上购得,需要指出的是,GSM也有基站授时的服务,但误差比较大。

电路原理图
CDMA自动校时袖珍时钟 (支持语音呼叫) 
CDMA自动校时袖珍时钟 (支持语音呼叫) 
CDMA自动校时袖珍时钟 (支持语音呼叫) 
CDMA自动校时袖珍时钟 (支持语音呼叫) 
CDMA自动校时袖珍时钟 (支持语音呼叫) 

        时钟采用两块单面万能板叠加而成,两面都装有元器件,LCM与第一层板之间采用螺丝柱固定,保证整机的牢固性。MC8331A模块的焊接也是一个很令人头疼的问题,如果觉得力不从心的话,可以将插座拆去再飞线(注意不要拆坏焊盘)。由于机身太小,喇叭使用的是手机的10mm口径外放扬声器,实测虽然音量小了不少,但是还是足够听清对方的语音了。

        模块对电源要求比较严格(3.3~4.25V),因此采用LTC3026高性能VLDO,在装这部分电路时,一定要注意电感线圈应远离C网模块,以免影响其射频性能,同时,单片机的时钟晶振引脚最好背对MC8331A射频区域PCB挖空区(见模块技术手册)。如果供电电压比较稳定的话,可以在VCC上串接大电流二极管代替VLDO。如果网络信号较差时,模块会自动增大射频发射功率,当功率最大时,通话电流可高达800mA(待机时电流在50mA左右)。如果供电小于8V,图中的7805稳压需要选择低压差的稳压块,如果供电小于5V,需要直通该部分电路。

       另外,图中的RV1的阻值需要根据LCD的显示效果进行调整,对比度越高,显示越清晰,所谓的“鬼影”也越清晰,反之亦然。

调试杂项:
        使用时发现如果红外接收头暴露在阳光直射下,输出信号拉低会导致触发下沿中断,MCU转去执行中断服务程序而导致走时暂时中断,解决这个问题很简单,在红外接收头前安装红外滤光片即可。
        关于通话质量,有一定需要说明,由于时钟机身比较小,驻极体麦克风与扬声器的放置位置直接关系到通话时回声的大小,具体可以根据实际测试与AT+ECHO指令相配合,最大限度保证语音通话的质量。
        另外一点调试的经验,电信的用户可以到营业室绑定对讲,这样调试语音通话就不用出电话费了。

红外遥控:
        现在高档些的时钟基本都有遥控功能。本机采用的是NEC编码的红外遥控器,这种遥控器一般来说市场上有售。
CDMA自动校时袖珍时钟 (支持语音呼叫) 
(遥控器背面无型号)

如果要采用其它遥控器的话,需要对程序进行一点修改,即酌情修改地址码、数据码。遥控解码程序位于INT0中断服务程序中,在BASCOM按Ctrl+G转到代码的第518行即可找到。

遥控器10/16进制数据码对照表(地址码128,0x80)

        Data code     hex                   Title
        -----------------------------------------------------
            18    |       0x12    |         (POWER)          
            26    |       0x1A    |         Mode               
            1      |       0x1      |         (Play/Pause)           
            4      |       0x4      |         EQ                    
            2      |       0x2      |         (forward)                   
            8      |       0x8      |         RPT                


简单地说明一下遥控器的使用方法:
        在时钟状态下时,按电源键可安全关闭时钟,按下“Mode”键可查询信号强度,按下“播放”键可切换显示模式,按下任意数字键或“EQ”键进入拨号盘
        在拨号状态下,按压“快进”键可删除光标前的一个数字,相当于退格,按下“EQ”键可清除电话号码,按压“RPT”键可拨通电话
        在通话状态下时,按压电源键可挂断电话,按压“RPT”可接听电话


总之,日后可改进的地方有很多,比如可以增加未接来电显示功能,天气预报功能等。其中天气预报正在内测中,目前还不太稳定。


补充内容 (2014-2-11 14:55):
走线在内部,见14楼

补充内容 (2014-4-19 12:29):
最后修订的源代码详见40,41,42,43楼,已修正全部已知bug。感谢大家的支持
(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容