矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: laghi

廉价0KHz~1500000KHz软件接收机经验交流,SDR

  [复制链接]
     
发表于 2022-11-16 17:04:55 | 显示全部楼层
18038003904 发表于 2022-11-16 16:33
类似报道应该放十个小时让您过足瘾,我说的是您拿小概率现象在这营造焦虑既不科学也不合适,希望能听懂 ...

你说的不错,我非常赞同你的观点
回复 支持 反对

使用道具 举报

     
发表于 2022-11-16 20:07:07 来自手机 | 显示全部楼层
有人用这个解码GPS信号吗,求经验
回复 支持 反对

使用道具 举报

     
发表于 2022-11-16 21:34:33 | 显示全部楼层
老坛友 发表于 2022-11-16 20:07
有人用这个解码GPS信号吗,求经验


//GPS NMEA-0183协议重要参数结构体定义
//卫星信息
__packed typedef struct  
{                                          
    u8 num;     //卫星编号
    u8 eledeg;  //卫星仰角
    u16 azideg; //卫星方位角
    u8 sn;      //信噪比         
}nmea_slmsg;  
//UTC时间信息
__packed typedef struct  
{                                          
    u16 year;   //年份
    u8 month;   //月份
    u8 date;    //日期
    u8 hour;    //小时
    u8 min;     //分钟
    u8 sec;     //秒钟
}nmea_utc_time;        
//NMEA 0183 协议解析后数据存放结构体
__packed typedef struct  
{                                          
    u8 svnum;                   //可见卫星数
    nmea_slmsg slmsg[12];       //最多12颗卫星
    nmea_utc_time utc;          //UTC时间
    u32 latitude;               //纬度 分扩大100000倍,实际要除以100000
    u8 nshemi;                  //北纬/南纬,N:北纬;S:南纬                 
    u32 longitude;              //经度 分扩大100000倍,实际要除以100000
    u8 ewhemi;                  //东经/西经,E:东经;W:西经
    u8 gpssta;                  //GPS状态:0,未定位;1,非差分定位;2,差分定位;6,正在估算.                  
    u8 posslnum;                //用于定位的卫星数,0~12.
    u8 possl[12];               //用于定位的卫星编号
    u8 fixmode;                 //定位类型:1,没有定位;2,2D定位;3,3D定位
    u16 pdop;                   //位置精度因子 0~500,对应实际值0~50.0
    u16 hdop;                   //水平精度因子 0~500,对应实际值0~50.0
    u16 vdop;                   //垂直精度因子 0~500,对应实际值0~50.0

    int altitude;               //海拔高度,放大了10倍,实际除以10.单位:0.1m     
    u16 speed;                  //地面速率,放大了1000倍,实际除以10.单位:0.001公里/小时     
回复 支持 反对

使用道具 举报

     
发表于 2022-11-16 21:39:46 | 显示全部楼层
/**
  * @brief  nmea_decode_test 解码GPS模块信息
  * @param  无
  * @retval 无
                            利用nmealib解析GPS模块的输出结果大致可以分为三步,
                                第一步定义和初始化GPS信息结构体和解析载体结构体,
                                第二步调用nmea_parse函数完成解析工作,
                                第三步释放解析载体所占用的内存空间。
*/
int nmea_decode_test(void)
{

    nmeaINFO info;          //GPS解码后得到的信息
    nmeaPARSER parser;      //解码时使用的数据结构
                                                        //nmeaPARSER是解析nmea所需要的一个结构。
    uint8_t new_parse=0;    //是否有新的解码数据标志

    nmeaTIME beiJingTime;    //北京时间

    /* 设置用于输出调试信息的函数 */
    nmea_property()->trace_func = &trace;
    nmea_property()->error_func = &error;

    /* 初始化GPS数据结构 */
    nmea_zero_INFO(&info);/*对nmeaINFO这个结构中数据进行清零操作,
                                                            使用nmea_time_now函数对其中utc时间赋一个初值,初值就是当前的系统时间,
                                                            如果没有从nmea中解析出时间信息,那么最后的结果就是你当前的系统时间。
                                                                而nmeaINFO中的sig、fix分别是定位状态和定位类型
                                                        */
        nmea_parser_init(&parser);//nmeaPARSER结构做初始化,以nmea_parser_init和nmea_parser_destroy需要成对出现。

    while(1)
    {
      if(GPS_HalfTransferEnd)     /* 设置半传输完成标志位
                                                                        接收到GPS_RBUFF_SIZE一半的数据 */
      {
        /* 进行nmea格式解码 */
                /*
                调用nmea_parse函数对nmea语句进行解析
                原型:
                    int nmea_parse(      
                                nmeaPARSER *parser,  
                                const char *buff,
                                int buff_sz,  
                                nmeaINFO *info  
                            )  
                这个函数有四个参数,分别是nmeaPARSER指针,buff对应需要解析的nmea语句,buff_sz为nmea语句的长度,nmeaINFO指针
                */
        nmea_parse(&parser, (const char*)&gps_rbuff[0], HALF_GPS_RBUFF_SIZE, &info);
                                    //nmeaPARSER指针,需要解析的BUFF,      串口接收缓冲区一半512/2,nmeaINFO指针

        GPS_HalfTransferEnd = 0;   //清空标志位
        new_parse = 1;             //设置解码消息标志
      }
      else if(GPS_TransferEnd)    /* 接收到另一半数据 */
      {

        nmea_parse(&parser, (const char*)&gps_rbuff[HALF_GPS_RBUFF_SIZE], HALF_GPS_RBUFF_SIZE, &info);

        GPS_TransferEnd = 0;
        new_parse =1;
      }

      if(new_parse )                //有新的解码消息   
      {   
        /* 对解码后的时间进行转换,转换成北京时间 */
        GMTconvert(&info.utc,&beiJingTime,8,1);

        /* 输出解码得到的信息 */
        printf("\r\n时间%d,%d,%d,%d,%d,%d\r\n", beiJingTime.year+1900, beiJingTime.mon+1,beiJingTime.day,beiJingTime.hour,beiJingTime.min,beiJingTime.sec);
        printf("\r\n纬度:%f,经度%f\r\n",info.lat,info.lon);
        printf("\r\n正在使用的卫星:%d,可见卫星:%d",info.satinfo.inuse,info.satinfo.inview);
        printf("\r\n海拔高度:%f 米 ", info.elv);
        printf("\r\n速度:%f km/h ", info.speed);
        printf("\r\n航向:%f 度", info.direction);

        new_parse = 0;
      }

    }

    /* 释放GPS数据结构 */
    // nmea_parser_destroy(&parser);


    //  return 0;
}
回复 支持 反对

使用道具 举报

     
发表于 2022-11-18 10:55:17 | 显示全部楼层
感觉是用强大的软件加极简的硬件 代替 原来 极多硬件才可以完成的功能。。。这个不错 特别是以后普及的话 感觉有市场。。
回复 支持 反对

使用道具 举报

     
发表于 2022-11-18 18:48:23 来自手机 | 显示全部楼层
林强 发表于 2022-11-16 21:39
/**
  * @brief  nmea_decode_test 解码GPS模块信息
  * @param  无

感谢提供资料,还想问一句GPS使用频率,准确到每颗卫星,如何编码加载的,那些卫星发射功率,模块接收到信号后缓存在哪里,如何读取这些信号转化为上面那些变量
回复 支持 反对

使用道具 举报

     
发表于 2022-11-18 19:21:15 | 显示全部楼层
本帖最后由 林强 于 2022-11-18 19:36 编辑
老坛友 发表于 2022-11-18 18:48
感谢提供资料,还想问一句GPS使用频率,准确到每颗卫星,如何编码加载的,那些卫星发射功率,模块接收到 ...


嘿嘿,我忘了你要的不是代码, 你讲的我也不太懂,准备做个GPSDO,正发愁程序怎么写呢
回复 支持 反对

使用道具 举报

     
发表于 2022-11-18 19:41:30 来自手机 | 显示全部楼层
林强 发表于 2022-11-18 19:21
嘿嘿,我忘了你要的不是代码, 你讲的我也不太懂,准备做个GPSDO,正发愁程序怎么写呢

模块直接提供上面变量吗?我的意思是用SDR接收GPS信号,转换为上面变量。然后再后期使用,中国北斗不是支持发射吗,频率是多少
回复 支持 反对

使用道具 举报

     
发表于 2022-11-18 19:43:04 | 显示全部楼层
老坛友 发表于 2022-11-18 19:41
模块直接提供上面变量吗?我的意思是用SDR接收GPS信号,转换为上面变量。然后再后期使用,中国北斗不是支 ...

北斗?哪里的?不是GPS吗
回复 支持 反对

使用道具 举报

     
发表于 2022-11-18 22:26:43 来自手机 | 显示全部楼层
频率频率,先说GPS
回复 支持 反对

使用道具 举报

     
发表于 2022-11-21 16:27:40 | 显示全部楼层
拿来玩DUMP1090,看看头顶有啥飞过,别用上传数据的版本,会喝茶
回复 支持 反对

使用道具 举报

     
发表于 2022-11-21 16:58:09 | 显示全部楼层
大部分时候就听个FM,感觉更多的是电子爱好,并不是热爱无线电
QQ截图20221121165707.jpg
回复 支持 反对

使用道具 举报

     
发表于 2022-11-24 10:50:40 | 显示全部楼层
GitHub上有开源的解GPS程序。还有用于rtk的,是个日本人写的。RTL能解的信号特别多,从am,fm到数字对讲机,手机通话,门铃车锁,慢扫描电视到卫星云图,只要在其接收带宽之内的都能解
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-28 14:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表