使用MosaicHAT和Arduino构建GPS/GNSS接收机

4260年

29

7

使用MosaicHAT和Arduino构建GPS/GNSS接收机

在接下来的步骤中,我们将看到如何使用Arduino和mosaicHAT。mosaicHAT是基于树莓派兼容的GNSS板Septentrio模块,mosaic-X5,厘米级多波段多星座GPS/GNSS接收机。

紧凑的马赛克使其难以置信地方便提供物联网和机器人应用程序的高度准确和精确的定位。mosaicHAT项目是开源的,在Github上有完整的文档,可以轻松制造或集成到不同的设计中:

https://github.com/septentrio-gnss/mosaicHAT

步骤1:组件

为了构建这个项目,我们需要以下组件:

  • Arduino UNO(或任何Arduino类型)
  • mosaicHAT
  • GNSS天线
  • 16*2液晶屏(12C)
  • 电路试验板
  • 2 * 9 v电池
  • 2 *电池连接器
  • 按钮
  • 电线

步骤2:示意图

Arduino:

  • Arduino VIN >电池+9V
  • Arduino GND >电池GND

mosaicHAT:

  • mosaicHAT TX > Arduino D10
  • mosaicHAT RX > Arduino D11
  • mosaicHAT +5V >电池+9V
  • mosichat GND > GND

液晶显示器:

  • 屏幕SDA > Arduino A4
  • 屏幕SCL > Arduino A5
  • 屏幕VCC > Arduino +5V
  • Screen GND > GND

按钮:

  • 按钮引脚> Arduino D2
  • 按钮引脚> GND

原理图是使用开源软件设计的弗里茨。你可以下载mosaicHAT的Fritzing部分在这里

第三步:连接

  • 我用了一节+9V的电池,后来又加了一节并联电池来提供更大的电流(我们还需要给天线供电!)实际上,使用锂电池等其他能源可能是一个更聪明的想法。
  • 屏幕亮度可通过背面的可变电阻优化。
  • 按钮连接是有效的低。

步骤4:Mosaic-X5配置

我们需要mosaicHAT在COM2每次启动时输出一个NMEA流(在mosaicHAT中,COM1连接到树莓Pi UART引脚,而COM2暴露为不同的FTDI连接)。Arduino将读取信息并在液晶显示屏上输出读数。

配置mosaicHAT可以很容易地使用Septentrioweb界面的mosaic-X5。通过USB连接mosaicHAT到您的PC,并在其默认地址上打开web“192.168.3.1”下一个:

  • 沟通选项卡并选择系列。
  • 修改波特率COM29600
  • 点击好吧使更改生效。
  • n mea / SBF并选择新的n mea流
  • 选择串行然后连接类型COM2作为连接/端口。
  • 保持默认时间间隔(1秒)并选择GGA作为要输出的消息。
  • 点击好吧使更改生效。
  • 现在一个弹出消息框将询问是否要将当前配置保存为启动配置。选择保存

恭喜你!mosaicHAT已经准备好了。是时候玩Arduino了。

步骤5:Arduino代码

下面是接收器的ArduinoC代码,并附有注释。该代码主要做以下工作:

  • 设置I2C液晶显示器和软件串口为mosaicHAT(因为我们不想使用Arduino的USB串口,保留它用于计算机通信)
  • 阅读来自mosaicHAT的NMEA GGA消息,并将其解析为我们感兴趣的阅读。
  • 在显示页上显示读数,点击按钮进行导航,如下所示:
    1-质量和sv号
    2-经纬度
    3-高度和大地水准面分离

代码也被上传到这里github回购

