一、环境配置
基本上Ångström上环境都配好了,可能需要额外安装python。
首先使用opkg update指令获取可用更新包列表。
# opkg update
安装python
# opkg install python
安装git
#opkg install git
二、硬件连接
本实验使用Beaglebone P8 12脚,连接方式为:P8 12脚-限流电阻-LED正极-LED负极-地。
三、命令行控制LED
P8 12脚对应为GPIO1_12,计算得出32*1 +12 = 44,这是Linux内对应的GPIO号
首先改变目录
# cd /sys/class/gpio
在此目录下并未看到任何GPIO44的信息,故使用命令
# echo 44 > export
此时出现GPIO44了,进入此目录
# cd gpio44
通用GPIO
的设置主要有方向 +
电平,对应direc
tion
和value
,默认direction
和value
值如下:
设置方向:
# echo out > direction
设置电平:
# echo 1 > value
此时LED灯亮
# echo 0 > value
此时LED灯灭
完成上述操作后,需要从用户空间导出
# cd /sys/class/gpio
# echo 44 > unexport
上面就是通过命令行设置GPIO电平。
四、通过Shell脚本控制GPIO
首先创建Shell脚本LightOn.sh 和 LightOff.sh
# cd ~
# nano lightOn.sh
输入以下内容:
#!/bin/bash
echo 44 > /sys/class/gpio/export
echo out >/sys/class/gpio/gpio44/direction
echo 1 > /sys/class/gpio/gpio44/value
输入完成后按ctrl + x,Y保存退出。
同理创建lightOff.sh
# nano lightOff.sh
#!/bin/bash
echo 0 > /sys/class/gpio/gpio44/value
echo 44 > /sys/class/gpio/unexport
完成lightOn.sh和lightOff.sh的创建后,查看文件权限
# ls –l
为文件加上可执行权限
# chmod +x lightOn.sh
# chmod +x lightOff.sh
此时已有执行权限,下列执行脚本。
# ./lightOn.sh
此时LED灯亮
# ./lightOff.sh
此时LED灯灭
脚本测试成功后,下面使用linux内置调度器cron来定时调用上述两个脚本,完成灯亮灯灭的操作。
首先,先更新一下系统时间
# mv /etc/localtime /etc/localtime.old
# ln –s /usr/share/zoneinfo/Asia/Hong_Kong/etc/localtime
# nano /etc/default/ntpdate
加上
NTPSERVERS="pool.ntp.org"
Ctrl + x,Y保存退出
# ntpdate-sync
# date
得到当前时间:
使用nano编辑crontab
# EDITOR=nano crontab –e
在文件末尾处加上
5 20 * * * /home/root/lightOn.sh
6 20 * * * /home/root/lightOff.sh
表示20:05分调用lightOn.sh,20:06调用lightOff.sh。
五、Python控制GPIO
首先,安装Adafruit Beaglebone IO Python库。
# opkg install python-pip python-setuptools python-smbus
更新较为耗时,耐心等候
# pip install Adafruit_BBIO
完成BB库安装后,测试一下
# python
# import Adafruit_BBIO
若无报错则无问题,退出
# quit()
下面通过python实现LED的控制。
# nano blink.py
#!/usr/bin/python
import Adafruit_BBIO.GPIO as GPIO
import time
GPIO.setup("P8_12", GPIO.OUT)
while True:
GPIO.output("P8_12", GPIO.HIGH)
time.sleep(1)
GPIO.output("P8_12", GPIO.LOW)
time.sleep(1)
保存退出。
运行脚本:
# python blink.py
此时可以发现灯闪烁,按ctrl + c可停止脚本运行。
六、使用Bonescript控制GPIO
Bonecript可通过Cloud9 IDE开发,实现在浏览器端对Beaglebone进行控制。登陆http://192.168.1.103:3000
在Demo下有一个blinkled.js,代码如下:
var b = require('bonescript');
var ledPin = "P8_13";
var ledPin2 = "USR3";
b.pinMode(ledPin, b.OUTPUT);
b.pinMode(ledPin2, b.OUTPUT);
var state = b.LOW;
b.digitalWrite(ledPin, state);
b.digitalWrite(ledPin2, state);
setInterval(toggle, 1000);
function toggle() {
if(state == b.LOW) state = b.HIGH;
else state = b.LOW;
b.digitalWrite(ledPin, state);
b.digitalWrite(ledPin2, state);
}
将ledPin改为P8_12
var ledPin = "P8_12";
完成修改后,点击run运行
可以看见P8_12连接的LED与板载USR3一同闪烁。