查看: 23107|回复: 6

[原创] 利用树莓派B+成功实现NAS家庭服务器

[复制链接]
  • TA的每日心情
    无聊
    2014-12-21 15:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2014-10-26 22:59:25 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 小五义 于 2014-10-26 23:18 编辑

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi

    一、家庭服务器实现的主要功能1、流媒体播放服务:利用DLNA实现电视、手机、电脑播放其上面的媒体文件。
    2、文件共享:利用samba实现手机、电脑等终端与服务器的文件共享。
    3、自动下载:利用aria2c实现自动下载。
    先上几张效果图:
    用orico的包装盒做了个机箱。
    IMG_20141026_211340.jpg
    内部效果,线还是有些凌乱
    IMG_20141026_211404.jpg
    放在桌上,感觉还不错,呵呵
    IMG_20141026_211815.jpg
    二、准备工作1、树莓派B+
    2、安装raspbian系统,具体安装方法见:树莓派学习笔记(1):入手树莓派
    3、设置固定IP为192.168.1.120,设置方法见:树莓派学习笔记(3):利用VNC远程控制树莓派。
    4、安装vnc软件,安装方法见:树莓派学习笔记(3):利用VNC远程控制树莓派。
    5、准备了一块旧移动硬盘(80G)
    6、准备了可外接供电的usb hub一个,树莓派本身输出电流较小,很难保证移动硬盘的运行,所以加了一个可外接供电的usb hub。
    三、安装samba实现文件共享1、准备硬盘      硬盘进行分区和格式化,这里我直接就分了一个区,格式化为ext4格式,据网上介绍说如果是fat或者ntfs等格式可能会出现权限问题,于是干脆直接格式化为ext4格式。硬盘在树莓派上格式化会比较慢,我就在电脑上进行了格式化。电脑操作系统是windows7,利用软件MiniTool Partition Wizard Home Edition 8.0,下载地址:http://www.partitionwizard.com/download.html。具体使用方法是先将原分区删除,然后点击creat,在格式那里选ext4,类型我选的primary,label用的nas,然后点击apply就开始格式化硬盘了。(如果用容量较小的U盘,可以直接用树莓派格式化,命令为:mkfs -t ext4 /dev/sdb1
    260008477301206.png
    2、将硬盘挂载到树莓派上      树莓派开机后,用putty连接(连接方法见树莓派学习笔记(1):入手树莓派)后,为方便操作直接进行root用户(具体方法见http://www.cnblogs.com/xiaowuyi/p/3980037.html一楼评论处),然后运行df –h,查看硬盘挂载情况。
    root@raspberrypi:/home/pi# df -h
    Filesystem              Size        Used        Avail     Use%      Mounted on
    rootfs                    2.9G       2.4G        387M     87%       /
    /dev/root               2.9G       2.4G        387M     87%       /
    devtmpfs               183M        0           183M     0%         /dev
    tmpfs                    38M        792K        37M      3%        /run
    tmpfs                    5.0M         0          5.0M       0%        /run/lock
    tmpfs                     75M         0          75M        0%        /run/shm
    /dev/mmcblk0p1     56M        9.7M       47M      18%        /boot
    /dev/sda1              70G         24M        67G      1%         /media/nas
    最后一行/dev/sda1说明硬盘已经挂载。为下一步安装samba,将共享文件夹设为/samba。于是新建文件夹:
    mkdir /samba
    设置访问权限:shmod 777 /samba
    将硬盘挂载到/samba文件夹,具体步骤:
    umount /dev/sda1   #取消挂载
    mount /dev/sda1 /samba
    这里再查看df -h,结果为:
    2.png
    这里表示已挂载成功。
    3、解决硬盘的自动挂载      每次树莓派重启或者硬盘插拔都需要对硬盘进行重新挂载,比较麻烦,因此需要自动挂载。这里要修改/etc/fstab文件。有人喜欢用vi进行编辑,我比较喜欢直接vnc连接上后,用编辑器进行编辑。
    3.png

    可以看到,fstab文件其实就是一个表格,表格各列的含意如下:
    第一列:磁盘分区名/卷标,一般是/dev/sdaN(N表示正整数)
    第二列:挂载点,我们在这里把/dev/sda1挂到/samba上。
    第三列:缺省设置,一般用defautls。
    第四列:是否备份:0——表示不做 dump 备份;1——表示要将整个 <fie sysytem> 里的内容备份;2 也表示要做 dump 备份,但该分区的重要性比 1 小。
    第五列:检测顺序:0——不进行检测;根分区(/),必须填写 1,其它的都不能填写 1。如果有分区填写大于 1 的话,则在检查完根分区后,从小到大依次检查下去。
    具体填写方法在图中已注明。
    4、安装samba更新一下源:
    sudo apt-get update
    安装samba
    sudo apt-get install samba samba-common-bin
    安装完成后,配置/etc/samba/smb.conf文件
    在其最后添加以下命令:

    #================================================
    #转载请注明:@小五义http://www.cnblogs.com/xiaowuyi   QQ群:64770604
    [share]                                   #共享文件的名称,将在网络上以此名称显示
            path = /samba                     #共享文件的路径
            valid users = root pi             #允许访问的用户,这里我用的是root 和 pi 两个用户
            browseable = yes                  #允许浏览                                 
            public = yes                      #共享开放                                       
            writable = yes                    #可写
    #================================================
    保存后,重启samba服务,输入
    /etc/init.d/samba restart
    最后添加共享用户:
    smbpasswd –a pi  #这里我用的pi。
    设置开机自启动,编辑/etc/rc.loca,如下
    4.png
    5、测试samba安装效果在windows计算机上,打开我的电脑,在左下角网络点右键,选映射网络驱动器
    5.png
    点击完成会提示输入用户名和密码,这里输入设置的共享用户名和密码。
    6.png

    最后在计算机下会出现共享的文件夹,点开文件夹,新建test.txt文件进行一下测试,如果能正常建立,就说明ok了,如果不行,应该是权限问题,可再重新设置一下/samba文件夹权限。这里注意,如果在/samba文件夹下新建新的文件夹,也需要设置权限,可以用vnc连接后,用管理员浏览,点右键设置文件夹权限为read and write,也可以用chmod命令设置。
    四、安装DLNA实现流媒体服务器DLNA主要面向媒体资源(比如视频、音乐)实现网内共享,具体步骤如下:
    1、安装minidlna更新一下安装源
    sudo apt-get update
    安装minidlna
    sudo apt-get install minidlna
    2、设置配置文件设置/etc/minidlna.conf文件,在文件尾部添加如下内容:

    #===================================================================================
    #转载请注明:@小五义http://www.cnblogs.com/xiaowuyi   QQ群:64770604
    media_dir=A,/samba/DLNA/Music                #A表示这个目录是存放音乐的,当minidlna读到配置文件时,它会自动加载这个目录下的音乐文件
    media_dir=P,/samba/DLNA/Picture                                                
    media_dir=V,/samba/DLNA/Video                                                  
    db_dir=/samba/DLNA/db                       #配置minidlna的数库数据的存放目录
    log_dir=/samba/DLNA/log                     #配置日志目录
    #=======================================================================================
    3、建立文件夹在/samba文件夹下,建立以上文件夹,并设置好权限为read and write。
    4、重启minidlna/etc/init.d/minidlna restart
    测试:
    /etc/init.d/minidlna status
    返回如下结果为正常。
    7.png
    5、在电脑上进行播放先在树莓派以上对应的video等文件夹内存上一些文件(可利用samba直接从电脑上考入),然后返回到计算机进行操作。
    点击我的电脑下面的网络,出现媒体设备
    8.png
    双击进入媒体播放器,在左边的列表栏下方其它媒体库中出现raspberrypi:root,点击后,可选择音乐,视频等。
    9.png


    这时双击就可以欣赏了。
    6、手机上进行播放手机上实现网络共享,可安装es file explorer软件,在其网络处进行设置,设置方法与电脑基本一样,这里不再详述。设置后,文件均可浏览,媒体文件双击可以在线播放。
    也可以直接使用updp播放器,这里我安装的是moliplayer,可以在其附近设备里,直接找到raspberrypi:root,访问其媒体问题,注意,这里是访问的DLNA共享,所以不需要再输入密码。
    7、智能电视进行播放智能电视一般都是用的android系统,与手机基本一样。
    五、安装aria2实现下载机功能1、安装aria2更新一下安装源
    sudo apt-get update
    安装aria2
    sudo apt-get install aria2
    2、创建配置文件在/etc目录下创建aria2目录用来存放配置文件:
    sudo mkdir /etc/aria2
    创建空白的aria2.session文件:
    sudo touch /etc/aria2/aria2.session
    创建配置文件
    sudo nano /etc/aria2/aria2.conf
    在该文件中输入以下内容:
    #=========文件保存目录自行修改
    dir=/samba
    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=/etc/aria2/aria2.session
    save-session=/etc/aria2/aria2.session
    max-concurrent-downloads=3
    这里为了方便共享,我直接设置将文件下载到samba共享文件夹。
    3、启动aria2sudo aria2 –conf-path=/etc/aria2/aria2.conf
    如果没有提示任何错误信息,那就按ctrl+c停止上面的语句,转为后台运行:
    sudo aria2 –conf-path=/etc/aria2/aria2.conf -D
    同时其此句写到开机启动中,编辑/etc/rc.loca,如下
    10.png
    4、安装appache        为了能web管理aria2进行下载,需要安装yaaw和appache环境。
    安装appach
    sudo apt-get install appache2
    修改/var/www的权限
    chmod 777 /var/www
    5、安装yaaw        从https://github.com/binux/yaaw下载yaaw,点击右下角的 11.png ,下载后将解压后的文件夹内内容拷贝到/var/www文件夹下。这时输入树莓派IP,如果出现以下页面,则表示已经正常工作了。
    12.png
    这里可以点add添加下载任务,具体方法不再详述。
    6、实现迅雷的离线下载        很多网站都介绍了aria2实现迅雷离线下载的方法,这里也做一下描述。我以firefox浏览器为例,chrome浏览器本身有一个迅雷离线增加插件,可以从https://chrome.google.com/webstore/detail/mbl%E8%BF%85%E9%9B%B7%E7%A6%BB%E7%BA%BF%E5%A2%9E%E5%BC%BA%E8%84%9A%E6%9C%AC/bcbkegabebafalcgckcdphlpainejkja进行安装,安装后就和firefox基本一样了。
    在firefox里添加一个书签:
    13.png
    具体为:
    ===========================================================
    名称为:ThunderLixianExporter
    地址为:javascript:void((function(){var d=document;var s=d.createElement('script');s.src='http://s.binux.me/tle.js';s.id='TLE_script';d.body.appendChild(s)})())
    ==================================================================

    登录迅雷离线网站:lixian.xunlei.com,登录后,点一下书签中的ThunderLixianExporter,然后点击迅雷页面右上角的配置按钮(小齿轮)。
    14.png
    15.png
    16.png
    在上面的窗口中填写aria2.json-RPC Path,这个值来自于yaaw那个页面,具体方法是,输入树莓派IP显示yaaw页面,点击右上的配置图标,如下图
    17.png
    在set页面中存在该值:
    18.png
    保存好后,在离线页面的每行记录的取回本地后面会出现一个下拉菜单,选择yaaw就会直接添加到yaaw任务中了。
    19.png
    20.png

    到此,树莓派的NAS服务器搭建完成,试了一下效果,还是很满意的。

    六、制作外壳1、外壳        直接从家里找了一个orico的包装盒,大小正好合适,而且外壳比较硬,外观也比较不错。
    2、加装1602显示屏        加装一个1602显示屏,目的是显示时间和CPU温度,当然也可以显示其它内容,我这里只显示了这两项。这里还需要加装一个电位器(也就是可变电阻,如果没有,可以加一个10K的电阻)
    (1)1602硬件连接1602共16个端口,只用其中12个,具体接法如下:
    LCD1602液晶屏模块提供了16个引脚,我们只需接其中的12个即可:
    VSS,接地
    VDD,接5V电源
    VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地。
    RS,寄存器选择,接GPIO14
    RW,读写选择,接地,表示写模式
    EN,使能信号,接GPIO15
    D0,数据位0,4位工作模式下不用,不接
    D1,数据位1,4位工作模式下不用,不接
    D2,数据位2,4位工作模式下不用,不接
    D3,数据位3,4位工作模式下不用,不接
    D4,数据位4,接GPIO17
    D5,数据位5,接GPIO18
    D6,数据位6,接GPIO27
    D7,数据位7,接GPIO22
    A,液晶屏背光+,接5V
    K,液晶屏背光-,接地
    注意:1、这里的VSS、VDD等在有些1602的板子上会标明,有些则只标了数字,如一端写着1,一端写着16,1对应的就是VSS端,16对应的就是K端,因此依次连接就可以了。
            2、GPIO各端口及5V、接地等端口见下图,因为我用的是B+的板了,因此这里的图也是B+的端口图。
            3、连接通电后,1602会亮起,其中一行为黑色方格,一行什么也不显示,如果全不显示,可调节一下电位器
    21.jpg
    (2)代码对于1602板子的操作,已经有人做了一个示例,这样用起来就比较简单了。示例代码下载地址:https://github.com/lifanxi/rpimenu.git,解压后有Adafruit_CharLCD.py文件,此文件在LCD上会显示两行字符:LCD 1602 Test, 123456789ABCDEF。这里只需要在此文件上进行一下修改就可以了。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    #!/usr/bin/python
    #<span style="font-family: 宋体; font-size: 12px;">转载请注明:@小五义<a href="http://www.cnblogs.com/xiaowuyi">http://www.cnblogs.com/xiaowuyi</a>   QQ群:64770604</span>
    #
    # based on code from lrvick and LiquidCrystal
    # lrvic - https://github.com/lrvick/raspi-hd44780/blob/master/hd44780.py
    # LiquidCrystal - https://github.com/arduino/Arduino/blob/master/libraries/LiquidCrystal/LiquidCrystal.cpp
    #

    #from time import sleep
    import time,os

    class Adafruit_CharLCD:

        # commands
        LCD_CLEARDISPLAY        = 0x01
        LCD_RETURNHOME      = 0x02
        LCD_ENTRYMODESET        = 0x04
        LCD_DISPLAYCONTROL      = 0x08
        LCD_CURSORSHIFT         = 0x10
        LCD_FUNCTIONSET         = 0x20
        LCD_SETCGRAMADDR        = 0x40
        LCD_SETDDRAMADDR        = 0x80

        # flags for display entry mode
        LCD_ENTRYRIGHT      = 0x00
        LCD_ENTRYLEFT       = 0x02
        LCD_ENTRYSHIFTINCREMENT     = 0x01
        LCD_ENTRYSHIFTDECREMENT     = 0x00

        # flags for display on/off control
        LCD_DISPLAYON       = 0x04
        LCD_DISPLAYOFF      = 0x00
        LCD_CURSORON        = 0x02
        LCD_CURSOROFF       = 0x00
        LCD_BLINKON         = 0x01
        LCD_BLINKOFF        = 0x00

        # flags for display/cursor shift
        LCD_DISPLAYMOVE         = 0x08
        LCD_CURSORMOVE      = 0x00

        # flags for display/cursor shift
        LCD_DISPLAYMOVE         = 0x08
        LCD_CURSORMOVE      = 0x00
        LCD_MOVERIGHT       = 0x04
        LCD_MOVELEFT        = 0x00

        # flags for function set
        LCD_8BITMODE        = 0x10
        LCD_4BITMODE        = 0x00
        LCD_2LINE           = 0x08
        LCD_1LINE           = 0x00
        LCD_5x10DOTS        = 0x04
        LCD_5x8DOTS         = 0x00



        def __init__(self, pin_rs=14, pin_e=15, pins_db=[17, 18, 27, 22], GPIO = None):
        # Emulate the old behavior of using RPi.GPIO if we haven't been given
        # an explicit GPIO interface to use
        if not GPIO:
            import RPi.GPIO as GPIO
            GPIO.setwarnings(False)
        self.GPIO = GPIO
            self.pin_rs = pin_rs
            self.pin_e = pin_e
            self.pins_db = pins_db

            self.GPIO.setmode(GPIO.BCM)
            self.GPIO.setup(self.pin_e, GPIO.OUT)
            self.GPIO.setup(self.pin_rs, GPIO.OUT)

            for pin in self.pins_db:
                self.GPIO.setup(pin, GPIO.OUT)

        self.write4bits(0x33) # initialization
        self.write4bits(0x32) # initialization
        self.write4bits(0x28) # 2 line 5x7 matrix
        self.write4bits(0x0C) # turn cursor off 0x0E to enable cursor
        self.write4bits(0x06) # shift cursor right

        self.displaycontrol = self.LCD_DISPLAYON | self.LCD_CURSOROFF | self.LCD_BLINKOFF

        self.displayfunction = self.LCD_4BITMODE | self.LCD_1LINE | self.LCD_5x8DOTS
        self.displayfunction |= self.LCD_2LINE

        """ Initialize to default text direction (for romance languages) """
        self.displaymode =  self.LCD_ENTRYLEFT | self.LCD_ENTRYSHIFTDECREMENT
        self.write4bits(self.LCD_ENTRYMODESET | self.displaymode) #  set the entry mode

            self.clear()


        def begin(self, cols, lines):

        if (lines > 1):
            self.numlines = lines
                self.displayfunction |= self.LCD_2LINE
            self.currline = 0


        def home(self):

        self.write4bits(self.LCD_RETURNHOME) # set cursor position to zero
        self.delayMicroseconds(3000) # this command takes a long time!
         

        def clear(self):

        self.write4bits(self.LCD_CLEARDISPLAY) # command to clear display
        self.delayMicroseconds(3000)    # 3000 microsecond sleep, clearing the display takes a long time


        def setCursor(self, col, row):

        self.row_offsets = [ 0x00, 0x40, 0x14, 0x54 ]

        if ( row > self.numlines ):
            row = self.numlines - 1 # we count rows starting w/0

        self.write4bits(self.LCD_SETDDRAMADDR | (col + self.row_offsets[row]))


        def noDisplay(self):
        """ Turn the display off (quickly) """

        self.displaycontrol &= ~self.LCD_DISPLAYON
        self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)


        def display(self):
        """ Turn the display on (quickly) """

        self.displaycontrol |= self.LCD_DISPLAYON
        self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)


        def noCursor(self):
        """ Turns the underline cursor on/off """

        self.displaycontrol &= ~self.LCD_CURSORON
        self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)


        def cursor(self):
        """ Cursor On """

        self.displaycontrol |= self.LCD_CURSORON
        self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)


        def noBlink(self):
        """ Turn on and off the blinking cursor """

        self.displaycontrol &= ~self.LCD_BLINKON
        self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)


        def noBlink(self):
        """ Turn on and off the blinking cursor """

        self.displaycontrol &= ~self.LCD_BLINKON
        self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)


        def DisplayLeft(self):
        """ These commands scroll the display without changing the RAM """

        self.write4bits(self.LCD_CURSORSHIFT | self.LCD_DISPLAYMOVE | self.LCD_MOVELEFT)


        def scrollDisplayRight(self):
        """ These commands scroll the display without changing the RAM """

        self.write4bits(self.LCD_CURSORSHIFT | self.LCD_DISPLAYMOVE | self.LCD_MOVERIGHT);


        def leftToRight(self):
        """ This is for text that flows Left to Right """

        self.displaymode |= self.LCD_ENTRYLEFT
        self.write4bits(self.LCD_ENTRYMODESET | self.displaymode);


        def rightToLeft(self):
        """ This is for text that flows Right to Left """
        self.displaymode &= ~self.LCD_ENTRYLEFT
        self.write4bits(self.LCD_ENTRYMODESET | self.displaymode)


        def autoscroll(self):
        """ This will 'right justify' text from the cursor """

        self.displaymode |= self.LCD_ENTRYSHIFTINCREMENT
        self.write4bits(self.LCD_ENTRYMODESET | self.displaymode)


        def noAutoscroll(self):
        """ This will 'left justify' text from the cursor """

        self.displaymode &= ~self.LCD_ENTRYSHIFTINCREMENT
        self.write4bits(self.LCD_ENTRYMODESET | self.displaymode)


        def write4bits(self, bits, char_mode=False):
            """ Send command to LCD """

        self.delayMicroseconds(1000) # 1000 microsecond sleep

            bits=bin(bits)[2:].zfill(8)

            self.GPIO.output(self.pin_rs, char_mode)

            for pin in self.pins_db:
                self.GPIO.output(pin, False)

            for i in range(4):
                if bits == "1":
                    self.GPIO.output(self.pins_db[::-1], True)

        self.pulseEnable()

            for pin in self.pins_db:
                self.GPIO.output(pin, False)

            for i in range(4,8):
                if bits == "1":
                    self.GPIO.output(self.pins_db[::-1][i-4], True)

        self.pulseEnable()


        def delayMicroseconds(self, microseconds):
        seconds = microseconds / float(1000000) # divide microseconds by 1 million for seconds
        time.sleep(seconds)


        def pulseEnable(self):
        self.GPIO.output(self.pin_e, False)
        self.delayMicroseconds(1)       # 1 microsecond pause - enable pulse must be > 450ns
        self.GPIO.output(self.pin_e, True)
        self.delayMicroseconds(1)       # 1 microsecond pause - enable pulse must be > 450ns
        self.GPIO.output(self.pin_e, False)
        self.delayMicroseconds(1)       # commands need > 37us to settle


        def message(self, text):
            """ Send string to LCD. Newline wraps to second line"""

            for char in text:
                if char == '\n':
                    self.write4bits(0xC0) # next line
                else:
                    self.write4bits(ord(char),True)



    if __name__ == '__main__':
        while 1:
            lcd = Adafruit_CharLCD()

            lcd.clear()

            cputemp=os.popen('vcgencmd measure_temp').readline()
            sumcputemp=cputemp.replace("temp=","CPU:").replace("'C\n","")
            lcdout=time.strftime('%Y-%m-%d %H:%M',time.localtime(time.time()))+"\n"+sumcputemp
             
            lcd.message(lcdout)
            time.sleep(30)




    3、开面自启动上面的程序        将以上文件命名为1602.py,保存在/home/pi下面,修改/etc/rc.loca,添加上sudo python /home/pi/1602/py。树莓派开机时,插上电源,当1602能正常显示CPU温度时,表示机器已经启动完成,各项功能可正常使用。
    4、一些其它的想法(1)本想再加装一个风扇用来散热,结果手上没有3.3V的风扇了,所以就没加。感兴趣的朋友可以自己加一下,因为树莓派输出为3.3V,所以最好是直接买3.3V的,如果买5V的,就一定要带个3.3V的继电器,要不没法对风扇控制。如果风扇一直常开那就无所谓了,5V就可以,直接接正负级。我原本的想法是CPU上了50度,风扇再运转,这样可以降温,同时噪音也不会大。
    (2)这个家庭服务器搭建起来以后,后面还有很多文章可做,比如可以依托他建立家庭监控系统,装上两个摄像头什么的,也可以做一些外网访问的设置,这样就可以直接从外网进行操作了。
    [参考文献]1、树莓派变身Aria2下载服务器:http://blog.csdn.net/sonsie007/article/details/18942943
    2、树莓派搭建NAS服务器:http://blog.sina.com.cn/s/blog_9ea6edb90101ci06.html
    3、DIY一套NAS+私有云盘+下载机:http://www.kissthink.com/archive/8897.html
    4、树莓派变身Aria2下载服务器:https://www.cirmall.com/bbs/thread-27396-1-1.html
    5、打造增强型Raspberry Pi-液晶屏篇http://www.freemindworld.com/blo ... y_pi_with_lcd.shtml

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-15 09:30
  • 签到天数: 162 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-10-27 16:10:55 | 显示全部楼层
    非常牛奔!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-10-28 15:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-10-28 15:08:55 | 显示全部楼层
    很好很强大,找时间搞一个试试,帮顶!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-3-3 15:21
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-10-29 16:01:53 | 显示全部楼层
    谢谢分享,赶明儿在香蕉派上试试看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    昨天 11:56
  • 签到天数: 3247 天

    连续签到: 14 天

    [LV.Master]伴坛终老

    发表于 2014-10-29 20:57:48 | 显示全部楼层
    犇犇犇
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-9-30 02:33
  • 签到天数: 444 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-10-30 11:03:40 | 显示全部楼层
    很强大的样子! 值得学习!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-10-30 12:46:39 | 显示全部楼层
    楼主总结的非常详细,有时间也弄个玩玩
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 15:37 , Processed in 0.172993 second(s), 28 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.