Jump to content
Forum sending old emails Read more... ×
chicken

[POTM] dAISy - A Simple AIS Receiver

Recommended Posts

2 hours ago, nazmibojan said:

does dAISy support for receiving AIS Message 24 (Class B Static Data)?

Yes, message type 24 is supported. dAISy itself is not really aware of the AIS message contents. It will forward all valid AIS messages it receives.

You may see fewer Class B messages than expected because:

  • Class B transponders are much weaker than Class A, and therefore more prone to noise interference. Especially for long messages like static data.
  • Class B messages are typically sent less frequently than Class A

Share this post


Link to post
Share on other sites

Hi chicken,

really great project. I bought one dAISy 2015, and it still performs well!

Now I tried to setup the development environment to make some experiments. I followed the steps as described in the forum, but I failed to receive valid messages...

I checked the setup couple of times, everything should be OK.

My setup:

  • MSP-EXP430G2 board (out of the box) with code composer studio 6.2

  • E10-M4463D module with changes of L,C,R,... like shown in forum

  • 100k Pulldown on SDO and SDN

  • dAISy-E10-M4463D branch SW

I use a Raspberry as AIS sender to transmit recorded messages. With my reference dAISy receiver, I can see the messages, and also the ships in OpenCPN.

But on the development setup, I can only see:

.

error: invalid stuff bit

sync A RSSI=-066dBm

error: invalid stuff bit

sync A RSSI=-063dBm

error: CRC error

sync A RSSI=-063dBm

error: invalid stuff bit

sync A RSSI=-063dBm

error: invalid stuff bit

sync A RSSI=-062dBm

error: invalid stuff bit

sync B RSSI=-083dBm

error: invalid stuff bit

sync A RSSI=-069dBm

error: invalid stuff bit

sync A RSSI=-065dBm

error: invalid stuff bit

sync A RSSI=-064dBm

error: invalid stuff bit

.

 

Do you have some tips?

Are there any additional steps needed (crystal for CPU, jumper on ti board, settings,..)?

 

Best Regards

 

Share this post


Link to post
Share on other sites

Hi Sven,

I think the MSP430 side is ok. It looks like your setup is able to configure the radio, and something is received. Sync indicates, that the packet handler ISR found preamble and start flag.

Did you already try the regular branch? The 4463 branch is quite stale, and it looks like I did a few changes to radio configuration and packet handler on master after the branch.

Regards,
Adrian

Share this post


Link to post
Share on other sites

Hi Adrian, 

thanks a lot for reply. I need to use the branch, because of the E10 module....

Maybe I try to merge the config ( because oft GPIO 2+3).

If I would remove the RF switch oft my module, maybe it is possible to use the master path oft SW.

Do you still sell the Booster Pack Modules? This would be a better entry point for my setup...

Thank you very much!

Sven

Share this post


Link to post
Share on other sites

This is the relevant line in radio_config.h:

#define RF_GPIO_PIN_CFG 0x13, 0x1A, 0x00, 0x11, 0x14, 0x1B, 0x00, 0x00

..which in the M4463 branch looks like this:

#define RF_GPIO_PIN_CFG 0x13, 0x11, 0x00, 0x21, 0x20, 0x14, 0x00, 0x00

I have a few bare boards of the booster pack laying around. Happy to solder them up if there's interest.

 

Share this post


Link to post
Share on other sites

Hi Adrian.

Thanks for the good directions and explanations on how to update firmware on the Daisy usb 

I have already done it with apparently good results.

Although I have the Daisy 2+ too, I am quite happy with the low power consumption of the Daisy usb.

I'm not interested in a very long range but in reasonable results with the minimum power consumption, Thats the reason I want to use Daisy usb in my little sailing boat where power plant is reduced to be a car battery or something alike.

I want to connect the Daisy usb to a nmea 0183 receiver. I have ordered the optional backcase card withe the nmea rs422 adaptor circuit but it seems that is out of stock.

I have read in the forum the posibility to use a logical nand gate that will reverse and adapt  the voltages in the output so I can connect it to the nmea receiver.

Is it necessary to add any more passive components apart from the logical gate to provide the correct current values etc?

Has anybody used this option?  I have planned to use  74hc00  wich is a nand and i will connect the to inputs toghether to the tx terminal from the Daisy in the pcb auxiliary connections.

Of course if your nmea rs422 adaptor is going to be placed again  in stock I could wait for it as it gives to me peace of mind that it will be running correctly.

Any comments??

Thanks and regards

 

 

 

 

Share this post


Link to post
Share on other sites

Hi Fonsin,

Glad to hear that you successfully upgraded your dAISy USB.

As for the NMEA-0183 adapter: I didn't plan to build new ones as I think the 2+ is the more robust solution. But there were recently a number of requests from current owners of the dAISy USB, so I will probably spin a small batch in the next few months.

