树莓派小显示器模拟带温度显示的时钟



玩树莓派也有半年了吧,玩到9月份的时候中断了一下,因为我可爱的女儿出生了 ^_^ 这下树莓派在家也真有应用的场景了。为了方便今后的使用,先为树莓派买了个7寸的电容屏,1024*600分辨率的。这货怎么说呢,见仁见智了。方便性易用性确实有,做点随手点击就能操作的应用还是可以的,但受制于树莓派本身的性能,如果打算拿他看网络视频则对流畅度千万别抱太大希望。

作为练手的应用,先模拟一个带温度显示的时钟。简单起见,直接搞成Web版的,到时候浏览器F11全屏得了。

(山寨感十足,不喜勿买)


首先,得让显示器亮起来。用卖家给的方法一次成功:
修改/boot/config.txt,在文件最后加:
max_usb_current=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
关机。连上显示器后重新开机。

然后就可以制作网页了。
制作时钟并不难,无非就是一堆js和css,网上随便一搜就有一堆。
获取温度也不难,参考 http://blog.csdn.net/ki1381/article/details/51841431。这回简单的自己焊了个18B20的模块。


那如何将温控探头获取的数据嵌入网页,并且支持定时刷新,而又相对独立于时钟的刷新呢?

我的思路还是继续用jQuery和ajax。具体说来细化的步骤如下:

1 编写一个python脚本(stp.py)用于解析当前温度数据;

#!/usr/bin/env python 

import sys

def GetTemp(filename):
    lines = open(filename,'r').readlines()

    lineWithTemp = lines[1]
    
    items = lineWithTemp.split('=')

    
    tempStr = items[1]
    tempVal = float(tempStr) / 1000.0

    return round(tempVal,1)


def main():
    tmp = GetTemp("/sys/bus/w1/devices/28-0416549011ff/w1_slave")
    print 'T: ' + str(tmp) + ' C'

if __name__ == "__main__":
  main()

2 编写一个php(tp.php),在它里面调用这个python脚本由此实现数据的读取。这个php的角色类似于asp.net中的ashx,用header函数指定text/plain;

<?php
ini_set('display_errors','On');
header('Content-type: text/plain');
system('./stp.py');
?>


3 主页面(a.html)用ajax调用tp.php,并实现定时刷新(5秒);

$(document).ready(function(){
	$(function(){
		function showTemp()
		{
			htmlobj = $.ajax({ url: "tp.php", async: true,
                    			success: function () {
                       				$("#lbTemp").html(htmlobj.responseText);
                    			}
                 		});
		}		
		setInterval(showTemp,5000);
	});			
});
<!--用于显示温度的span的id就叫lbTemp-->





发布了122 篇原创文章 · 获赞 61 · 访问量 53万+

猜你喜欢

转载自blog.csdn.net/ki1381/article/details/54018642
今日推荐