DesignSpark Electrical Logolinkedin
菜单 搜寻
提问问题

具備GPS功能的Spresense相机

使用Spresense主板和扩展板以及相机和显示器来获取GPS信号并通过相机视频流結合GPS数据。 然后在TFT显示器上显示视频流。

Parts List

Qty Product Part number
1 × Spresense Main Board 178-3376
1 × Spresense Extension Board 178-3377
1 × ST7735 TFT display
1 × Spresense Camera module 182-5720
1 × Wire Jumpers Male to Female 10 pcs 791-6454
See more products

此示例使用Sony的Spresense板与新的多核微控制器CXD5602GG,其中包含6个ARM Cortex-M4内核和一个集成的GNSS接收器以及其他功能。 在此项目中,GNSS模块用于在摄像机将视频流式传输到显示器时同时获取当前位置。 此项目使用带有ST7735 SPI显示驱动器的160x128 TFT显示屏来观看视频。 此示例使用了Arduino IDE中的Spresense板套裝编写。

显示器

使用的显示驱动程序最初是作为Arduino IDE中的库提供的标准驱动程序,该驱动程序已移植到Spresense。 它还有一个新功能,使大多数功能可以在帧缓冲器上运行,而不是直接将操作直接写入显示器。 这种方法通过SPI总线节省了大量的开销写入,最终将帧速率从6-7 fps提高到+20 fps。 使用此帧缓冲方法可消除在向显示器写入形状和文本时可能发生的所有闪烁,每次都会用新图像覆盖这些闪烁。

Display schematics

图:显示连接示意图。

相机

在设置阶段启动摄像机以使用两个缓冲区。 使用两个缓冲区代替一个缓冲区已显示出增加帧速率。 权衡当然是使用了两倍的内存。 每次相机捕获一帧时,将在sketch中用回调函数。 此回调在startStreaming()函数中指定。 将原始捕获的缓冲区直接推送到显示器上会显示失真的图像,因此必须采取一些措施才能以兼容的格式获取捕获的数据。

首先,捕获的数据存储在YUV422中,因此必须将其转换为16位RGB格式。 相机函数由相机库提供: convertPixFormat(CAM_IMAGE_PIX_FMT_RGB565);

其次,340x240的捕获图像对于160x128像素显示器而言太大。我没有重新缩放图像,而是采用了一种快捷方式,只是将像素数据重新排列为新的较小尺寸,这意味着不会显示超出的像素。

第三,将这些数据转储到显示器看起来仍然很有趣。这可能是字节序的问题吗?只需交换uint16_t类型的字节顺序即可完成工作。

第四,最初显示驱动程序是配置RGB的显示,将其更改为BGR将给出我们所追求的结果。现在来自相机的串流就像它应该的样子!

卫星导航系统GNSS

GNSS库已成为一个选项。必须初始化并启动它,但之后由用户询问信息。有几点对于获得好结果很重要。

在设置阶段,有必要指定从哪些卫星类型获取信号。 这取决于您目前在世界的哪个方面。 下表列出了支持的系统可用的位置。

GPS

GLONASS

QZSS-L1C/A

WAAS

QZSS-L1S

95% 准确性

有效的地方

x

       

<5m

在开阔的天空下

x

 

x

   

<5m

在东亚和大洋洲

x

x

     

<7.8m

在城市

x

x

x

   

<7.8m

在东亚和大洋洲的城市

x

   

x

 

<2m

在北美

x

 

x

 

x

<2m

在日本


函式库

该项目使用了三个库。

  • GNSS
  • Camera
  • TFT

GNSS和Camera在Spresense包中提供,所以不需要安装。

但必须下载TFT驱动程序并将其安装到Arduino IDE构建系统中。另一种方法是直接从GitHub下载包:

https://github.com/TE-KarlKomierowski/TFT/zipball/master

在Arduino IDE中,单击[Sketch-> Include library-> Add .zip library]。 选择刚刚下载的zip文件。如果你幸运的话,这种方法会起作用。如果您已经安装了TFT库,则可能会遇到问题,因为在Arduino IDE下载之前可能会选择当前安装的驱动程序。

重命名存储新驱动程序的文件夹可能有助于Arduino IDE查找文件。

在Ubuntu中,可以使用以下命令重命名该文件夹:

mv -v ~/Arduino/libraries/TE-KarlKomierowski-TFT-*/ ~/Arduino/libraries/TFT

KarlKomierowski 还没写个人简介...