二分之一

Just Jason's Blog

RaspberryPi

DIY树莓派外壳,简单但实用

树莓派做手工没想象中简单,原来准备的设计图都没用上,雕一个图雕残了,最后整了个简单版树莓派外壳,ps:亚克力板味道好难闻。

Read more »

【智能家居】用树莓派+移动硬盘+MINIDLNA打造家用媒体服务器(电影服务器、NAS、ipad看片利器)

关键词:树莓派、移动硬盘、MINIDLNA、电影服务器、NAS、ipad看片利器、DLNA、UPnP

DLNA/UPnP概念,请自行搜索了解~~

一直想实现用ipad观看移动硬盘中的电影,所以有了这个方案,再配合下载工具(aria2或Transmission)将树莓派打造成下载机,就能低成本,低功耗的实现NAS。

我用samba和minidlna搭好NAS后,分别进行了测试,很明显minidlna的速度和资源损耗要比samba小的多,minidlna上到5G的电影也基本不卡,而samba就非常吃力,而且支持samba的视频播放器显示比DLNA/UPnP的要少!

本方案主要由两部份组成:媒体服务器和ipad或其它移动设备客户端。

第一部份:用MINIDLNA搭建媒体服务器

一、移动硬盘的挂载

1、挂载FAT32格式的硬盘

#创建挂载点
sudo mkdir /mnt/myusbdrive
#编辑fstab让移动硬盘开机自动挂载
sudo nano /etc/fstab
#在最后一行添加如下内容
/dev/sda1 /mnt/myusbdrive auto defaults,noexec,umask=0000 0 0
#保存重启,即可生效

说明:

sda1是取决于你的实际情况,a表示第一个硬盘,1表示第一个分区。
umask=0000 0 0
前面四个0就是对所有人,可读可写可执行, 后面两个0,第一个代表dump,0是不备份
第二个代表fsck检查的顺序,0表示不检查 卸载:sudo umount /mnt/myusbdrive

2、挂载NTFS格式的硬盘(读写方式挂载)

默认挂载NTFS格式的硬盘只有只读权限,需要借助其它工具实现。

#安装所需软件包
sudo apt-get install fuse-utils ntfs-3g
#加载内核模块
modprobe fuse
#编辑fstab让移动硬盘开机自动挂载
sudo nano /etc/fstab
#在最后一行添加如下内容
/dev/sda1 /mnt/myusbdrive ntfs-3g defaults,noexec,umask=0000 0 0
#保存重启,即可生效

3、测试硬盘挂载是否成功:

cd /mnt/myusbdrive
ls
二、安装MiniDLNA

1、安装

sudo apt-get install minidlna

2、修改配置

#打开配置文件
sudo nano /etc/minidlna.conf
#可参考修改的项有:
#媒体文件目录:
media_dir=/mnt/myusbdrive/
#数据库目录,minidlna使用的是sqlite数据库来索引文件
db_dir=/var/lib/minidlna
#服务器IP
listening_ip=192.168.1.106
#端口
port=8200
#网络名称,用于其它设备发现当前设备
friendly_name=DLNA

3、你可以选择让minidlna随机启动

sudo update-rc.d minidlna defaults

4、启动minidlna服务

sudo service minidlna start

5、当你修改配置文件及媒体资源更新时,需要强制刷新,以便minidlna将最新的媒体文件进行索引

sudo service minidlna force-reload

6、查看资源个数

http://192.168.1.106:8200/

7、取消minidlna的开机自动启动

sudo update-rc.d -f minidlna remove

8、停止minidlna服务

sudo service minidlna stop

9、停止minidlna所有进程

sudo killall minidlna

10、卸载minidlna

sudo atp-get remove --purge minidlna

第二部份:ipad或其它移动设备客户端

一、IOS客户端

总的来说,IOS下几乎没有好的免费软件来支持UPnP和Samba视频,试用多个软件后总结如下:

1、Yxplayer免费版,播放视频时有广告,索引UPnP资源时大概要5分钟才能索引完100多部电影

2、playerXstreme免费版,虽然免费,但是要使用UPnP功能时,需要额外的花¥6买一个扩展功能,但非常悲剧的时,买好了,索引UPnP资源时,一个小时都没有结果,而且很容挂着,几乎钱是白花了。

3、AVPlayer解码能力很强,不支持UPnP,某些网站有介绍说支持,千万别上当。

