-主线程用于读取MPU9250姿态数据并通过PWM控制舵机;
-Thread_V4l2_Grab_Mjpeg线程用于读取USB摄像头原始流数据并保存成JPG文件;
-Thread_TCP_Web_Recv_for_Send_Only_JPEG_File和Thread_TCP_Web_Send_Only_JPEG_File为一对,用于监听50011端口HTTP服务请求,并发送USB摄像头原始流数据到50011端口地址;
-Thread_RKNN_SSD_Demo线程用于读取USB摄像头原始流数据JPG文件并做物体特征归类处理,生成目标图像;
-Thread_TCP_Web_Recv_Tflite和Thread_TCP_Web_Send_Only_JPEG_File_Tflite为一对,用于监听50012端口HTTP服务请求,并发送经过NPU SSD库处理过的USB摄像头物体特征归类目标图像流数据到50012端口地址;
-Thread_TCP_Server线程用于建立TCP连接并监听50014端口的TCP请求,目前只做了最简单的收发DEMO,没有做具体功能,很基础的功能,没什么亮点;
-Thread_TCP_Web_Send_Simple和Thread_TCP_Web_Recv_Simple为一对,用于监听50013端口的HTTP请求,并发送DEMO网页用于显示或控制,该功能与Thread_TCP_Server线程类似,只是使用了HTTP应用;
-Thread_SX1278_DIO0_Read线程用于读取SX1278 LORA模块DIO0外部中断事件,以便监控是否有LORA数据发出,并在简单处理后发送到3306端口;
-Thread_Scan_WIFI_Hotspot线程用于虚拟网卡扫描WIFI热点信号,目前该功能还在测试中,未稳定。
首先是演示MPU9250控制双轴舵机并将本地图片流推到本地HTTP服务器的功能,其中50011端口为原始USB摄像头图像,50012端口为NPU处理过的物体特征归类目标图像:
原始USB摄像头图像和物体特征归类目标图像还通过极点云映射到了外网域名,只要程序在运行中,大家也可以通过如下域名直接进行访问:
http://5596a3eb.r2.vip.cpolar.cn
http://73bf1293.r2.vip.cpolar.cn
注意!以上所有有关摄像头图像处理和推流的操作都可同时访问并处理,因为我使用的是11个子线程的多线程代码,并运用了linux互斥锁功能。
然后是将接收到的LORA数据处理并上发到本地MYSQL数据库3306端口:
通过外部极点云域名可以直接访问:
因为使用的是内存表引擎,数据在断电之后会丢失,所以不需要担心SD卡频繁写入的问题。
除了远程访问数据库以外,还有个更简单的方式可以查看LORA收到的传感器数据,那就是直接访问50013端口的HTTP网页服务器:
或者是从映射的外网域名访问: