树莓派连接USB摄像头进行拍照测试

圆点博士会飞的树莓派系列教程之:
树莓派连接USB摄像头进行拍照测试

本文描述了树莓派3和USB摄像头进行连接并进行拍照的测试,如需转载,请勿用于商业目的,并注明:该文章出自圆点博士无人机www.bspilot.com

首先我们来看摄像头和树莓派的连接:
第一步:把USB摄像头连接到树莓派的USB接口,稍等片刻,让系统自动安装摄像头驱动程序。
第二步:检查摄像头是否被树莓派检测到,使用的指令是:sudo lsusb。同时我们也可以查看/dev目录下有没有video0文件。
比如,我们使用的摄像头所列出的信息如下:
Bus 001 Device 005: ID 046d:0809 Logitech。。。
完成上述动作后,即表明摄像头已经成功和树莓派连接。

接下来,我们可以用python来写程序通过摄像头拍取照片,代码如下:
my_camera = pygame.camera.Camera(“/dev/video0”, (640, 480))
my_camera.start()
my_image = my_camera.get_image()
pygame.image.save(my_image, “my_image.jpg”)
my_camera.stop()

同时,也可以通过安装motion实现在远程对树莓派摄像头进行监控。
第一步:安装motion。 sudo apt-get install motion
第二步:配置 /etc/motion/motion.conf文件
deamon on
stream_localhost off 允许远程访问
第三步:运行motion。 sudo motion
这时,在浏览器上输入 http://ip:8081 就可以看到树莓派上摄像头的画面。不过,motion输出的视频很慢,无法流畅观看视频。

用mjpg-streamer可以做到很流畅地观看视频:
https://github.com/jacksonliam/mjpg-streamer
首先要下载jpeg库和编译软件cmake:
sudo apt-get install libjpeg8-dev
sudo apt-get install cmake
然后可以更改源代码/plugins/input_raspicam/input_raspicam.c下的fps/width/height分别为30/320/240
接下来编译文件:make clean all
最后运行start.sh 就可以在浏览器上观看到视频:http://ip:8080/stream.html

版权声明:
本文描述了树莓派3和USB摄像头进行连接并进行拍照的测试,如需转载,请勿用于商业目的,并注明:该文章出自圆点博士无人机www.bspilot.com

在树莓派上运行Tensorflow深度学习进行图片识别

圆点博士会飞的树莓派系列教程之:
在树莓派上运行Tensorflow深度学习进行图片识别

本文描述了在树莓派3代上运行Tensorflow深度学习进行图片识别的测试方法,如需转载,请勿用于商业目的,并注明:该文章出自圆点博士无人机www.bspilot.com

Tensorflow是谷歌开源的一个深度学习平台,在树莓派上运行深度学习是一个不错的尝试。下面我们来详细描述测试过程。
由于Tensorflow支持使用python来进行程序开发,所以我们要首先在树莓派上安装python软件。python有多个版本,下面的测试是居于python 2.7来进行的,python软件版本可以通过命令 python -V来查看。

要在树莓派上运行Tensorflow深度学习,我们首先要把Tensorflow安装到树莓派上。我们可以使用下面的命令来安装python软件:
sudo apt-get update
sudo apt-get install python-pip python-dev

在https://github.com/samjabrahams/tensorflow-on-raspberry-pi 上有编译好的居于树莓派的库,可以直接使用。下面我们根据该页面的教程来一步步安装Tensorflow:
第一步:使用wget从该页面下载Tensorflow我安装包tensorflow-1.0.1-cp27-none-linux_armv7l.whl
wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.0.1/tensorflow-1.0.1-cp27-none-linux_armv7l.whl
第二步:安装Tensorflow。
sudo pip install tensorflow-1.0.1-cp27-none-linux_armv7l.whl
安装需要一段时间,成功安装后,屏幕会提示:Successfully installed tensorflow …
第三步:重新安装mock库
sudo pip uninstall mock
sudo pip install mock
第四步:我们可以查看Tensorflow的文件目录:/usr/local/lib/python2.7/dist-packages/tensorflow, 在该目录的models/image/imagenet目录下,存放了用于图像识别的代码classify_image.py。

完成上面的准备工作后,我们就可以进入下一个步骤。
首先我们在/home/pi目录下建立一个目录用于测试,如tensorflow_test。
然后,我们在该目录/home/pi/tensorflow_test下使用python来运行该代码:
python /usr/local/lib/python2.7/dist-packages/tensorflow/models/image/imagenet/classify_image.py。
执行上述指令下,程序自动下载Tensorflow深度学习图像识别库:inception-2015-12-05.tgz。另外,也可以手动下载该图像识别库文件:
wget http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz
最后,我们用指令tar解压该图像识别库:tar xf inception-2015-12-05.tgz。解压后,可以看到目录下存放了一张实例图片cropped_panda.jpg。

完成上述步骤后,所有的准备工作已经完成,我们来运行下列指令对图片进行识别:
python /usr/local/lib/python2.7/dist-packages/tensorflow/models/image/imagenet/classify_image.py –image_file cropped_panda.jpg。等待片刻后,屏幕显示识别结果如下:
giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107)
indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779)
lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296)
custard apple (score = 0.00147)
earthstar (score = 0.00117)
该识别的结果表达的意思是:
1,图片是大熊猫的概率是89%
2,图片是大弧猴的概率是0.7%
。。。

我们更换了一张芒果的图片用于测试:
python /usr/local/lib/python2.7/dist-packages/tensorflow/models/image/imagenet/classify_image.py –image_file mango.jpg 得到如下测试结果。
orange (score = 0.42894)
lemon (score = 0.25919)
Granny Smith (score = 0.07387)
banana (score = 0.05778)
pomegranate (score = 0.01463)
此外,该水果在树莓派上的识别时间在30秒左右。至此,整个Tensorflow深度学习图像识别测试完成。

版权声明:
本文描述了在树莓派3代上运行Tensorflow深度学习进行图片识别的测试方法,如需转载,请勿用于商业目的,并注明:该文章出自圆点博士无人机www.bspilot.com

树莓派3和蓝牙4.0BLE串口模块的通讯测试

圆点博士会飞的树莓派系列教程之:
树莓派3和蓝牙4.0BLE串口模块的通讯测试

本文描述了树莓派3代和蓝牙4.0BLE串口模块的测试方法,如需转载,请勿用于商业目的,并注明:该文章出自圆点博士无人机www.bspilot.com

树莓派3代集成了蓝牙功能,支持和蓝牙4.0 BLE的通讯。本通讯的测试环境如下:
1)树莓派3B开发板一块
2)圆点博士飞控板一块 (上面集成了STM32芯片和蓝牙4.0 BLE串口模块)

在飞控板上运行了一段不断通过蓝牙串口发送数据的固件,下面描述如何在树莓派上接收到该数据,并从树莓派发送数据到飞控板。

1)运行 sudo hcitool lescan命令列出所有蓝牙设备的MAC地址。在该测试中,飞控板上的蓝牙模块MAC地址是:20:91:48:A8:2D:C0 , 按下键盘Ctrl+C终止扫描。
2)运行sudo gatttool -b 20:91:48:A8:2D:C0 -I 进入命令行交互操作模式
3)输入connect命令启动蓝牙连接。此时,飞控板上的蓝牙蓝色指示灯停止闪烁,表明蓝牙已经成功连接
4) 使用char-write-req 0x0013 0100 使能通知特性来接收数据。由于蓝牙连接后树莓派就能默认开始接收数据,所以该指令为可选。
5)此时,树莓派屏幕显示从飞控板通过蓝牙4.0 BLE模块发送过来的数据信息如下:
Notification handle = 0x0012 value: 30 30 30 30 0d 0a
6) 使用char-write-req 0x0012 72737475可以发送(rst)指令到飞控板实现飞控板的重启。发送成功后,屏幕会显示:Characteristic value was written successfully.
7)使用disconnect指令终止蓝牙连接。此时,飞控板上的蓝牙蓝色指示灯开始闪烁,表明蓝牙连接已经断开
8)使用exit指令退出gatttool命令行交互操作模式

另外,也可以用sudo bluetoothctl来进行蓝牙连接配置,并用sudo hcidump -t来分析蓝牙数据包

至此,树莓派3代和蓝牙4.0 BLE模块的测试通讯完成。用户可以在该基础上通过树莓派3代上的蓝牙功能对周边蓝牙设备进行数据通讯和操作控制。

版权声明:
本文描述了树莓派3代和蓝牙4.0BLE串口模块的测试方法,如需转载,请勿用于商业目的,并注明:该文章出自圆点博士无人机www.bspilot.com