#include  #include  #include  SoftwareSerial mosaicSerial = SoftwareSerial(10, 11);// RX,软件串行TX (mosaicHAT连接)LiquidCrystal_I2C lcd(0x27,20,4);//设置LCD地址为0x27为16字符和2行显示void setup() {pinMode(10,INPUT);//软件串行RX,输入方式pinMode(11,OUTPUT);//软件串行,输出模式mosaicSerial.begin(9600);//软件串行连接mosaicHAT serial .begin(9600);//默认的串行连接到计算机通过USB pinMode(2, INPUT_PULLUP);lcd.begin ();lcd.backlight ();lcd.setCursor (1,0);液晶显示器。print(" mosaicHAT"); lcd.setCursor(1,1); lcd.print(" &Arduino"); delay(1000); // wait a second to show the intro } String nmea_string,sreadString; String Latitude,Longitude,Latitude_direction,Longitude_direction,Quality_indicator,SVs_Number,Height,Geoid_separation,Quality_indicator_string; //nmea message elements String quality_string_array [6]={"No Fix","GNSS fix","DGPS","","RTK","RTK Float"}; //string meanings of quality indicator values bool nmea_flag=false,button_flag=false,push_button=true; int separator_indices[14]; int page=0,disp_counter=0; void loop() { push_button = digitalRead(2); push_button=!push_button; //convert from active LOW to active HIGH (true = clicked) // if(push_button == true &&button_flag==false){ page++; if(page>=3)page=0; button_flag=true; }else if(push_button==false){ button_flag=false; } while (mosaicSerial.available()) { char c; delay(2) ; //delay to allow buffer to fill if (mosaicSerial.available() >0) { c = mosaicSerial.read(); //gets one byte from serial buffer sreadString += c; //makes the string sreadString } } if(sreadString!="" ){ Serial.println(sreadString); nmea_flag=true; nmea_string=sreadString; } sreadString=""; if(nmea_flag){ int c=0; for(int i=0;i=10000){ // reducing update rate to avoid screen flickering lcd.clear(); if(page==0){ // first page: Quality and SVs umber lcd.setCursor(1,0); Quality_indicator_string = quality_string_array[Quality_indicator.toInt()]; lcd.print("Q: "+Quality_indicator_string); lcd.setCursor(1,1); lcd.print("SVs: "+SVs_Number); }else if(page==1){ // second page: Latitude and Longitude lcd.setCursor(0,0); lcd.print(Latitude+Latitude_direction); lcd.setCursor(0,1); lcd.print(Longitude+Longitude_direction); }else if(page==2){ // third page: Height and Geoidal Separation lcd.setCursor(1,0); lcd.print("H: "+Height+"m"); lcd.setCursor(1,1); lcd.print("S: "+Geoid_separation+"m"); } disp_counter=0; } }

第六步:建造房屋

房屋可以用不同的方法、形状和材料建造。我用激光切割机做了接收器的亚克力盒子。激光切割机也可以用来做一个木盒子。找到激光切割机文件在这里

第七步:开始玩游戏!

你现在所需要的就是连接一个GNSS天线并测试接收器。把接收箱带到你的建筑屋顶或一个开放的区域,用尽可能多的可能的GNSS卫星进行测试。你也可以在更有挑战性的环境中尝试。

第八步:进一步

mosaicHAT

mosaicHAT是一个开源的GPS/GNSS PCB集成Septentriomosaic-X5具有基本通信功能的GNSS模块(以及其他Septentrio的马赛克- sx等引脚兼容模块),可以堆叠成树莓派系统。

设计的目标是允许简单的硬件原型使用mosaic-X5GNSS模块利用树莓派的能力。该板也可以单独使用USB。

得到mosaicHAT

直到现在,还没有商店卖马赛克帽。然而,开源GitHub回购包括PCB设计和BOM,因此可以使用本地/国际PCB制造服务来制造马赛克hat。所有PCB组件都在DigiKey

mosaic-X5

Septentrio的mosaic-X5这是一款多波段、多星座的GNSS接收器,采用低功率表面安装模块,具有广泛的接口,专为机器人和自主系统等大众市场应用设计,能够跟踪所有支持当前和未来信号的全球导航卫星系统(GNSS)星座。独特的内置AIM+技术,以减少干扰,Septentrio正在为大众市场的GNSS定位构建块提供性能基准。

做第一个分享的人

    建议

    • 时钟速度的挑战

      时钟速度的挑战
    • 玩具游戏大赛

      玩具游戏大赛
    • 大vs小的挑战

      大vs小的挑战

    7评论

    0
    5003700

    3天前

    好工作

    0
    Ramizz

    7天前

    冷静的项目和清晰的解释。然而,寻找当地的电路板制造商可能是一个挑战(仍然可以做smd正确)。还有其他选择吗?

    0
    zayedalam

    7天前

    我有个问题,我们只能用你展示的接收器?