Reach M+ Integration with Raspberry Pi 3

Hi guys,

I’m looking to integrate a Reach M+ as an Integrated Navigation System (INS) for attitude and position determination of a boat at sea. I am using a Raspberry Pi 3 as a ‘data logger’ or central computer.

The problem is that I cannot reliably get the Reach M+ to work, it only sporadically connects to the configured WiFi. It sometimes gives an output over USB (using USB-to-PC in the Reach Settings after connecting to the WiFi hotspot), but no reliable stream of data whatsoever. I am also currently seeing no position fixing when I try to reach the device via the WiFi hotspot.

Funnily enough, it has started outputting some data in bursts every few seconds since I began typing this forum post, but as before, it is not coming in at reliable intervals. This is using the ‘screen’ command with the configured Baud rate, using the recognized USB address

I have also tried using the UART interface for the RPi but to no avail; I do not get any output on that whatsoever.

Does anybody have any suggestions or examples on the integration with a Raspberry Pi 3?

Cheers!

I use the uart interface at 9600 baud and NMEA it works flawlessly on S1.

I can read it with RPi or Arduino.

Are you also powering the Reach M+ from the Pi’s USB port? And if so what other USB devices is the Pi powering?
I have had issues with suboptimal USB power supplies (old Android chargers) resulting in flaky wifi on the Reach M+.

After turning things off and on again for a while i was able to reproduce this when i power my Reach M+ from the PI’s USB port. The ping times on the wifi get into the hundred of milliseconds and the /dev/ttyACM0 on the PI is not outputting anything (or only once in a while). Also the green LED does not turn on every time.

I have measured the voltage and current on the USB port that is used to power the M+. The Pi is only delivering 4.8 volts. My USB powerbank gives a steady 5.2 volts. May be it’s that.

Thanks for the replies!
@Simon_Allen, how did you wire it to your RPi? I have connected the 5v and ground pins, as well as the Reach M+’ RX to the RPi’s TX port and the Reach M+’ TX port to the RPi’s RX port (UART at Raspberry Pi GPIO Pinout). I am using the ‘screen’ command on my RPi to try and readout the data (I have enabled UART in the boot.txt file).

@kapejod I am indeed powering the Reach M+ from the RPi. There are no other USB devices connected. I am using the 5.1V 2.5A official RPi charger.
Thanks very much for reproducing the problem, it sounds similar to my problems.
Do you have any recommendations on how to best readout and power supply?

I can image I best solve this problem by using an external power supply for the Reach M+. @kapejod, do you also readout the data from UART or do you use USB?

Thanks again!

Your charger is probably fine, but the Pi does not just pass-through the voltage to the USB ports. It is generated somewhere on the board.

I usually make the M+ connect to a wifi (the one on the Pi or a mobile hotspot) and then send the position output via TCP. Actually i would prefer USB (or USB networking) but that is not possible because you cannot connect USB and an external 5 volts power supply at the same time (without releasing magic smoke, i guess).

I just made a quick test with a Pi Zero-W and this gives me 5.0 volts and a happy M+. But this was just a quick test without a SD-card…

Thanks!

I will be trying maybe to power the Reach M+ externally while receiving through the USB, perhaps by disconnecting the +5V lead in a USB cable.
Maybe I would better power it externally and attempt to receive through the UART, hoping for some input on that.

I would suggest to power it via USB (not from the Pi) and connect the S1 UART to a UART on the Pi.

Agree with kapejod, there is no way the RPi will power the emlid. I use seperate 3A 5V power supply, but ensure they have a shared ground.

1 Like

Hi @Aereau,

How is it going? Have you managed to output the position?

If not, may I ask you to post here your hardware setup photos and the Simple system report from Reach?

Hi,

I’m back working on the integration again. Unfortunately, I did not get it working yet.
I see in the browser that the Reach M+ is not obtaining any position.
When I put the Reach M+ in base mode I do get a constant stream of data on the UART (though unreadable because of the format).

Here is a screenshot of the Reach M+'s webpage (after a while, been online for hours).

Here is a picture of the (current) hardware setup, a 2x2.1A 5V Anker charger, which I currently use for the RPi, the Reach is currently connected to the RPi 5.1V 2.5A power supply.

