软件与工具资源
- 操作系统官方下载地址:
- windows下的SD卡格式化软件 SD Formatter
- wondows下写入操作系统镜像软件
- 远程桌面访问VNC
树莓派安装 tightvncserver,电脑安装RealVNC - 远程桌面访问 RDP(比VNC效果好)
树莓派安装xrdp,windows使用 mstsc命令 - 远程通过SSH方式访问树莓派,windows下可用的软件,putty和XSHELL
- Windows下开源且好用的解压软件Bandizip
- 开源的FTP服务器架设以及客户端软件FileZilla
- pypi国内镜像douban,使用方式在pip命令后加后缀,例如 pip install pygame -i https://pypi.douban.com/simple
树莓派操作使用
-
配置文件
/boot/config.txt -
ip地址配置文件
/etc/network/interfaces -
DHCP配置文件(如果采用静态ip,需要使用下列命令清除)
sudo rm /var/lib/dhcp/* -
网络名称配置文件
/etc/hosts -
配置命令
sudo raspi-config -
使用摄像头拍照
rapistill -o xxx.jpg -
使用摄像头录像(ms)
raspivid -o video.h264 -t 10000 -
将树莓派作为网络存储服务器
sudo apt-get install samba
sudo apt-get install samba-common-bin
为samba添加用户 sudo smbpasswd -a xxx
修改 /etc/samba/smb.conf 第一行的工作组
最下方添加
[USB]
path=/media/NAS
comment= NAS driver
valid users=xxx
writeable=yes
browseable=yes
create mask=0777
public=yes
samba restart
-
网络打印服务器 CUPS
sudo apt-get install cups
sudo usermod -a -G lpadmin xxx
//增加一个浏览器用于界面管理,使用631端口
sudo apt-get install iceweasel
管理界面 -
屏幕截图 scrot
sudo apt-get install scrot -
延时截图
scrot -d 5 -
鼠标截屏
scrot -s -
I2C通讯工具
sudo apt-get install i2c-tools
sudo i2cdetect -y 1//如果是旧版本的话把1改为0 -
串口检测工具 minicom
sudo apt-get install minicom
minicom -b 9600 -o -D /dev/ttyAMA0
首先要启用local echo功能才能看到反馈,按Ctrl+A,Z,E
树莓派硬件
- 安全规范
- GPIO引脚上的电压不能超过3.3V
- 每个输出电流不超过3mA
- 电源不高于5V
- 5V供电电源输出总电流不超过250mA
- 最简单的电压转换办法,利用470欧和220欧电阻串联分压,也可以按比例放大到47k,22k以降低电流损耗
-GPIO输出能力汇总参考文章 - 树莓派配件
- Raspberry Squid,内置了电阻的LED灯和按钮配件。有pyton squid库
- 可以采用电机驱动装置RasPiBobot Board 为树莓派供电,电机驱动板python库raspirobotboard
- 传感器接口板[SenseHAT],python库为sense-hat或者SenseHAT pro, explorerhat
- [计算模块](https://www.raspberrypi.org/blog/raspberry-pi-compute-module-new-product/)
- Pi Plate原型版用于焊接元件以快速开发
- 自行设计符合HAT标准的原型板,在config文件中启用 dtparam=i2cvc=on,烧写EEPROM工具
- 树莓派HAT标准硬件设计指南
- 开关交流电配件 PowerSwitch Tail II(光隔加继电器模块)
- 精确控制伺服电机,可以使用Servo Blaster库。
- 同时控制多台伺服电机,可以使用Adafruit的伺服电机HAT(hardware at top),Adafruit文档
- 控制直流电机,可以通过L293D类似芯片搭建H桥,或者使用SparkFun的H桥模块。
- 控制步进电机可以使用RaspiRobot
- 监测移动可以使用被动红外运动检测模块PIR
- 测量电阻值可以通过连接电容通过测量电容充电时间的方法来实现
- 树莓派没有内置模拟量输入,采集模拟量可以通过MCP3008类似的ADC模块实现
- 测量温度可以采用不精确的TMP36或者高精度的数字温度传感器DS18B20
- 测量温湿度与气压的Sense HAT
- aLaMode板(带GPIO接口的Arduino平台),由于aLaMode设计缺陷,需要在树莓派的以太网口缠一点绝缘胶带处理。
- 树莓派控制硬件视频
树莓派快速使用
- 媒体中心,安装OpenELEC_Pi2系统,使用kodi
- Office办公软件 abiword gnumeric
- 浏览器 chromium-browser
- 网络摄像头服务器,安装motion
- 配置
sudo vim /etc/motion/motion.conf
#将 daemon off改为on
#webcam_localhost=on改为off
sudo vim /etc/default/motion
#将sart_motion_daemon=no 改为yes
-
启动 service motion start
-
运行老式模拟器游戏 安装 stella
-
安装JDK,运行minecraft(在树莓派3中该软件已经安装了)
sudo apt-get install openjdk7-jkd(版本可能需要更新到8) wget http://getspigot.org/spigot18/spigot_server.jar java -Xms512M -Xmx800M -jar spigot_server.jar nogui #sudo vim eula.txt #修改版权文件eula=false 改为true
-
运行游戏 Open Arena (很暴力)
-
无线电发射器 安装pifm库,需要在GPIO引脚4上面接根短导线当天线
mkdir pifm cd pifm wget http://www.icrobotics.co.uk/wiki/imagies/c/c3/Pifm.tar.gz tar -xzf Pifm.tar.gz sudo ./pifm sound.wav 103.0 (待播放文件和频率)
-
图像处理 GIMP
sudo apt-get install gimp -
收听互联网广播 vlc
-
gps模块 gpsd 和gpsd-clients ,命令,cgps -s,xgps
-
与arduino通讯可以采用pyserial串口或者给arduino 安装 PyFirmata固件
Linux命令参考
-
查看ip地址
ifconfig (书中这个命令已经过期了)
ip a -
在系统启动时自动执行脚本
修改 /etc/rc.local
在第一行添加例如
/user/bin python /home/pi/my_program.py &
** & 符号用于指示后台运行,否则将无法进入系统,非常重要** -
让脚本自动运行
/etc/init.d/my_server(my_server为自定义的脚本文件)
sudo chmod +x /etc/init.d/my_server (为文件添加运行权限)
-
定期自动运行脚本 crontab -e
-
搜索功能 find /home/pi (启动目录) -name abc.py
-
查看历史记录命令history !x(执行历史记录中第x条)
-
列出usb设备 lsusb
-
将命令输出到文本 ls ->abc.txt ->为重定向
-
连接文件 cat a.txt b.txt->c.txt
-
管道与正则表达式 ls *.py | grep Jun
-
隐藏输出 ls -> /dev/null
-
后台运行 abc.py &, 回到前台 fg
-
别名 alias l='ls -a'
-
使文件立即生效 source .bashrc
-
修改时间 sudo date 010203042031(MMDDHHMMYYYY)
-
存储空间 df -h
Python机器视觉
- 安装SimpleCV
sudo apt-get update
sudo apt-get install ipython python-opencv python-scipy
sudo apt-get install python-numpy python-setuptools python-pip
sudo pip install svgwrite
sudo pip install https://github.com/sightmachine/SimpleCV/zipball/master
运行simpleCV
- 使用python和树莓派摄像头的程序示例
import picamera
from SimpleCV import *
def get_camera_image():
with picamera.PiCamera() as camera:
camera.resolution=(1024,768)
camera.awb_mode='off'
camera.capture('tmp.jpg')
return Image('tmp.jpg')
- python的picamera文档资料
- 边缘检测,边缘和方法 canny边缘,thresh确定边缘所需长度,distance圆形之间的距离
SimpleCV:1>c=Camera()
SimpleCV:2>i=c.getImage()
SimpleCV:3>i.show()
SimpleCV:4>i2=i.invert()
SimpleCV:5>i2.show()
SimpleCV:6>coins=i2.findCircle(canny=100,thresh=70,distance=15)
SimpleCV:7>coins
SimpleCV:8>coins.draw(width=4)
SimpleCV:9>coins.show()
from SimpleCV import *
c=Camera()
while True:
i=c.getImage().invert()
coins=i.findCircle(canny=100,thresh=70,distance=1)
print(len(coins))
- 人脸检测 findHaarFeatures haar特征参考资料
- 运动检测blob detection,findBlobs
- 光学字符识别OCR,安装tesseract
- 利用尽可能少的引脚控制LED,可以使用Charlieplexing技术
python 控制树莓派硬件
- 开闭LED,首先需要python有超级用户权限以调用RPi.GPIO库,sudo python led_blink.py才能运行
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.OUT)
try:
while(True):
GPIO.output(18,True)
time.sleep(0.5)
GPIO.output(18,False)
time.sleep(0.5)
finally:
GPIO.cleanup() #安全模式,使GPIO端口处于输入状态以避免短路
- **PWM输出 **
import RPi.GPIO as GPIO
led_pin=18
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin,GPIO.OUT)
pwm_led=GPIO.PWM(led_pin,500)
pwm_led.start(100)
while True:
duty_s=input("Brightness input (0-100):")
duty=int(duty_s)
pwm_led.ChangeDutyCycle(duty)
- ** 带有GUI的PWM控制程序**
from tkinter import *
import RPi.GPIO as GPIO
import time
led_pin=18
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin,GPIO.OUT)
class App:
def __init__(self,master):
frame=Frame(master)
frame.pack()
self.check_var=BooleanVar()
check=Checkbutton(frame,text='Pin 18',
command=self.update,variable=self.check_var,
onvalue=True,offvalue=False)
check.grid(row=1)
def update(self):
GPIO.output(led_pin,self.check_var.get())
root=Tk()
root.wm_title('On/Off Switch')
app=App(root)
root.geometry("200x50+0+0")
root.mainloop()
- ** PWM输出**
import RPi.GPIO as GPIO
import time
led_pin=18
GPIO.setmode(GPIO.BCM)
#回调函数
def my_callback(channel):
print('You pressed the button')
GPIO.setup(led_pin,GPIO.IN,pull_up_down=GPIO.PUD_UP)
#bounce time是GPIO库内置的防抖功能
GPIO.add_event_detect(led_pin,GPIO.FALLING,callback=my_callback,bouncetime=100)
i=0
while True:
i=i+1
print(i)
time.sleep(1)
- 使用RaspiRobot控制双极步进电机
from rrb3 import *
import time
rr=RRB3(12.0,12.0) # battery,motor
try:
while True:
delay=input("Delay milliseconds between steps:")
steps=input("How many steps forward?")
rr.step_forward(int(delay)/1000.0,int(steps))
steps=input("How many steps backward?")
rr.step_reverse(int(delay)/1000.0,int(steps))
finally:
GPIO.cleanup()
- 使用pygame检测键盘和鼠标移动
import pygame
import sys
from pygame.locals import *
pygame.init()
screen=pygame.display.set_mode((640,480))
pygame.mouse.set_visible(0)
while True:
for event in pygame.event.get():
if event.type==QUIT:
sys.exit()
if event.type==KEYDOWN:
if chr(event.key)=='q':
sys.exit()
else:
print("Code: "+str(event.key)+ " Char: "+chr(event.key)+"\n")
if event.type==MOUSEMOTION:
print("Mouse:(%d,%d)"%event.pos)
物联网与程序示例
- IFTTT用于建立自动发布的流程网站
- ThingSpeak用于发送twitter
- 一些示例程序
网友评论