4、【能用】BUZZ Player,¥25,能用,而且索引UPnP资源非常快,唯一不足,还有一些小BUG,有时会挂掉。

二、html5

w3c其实有一个标准的API,来支持DLNA/UPnP,即Network Service Discovery API(navigator.getNetworkServices() )但目前只有opera有一个实验版本可以支持这个最新的API。

chrome支持mkv视频,经测试Chrome html5 video支持mkv格式的视频,但不能外挂字幕!显示Google利用于自己收购的VP8编码技术力挺WebM(VP8/Vorbis/WebM),mkv也属于WebM的一种。

Read more »

用树莓派+移动硬盘+aria2搭建低功耗下载机

移动硬盘挂载及NAS相关请参阅上文《【智能家居】用树莓派+移动硬盘+MINIDLNA打造家用媒体服务器(电影服务器、NAS、ipad看片利器)》

一、安装

1、安装aria2

sudo apt-get install aria2

2、安装aria2 web在线管理端YAAW

YAAW项目地址:https://github.com/binux/yaaw
下载资源包,放置http服务器下,http服务器的相关配置,本文不做详细介绍
DEMO:http://binux.github.com/yaaw/demo/

二、配置aria2

aria2在线手册:http://aria2.sourceforge.net/manual/en/html/

一些有用的aria2参数:

-i 导入从loli.lu导出的aria2文件
-j 同时下载数限制,由于路由和总带宽限制,建议设为3(默认5)
-x 同一个服务器的同时链接数,建议为5-10(默认1)
-k 文件最小分片,文件最多的线程数取决于能分出多少片,当文件小于最小分片大小时,只能开出一个线程,建议为2M(默认20M)
-s 一个文件最多用几个线程下载,建议为8-10(默认5)
–file-allocation 文件预分配,如果USB设备是U盘,SD卡,预分配浪费时间,建议为none(默认prealloc)

创建配置文件:

#创建空白session文件
sudo touch /home/pi/aria2.session
#创建配置文件
sudo nano /home/pi/aria2.conf

在配置文件中放入:(以下内容不解释,请查阅手册)

#下载目录,自行修改
dir=/mnt/myusbdrive/moive/download/
disable-ipv6=true
#打开rpc的目的是为了给web管理端用
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
#rpc-listen-port=6800
continue=true
input-file=/home/pi/aria2.session
save-session=/home/pi/aria2.session
max-concurrent-downloads=3

三、用配置文件启动

sudo aria2c --conf-path=/home/pi/aria2.conf

若以上执行正常,没有报错,可以再加一“-D”的参数,让aria2随机启动。

sudo aria2c --conf-path=/home/pi/aria2.conf -D

Read more »

[翻译|转发自官方]XBian 1.0 Alpha 4的BUG修复(黑屏、找不到类库、不能保存视频源)

1、类库找不到(Libraries not found)

bug描述:XBMC无法启动、黑屏,找不到“libEGL.so”
用SSH登陆并执行以下命令:

sudo su     #default password = 'raspberry'
echo "/opt/vc/lib" > /etc/ld.so.conf.d/00-vmcs.conf
ldconfig
reboot

2、sources.xml不正常的权限

bug描述:XBMC不能保存视频源
用SSH登陆并执行以下命令:

sudo /etc/init.d/xbmc stop     #default password = 'raspberry'
sudo chown xbian:xbian .xbmc/userdata/sources.xml
sudo /etc/init.d/xbmc start

3、XBMC资源不足

bug描述:视频播放失败(一段时间后)黑屏
用SSH登陆并执行以下命令:

sudo su     #default password = 'raspberry'
sed -i 's/gpu_mem_256=100/gpu_mem_256=128/g' /boot/config.txt
sed -i 's/gpu_mem_512=100/gpu_mem_512=128/g' /boot/config.txt
reboot

目前发现该版本,无法使用左下角的退出到命令行界面,播放“优酷”、“奇艺”等切换到下段时,只有声音,没有图像,黑屏。

用上面第三个方法,应该能解决黑屏问题。

Read more »

【智能家居】树莓派+DS18B20温度传感器+Yeelink实现家庭室内温度监控(python)

实现家庭室内温度远程监控只是“智能家居”的初步,目的是下班前如果发现家里温度过高,可提前用手机发送指令提前5-10分钟打开空调降温。

一、硬件准备

1、树莓派(Raspberry Pi)一个

2、DS18B20温度传感器一个(淘宝大概5元左右)

