加油,呵呵,
配置小度wifi上网
以前没用过Linux下无线网卡,不懂配置,还以为编译的驱动有问题,后来才发现是网络配置错误。
查看路由器无线网络的安全模式,即无线数据的加密类型,一般为WPA和WEP,各分几个子类,这里不介绍了,据说WPA比WEP安全性高。
我的为WPA-PSK模式,即需要口令(或者叫密码)的WPA模式。
使用WPA,需要安装wpasupplicant,
#apt-get install wpasupplicant
话说Pi已经安装了这个程序。
1、查看无线网卡的名称
在这里我的无线网卡名称为 ra0。(因为网上教程里无线网卡名都是wlan0,我以为我的也是,就一直没设置对)
2、配置文件
到/etc/wpa_supplicant/wpa_supplicant.conf文件中添加网络配置
3、配置文件
修改完wpa_supplicant.conf后,修改/etc/network/interfaces文件配置。
要配置静态IP,如下:
需要DHCP,如下:
注意上面的wlan0为你的无线网卡的名称,我的是ra0,则需要将ra0替换掉上面的wlan0 。
4、更新网络配置文件
使用命令
#ifup ra0
或者
# ifdown ra0 && ifup ra0
通过上面的步骤,在查看网络配置
#ifconfig
应该能看到已经连接到路由上了。
若要自动连接路由,将interfaces文件中的“#”去掉即可。
修复小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上看看效果:
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()
红外遥控
翻出以前用过的红外接收模块,网上有在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
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个标准重力加速度
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |