这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【i646593001】Raspberry Pi DIY进程帖

共22条 2/3 1 2 3 跳转至
助工
2014-09-06 01:44:00     打赏
11楼

修复小bug


每次接入Pi的电源,在输入用户名和口令前,总会出现一组信息:

"FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck."


会不会很不爽?

查找解决方法,成功解决了这条信息

下面是操作步骤:

# git clone http://daniel-baumann.ch/git/software/dosfstools.git dosfstools

# cd dosfstools

# make
cc -O2 -fomit-frame-pointer -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers -Wmissing-prototypes -Wstrict-prototypes -g   -c -o fatlabel.o src/fatlabel.c
.
.
.
cc   mkfs.fat.o   -o mkfs.fat

# umount /boot
# ./fsck.fat -V /dev/mmcblk0p1
fsck.fat 3.0.24 (2013-11-23)
0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
1) Remove dirty bit
2) No action
? 1
Starting check/repair pass.
Starting verification pass.
Leaving filesystem unchanged.
/dev/mmcblk0p1: 14 files, 2383/7161 clusters

#./fsck.fat -a /dev/mmcblk0p1
#mount /boot

 

重启Pi,bug信息是不是没了呢,不管你还有没有,反正我的没有了


助工
2014-09-06 11:40:52     打赏
12楼

超声测距实验


翻出以前玩过的超声模块,果断接入到Pi上看看效果:


GPIO接口见上图,3pin的是UART,4pin的是超声模块了。

参考超声模块给的例程,自己修改成python语言,运行,成功跑起来了。


附代码:

import RPi.GPIO as GPIO
import time

GPIO_SIG = 11
GPIO_ECHO = 13

def setup():
  GPIO.setmode(GPIO.BOARD)
  GPIO.setup(GPIO_SIG,GPIO.OUT)
  GPIO.setup(GPIO_ECHO,GPIO.IN)
  GPIO.output(GPIO_SIG,GPIO.LOW)
  
def getDistance():
  GPIO.output(GPIO_SIG,GPIO.HIGH)
  time.sleep(0.2)
  GPIO.output(GPIO_SIG,GPIO.LOW)
  
  while GPIO.input(GPIO_ECHO) == 0:
    start = time.time()
  while GPIO.input(GPIO_ECHO) == 1:
    stop = time.time()
  timeslot = stop - start
  distance = timeslot * 34300
  distance = distance / 2
  print 'Distance: %.2f cm' % distance
  
def main():
  setup()
  while True:
    getDistance()
	time.sleep(1)

  GPIO.cleanup()
  
if __name__ == '__main__':
  main()

 



助工
2014-09-09 21:23:29     打赏
13楼

红外遥控


翻出以前用过的红外接收模块,网上有在Pi上使用的历程,所以也折腾一下。(参见http://www.freemindworld.com/blog/2013/130316_raspberry_pi_with_remote_control.shtml

1、接口连线


网上的例程都是正极接3.3v,我的小模块加了一个电阻,开始接3.3v时,接收信号不稳定,基本上没反应,就快准备收起来时才记得这是玩arduino时用的,该加5v电源。接到5v时,成功接收信号。

2、系统软件安装
    lirc_rpi项目为Linux内核提供了支持GPIO口的红外接收管的驱动,在最新的Raspbian系统中应该已经包含。
然后需要安装用户态的服务进程:
$sudo apt-get install lirc

加载lirc_rpi内核模块:
$sudo modprobe lirc_rpi
默认使用GPIO18作为输入信号端口,将红外接收的输出端接到该接口即可。

3、测试红外接收是否正常
$sudo mode2 -d /dev/lirc0
如果按遥控器上的键,屏幕上能显示出一串pluse和space值的话,多半就是正常了。如下图:

4、配置下/etc/lirc/hardware.conf:

LIRCD_ARGS="--uinput"
...
DRIVER="default"
...
DEVICE="/dev/lirc0"

5、让lirc学习一下你遥控器上的按键

    在我的例子中,请至少学习5个按键,分别做为上(up)、下(down)、左(left)、右(right)、选择(sel):
sudo /etc/init.d/lirc stop
#学习按键
irrecord -n -d /dev/lirc0 ~/lircd.conf

输入命令后如下图


可以看到开始需要输入大量的信号,Pi对信号进行分析解码。然后输入一个按键名,再输入信号,依次进行,知道案件输入完成。最后将信号信息保存到lircd.conf中。

*********************先做到这里了,后面的没做***********************

配置完后,可以用irw命令测试遥控器是否工作正常。
配置~/.lircrc.conf文件,把按键与需要触发的行为进行关联:


更详细资料,参见:http://forum.eepw.com.cn/thread/260581/2#18


助工
2014-09-11 23:47:54     打赏
14楼
重複勞動而已,沒有什麼新內容。

助工
2014-09-12 01:06:04     打赏
15楼

MPU6050測試

測試Pi的I2C接口,找外設,看到了手中的MPU6050模組,正是I2C接口的,所以就用它了,順便學習下python語言。MPU6050為六軸運動傳感器,含3軸加速度,3軸角速度(陀螺儀),是平衡車、四軸飛行器等設備中經常用到的模組。

1、接線

接線?很簡單,I2C就兩根線,外設的SDA接Pi的SDA口,外設的SCL接Pi的SCL口,VCC和GND就接到Pi上的VCC和GND了,Pi上的接口在哪裡?在下面了^-^


2、配置I2C內核模組

Pi上的I2C內核模組是默認關閉的,怎麼打開呢?

$sudo raspi-config

打開配置命令,選擇Advanced Options,第六項就是使能I2C端口的,來張圖吧:


進去之後選擇Yes就可以了。

還有種方法,和上面的操作功能是一樣的,直接修改文件:

$sudo nano /etc/modprobe.d/raspi-blacklist.conf


將I2C*的黑名單加個#註釋掉即可。其實在raspi-config裡的操作就是對這個黑名單做修改。

3、加入模塊到啟動項

儘管很多資料就是做了前面兩步,但還沒有結束,

$sudo nano /etc/modules

添加一行“i2c-dev",如圖


該文件為開機啟動時需要載入的內核模組。

4、安裝python-smbus

$sudo apt-get install python-smbus
$sudo apt-get install i2c-tools
好像記得安裝第一項會自動安裝第二項。

5、測試接口

重啟Pi,以載入I2C模組。

$sudo i2cdetect -y 1
該命令檢測I2C 1 上設備的地址。

結果如下:


0x68正是MPU6050的地址。

使用i2c-tools中的命令i2cdump -y 1 0x68 即可看到MPU6050 中的所有数据。

5、编程读数

使用python编程,配置mpu6050,即可使用该外设获取数据了。

贴自己写的代码,配置信息就不解释了:


来看看结果:


小模块基本上放平了,看到加速度的读数(带符号数),x、y轴的读数为一个很小的负数,z轴的读数在0x3e00附近,配置的最大量程为4G(-2G~2G),则z轴的加速度为0x3e/0x80 = 0.96875g,即约0.97个标准重力加速度



助工
2014-09-19 21:42:43     打赏
16楼

定时台灯

前几天翻《爱上RaspberryPi.pdf》,看到介绍定时台灯,简易发声板,Web台灯等项目,原来活动里要求的几个项目都是从这里来的,为了赚点分,照着做了一下。

不附pdf下载地址,版权归作者所有


原实验是通过GPIO口控制继电器控制台灯,没有继电器,就直接用GPIO控制led了吧。

Linux系统对设备的操作都是通过文件的形式操作的,本实验直接对相关文件操作,没有用python等工具。

实验步骤:

1、实现LED的点亮

代码如下:


注意,文件需要可执行权限,运行文件需要带参数,即文件中用到的$1


2、关闭LED



3、定时任务

现在已经把控制GPIO接口开关的命令整合成了两个简单的脚本,下面就可以通过cron来设置每天定时开关灯的时间了。cron是Linux中用来定时执行任务的程序。通过使用cron,可以设置在指定的日期或者时间执行指定的命令,或者以指定的时间间隔(如一小时)来执行命令。在我们的项目中,每天晚上8点打开led,凌晨两点关闭台灯。





该实验就是这样了,学习一下命令,学习一下cron,that's all。


助工
2014-09-19 23:55:51     打赏
17楼

WEB台灯

没有继电器,所以,WEB台灯降配成WebLED啦


上面做过上传Pi的CPU温度值到Web上的例子,这次继续。

Yeelink网站支持创建开关型的传感器(开关应该属于输入设备~),支持访问与修改,于是可以通过这个开关来控制LED,只需在Pi上循环访问该开关的值并根据值设置GPIO输出即可。


步骤:

1、连线

板子上#7接到LED的s端,GND接-端,LED模块上已经有电阻串联,不需要额外加电阻了。



2、在Yeelink上添加-开关

在下图左上角有个“添加一个传感器”,加入一个类型为“开关”的传感器。图中的曲线是我的Pi的CPU温度曲线。



3、编程

程序比较简单,为省事贴张照片了,ApiKey隐去了~


程序是一个死循环,读数据,判断并输出。

4、效果展示

录段视频,优酷有审查,该等会贴上。Yeelink有手机客户端,也能操作该开端,也很方便。


视频地址:http://player.youku.com/player.php/sid/XNzg2NDE0NDI4/v.swf



参考资料:

http://blog.csdn.net/xukai871105/article/details/18624307


助工
2014-09-21 06:04:00     打赏
18楼

LED呼吸灯

通过pwm输出,控制端口电平的百分比,达到控制led亮度的目的。

程序比较简单,实验比较简单。附代码:


效果就是led 亮灭循环,网上视频很多,不录了。


助工
2014-09-21 07:57:46     打赏
19楼

舵机控制

舵机控制需要严格的时序控制。


1、接线

舵机有3根线,电源,地和信号线,电源接5V,地接GND,信号接12号端口(GPIO18)。


2、安装RPIO

pip install -U RPIO

RPIO is an advanced GPIO module for the Raspberry Pi.使用该模块,通过DMA方式产生PWM,能够达到1us的精度,关于该模块pwm的用法参见

http://pythonhosted.org/RPIO/pwm_py.html

3、编程

RPIO对servo默认设置为20000Hz,只需要设置端口和占比即可,程序如下:


程序依次控制舵机转到10度至170度的位置。


4、小视频

录了段视频,稍后放送


视频地址:http://player.youku.com/player.php/sid/XNzg3MzU1MjEy/v.swf

助工
2014-09-22 20:43:31     打赏
20楼

下载固件后拷贝了Module.symvers文件到rpi-linux文件中

这一步你有没有做?没问题的话你就从头再来吧


共22条 2/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]