项目简介
本项目将AWS IoT C++/Python SDK集成到QCS610平台,开发了一个小型应用程序,可将相机的当前状态通知到AWS IoT Core控制台。项目以应用目录 /home/user/aws-iot
为源树起始点,具备视频录制、数据发布等功能。
项目的主要特性和功能
- 支持多种视频格式录制,涵盖4K、HD视频,还支持TCP流。
- 集成AWS IoT C++/Python SDK,能将相机状态以JSON格式发布到特定主题。
- 支持视频下载和实时流播放。
安装使用步骤
依赖环境
- Ubuntu System 18.04或更高版本。
- 主机系统安装Adb工具(Android调试桥)。
- 搭建QCS - 610 Yocto构建环境。
- 有效的亚马逊AWS用户账户。
- 主机系统安装Python 3.5或更高版本。
前提条件设置
- 设置主机系统的应用程序SDK
- 从
https://thundercomm.s3.ap-northeast-1.amazonaws.com/shop/doc/1593776185472315/Turbox-C610_Application-SDK_v1.0.tar.gz
下载应用程序SDK。 - 使用
tar -xzvf Turbox-C610_Application-SDK_v1.0.tar.gz
解压SDK。 - 执行
./oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh
脚本,按提示操作完成环境设置。
- 从
- 设置目标设备的相机环境配置
参考文档
https://www.thundercomm.com/app_en/product/1593776185472315
中的Turbox-C610_Open_Kit_Software_User_Manual_LE1.0_v2.0.pdf
文件的2.10.1节进行设置。 - 设置AWS - IoT连接
参考
https://docs.aws.amazon.com/iot/latest/developerguide/iot-quick-start.html
,创建事物对象时选择Python设备,将凭证保存到应用程序目录的certificates
文件夹。 - 在Yocto环境中编译AWS - IoT - C++ SDK
- 复制
meta-aws-master/recipes-sdk/
到Yocto项目环境。 - 初始化构建环境,选择机器和发行版。
- 在
bblayers.conf
文件中添加aws-meta
路径。 - 运行
bitbake aws-iot-device-sdk-cpp-v2
命令。 - 复制编译后的库到应用程序目录。
- 编译应用程序代码,替换
basic_pub_sub
文件夹,再次编译生成目标二进制文件。 - 重命名二进制文件并复制到应用程序目录,同时复制
libcJSON.so
文件到lib
文件夹。
- 复制
构建相机应用程序
- 设置主机系统的交叉编译环境:
git clone <source repository> cp <source repository> /home/user/aws-iot/ cd aws-iot source /usr/local/oecore-x86_64/environment-setup-armv7ahf-neon-oe-linux-gnueabi
- 构建相机应用程序二进制文件:
$CC video_record.c video_record.h -o videoaws `pkg-config --cflags --libs gstreamer-1.0`
- 使用adb命令将相机应用程序二进制文件推送到目标板:
adb root adb remount adb shell mount -o remount,rw / adb forward tcp:8900 tcp:8900 adb push videoaws /data/aws-iot/
包含AWS证书密钥文件
- 编辑
publish.py
和basic_pub_sub/main.cpp
文件,更新证书详细信息。 - 使用
adb push certificates /data/aws-iot/
命令将证书推送到目标板。
AWS Python IoT SDK集成
- 使用
adb push AWSIoTPythonSDK/ /data/aws-iot/
命令将SDK推送到目标板。 - 使用
adb publish.py /data/aws-iot/
命令推送Python源代码。 - 使用
adb push json/ /usr/lib/python3.5/
命令将JSON库文件夹推送到目标板的Python 3.5库文件夹。
AWS IoT C++ SDK集成到目标板
确保已下载 meta-aws
仓库源代码并在Yocto环境中编译AWS - IoT - C++ SDK。
1. 使用 adb push lib/ /data/aws-iot/
命令推送编译后的库到目标板。
2. 使用 adb push publish /data/aws-iot/
命令推送C++目标可执行文件到目标板。
执行目标环境中的二进制文件
- 在QCS610板上运行以下命令启动应用程序:
adb shell /# chmod +x /data/aws-iot/videoaws /# cd data/aws-iot/
- 启用WiFi连接:
/# wpa_supplicant -Dnl80211 -iwlan0 -c /etc/misc/wifi/Wpa_Supplicant.conf -ddddt & /# dhcpcd wlan0
- 将
data/aws-library
添加到库路径:/ # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/aws-iot/lib/
- 执行命令:
/# ./videoaws {video_format} {output_path/ip} {c++/python}
例如,播放4K视频:/# ./videoaws 4k /data/video/4k.mp4 c++
下载视频和查看实时流
- 下载视频:使用
adb pull /data/4k.mp4
命令将视频下载到主机系统。 - 查看实时流:在主机系统打开新终端,运行
adb forward tcp:8900 tcp:8900
和vlc -vvv tcp://127.0.0.1:8900
命令,确保已安装VLC播放器。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】