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 文件目录及说明
switch文件夹下是拨码开关拨动时运行的脚本,这个里面不要有任何其他文件, 否则拨码开关会不正常.
运行这行将这个文件夹下的所有文件放在/home/pi/.lcd 中:
配置文件在conf.tar中
具体细节说明:
首先你的树梅派必须安装了 gcc make
我的屏幕驱动程序主要在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了.
表示的无线网卡芯片是RTL8188CUS这个比较麻烦需要从源代码包安装:具体做法参考这个
请直接安装:
到此所有配置完成, 当将4号开关拨上时, 等待一段时间, 屏幕显示done ! 表示ap启动, 此时就可以连接了.
ap的名字和密码都是"raspberrypi"
在我的压缩包中已经给出了配置文件, 可以直接复制到对应的文件夹中.
先上图:
另一张
功能介绍
监视器主要由 显示屏, 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.sh1push 文件夹下是按键按下时运行的脚本,你可以加入自己的脚本哦, 这个最多可以有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 make1.安装控制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也可以与我分享.
相关文章推荐
- wifi ap状态
- 树莓派做AP发射wifi(RTL8188CUS芯片) 分类: shell ubuntu Raspberry Pi 2014-11-29 01:25 822人阅读 评论(0) 收藏
- Wince获取Wifi的设备名、连接状态和信号强度
- Marvell w8782 sdio wifi AP模式设置
- Android之广播监控wifi连接状态
- 监听android wifi状态变化监听
- hostapd实现WIFI 热点(AP)
- 判断Android的WIFI与GPS状态
- iOS获取设备网络状态,2G,3G,4G,wifi,非Reachability
- Android获取WIFI状态下的IP地址以及MAC地址
- arm wifi ap热点功能
- 【1307】TextView动态显示wifi状态的改变
- 奔五的人学iOS:swift获取连接的wifi名称及ap的mac地址
- 安卓 新版本 获取wifi状态网络是否可用等
- iOS开发-Reachability实时检测Wifi,2G/3G/4G/网络状态
- 控制WIFI状态
- IOS8,IOS8.1等系统出现锁屏状态下WIFI断开问题的解决办法!
- linux下架设wifi无线热点(虚拟ap/softAP)
- 获取网络状态,区分2G3G4GWIFI等,非reachability
- iOS 状态栏数据获取(服务商,网络状态,信号,电量,IP,WiFi)