2月 05

raspberry pi 串口控制51单片机

  制作小车都用raspberry pi上的口有些麻烦,所以把一些基础控制给51单片机解决,raspberry pi控制高层应用。所以测试一下raspberry pi串口连接调试51单片机。
  第一步: 
sudo apt-get install python-serial
sudo easy_install pyserial

  第二部接线部分图
  raspberry pi板子串口接线图

raspberry 串口接线图1

raspberry 串口接线图1


  杜邦线连接
IMAG1302-1 
raspberry 串口接线图3

raspberry 串口接线图3

 

  代码部分
  raspberry pi python串口控制代码

#!/bin/env python
# -*- coding:utf-8 -*-
# -------------------------------
# Filename:    
# Revision:    
# Date:        2013-02-5
# Author:      simonzhang
# Email:       simon-zzm@163.com
# WWW:         www.simonzhang.net
# -------------------------------
import serial
import time

#### 定义小灯亮灭初始值
i = 0 
#### 实例化串口
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5)
for j in range(10):
    if ser.isOpen() == False:
        ser.open()
    #### 每次循环对上值次取反
    if i == 0:
       i = 1
    else:
       i = 0
    #### 向串口发送字符
    ser.write(chr(i))
    #### 获取串口返回值
    #### linux为福阻塞模式,在阻塞模式下
    #### 会报错,所以抱起来就好了。
    try:
        re = ser.readlines()
    except:
        pass
    print re
    time.sleep(2)

  51单片机代码

#include 
#include 
typedef unsigned char uint8;
typedef unsigned int  uint16;


uint8 num;
sbit D0 = P0^0; 

void init()
{
	SCON = 0x50;
    TMOD = 0x20;

	TH1 = 0xFD;
	TL1 = 0xFD;
	TR1 = 1; //打开定时器
	ES  = 1;
	EA  = 1; //打开总开关
}

void interrupt_uart() interrupt 4
{
	if(TI)
	{
		TI = 0;
		REN = 1;
	}
	if(RI)
	{
		RI = 0;
		num = SBUF;	
		if (num == 1)
		{
			D0 = 0;
			SBUF = 0;
		}
		else
		{
			D0 = 1;
			SBUF =1;
		}
		REN = 0;
	}
}


main()
{
	init();
	while(1);
}

源码下载
raspberrypito51

2月 04

raspberry pi 开机wifi自动启动并发邮件通知(二)

比之前脚本添加了,测试公网IP的函数。
def get_global_ip():
get_html = urllib2.urlopen(‘http://iframe.ip138.com/ic.asp’).read()
_re_ip = re.compile(r’\d{2,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}’, re.DOTALL)
_global_ip = _re_ip.findall(get_html)[0]
return _global_ip

代码下载NotificationIP.py

1月 30

手工制作51单片机 电子表

  家里小孩老是乱调表,本来打算做个没有外部按键的表,但是后来觉得还是难度太大,还是搞个简单的吧。
  开始准备材料。亚克力板、杜邦线、51单片机配件一套(晶振使用12M的)、STC12C5A60S2一块、s8050三极管5个,电池盒一个、共阴极带时间点数码管一个,5X7cm洞洞板一块,按钮两个,M3铜柱螺丝若干。材料准备完毕。

部件准备

部件准备


  开始手工切割亚克力板并钻孔。由于疏忽把前面的板子也钻上空了。郁闷。
手工制作51单片机电子表,切割亚克力板

手工制作51单片机电子表,切割亚克力板


  首先将51单片机,和面板焊好。
手工制作51单片机电子表,初步组装

手工制作51单片机电子表,初步组装


  接线的工作比较麻烦,线千万不能接错,要不就混乱了,不是直接插拔的比较麻烦。花了一个晚上才搞定。
手工制作51单片机电子表,线路焊接

手工制作51单片机电子表,线路焊接


  开始组装,组装完毕发现一个数码管不亮,回头还是要查查。
手工制作51单片机电子表,组装完成

手工制作51单片机电子表,组装完成


  调整好时间,给大家看看。郁闷了,大部分人都认为我这个是“定时炸弹的引爆装置”。
  源代码比较简单。可下载51单片机电子表源码

1月 29

CentOS 下收集CPU温度

  服务器自动重启,怀疑与温度过高有关。直接检测cpu温度,等重启后,查看是否温度问题。
  操作系统CentOS 6.2 ,内核必须是6.22以上的。使用senosor。

# yum install -y lm_sensors
配置
# sensors-detect

载入模块
# modprobe coretemp

查看温度
# sensors
成功看到CPU温度。

用脚本放在crontab中循环跑,等重启了查查看是否温度过高。
#!/bin/sh
log=’/root/temperature.log’
get_data=`date +’%Y-%m-%d %k:%M’`
echo $get_data >> $log
echo `sensors` >> $log