It seems like the NMEA-0183 listeners are not too picky. Some (e.g. Garmin) even use just one data wire, which may directly work with the UART output on TX. Though input protection may be an issue.

On my adapter I use the TI UA9638, which is also available as DIP package (UA9638CP)
http://www.ti.com/product/UA9638

This IC is very easy to use. Just connect 5V, GND and TX, and you get a RS-422, i.e. NMEA-0183 compliant, differential output. And maybe add a 0.1uF and/or 1uf capacitor across the power pins if you want to get fancy.

The downside of the UA9638 is, that it's relatively power hungry (50mA) compared to the rest of dAISy USB. It is responsible for 75% of the increased current consumption of the dAISy 2+. There are other RS-422 drivers which seem to be lower power, like for example the ST485 or MAX485. But I haven't used any of these.

This document goes into great detail about the electrical characteristics of NMEA-0183:
http://www.actisense.com/wp-content/uploads/2017/07/NMEA-0183-Information-sheet-issue-4-1-1.pdf

Best Regards,
Adrian

PS: As for logic gates, the 74HC00 could be a good alternative for the transistor. It depends a bit on the required current, but the NMEA-0183 spec says 2mA per listener, which a logic gate should be able to deliver. Another option is to use 74HC04 to create a true differential signal (1 inverter for one line, and 2 inverters in series on the other line).

Share this post


Link to post
Share on other sites

Hi Adrian,

I have your dAISy AIS Receiver and am pleased to report it works very well connected to the USB port on my laptop with OpenCPN.

I now wish to hardwire it directly to my "Nmea2wifi" multiplexer.  Like Fonsin I wanted to purchase your NMEA output option but see it is no longer available.

The Nmea2wifi has opto isolated inputs and I heard that you could "connect Vcc and SerialOut as the 2 wires" to the multiplexer but I cannot see where these are on the Daisy cct board.

Could you please advise which pins to use? (Have attached photos of my unit).

Many thanks,

Geoff 

20180226_203501.jpg

20180226_203934.jpg

Share this post


Link to post
Share on other sites

Hi @GeoffH

I just sent out a request for a quote for a few more of the NMEA add-ons for the small dAISy. It will probably be 4-6 weeks before they are back in stock.

I tried to directly connect dAISy TX to the A2 and GND to B2 on the NMEA2WiFi, but it does not have enough power to drive the signal.  If you are into tinkering, you can try something like this:

 

Share this post


Link to post
Share on other sites

I've been using a dAISy HAT Receiver for Raspberry Pi to send data to ais.boatnerd.com and it works well through Kplex but I can't get it to auto start.

Is there a better way to do this than what I'm doing below?

I created a file called aisstart.sh in /home/pi
Inside the file it says
sudo service kplex start
sudo kplex file:direction=out

Then
chmod -755 /home/pi/aisstart.sh

And added it to rc.local with and without bash

I can manually run aisstart.sh from the command line using: sudo bash aisstart.sh and it works.

Here is rc.local, I've tried with and without sudo and bash.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
aisstart.sh &

exit 0

When that didn't work I removed it from rc.local and added it as a cron job using:

@reboot sleep 10 cd/home/pi && /bin/bash aisstart.sh
With and without the sleep.

Is there something simple I am missing or a better way?

Share this post


Link to post
Share on other sites

Hello @NsNcc

I'm not much of a Linux wizard, so I don't have a better method to achieve this.

There was a thread on the Kplex Google group about issues with the dAISy USB because Linux didn't initialize the USB ports early enough, but I wasn't aware that the same issue exists with the regular serial port.

https://groups.google.com/forum/#!forum/kplex

Kplex may be overkill if you just need to forward AIS data to a network address. Alternatives are:

A simple python script: https://github.com/jaluebbe/ais-forwarder

Or a shell script:

But of course, that still leaves you with the "run at startup problem". As a Linux noob, I'd try this (which looks very similar to what you're already doing):

https://superuser.com/questions/155476/how-do-i-make-a-script-run-upon-startup-of-the-ubuntu-machine

 

 

Share this post


Link to post
Share on other sites

Thanks Chicken, the Python script worked.

I have added this line:
sudo python /home/pi/ais-forwarder.py

to rc.local using the command:
sudo nano /etc/rc.local

Just above the Exit 0 line in rc.local

Now it starts on reboot.

Share this post


Link to post
Share on other sites

hello @chicken.

I really like your work in here. You have done such an amazing thing by building dAISy from scratch. 
I am new in MSP430.

I would like to ask you more about your source code.
In main.c, you wrote ifdef DEBUG_MESSAGES and ifdef TEST. 
How do you run DEBUG_MESSAGES and TEST? How is it activated? 
Do you use CCS to activate DEBUG_MESSAGES  and TEST?

Really aprreaciate your help.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×