作品基于intel Cyclone IV E EP4CE10F17C8 FPGA板卡,主要开发环境为Quartus Ⅱ,编程并实现了多功能温湿度电子钟。本作品在实现显示实时时间的基础上,设计并完成了设置闹钟、改变闹钟铃声、显示实时温度和实时湿度、基于以太网通信协议的实时视频传输等功能。在未设置闹钟时,作品可显示实时时间(具体包括年月日时分秒),以及作品所在环境的实时温湿度;在设置闹钟后,当时钟时间达到设置的闹钟时间时,蜂鸣器便会以预设的音乐曲谱振动发声,即闹钟响铃;当作品所在环境的温度急剧上升,将摄像头采集的实时图像通过以太网实时传输给用户,用户可远程观察是否发生火灾,帮助用户避免因火灾带来的生命财产损失。总的来说,本作品可以作为多功能温湿度电子钟,在任何需要时钟的场合都具有很强的实用性。且本作品能监控实时温湿度和火灾报警的功能,这对于需要时钟显示时间和火灾报警的室内具有很强的适配性。故本作品的设计贴合实际,应用场景适配性良好,发展前景十分广阔,具有很强的现实意义。
基础功能:1)按键切换2)报警功能3)日期、时间以及报警时间的显示
拓展功能:1)蜂鸣器报警音乐2)实时温度的显示3)实时湿度的显示4)基于以太网通信协议的实时视频传输。
在正常情况下,本作品可以作为家庭版多功能温湿度电子钟,通过控制按键分别显示当前的日期(年月日)、时间(时分秒)、闹钟时间(时分秒)、实时温度和实时湿度,当设置的闹钟时间到了的时候,则播放音乐,提醒用户将要做的事情。当在房间内的温度和湿度出现出现异常,温度急剧上升,湿度急剧下降时,此时则将房间内的实时情况通过以太网的实时视频传输给用户,用户则远程观察家内是否发生火灾,做到未雨绸缪,做到预防火灾的发生,保障每家每户的财产安全。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便。
接口原理图:
74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7'输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。
接口原理图:
相比于有源蜂鸣器,无源蜂鸣器成本更低,声音频率可控,需要输入PWM方波才能驱动其发声,通过改变PWM波的频率,可以实现不同音调的改变;通过改变PWM波的占空比,可以实现声音大小的改变,所以我们只需要产生不同频率和占空比的PWM方波去驱动无源蜂鸣器就能让无源蜂鸣器发出不同的音调了。
接口原理图:
同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)是有一个同步接口的动态随机存取内存(DRAM)。通常DRAM是有一个异步接口的,这样它可以随时响应控制输入的变化。而SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步。时钟被用来驱动一个有限状态机,对进入的指令进行管线(Pipeline)操作。这使得SDRAM与没有同步接口的异步DRAM(asynchronous DRAM)相比,可以有一个更复杂的操作模式。
接口原理图:
OV5640 的 CMOS 类型数字图像传感器。该传感器支持输出最大为 500 万像素的图像 (2592x1944 分辨率),支持使用 VGA 时序输出图像数据,输出图像的数据格式支持 YUV(422/420)、YCbCr422、 RGB565 以及 JPEG 格式,若直接输出 JPEG 格式的图 像时可大大减少数据量,方便网络传输。
以太网 PHY 芯片型号为 LAN8720A,是低功耗的 10-BASET/100-BASE-TX 全双工以太网 PHY 层芯片,支持 10Mbps 和 100Mbps,I/O 引脚电压可 变,符合 IEEE802.3-2005 标准,支持通过 RMII 接口与以太网 MAC 层通信,可通过自协 商的的方式与目的主机实现最佳的连接方式(调整最佳速度和双工模式)
接口原理图:
可以直接复制到.qsf文件中:
set_location_assignment PIN_E16 -to key_in[3]
set_location_assignment PIN_J11 -to buzzer
set_location_assignment PIN_R1 -to ds
set_location_assignment PIN_E15 -to key_in[2]
set_location_assignment PIN_M1 -to key_in[1]
set_location_assignment PIN_M2 -to key_in[0]
set_location_assignment PIN_L11 -to oe
set_location_assignment PIN_B1 -to shcp
set_location_assignment PIN_K9 -to stcp
set_location_assignment PIN_L14 -to dht11
set_location_assignment PIN_E1 -to sys_clk
set_location_assignment PIN_M15 -to sys_rst_n
set_location_assignment PIN_R4 -to sdram_clk
set_location_assignment PIN_R9 -to sdram_cke
set_location_assignment PIN_R12 -to sdram_cs_n
set_location_assignment PIN_R11 -to sdram_ras_n
set_location_assignment PIN_R10 -to sdram_cas_n
set_location_assignment PIN_L9 -to sdram_we_n
set_location_assignment PIN_R13 -to sdram_ba[0]
set_location_assignment PIN_R14 -to sdram_ba[1]
set_location_assignment PIN_M11 -to sdram_addr[12]
set_location_assignm