3、4.7kΩ电阻一个 或 DS18B20模块一个(笔者用,淘宝1.5元一个,其实就是店家帮忙把电阻焊好了,接线稍好看些)。

4、杜邦线三根(双头母)

二、接线方式(如图所示)

Read more »

树莓派wifi小车成品展示【视频】

Read more »

树莓派(B版)使用MJPG-Streamer实现网络监控方案(安装及报错处理)

调了两个晚上,经过无数次的编译失败后,终于调试成功了,特分享一下安装过程。
本文以下将树莓派简称:RasPi

一、所需设备

1、RasPi主控板
2、实现 UVC 协议的摄像头,支持列表可查看:http://linux-uvc.berlios.de/ (本文采用淘宝购买的32元天敏N82)

二、mjpg-streamer下载

官网:

推荐版本:

下载SVN的mjpg-streamer的172版。

三、可能出现的安装错误

1、mjpg-streamer-r63.tar.gz

RasPi B版使用此版本包,编译时会报如下错误:
error: linux/videodev.h: No such file or directory
这是因为内核版本太高的原因,videodev.h这个接口不支持了。

解决办法:

安装:libv4l-dev

sudo apt-get -f install libv4l-dev

然后还需把这装包中,所有.c和.h文件中的头替换掉:

#include <linux/videodev.h>

代码,改为下面这行

#include <libv4l1-videodev.h>

但很不幸,笔者还是没能成功通过编译,虽然不报这个错误了,但是报出其它错误。

2、报jpg不支持,需安装

sudo apt-get install libjpeg62-dev

3、i: init_VideoIn failed错误

错误原因:市面上大部分摄像头都是支持YUV的,而不是JPEG的。mjpg-stream支持JPEG和YUV两种格式。

解决方法:

1、打开以下文件:

sudo nano mjpg-streamer/plugins/input_uvc/input_uvc.c

2、翻到大概第三页

将一行中的: int width = 640, height = 480, fps = -1, format = V4L2_PIX_FMT_MJPEG, i; 改成:V4L2_PIX_FMT_YUYV

需要重新编译才会有效。

四、安装

推荐使用第二步下载的安装包(172版),或才用SVN进行下载。

svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer

以上操作,前提是需要安装SVN,如果你没有安装,也可以通过

sudo apt-get install subversion

安装:

tar -xvzf mjpg-streamer.tar.gz
cd mjpg-streamer/mjpg-streamer
#以下操原因,见错误3
sudo nano plugins/input_uvc/input_uvc.c
#将V4L2_PIX_FMT_MJPEG改成V4L2_PIX_FMT_YUYV后保存退出

make
./start.sh

五、web访问

http://你的IP:8080/stream.html(如:http://192.168.1.106:8080/stream.html)

Read more »

使用webiopi控制树莓派的GPIO引脚电平(WEB在线管理)

1、必须安装python开发版,即python-dev,不然后面很多软件都会安装不成功,提示目录无法找到之类的。(教训)

sudo apt-get install python-dev

正常情况下,以上在线安装命令即可安装成功,但运气不好的是,笔者在安装时,在线命令安装资源包404。 python2.7-dev_2.7.3~rc2-2.1_armhf.deb找不到,后来只能手动找了以下包安装。

wget http://ftp.debian.org/debian/pool/main/p/python2.7/python2.7-dev_2.7.3-6_armhf.deb
sudo dpkg -i python2.7-dev_2.7.3-6_armhf.deb

2、安装python的GPIO模块

Google Code项目地址:http://raspberry-gpio-python.googlecode.com

wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.4.1a.tar.gz
tar -xvzf RPi.GPIO-0.4.1a.tar.gz
cd RPi.GPIO-0.4.1a
sudo python setup.py install

3、安装webopio

Google Code项目地址:http://code.google.com/p/webiopi/

wget http://webiopi.googlecode.com/files/WebIOPi-0.5.3.tar.gz
tar xvzf WebIOPi-0.5.3.tar.gz
cd WebIOPi-0.5.3
sudo ./setup.sh

4、首先设置或修改webopio的密码

sudo webiopi-passwd

用户名是:webiopi
如不修改密码,默认密码是:raspberry

5、启动webopio

sudo python -m webiopi 8000

端口可自行修改,默认是8000

6、让webopio后台运行,否则按ctarl+c就会断掉

sudo /etc/init.d/webiopi start
and
sudo /etc/init.d/webiopi stop

