12月 15

raspberry pi GPIO 控制步进电机

  其它部分的工具(python-setuptools,python-dev)已经在初始化时安装。现在安装GPIO
sudo easy_install RPi.GPIO

  需要在root权限下调用。如果不想使用管理权限,也可以用第三方的WiringPi,使用easy_install直接安装。
  接上步进电机和驱动板。
image
板子是V2.0的,内存512M的,使用GPIO图如下:
Raspberry-Pi-GPIO-Layout-Revision-2

#!/bin/env python
# -*- coding:utf-8 -*-
# Revision:
# Date:        2012-12-11
# Author:      simonzhang
# Email:       simon-zzm@163.com
# Web:         www.simonzhang.net
# ------------------------------- 
import time
import RPi.GPIO as GPIO

#要使用的四个针脚
Pins = [17,18,22,23]

#初始化。使用BCM2835标准。具体对应要查说明
#http://elinux.org/RPi_BCM2835_GPIOs
GPIO.setmode(GPIO.BCM)
for pin in Pins:
    try:
        GPIO.setup(pin, GPIO.OUT)
        GPIO.output(pin, False)
    except:
        pass

# 顺时针旋转矩阵
Seq1 = []
Seq1 = range(0, 4)
Seq1[0] = [1,0,0,0]
Seq1[1] = [0,1,0,0]
Seq1[2] = [0,0,1,0]
Seq1[3] = [0,0,0,1]

# 逆时针旋转矩阵
Seq2 = []
Seq2 = range(0, 4)
Seq2[0] = [0,0,0,1]
Seq2[1] = [0,0,1,0]
Seq2[2] = [0,1,0,0]
Seq2[3] = [1,0,0,0]

#初始化步数
setup_count = 0
while 1:
  for set in range(0, 4):
      # 小于100步按照逆时针转,100步到200步之间按顺时针转
      print "setup %s" % setup_count
      if 100 < setup_count < 200:
          l = Seq1[set]
      else:
          l = Seq2[set]
      for ls in range(len(Pins)):
          if l[ls] == 1:
              GPIO.output(Pins[ls], True)
          else:
              GPIO.output(Pins[ls], False)
      # 大于200步初始化为0,否则加1
      if setup_count < 200:
          setup_count += 1
      else:
          setup_count = 0
      # 需要做一定延迟,最小延迟应该是0.01s
      time.sleep(0.1)

raspberry pi GPIO 控制步进电机 python 源码

12月 14

改进建议

  经过一段时间的折腾,对RaspBerry pi基本上熟悉了,这个骨头版的壳也挺适合接传感器的。但是在接传感器时要经常插拔,特别是电源经常插拔,经常会导致板子松动。直接利用板子上的孔,在放两个M3的铜柱就稳定多了。
image

image

12月 05

go语言跑在Raspberry pi 上

  之前go语言在HTC的android手机上运行正常,所以在raspberry pi上也应该没有问题。所以测试一下,如果可以又多了一种开发方法。下载go1.0.3.

安装需要的包
$ sudo apt-get install mercurial bison gcc libc6-dev ed gawk make git

配置环境变量,将以下配置放在profile文件的最底部,为了方便直接用go源码编译,直接放在家目录里。
$ sudo vi /etc/profile
export GOARM=5
export GOROOT=/home/pi/go
export GOARCH=arm
export GOOS=linux
export PATH=$PATH;/home/pi/go/bin/

开始编译
$ cd go/src/
$ time ./all.bash

经过漫长的等待终于编译完了,耗时如下。
real 49m48.591s
user 44m33.760s
sys 2m7.540s

直接用之前的代码测试http://www.simonzhang.net/?p=1346。运行成功。

12月 03

raspberry pi 初步和远程配置

  买raspberry pi主要因为推荐使用python。今天的板子总算到了,先照几张照片。
  主板的样子。
image
  外壳都是散的自己安装。
image
  组装完成。大小和鼠标差不多。
image

  系统安装和初步配置网上资料很多,就不重复了。直接来调试连接远程,方便将来开发。
首先升级一下系统,测试了一下远程连接ssh没有问题
$ sudo apt-get update
开始安装vnc,方便远程桌面开发
$ sudo apt-get install tightvncserver
启动服务
$ vncserver
查看监听端口
$ netstat -atnp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 2795/Xtightvnc
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 2795/Xtightvnc
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN –
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN –
tcp 0 52 192.168.1.128:22 192.168.1.73:4958 ESTABLISHED –

从图中看到vnc有两个进程,两个监控端口,端口5901是RFB协议的VNC客户端连接,端口6001是X应用程,也序可以连接到VNC服务器。因为没有5801所以不能通过浏览器访问。直接下个windows下的客户端tightvnc客户端,连接成功。下一步可以开发了。系统上安装的是python2.7 和python3
image