前段时间买了个树莓派2B,一直没用,元旦期间做出了这个无聊的玩意儿
先看效果,下面这个站就是搭建在树莓派上的,可以通过Web端获取传感器数据,控制GPIO接口。
[

My Raspberry Pi - 一个由树莓派驱动的小站](https://cdn.aoaoao.me/wp-content/uploads/2016/01/My-Raspberry-Pi-一个由树莓派驱动的小站-1024x575.png)
My Raspberry Pi - 一个由树莓派驱动的小站](https://cdn.aoaoao.me/wp-content/uploads/2016/01/My-Raspberry-Pi-一个由树莓派驱动的小站-1024x575.png)

URL:http://mysmpi.ngrok.natapp.cn
根据网络条件不同,打开有时会非常慢。。

原理

原理很简单,使用Flask框架开发,直接用Python的GPIO库进行操作。端口映射使用的是Ngrok,官方服务被墙了,这里用的是国人搭建的免费服务。

实现步骤

1.安装必要组件

总的来说需要装的组件有Python、Flask、GPIO库。如果使用的是官方镜像的话只需要安装Flask即可。

首先安装pip。右键这里另存为 并在树莓派中运行即可自动下载安装。

然后安装Flask。以Root权限执行下面命令即可安装

sudo pip install Flask

2.连接元件

这里根据大家的需要可以自己连接,我只是把我的连接方式说一下。

用到的元件有:杜邦线一把,面包板跳线一把、各种颜色的LED灯,220Ω电阻4个、电位器一个、有源蜂鸣器一个、lcd1602一个。

lcd的连接图如下:

[

Untitled Sketch 2_bb](https://cdn.aoaoao.me/wp-content/uploads/2016/01/Untitled-Sketch-2_bb-960x1024.jpg)
Untitled Sketch 2_bb](https://cdn.aoaoao.me/wp-content/uploads/2016/01/Untitled-Sketch-2_bb-960x1024.jpg)

再加上LED、蜂鸣器。。混乱的实物图:

[

psb](https://cdn.aoaoao.me/wp-content/uploads/2016/01/psb-768x1024.jpg)
psb](https://cdn.aoaoao.me/wp-content/uploads/2016/01/psb-768x1024.jpg)

 

实物图连接好后开始写代码。首先要实现打开首页时最左边的LED闪一下。代码如下:

@app.route(‘/‘)
def index():
GPIO.setmode(GPIO.BCM)
GPIO.setup(26,GPIO.OUT)
GPIO.output(26,GPIO.HIGH)
time.sleep(0.5)
GPIO.output(26,GPIO.LOW)
return render_template(‘index.html’)

注意这里设置time.sleep()的时间不能太长,否则首页打开会很慢
LCD屏的控制使用了rpimenu,github:https://github.com/lifanxi/rpimenu
其他的控制原理类似,这里就不多说了,代码打包下载:http://pan.baidu.com/s/1i4gSAQL
解压后先su 获取root权限然后执行下面命令即可

python web.py

出现下图就表示成功了。

[

搜狗截图20160102153349](https://cdn.aoaoao.me/wp-content/uploads/2016/01/搜狗截图20160102153349.png)
搜狗截图20160102153349](https://cdn.aoaoao.me/wp-content/uploads/2016/01/搜狗截图20160102153349.png)

默认端口设为了80,你可以在web.py第363行更改。

内网穿透

如果你的树莓派连接的是家用网络,那么外网可能并不能访问你的页面,因为你的宽带运营商可能把端口封了(移动就是这样)。想要实现外网访问,就要用内网穿透解决。国内比较知名的是花生棒,直接网线插上就能用,但硬件需要额外购买。不想花钱用Ngrok是个不错的选择,但他的官方服务被墙了,我用的是国人用阿里云搭建的免费服务natapp.
主页地址:http://natapp.cn/
往下拉到客户端下载,由于树莓派是arm架构的,我们就下载“Linux ARM”.下载后解压到树莓派上。在此目录下打开终端,获取root后执行下面命令:

./ngrok -config ngrok.cfg -subdomain myapp 80

其中“myapp”为你自定义的域名,日后你可以通过http://myapp.ngrok.natapp.cn访问网站。
最后面的80为端口,一般不用改。
执行后会出现下面界面,这就表示内网穿透成功了,可以访问http://自定义域名.ngrok.natapp.cn试试看能不能打开
[
搜狗截图20160102154321](https://cdn.aoaoao.me/wp-content/uploads/2016/01/搜狗截图20160102154321.png)
搜狗截图20160102154321](https://cdn.aoaoao.me/wp-content/uploads/2016/01/搜狗截图20160102154321.png)

打开的速度肯定比较慢,毕竟不是专业机房。。

最后附上一张树莓派2的引脚示意图:

[

6a40313b5bb5c9ea80201914d139b60038f3b355](https://cdn.aoaoao.me/wp-content/uploads/2016/01/6a40313b5bb5c9ea80201914d139b60038f3b355.png)
6a40313b5bb5c9ea80201914d139b60038f3b355](https://cdn.aoaoao.me/wp-content/uploads/2016/01/6a40313b5bb5c9ea80201914d139b60038f3b355.png)

P.S.网站上线后,LCD收到了第一条消息:

[

psb (1)](https://cdn.aoaoao.me/wp-content/uploads/2016/01/psb-1.jpg)
psb (1)](https://cdn.aoaoao.me/wp-content/uploads/2016/01/psb-1.jpg)

 

。。。。[

12926209_934800](https://cdn.aoaoao.me/wp-content/uploads/2016/01/12926209_934800.jpg)
12926209_934800](https://cdn.aoaoao.me/wp-content/uploads/2016/01/12926209_934800.jpg)
。。。。