买树梅派快一年了,还是没有想好这玩意能做点啥.最近闲着没事,就拿出来折腾. 但是我没有显示器,只能通过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"
在我的压缩包中已经给出了配置文件, 可以直接复制到对应的文件夹中.