7、设置webopio随系统启动

sudo update-rc.d webiopi defaults

8、用浏览器打开IP地址访问管理界面

http://192.168.1.106:8000/webiopi/

控制方法:

Read more »

树莓派(Raspberry Pi)USB无线网卡配置方法

首先查看树莓派外设兼容列表:http://elinux.org/RPi_VerifiedPeripherals#USB_Wi-Fi_Adapters,以确定自己的无线网卡是否可用,一般免驱的大多可用。这种USB无线网卡,一般只要二三十块钱就可以搞定,推荐易迅购买。

另外新版的镜像,包含的驱动比较多。

1、查看自己的无线网卡是否生效

查看挂载的USB设备

sudo lsusb

我的RPI显示如下:

pi@raspberrypi:/$ sudo lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
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

最后一行标有802.11n WLAN Adapter即是我的无线网卡,表明设备可用。

2、测试wifi信号

sudo iwlist wlan0 scan

细心看,找到自己无线路由器的ssid(即用手机搜wifi,显示的wifi名字,路由器中可以配置) 笔者ssid是:TP-LINK_FB5906

3、编辑网卡配置信息

sudo nano /etc/network/interfaces

将wlan0的部份修改为:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static
    wpa-ssid 你要连接的wifi ssid
    wpa-psk 你的wpa连接密码
address 192.168.1.106   # 设定的静态IP地址
netmask 255.255.255.0   # 网络掩码
gateway 192.168.1.1     # 网关
network 192.168.1.1     # 网络地址
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

笔者把IP设在了静态的了,你总不想每次SSH登陆还要换IP吧!建议设成静态的

Read more »

nodejs(pi-gpio)控制树莓派GPIO引脚

一、基础概念

树莓派(Raspberry Pi)是啥?树莓派有啥用?请参考wikipedia上树莓派条目

GPIO,通用型的输入输出(General Purpose I/O)的简称。

nodejs真是无处不在,可玩性越来越高了,连硬件控制都能胜任了。

pi-gpio,是帮助树莓派控制GPIO的nodejs基础库,代码托管地址:https://github.com/rakeshpai/pi-gpio

二、关于树莓派GPIO引脚配置

树莓派GPIO引脚,较为混乱,各引脚之间没有逻辑关系,使用的是Broadcom芯片的命名。pi-gpio使GPIO的管理更加简单,参考以下图来进行管理。 P1在左上角。

图一:(来自pi-gpio)

图二:(更详细的GPIO引脚分布图)

/assets/upload/gpio_2.jpg

图三:(GPIO物理分布图)

三、安装pi-gpio

1、如果你还没有安装nodejs的npm,你可以通过以下方式简易安装

sudo apt-get install nodejs npm

2、在树莓派下做以下操作(安装pi-gpio所有操作,请使用root账户登陆)

git clone git://github.com/quick2wire/quick2wire-gpio-admin.git
cd quick2wire-gpio-admin
make
sudo make install
sudo adduser $USER gpio

3、接下来,在打开工程目录,用nodejs的npm安装 pi-gpio

npm install pi-gpio

四、pi-gpio的使用

var gpio = require("pi-gpio");

gpio.open(16, "output", function(err) {     // Open pin 16 for output
    gpio.write(16, 1, function() {          // Set pin 16 high (1)
        gpio.close(16);                     // Close pin 16
    });
});

方法列表:

每个方法都有一个回调函数,因为引脚操作是异步的。

1、.open(pinNumber, [direction = "output"], [callback])
打开引脚,别名:.export
pinNumber:引脚号码,记住,引脚号码树莓派上的物理引脚号码
direction:[可选],方向可以是“input”(简写:in)或“output”(简写:out),这取绝于你要做什么引脚。默认是“output”
callback:[可选],引脚可用时的回调函数,当出错时,第一个错误即是error对象

2、.close(pinNumber, [callback])
关闭引脚
参数解释类似.open

3、.setDirection(pinNumber, direction, [callback])
改变方向
参数解释类似.open

4、.read(pinNumber, [callback])
读取引脚当前的值,当方向为“输入input”时,用途更大;
参数解释类似.open
callback,有两个参数,第一个参数为可能出错的参数error,第二个参数为引脚的当前值可能是数字“0”或“1”

5、.write(pinNumber, value, [callback])
写入一个引脚的值;第二个参数必须数字“0”或“1”;

运行和测试:

npm install && npm test

Read more »