4. 第一个应用程序
开发板默认预置了GPIO操作、视频图像采集、智能算法推理等多个功能示例,用于帮助用户快速确认开发板环境安装的完整性。
4.1. GPIO读写操作
开发板 /app/40pin_samples/
目录下,预置了多种40PIN管脚的功能测试代码,包括gpio的输入/输出测试、PWM、I2C、SPI、UART等测试。所有测试程序均使用python语言编写,详细信息可以查阅 40PIN 功能使用。
以/app/40pin_samples/button_led.py
为例,该程序配置38
号管脚为输入,配置36
号管脚配置为输出,并根据38
号管脚的输入状态来控制36
号管脚的输出状态。
环境准备:使用杜邦线连接
38
号管脚到3.3v or GND,以控制其高低电平。运行方式:执行
button_led.py
程序,以启动GPIO读写程序sunrise@ubuntu:~$ cd /app/40pin_samples/ sunrise@ubuntu:/app/40pin_samples$ sudo python3 ./button_led.py
预期效果:通过控制
38
号管脚的高低电平,可以改变36
号管脚的输出电平值。sunrise@ubuntu:/app/40pin_samples$ sudo python3 ./button_led.py Starting demo now! Press CTRL+C to exit Outputting 0 to Pin 36 Outputting 1 to Pin 36 Outputting 0 to Pin 36
4.2. 图像分类算法示例
开发板上安装了test_mobilenetv1.py
程序用于测试mobilenet v1图像分类算法功能,该程序读取 zebra_cls.jpg
静态图片作为模型的输入,并在命令行终端输出分类结果cls id: 340 Confidence: 0.991851
环境准备:无
运行方式:执行
test_mobilenetv1.py
程序sunrise@ubuntu:~$ cd /app/pydev_demo/01_basic_sample/ sunrise@ubuntu:/app/pydev_demo/01_basic_sample$ sudo ./test_mobilenetv1.py
预期效果:输出图像分类算法的预测结果,id和confidence。
zebra_cls.jpg
是一张斑马的图片,按照ImageNet
数据集的分类,返回结果id为340, 置信度为0.991851。
========== Classification result ==========
cls id: 340 Confidence: 0.991851
4.3. USB摄像头使用
开发板上安装了 usb_camera_fcos.py
程序用于测试USB摄像头的数据通路,该示例会实时采集USB摄像头的图像数据,然后运行目标检测算法,最后把图像数据和检测结果融合后通过HDMI接口输出。
环境准备:
USB摄像头接入到开发板上,确认生成
/dev/video8
设备节点通过HDMI线缆连接开发板和显示器
运行方式:按照以下命令执行程序
sunrise@ubuntu:~$ cd /app/pydev_demo/02_usb_camera_sample/ sunrise@ubuntu:/app/pydev_demo/02_usb_camera_sample$ sudo python3 ./usb_camera_fcos.py
预期效果:程序执行后,显示器会实时显示摄像头画面及目标检测算法的结果(目标类型、置信度),如下所示:
详细代码实现说明请查阅基于USB摄像头推理章节。
4.4. MIPI摄像头使用
开发板上安装了mipi_camera.py
程序用于测试MIPI摄像头的数据通路,该示例会实时采集MIPI摄像头的图像数据,然后运行目标检测算法,最后把图像数据和检测结果融合后通过HDMI接口输出。
环境准备:
将MIPI摄像头模组连接到开发板MIPI CSI接口,具体连接方法可以参考MIPI摄像头连接教程章节
通过HDMI线缆连接开发板和显示器
运行方式:按照以下命令执行程序
sunrise@ubuntu:~$ cd /app/pydev_demo/03_mipi_camera_sample/ sunrise@ubuntu:/app/pydev_demo/03_mipi_camera_sample$ sudo python3 ./mipi_camera.py
预期效果:程序执行后,显示器会实时显示摄像头画面及目标检测算法的结果(目标类型、置信度),如下所示:
详细代码实现说明请查阅基于MIPI摄像头推理章节。