Wind Sensor[]
Note for Joey: Wrote a bunch, wiki didn't save it, to sum up: read this. Find out if we can send data from physical sesnor to Arduino, without using the combiner. We need RS-232 or (if possible TTL) logic to the Arduino, so we need to figure out what is coming from top of mast, and how to convert it. We have an opto-isolator in our combiner, that is between the sensor and the NMEA IN A and B ports on the combiner. which apparently converts to RS232.
As of summer 2011 the combiner was completely removed to simplifiy things as we were not using any of its features. The Wind Sensor communicates in RS422, but this is compatible with RS232 as shown here. This also allows us to talk back to the wind sensor, as well as eliminate the power needed for the opto-isolator. The converter is now in storage. The currently enabled messages are:
Code | Description | Transmitted every 0.1time n seconds |
GPGLL | GPS Data | 5 |
HCHDG | Heading Data | 3 |
WIMWVR | Relative wind data | 3 |
GPRMC | Minimum standard GNSS data | 5 |
GPVTG | Speed Data | 10 |
In addition it is possible to change the rate of transmission and to enable/disable strings by sending the wind sensor the following code
Serial3.println("$PAMTC,EN,RMC,0,10");
with the second term being the code to modify, the third being enable/ disable, and the last one being the rate of transmission. The sensor can only send 480 characters per second, if more is needed there is an option to increase the transmission rate by a factor of 8. More information can be found in the PB100 manual.
Serial info: 4800 bps, 8N1 PB100 Data has a sample of data that could be received from the wind sensor.
GPS Data[]
(This is linked to from LabViewpage) Out of our GPS, we get data along the lines of
DDMM.MMMM
Google Earth wants format:
DD.DDDDDD
So we divide the minute part of the struct by 0.6.
The data isactually sent to shore in format:
DDDDDDDD //no decimal place
If we ever have the ability to add more precision to the GPS, the LabView will need to be changed.
Wiring harness 2009/2010[]
Data from the wind sensor first connects to the NMEA combiner box: http://boatingdirect.net/browseproducts/Furuno-AIR-033-800-NMEA-Data-Combiner.HTML, which also has the power cable wired into it. This threadtalks about connecting RS422 to RS232. In our box, the signal is then opto-isolated from RS422 to RS232 (Actisense PC-OPTO-1-A cable) and connected to a female waterproof DB9. The wind sensor has a single connection through the waterproof box, a waterproof DB9 providing power and signal connections.
The pins on the male, box-mounted DB9 are as follows:
1: nc 2: pin 2 of com A(or C? where does the wind sensor connect) cable to microcontroller 3: pin 3 of com A(or C?) cable to microcontroller 4: pin 4 of com A(or C?) cable to microcontroller; OR +5V 5: ground of 12V+/-3 power to wind sensor 6: nc 7: +12V of power to wind sensor 8: nc 9: nc
The pins on the female, inline DB9 are as follows:
1: nc 2: pin 2 of in-line DB9 inside NMEA combiner box; this then connects to pin 2 of the optoisolator's DB9. 3: pin 3 of in-line DB9 inside NMEA combiner box; this then connects to pin 3 of the optoisolator's DB9. 4: pin 4 of in-line DB9 inside NMEA combiner box; this then connects to pin 4 of the optoisolator's DB9. 5: ground of 12V+/-3 power to wind sensor, 'Power -' on NMEA combiner box 6: nc 7: +12V of power to wind sensor, 'Power +' on NMEA combiner box 8: nc 9: nc
FROM JOEY:
http://arduiniana.org/libraries/TinyGPS/ possible library to solve this problem, will research more and test soon.
http://www.actisense.ca/collections/nmea-0183/products/pc-opto-3-nmea-0183-to-pc-cable This cable appears to be the simplest way to connect the wind sensor to an RS232 port. I believe it is in fact the optoisolator that we have (or perhaps a different version of it) installed in the combiner box. There is a paper data sheet for the optoisolator that we have presently floating around the bay; or I may have put that information on the wiki already. I'd recommend checking the data sheet for this and the wind sensor and draw a circuit diagram to connect them and power the wind sensor C Blair 05:42, November 19, 2010 (UTC)
Actisense PC-OPTO-1-A cable is our optoisolating NMEA->RS232??? cable
http://www.actisense.com/HTML/Products/NMEA%20Interfaces/NMEA_Multiplexer_4/index.php new unit
Sensors[]
GPS[]
The PB100 user manual states GPS data is "accurate" to 0.0001 minutes. There are 1853 meters in a minute of latitude. 0.0001*1853 = 0.18m, or 18 centimeters.
It takes about 5 minutes to obtain a GPS lock, halfway up the parking lot ramp. With fully clear skies (no buildings) it might be faster. The lock is lost at the team space door almost immediately.
Wind[]
Wind data info here
Programming[]
NMEA 0183
Useful article for understanding use of NMEA standard
http://en.wikipedia.org/wiki/NMEA_0183
NMEA library reference for decoding NMEA strings
The frequency at which different NMEA strings are sent can be edited either via the serial port, or by connecting the wind sensor to it's PC-based WeatherCaster software (see user manual).
From the user manual:
WeatherCaster needs to be set as follows: If you have a USB Converter, set the baud rate to 4800. If you have a Combiner, set the baud rate to 38400.
Vals's Notes on Programming[]
See also Reading and Parsing Data for information about NMEA codes and parsing.
Here's some data we collect from the wind sensor:
GP RMC - recommended minimum specific GNSS data[]
$GPRMC,000309,V,,,,,,,010102,,,N*5B
Name | Example | Description |
Message ID | $GPRMC | |
Time | 000309 | hhmmss |
Status | V | A = data valid, V = data not valid |
Date | 010102 | ddmmyy |
Mode Indicator | N | N = data not valid |
Checksum | *5B |
GP VTG - course over ground and ground speed[]
$GPVTG,,,,,,,,,N*30
Name | Example | Description |
Message ID | $GPVTG | |
Mode Indicator | N | N = not valid |
Checksum | *30 |
This is unused.
HC HDG - heading deviation and variation[]
$HCHDG,186.0,0.0,E,,*26
Name | Example | Description |
Message ID | $HCHDG | |
Heading | 186.0 | Degrees, one decimal place |
Deviation | 0.0 | Degrees, one decimal place |
Deviation Direction | E | Must be E or W |
Variation | 0.0 | Doesn't seem to be used for anything |
Variation Direction | E | Must be E or W |
Checksum | *26 |
WI MWV - wind speed and angle in relation to the vessel's bow/centerline (relative(\)[]
$WIMWV,270.0,R,0.1,N,A*27
Name | Example | Description |
Message ID | $WIMWV | |
Wind Angle | 270.0 | Degrees, one decimal place |
Reference | R | R = relative, T = true |
Wind Speed | 0.1 | Units specified by next field. Blank if data not valid |
Wind Speed Unit | N | N = knots |
Status | A | A = data valid |
Checksum | *27 |
GP GLL - Geographic position - lattitude/longitude[]
$GPGLL,,,,,,V,N*64
Name | Example | Description |
Message ID | $GPGLL | |
Status | V | A = data valid, V = data not valid |
Mode | N | N = data not valid |
Checksum | *64 |
This is unused.
See PB100 Data for sample data.
Magnetic Variation:
($--HDG supersedes $--VTG, which supersedes $--RMC) <-- external inputs, which supersedes the
WeatherStation internal calculation. The internal calculation determines magnetic
variation using the present position and the date: these data provided from an external
GPS will supersede the data from the internal GPS.
$PAMTC,EN,Q*11 // a command with it's checksum
Notes on NMEA data[]
NMEA data transmission can be suspended and resumed using
$PAMTX,<1>*hh<CR><LF> where the <1> argument can either be 0 or 1.
0 = temporarily suspend transmission of all NMEA sentences. (default)
1 = resume transmission