Close up of the connection to the RPi, using the S1 connection to connect to the RPi’s RX, TX ports and a common ground.

Here is the simple system report:

Simple system report
app version: 2.15.5-dev-r0
'wifi_status, interface: wlan0':
- wifi_mode: infrastructure
- ip: 192.168.2.150
  is_added: true
  is_connected: true
  is_visible: false
  mac_address: CC:B8:A8:F5:87:B2
  security: wpa-psk
  ssid: OOE
  uuid: 38c10485-2ecb-45e7-8dc5-9537e5fb1642
base mode:
  base coordinates:
    accumulation: '2'
    antenna offset:
      east: '0'
      north: '0'
      up: '0'
    coordinates:
    - '0'
    - '0'
    - '0'
    format: llh
    mode: single-and-hold
  output:
    enabled: false
    format: rtcm3
    path: serial://ttyMFD2:460800:8:n:1:off#rtcm3
    type: serial
  rtcm3 messages:
    '1002':
      enabled: true
      frequency: '10'
    '1006':
      enabled: true
      frequency: '10'
    '1008':
      enabled: false
      frequency: '10'
    '1010':
      enabled: true
      frequency: '10'
    '1019':
      enabled: true
      frequency: '10'
    '1020':
      enabled: true
      frequency: '10'
    '1097':
      enabled: true
      frequency: '10'
    '1107':
      enabled: true
      frequency: '10'
    '1117':
      enabled: true
      frequency: '10'
    '1127':
      enabled: true
      frequency: '10'
    gps:
      enabled: false
      frequency: '10'
    qzss:
      enabled: false
      frequency: '10'
bluetooth:
  discoverable: false
  enabled: false
  pin: '***'
camera:
  duty cycle: 20
  enable: false
  period: 2
  polarity: true
correction input:
  input2:
    enabled: false
    format: rtcm3
    path: ttyMFD2:38400:8:n:1:off
    send position to base: 'off'
    type: serial
  input3:
    enabled: false
    format: rtcm3
    path: :9028
    type: tcpsvr
logging:
  base:
    format: RTCM3
    started: true
    version: null
  correction:
    format: RTCM3
    started: true
    version: null
  interval: 24
  overwrite: true
  raw:
    format: UBX
    started: true
    version: null
  solution:
    format: LLH
    started: true
    version: null
lora:
  air rate: 2.6000000000000001
  frequency: 868000
  output power: 20
position output:
  output1:
    enabled: true
    format: xyz
    path: ttyMFD2:460800:8:n:1:off
    type: serial
  output2:
    enabled: true
    format: xyz
    path: :9002
    type: tcpsvr
  output3:
    enabled: true
    format: llh
    path: :2014
    type: tcpsvr
  output4:
    enabled: true
    format: llh_ext
    path: :2015
    type: tcpsvr
rtk settings:
  elevation mask angle: '15'
  glonass ar mode: 'on'
  gps ar mode: continuous
  max horizontal acceleration: '1'
  max vertical acceleration: '1'
  positioning mode: single
  positioning systems:
    compass: false
    galileo: true
    glonass: true
    gps: true
    qzs: true
    qzss: true
    sbas: true
  snr mask: '35'
  update rate: '5'

The signal strengths are too low to get a fix.
You will spend days being frustrated trying to get an RTK fix through a window.
Go outside,
A clear view of the sky to at least 20 degrees above the horizontal and you will wonder what the problem was.
Stick your antenna on the lid of a large coffee tin and put it on a picnic table, this’s is the simplest way to avoid multipath, and improve things even further.

Hi @Aereau,

As I can see from your System Report, you’re trying to output the position in XYZ format. However, Reach M+ requires at least Single solution status to output its XYZ coordinates. In the meantime, there is no solution status at all, that’s why Reach doesn’t send the data over UART.

So, as @Simon_Allen recommended above, you should try to test it outdoors.

@Simon_Allen, cheers that was very useful! I tried it before inside but had a windows open, that is why I was having problems now. I hung the antenna outside and I am getting a pretty steady signal. I was hoping to get some output (since I am not yet too concerned with positioning).

@tatiana.andreeva, I tried some different settings, and it is all working now.
I might be back later with some additional questions but for now I am very satisfied.

Thank you for all your help!

1 Like

This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.