这三天我对SS0.5进行了3次拉距测试,也修改了几次代码,终于,今天中午的拉锯测试满足了500m的通讯目标。
(镇楼图是拿GPT生的,可爱捏())
当初SS0时我不了解无线电,听信了商家的抽象言论,真以为普通的NRF24L01能够传输1.1km,直到发射前的测试才知道实际传输距离在50-70m左右。
后面我稍微了解了一下无线电相关的知识,决定使用lora技术的模块来回传。lora模块主要是传输距离远,但是传输数据慢,还是半双工。飞控遥测的实际数据量不大,用lora模块是很合适的。考虑到法律法规限制,我使用了有SRRC认证的模块,不过发射功率就比较小,只有12dBm。为了让火箭姿态影响减小,飞控端天线使用小增益的2dBi天线,地面站则使用5dBi天线。地面站用一块stm32f103c8t6,裸机,仅简单处理数据并发给电脑,或将电脑发送的数据简单处理发射给飞控。电脑上运行的上位机做接收与发射的各种处理,比如解析协议并显示数据,发送命令等等。
即便这样,在如此受限的发射功率下要达到500m的通讯还是很困难的,在权衡下,我确定了发射前只5Hz回传四元数,上位机可以显示火箭姿态,同时每个周期有较多时间可以用于接收上位机通过地面站发送的命令。发射后5Hz单工回传,不允许上行通讯,虽然看上去的确很卡,但用于遥测够用了,而且发射后也用不上上行数据了。加速度,角速度都是int16_t格式的,经过校准的原始数据,四元数将每个值-1到1映射到int16_t,速度和位置则用单精度浮点数。由于我用的lora模块是基于sx1281芯片的,自带硬件crc,所以可以省去校验字节。这样加上一些序号,时间等辅助字节总共只有50字节,这样就可以用距离更远,链路更紧的参数了。除了遥测包外,还有状态包,应答包等等,都比较短。完整的协议我会在整个飞控开发完后公开。
我总共进行了3次拉距测试,前两次没有达标的我就随便说点了。先说一下拉距测试的方式。我用了ToDesk把电脑投屏到手机,然后用了两步路记录路径,并计算直线距离。
第一次是在学校教学楼到宿舍区部分进行的,楼比较多,而且代码允许了发射后上行,用的是距离更近,链路更充裕的参数,信号在160m左右断连。
第二次是在体育馆进行的,从看台一端到另一端大概200m,这时的地面站收到的信号功率和信噪比下降是比较正常的,后面下看台往体育馆外继续走的时候信号功率和信噪比都大幅下降,在350m处断连,推测是体育馆遮挡的影响。
第三次,也就是今天中午的时候,是在大沙河堤上进行的。我先详细说明实验的场地,观察到的现象,后面再放图。
地面站放在长椅上,离地不到1m。离地面站直线距离200m处有一座桥。我拿着飞控,会在1-2m高度做各种姿态的旋转,边转边走(所以旁人看来会很滑稽……),来测试不同高度(高度低了主要是地面反射,吸收,还有低高度的障碍啥的影响,其实不影响上箭的,一直举在2m高度转理论上就行,但是那我会显得更加抽象……),姿态(天线辐射功率根据方向不同不同,2dBi只是比较接近全向)的通讯。
举高到2m后删去偶尔出现的异常值,结果大概如下:在200m处的桥底下,按照朝向,高度不同信号强度-80到-90dBm,信噪比0到8dB。过桥后,500m处按照朝向,高度不同信号强度-80到-90dBm,信噪比-4到6dB。在606m处,按照朝向,高度不同信号强度-95到-105dBm,信噪比-7到0dB。此时丢包率仍可接受,遥测算是流畅。在660m处地面站停止更新,信号强度停在-105dBm,回去的时候发现因为太晒笔记本电脑过热卡了,实际上可能660m还不是极限。
可见当前飞控能完成500m遥测的目标。后续我会改一下上位机的后期处理,然后开始做惯导和卡尔曼滤波的算法。
接下来给一下第三次的实验的一些图以及视频(视频并不是举高2m录屏的,所以和前面数据有点冲突,500m处忘记录视频了,和200m差不多流畅,只是数据不一样,600m+的视频断续很大概率是笔记本过热导致)。
(200m)
200m.mp4 点击下载
(200m)
(500m,不知道画质为啥突然这样,可能电脑已经开始热晕了)
(600m+)
600m+.mp4 点击下载
(600m+,丢包率开始有点高了,但作为遥测还是能接受的)
(总体路径,最终结束的地方是我发现电脑已经热卡了,退出了投屏,这个一起结束了)
确实是出于合规性的考虑,这个飞控固件只是为了500m级的探空火箭设计的,能在空旷处500m传回数据就足够了。当时也确实出现只有在河堤这种比较空旷的地方才能拉距这么远。另外感谢建议,你提到的sx1278我会加入飞控代码生成范围的。