Raspberry Pi:解决硬盘自动挂载和Transmission下载提示Permission Denied的问题

由于接触linux不久,很多问题都要不断摸索。
这次主要是Transmission提示Permission Denied无法创建文件了,干脆就连硬盘自动挂载一起解决了。。

1  硬盘自动挂载

df -h
/dev/sda1       /media/HDD0     vfat    defaults          0       0
/dev/sda5       /media/HDD1     ext4    defaults          0       0

第一排是挂载的磁盘,第二行是挂载的目录,第三行是挂载磁盘的文件格式,我的硬盘被我分了两个区,分别是fat格式和ext4格式的,第四行一般就defaults,第五行0,第六行是挂载是否扫描,0的话就不扫描,其它数字就是扫描,扫描顺序数字越大越后扫描,一般的话0就好,不然扫描要好久的。。。

2  下载目录权限设置

ls -l 下载目录
-wrxwrxwrx A B......  #w:写入;r:读取;x:执行
# A是所属用户,B是所属用户组,第一个wrx是A的权限,第二个wrx是B的权限,第三个就是其他用户的权限。
sudo chmod u=rwx,g=rwx,o=rwx 下载目录  #u = user; g = group; o = others, rwx自行修改

重启下就啥都解决啦。。

Raspberry Pi: 结合BH1750FVI光强计自动控制5110背光

BH1750FVI

感觉直接上python程序吧。。

#!/usr/bin/python
# -*- encoding: utf-8 -*-

import time
import smbus
import RPi.GPIO

bus = smbus.SMBus(1)

# BH1750FVI的i2c地址就是0x23
addr = 0x23
port = 25

RPi.GPIO.setmode(RPi.GPIO.BCM)
RPi.GPIO.setup(port, RPi.GPIO.OUT)
pwm = RPi.GPIO.PWM(port, 50)
pwm.start(0)
  
try:
    while True:
        data = bus.read_i2c_block_data(addr,0x11)
        # 计算光照度值lux
        lux = (data[1] + (256 * data[0])) / 1.2
        # print lux
        if lux > 100:
            pwm.ChangeDutyCycle(0)
        else:
            pwm.ChangeDutyCycle(100 - lux)
        time.sleep(0.2)
except KeyboardInterrupt:
    pass
    
pwm.stop()
RPi.GPIO.cleanup()

参考链接:BH1750FVI

Raspberry Pi & RTC DS3231

rtc

 

尝试了好久终于弄好了。。当初买3231就是看它走时比1307更准。。。

1  接线

这个只要对准接口插上树莓派就可以了,我这个vcc是5v的。至于32k和sqw可以不用接线,还有就是板子的两端都是可以接线的。

 

2  调试

2.1  首先需要改写 /etc/init.d/hwclock.sh 文件

这步可能为非必要步骤,具体修改可以

sudo nano /etc/init.d/hwclock.sh

按照这个文件改写即可,也可以直接拷贝过去。

2.2  设置i2c

这个步骤如果做过就不用重复了

sudo nano /etc/modules

修改下面两行,保存重启即可

i2c-bcm2708 
i2c-dev

2.3  设置

查看i2c设备,成功的话就能看到0x68和0x57这两个地址,其实只要有0x68就可以了

sudo i2cdetect -y 1  #如果是1代树莓派的话吧1改成0

载入模块

sudo modprobe rtc-ds1307

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_devic  #如果提示权限不足用sudo bash。1代树莓派需要把i2c-1改成i2c-0

 

3  常用命令

这个只要搜索hwclock相关的命令就可以了,必要的话直接help,主要是调整下3231的时间

 

4  开机同步

编辑rc.local文件即可

sudo nano /etc/rc.local

在exit 0前面添上

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device #1代树莓派需要把i2c-1改成i2c-0
sudo hwclock -s

 

参考链接:

Adding a Real Time Clock to Raspberry Pi

PI主板和RTC 硬件时钟DS3231的联姻,终于搞定了!(原创)

Raspberry Pi&5110&视频播放

具体思路:
a. 读取视频文件 – 读取帧 – 转换image – 播放
b. 当初就想到树莓派的cpu太弱,肯定会很卡,结果就是卡的我无法直视了。。。。
c. 而且使用了openCV来解码视频,无限报错“No accelerated colorspace conversion found from yuv420p to bgr24”,重新下载编译都花了大半天还是报错,坑了。
d. 反正也实现了基本功能,干脆就贴下吧。视频解码使用openCV的。

1  openCV的安装

sudo apt-get install libopencv-dev python-opencv

如果以上安装了报错,就采用下面的方法,不过编译要花很多时间,要有心理准备,当然也可以用pc来编译会快些

sudo aptitude remove ffmpeg
cd /usr/src
sudo mkdir ffmpeg
sudo chown `whoami`:users ffmpeg
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure
make
sudo make install

2  5110player

openCV是不支持音频解码的,所以只有画面。。。

import time
import Adafruit_Nokia_LCD as LCD
import Adafruit_GPIO.SPI as SPI
import Image
import cv2

print 'Press Ctrl-C to quit.'

# Raspberry Pi hardware SPI config:
DC = 23
RST = 24
SPI_PORT = 0
SPI_DEVICE = 0

# Hardware SPI usage:
disp = LCD.PCD8544(DC, RST, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=400000))

# Initialize library.
disp.begin(contrast=60)

# Clear display.
disp.clear()
disp.display()

# Open "1.mp4"
videoCapture = cv2.VideoCapture('1.mp4')

# Get fps
fps = videoCapture.get(cv2.cv.CV_CAP_PROP_FPS)

# Time starting display image
timesta = time.time()

# The number of frames which have been read
n = 0
time.sleep(0.1)
while True:
# Time now
timenow = time.time()
# Calculate the frame nx to display
nx = int((timenow - timesta) * fps) + 1
for x in range(1,nx - n):
success, frame = videoCapture.read()
n = nx
image = Image.fromarray(frame).resize((LCD.LCDWIDTH, LCD.LCDHEIGHT), Image.ANTIALIAS).convert('1')
disp.image(image)
disp.display()