您的位置:首页 > 编程语言 > ASP

raspberry pi 状态监视器 + wifi + wifi ap

2013-11-10 16:03 309 查看
买树梅派快一年了,还是没有想好这玩意能做点啥.最近闲着没事,就拿出来折腾. 但是我没有显示器,只能通过wifi 连ssh 但这样就不能实时监视她在干什么,就连了一个小显示屏,用来显示cpu利用率,内存使用率以及开机时间等.另外,使用路由器的wifi联树梅派有时会非常卡, 于是就用树梅派的无线网卡搭建了一个ap . 再也不卡了.

先上图:



另一张



功能介绍

监视器主要由 显示屏, 4位的拨码开关, 2个按键开关组成.

屏幕亮大约30s后会自动关闭(为了省电, 同时也为了延长屏幕的使用寿命)

屏幕关闭后, 当按一次最右侧的按键后屏幕会再次点亮. 在屏幕处于点亮状态时按一次左侧按键,监视器会在上面两个界面间切换.

拨码开关的作用:

从左到有将拨码开关依次定义为 1,2, 3,4

(注意本文中所讲的拨上是指拨码开关闭合, 数据线上为0 的状态, 拨下是指拨码开关断开, 数据线为1的状态.)

1号 开关 拨上时表示 要关闭系统,系统在10s后会关机. 拨下时系统正常运行.

2号 开关 没有使用.

3号开关 拨上时连接路由器的wifi , 拨下时关闭wifi(省电)

4号开关 拨上时raspberry pi 自己建立一个wifi ap 可以用手机或电脑搜索到, ap 名字是"raspberrypi" 拨下时关闭ap.

大致功能就是这些, 下面说一下实现, 这部分需要一定的linux基础, 熟悉一些基本的linux命令, 能看懂shell脚本和c 语言更好.

首先是硬件连接

我的屏幕是一个项目剩下的,因此没有必要买一样的, 找一个比较好控制的.

我的屏幕需要四根信号线.

拨码开关和按键共需要六根线, 至于这两个的接线方法,自己百度一下.

给个小窍门(按键开关一共四个腿, 在按键开关的底部有一个槽, 在槽一侧的两个腿是相连的, 槽两侧的两个腿是断开的)

还要引出3v3的电源线和地线.

接着是软件实现:

下载源码

我的代码+配置文件

lcd.4.0.tar 文件目录及说明

lcd/629interfaces
lcd/font.h
lcd/free
lcd/init.sh
lcd/install
lcd/interfaces
lcd/lcd.c
lcd/lcd.h
lcd/main.c
lcd/Makefile
lcd/oled
lcd/push/
lcd/push/time.sh
lcd/push/top.sh
lcd/README
lcd/switch/
lcd/switch/switch4.sh1
lcd/switch/switch1_halt.sh2
lcd/switch/switch2.sh2
lcd/switch/switch3.sh1
push 文件夹下是按键按下时运行的脚本,你可以加入自己的脚本哦, 这个最多可以有15个.

switch文件夹下是拨码开关拨动时运行的脚本,这个里面不要有任何其他文件, 否则拨码开关会不正常.

运行这行将这个文件夹下的所有文件放在/home/pi/.lcd 中:

tar xvf lcd.4.0.tar
cd lcd
./install


配置文件在conf.tar中

conf.d/hostapd
conf.d/hostapd.conf
conf.d/README
conf.d/udhcpd
请阅读README 中的内容再使用.

具体细节说明:

首先你的树梅派必须安装了 gcc make

1.安装控制gpio的库:

WiringPi

点上面的连接下载并安装, 这个库用到的函数不是很多会读取, 写入 和 中断就可以了.

2.编写自己的c语言程序

由他接受按键输入和控制屏幕显示.屏幕显示部分的代码和具体的屏幕有关, 请参考自己屏幕控制芯片的参考手册,或者是向卖屏幕的商家要代码自己改改.

我的屏幕驱动程序主要在lcd.c 中, 请实现lcd.h 中的函数.

我的代码仅供参考,不保证一定能运行.

main.c中的main函数其实很简单

1 初始化.

2. 在while循环中大约每秒检测全局变量lcdLight是否为ON , 如果ON则表示需要处理按键事件. 在if中 使用popen执行shell脚本,并将脚本的输出写入到屏幕中.

3, 当按键按下后, 对应的中断程序只需要将全局变量LcdLight = ON, 就会在while循环中运行相关的脚本.

4. 对于拨码开关的设置是不同的, 在中断程序中仅仅是将checkSwitch = ON, 这样在while循环中就会检测拨码开关状态是否改变,如果改变就会运行对应的脚本程序. 如果四个开关都没有改变就关闭checkSwitch = OFF

5, 注意, 一个脚本程序从popen程序开始调用, 到pclose阻塞,直到脚本结束,main函数才会向后运行.

6, popen与pclose 之间的程序是与屏幕驱动程序有关的, 因此要自己改一下.

3.下面是设置wifi脚本

在 629interface中将wifi名和密码改成你自己的就可以了.

这样向上拨3号开关就可以将树梅派连接到wifi了.

4.设置wifi ap 脚本

这个比较复杂需要一些耐心.

首先是安装hostapd , 首先要看一下你买的无线网卡是哪种型号的,插入网卡并输入:

lsusb
输出:

Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter


表示的无线网卡芯片是RTL8188CUS这个比较麻烦需要从源代码包安装:具体做法参考这个

Realtek RTL8188 based access point on Raspberry Pi

其他(由于不确定你的网卡能否被支持,可以在hostapd官网去查, 或者可以试一下)

请直接安装:

sudo apt-get install hostapd


安装udhcpd:

sudo apt-get install udhcpd


配置参考这个 (如果你的网卡是RTL8188, 那么所有配置文件都可以用我的,只要看下面连接找到相应的文件夹, 如果是其他, 请全部按照下面这个)

RPI-Wireless-Hotspot

注意:我没有进行NAT的配置,因为我不需要.

到此所有配置完成, 当将4号开关拨上时, 等待一段时间, 屏幕显示done ! 表示ap启动, 此时就可以连接了.

ap的名字和密码都是"raspberrypi"

在我的压缩包中已经给出了配置文件, 可以直接复制到对应的文件夹中.

本人能力有限, 有任何bug或疑惑请给我留言,有任何关于树梅派的idea也可以与我分享.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: