基于Raspberry Pi Zero的图传系统-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11840|回复: 0

基于Raspberry Pi Zero的图传系统

[复制链接]
发表于 2017-8-30 23:34 | 显示全部楼层 |阅读模式
本帖最后由 422234 于 2017-8-31 00:09 编辑

1.Raspberry Pi Zero上的资源介绍:
未填充的40-pin GPIO头(标准B + / A + / Pi2B布局)
micro-USB电源端口
micro-USB OTG主机端口
迷你HDMI端口
未填充的复合头(TV)
未填充的复位头(RUN)
CSI摄像机连接器(她很脆弱,请温柔些)
micro-SD插槽,为操作系统准备的
WiFi /蓝牙


RPI zero的体积非常的小,只有65mm x 30mm重9g可以说非常适合无人机这种对重量要求很严的设备,但其迷


你的体积也有不方便的地方,开发的时候接口太少,只有两个micro-USB口,HDMI接口还是迷你的,不是标准


件,因此为了方便玩RPI zero就需要借助Xshell等软件来远程连接 RPI zero 具体连接的方法去网上找相关


的教程即可。


2.硬件材料:
· Raspberry Pi Zero *1
u=252830826,2094597842&fm=26&gp=0.jpg
· 8GBTF卡一张
u=2277286361,2724032959&fm=72.jpg

· Pi Camera V2(注意排线规格)
u=3231500334,1976244178&fm=26&gp=0.jpg
· 三叶草天线
u=48657203,3146989775&fm=26&gp=0.jpg
· FPV 5.8G无线发射器5802
TB28znbb1UkyKJjSspjXXbKTXXa_!!1068996812.jpg_250x250.jpg_.webp.jpg
· 地面站


3.RPI zero操作系统的选择与烧选
我们这里的操作系统选择的是RPI 官方的操作系统Raspbian Jessie Lite,这个操作系统没有图形界面节省了一部分RPI zero的资源,因为我们在将RPI作为图传时并不需要图形界面。


Raspbian Jessie Lite系统下载链接:链接 下载完后然后下载固件烧写工具 (下载地址)将固件烧写进SD卡里,烧写方法:
打开烧写工具,选择刚刚下载的Raspbian Jessie Lite
QQ图片20170804003723.png 选择完后点write等待烧写成功后即可,这样一张带有Raspbian Jessie Lite系统的TF卡就制作成功了。


4.安装python
由于图传程序是python语言,因此需要安装Python modules,我还在网上找到了RPI zero连接到GPS的教程,按照这个安装:RPI连接GPS
[mw_shl_code=bash,true]sudo raspi-config[/mw_shl_code]
[mw_shl_code=bash,true]sudo apt-get update
sudo apt-get install gpsd gpsd-clients python-gps[/mw_shl_code]
5.连接设备
RPI zero供电:
QQ图片20170830234505.png QQ图片20170830234716.png 这里选择5V供电,许多飞控都是5V供电的因此从四轴上引出5V电源连接即可。


5.8G无线发射器连接RPI zero
QQ图片20170830235235.png QQ图片20170830235432.png

这里有个是老外连接了GPS的接线图(我不会画这种图)
8137331502955085749.jpg
将摄像头排线插入RPI zero的接口中
TB2dTZha4XkpuFjy0FiXXbUfFXa_!!353076043.jpg

6.运行py程序
[mw_shl_code=python,true]import picamera
import time
import numpy as np
import string
import random
import os

from PIL import Image, ImageDraw, ImageFont

#设置录像分辨率
VIDEO_HEIGHT = 940
VIDEO_WIDTH = 1280

baseDir='/home/pi/osd/' #录制视频的储存目录

os.system('clear') # clear the terminal from any other text

# Create empty images to store text overlays
textOverlayCanvas = Image.new("RGB", (704, 60))
textOverlayPixels = textOverlayCanvas.load()

# 试用robot字体
font = ImageFont.truetype("/usr/share/fonts/truetype/roboto/Roboto-Regular.ttf", 20)

with picamera.PiCamera() as camera:
   camera.resolution = (VIDEO_WIDTH, VIDEO_HEIGHT)
   camera.framerate = 60
   camera.led = False
   camera.start_preview()

   topText = "Alt: 310m       Spd: 45km/h         Dir: N"
   bottomText = "47.6062 N, 122.3321 W   Home: 322m    Rec: 3:22"

   topOverlayImage = textOverlayCanvas.copy()
   bottomOverlayImage = textOverlayCanvas.copy()

   #十字准线
   crosshairImg = Image.open('crosshair.png')

   # Create an image padded to the required size with
   crosshairPad = Image.new('RGB', (((crosshairImg.size[0] + 31) // 32) * 32, ((crosshairImg.size[1] + 15) // 16) * 16))
   crosshairPad.paste(crosshairImg, (0, 0))

   # Attach overlays
   topOverlay = camera.add_overlay(topOverlayImage.tostring(), size=(704,60), layer=3, alpha=128, fullscreen=False, window=(0,20,704,60))
   bottomOverlay = camera.add_overlay(bottomOverlayImage.tostring(), size=(704,60), layer=4, alpha=128, fullscreen=False, window=(0,500,704,60))
   crosshairOverlay = camera.add_overlay(crosshairPad.tostring(), size=(704,512), layer=5, alpha=10, fullscreen=False, window=(20,30,704,512))

   try:
      while True:
         topOverlayImage = textOverlayCanvas.copy()
         bottomOverlayImage = textOverlayCanvas.copy()

         drawTopOverlay = ImageDraw.Draw(topOverlayImage)
         drawTopOverlay.text((200, 15), topText, font=font, fill=(255, 0, 255))

         topOverlay.update(topOverlayImage.tostring())

         drawBottomOverlay = ImageDraw.Draw(bottomOverlayImage)
         drawBottomOverlay.text((150, 20), bottomText, font=font, fill=(255, 255, 255))

         bottomOverlay.update(bottomOverlayImage.tostring())

         time.sleep(1)

   except KeyboardInterrupt:
      camera.remove_overlay(topOverlay)
      camera.remove_overlay(bottomOverlay)
      camera.remove_overlay(crosshairOverlay)

      print "Cancelled"

   finally:
      camera.remove_overlay(topOverlay)
      camera.remove_overlay(bottomOverlay)
      camera.remove_overlay(crosshairOverlay)
[/mw_shl_code]

TUCHUAN.rar

1.08 KB, 下载次数: 24

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-7-4 11:35 , Processed in 0.104560 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表