chicken

[POTM] dAISy - A Simple AIS Receiver

286 posts in this topic

Hi Rian,

 

Are you using CCS to develop your dAISy project? I highly recommend CCS and the original project shared on Github, at least until you get that working. Energia is very limited in its debugging capabilities and may interfere in other unexpected ways.

 

If your code hangs inside radio_configuration(), then it's very likely that there is an issue with the wiring or pin configuration. In particular RADIO_CTS (GPIO1) is critical. The radio uses this line to signal when it's ready to receive more commands from the MCU. Also RADIO_SDN (radio shutdown) needs to be set to low to turn on the radio.

 

A simple test is to call radio_part_info() and see if

  1. the call completes or hangs.
  2. after the call radio_buffer.part_info.part_msb and part_lsb contain the part number (e.g. 4362).

 

If it hangs, double check wiring and pin configuration for RADIO_CTS and RADIO_SDN. If the call completes, but radio_buffer does not contain useful data, verify the SPI connections (MISO, MOSI, SCLK, CS).

 

Edit: Corrected name of RADIO_CTS pin

Share this post


Link to post
Share on other sites

Halo Chicken!

 

Thank you for your advices. It really helped me. I can solve some problem like radio_configuration() and ph_start().

But now, I'm stucking at radio_get_chip_status(0). Either radio_part_info() and radio_get_chip_status(0) hang.

I have been checked the wiring and pin configuration for RADIO_CTS and RADIO_SDN. It was OK.

Can you help me to find where the possibility problem now?

How to ensure the RADIO_SDN is set to be low? By using 100kOhm resistor?

 

Regards,

Rian

 

P.S.: I'm using Launchpad v1.5 and print the original dAISY's PCB design in GitHub.

Share this post


Link to post
Share on other sites

Hi Rian,

 

The packet handler interrupt routine will send SPI commands to the radio IC. This means that you cannot make calls to the radio from the main loop after ph_start(). If you want to test communication with the radio IC, comment out ph_start().

 

radio_setup() does configure all the pins. One could argue that I should also have set RADIO_SDN to low in there. Instead the first few lines of radio_configure() reset the radio by setting the SDN high for a few milliseconds and then low.

 

If you want to put a resistor on the SDN line, I'd use a pull-up to keep the radio in reset until the MCU explicitly turns it on. Either way works though. I'd go with a smaller resistor, maybe 10K.

 

Double check the connections with the defines in the source code. I may have shuffled things around in later revisions.

Share this post


Link to post
Share on other sites

dAISy Hat for the Raspberry Pi

 

I have been using the new dAISy hat for the Raspberry Pi for a while now with OpenCPN and thought I would make a post.  I find it very usable on a RPi 3 (much improved over the RPi 2) and have seen improved reception with the two channel dAISy receiver as well.  Below is a screenshot of the most recent version of OpenCPN (4.5.0) running on a Raspberry Pi 3 with the latest Raspbian and

post-45284-0-59931800-1486509915_thumb.jpg

chicken likes this

Share this post


Link to post
Share on other sites

Hi Rian,

 

The packet handler interrupt routine will send SPI commands to the radio IC. This means that you cannot make calls to the radio from the main loop after ph_start(). If you want to test communication with the radio IC, comment out ph_start().

 

radio_setup() does configure all the pins. One could argue that I should also have set RADIO_SDN to low in there. Instead the first few lines of radio_configure() reset the radio by setting the SDN high for a few milliseconds and then low.

 

If you want to put a resistor on the SDN line, I'd use a pull-up to keep the radio in reset until the MCU explicitly turns it on. Either way works though. I'd go with a smaller resistor, maybe 10K.

 

Double check the connections with the defines in the source code. I may have shuffled things around in later revisions.

 

Hi Chicken!

 

Finally I found the problem of my dAISy. It was the soldering pin between Si4362 and the PCB. I created PCB in the local supplier and soldered the Si4362 IC. Si4362 is soldered by smartphone reparation technician in my town.

He didn't checked the IC pad in the PCB. Obviously, the masking of PCB was hit/impinged the IC pad in the PCB. It caused some pins of IC didn't sticked to the pad and radio_get_chip-status() was became hanging.

Thanks Chicken. I will go to the next step: receive the real AIS signal. Wish me luck.

 

Sincerely,

Rian

Share this post


Link to post
Share on other sites

Halo Chicken!

I used  Si4463 direct mode to receive AIS signals,but  I tested the RSSI of SI4463 is only -70dbm, but datasheet mentions the receiving sensitivity can achieve -100dmn,

I need your help,how can i increase my sensitivity;The problem is inthe software or hardware?Thanks very much。

 

Regards

Tianyi

Share this post


Link to post
Share on other sites

Halo Chicken!

Could you let me see your software or your radio_config.h file? my email address is 315540311@qq.com,could you send it to me? I am very anxious.

Best Regards

tianyi

Share this post


Link to post
Share on other sites

Hi @wanliban

Datasheet numbers are hard (impossible?) to hit, especially when the signal comes from a real world target rather than a piece of lab equipment. But you should definitely be able to achieve better than -70 dBm.

First thing: What does -70 dBm mean in your setup? The level at which you are able to receive any valid messages? Level at which you receive 50% of all messages? 80%? Real world targets or controlled signal from an RF generator?

You can find my radio_config file and software on GitHub: https://github.com/astuder/dAISy

Hardware wise, keeping noise out is very important. A bandpass filter in front of the radio helps a lot. Also make sure to minimize the self-inflicted noise by having continuous ground planes in the RF section and keeping the radio away from noisy circuits (like USB). If testing with real-world signals, make sure to use a proper VHF antenna (i.e. not a short rubber duck) and keep the antenna away from other electronics (e.g. monitors or LED and fluorescent light fixtures).

Also follow Silabs' procedures for RX LNA matching (AN643) and layout recommendations (AN414)

I hope this helps.

tripwire likes this

Share this post


Link to post
Share on other sites

Hi, I have been looking into playing with the AIS radio/hardware side and OpenCPN (I'm the publisher of the free version on the Play Store). I have never used any of the TI controllers, so I'm looking to interface from either Atmel or ESP8266 (or maybe hook them up directly to my FTDI module). After reading all your dAISy related information, datasheets, etc, I have some questions:

 - Would you still recommend your dAISy Rev B breakout board on OSHPark to get started, or has this been outdated now that you have implemented filtering?

 - Does the "BoosterPack" replace the OSHPark breakouts, do they come with the filter circuit and are these still available?

 - Or should i rather get some of the 4463 based modules from China and repurpose them from 433MHz to 162MHz?

 - How does the higher sensitivity of the 4467 compare to the 4463/4362 in practice?

 - SiLabs is currently providing free samples for their ARM/446x based SOICs. Did you try any of these?

 

Cheers

Jens.

 

 

Share this post


Link to post
Share on other sites

Hi Jens,

The breakout while primitive will work as well as the Si446x modules from Ebay/AliExpress. Both will get you started if in line of sight of AIS targets.

But I should publish the BoosterPack sometime and update the Github project accordingly.

The bandpass filter increases the number of messages received. Range can be better or slightly worse depending on your RF environment.

The Si4467 does perform better than the older gen chips (e.g. Si4362-B1B). In real world scenarios the difference can be minor to significant, depending on how marginal AIS reception is.

I recently started toying with the EFM32 MCUs. I hope to create a small, inexpensive and easy to integrate AIS module. I really like the dev environment and peripheral libraries. Too early yet to assess RF performance compared to the standalone radios.

Regards,

Adrian

Share this post


Link to post
Share on other sites

Proud new owner of a dAISy hat here. When I first saw the little USB unit a little over a year ago I thought is was just another reworked DVB tuner and baseband video ADC setup with a micro built in to control it. Obviously it's not that on further examination and when I saw the true 2 channel Raspi hat I just had to have one so I ordered one late Friday night and was pleasantly surprised that it had already arrived on Monday with my mail. Extra bonus points for customer service, I didn't even expect the order to be processed until Monday much less already be in my mailbox. The shipping was more than reasonable 

However I do have a couple of questions ..... First am I correct in concluding that I could just hook this to one of my FT232 devices or even to an Arduino (with RX level shifter) and control/test the radio? That would make it easier to test and to set up without have to do a setup on Raspi. Plus I could easily work it into an existing box by hooking the GPS to port 2 and hooking the output of the dAISy to where the GPS was hooked up. Basically I have a box with an Arduino Mega that used to be a multiplexer/logger but is  a convenient way to route the GPS signal to different devices. Basically it reads my NEO-M8N and routes it out the USB, to an RS-422/485 level converter and to my Lowrance Elite TI and to a Bluetooth radio (HC-6). The finder itself can use AIS sentences and plot ships (Actually in my case barges on the Upper Mississippi River) The Elite TI then outputs the the position and depth (and AIS ) over the built-in WiFi to my Windows tablet. I use this setup to do depth mapping and sidescans of lakes and also interesting structure and wing dams on the Mississippi River and this is the way I get live data to my tablet since all my depth mapping software is Windows based. The AIS data however is only used on the Mississippi River but especially in late July through the end of September when I do a lot of fishing for Flathead Catfish and occasionally Walleye off the tips of wingdams and channel edge dropoffs. It's nice to have 15-20 minutes of advance notice so I can pull up my anchors and get out of the way (and the wake) of these monsters that can easily swamp a 1648 jon boat. I've been using the Marine Traffic app on my phone but you can't leave it running all the time or the data charges will kill you. I bought this for a system I'll build over the winter in the off season but if I can make this work in my existing setup this year would sure be nice 

The second question is about the I2C port, this will eventually go on a Raspi 3 with a Pimoroni Enviro pHat mounted in a Stevenson Screen which will supply temp and pressure (Converted to an MDA sentence in the Pi) as well as a tilt compensated Heading which along with the GPS and AIS data and will be sent out to my Tablet via WiFi and to my Elite Ti via a RS422/485 USB converter. Am I correct in concluding that the I2C port on the dAISy hat is just a feed through to the Pi and not even hooked to the circuitry of the radio? If so I can just hook the Enviro pHat right to that and not have to hack and tack wires to the Pi and dAISy hat which will be mounted just below the Stevenson shield.

While it hasn't been updated in a year and my boat and systems are always in a constant state of flux you can see my boat setup on my blog The Netbook2Chartplotter Project

Share this post


Link to post
Share on other sites

Hi John,

Quite an impressive setup you have here. I will have to dig through your blog when I have more time.

As for your questions:

You are correct, the HAT can be run standalone and connected to a PC with a FTDI cable. You also can power the HAT over USB by connecting the respective wire to a 5V pad on the HAT. Serial 1 duplicates the connection that goes to the Raspberry Pi and you can connect it to any other "host" device, including an Arduino. The baud rate of Serial 1 is fixed to 38400 baud.

And you are also correct regarding the I2C header. It's a straight breakout of the Pi's I2C port, without any connections to the rest of the HAT. I expected that some people want to hook up sensors, as this seems to be supported by projects like OpenPlotter.

Regards,
Adrian

 

Share this post


Link to post
Share on other sites

Sorry about being a little slow to acknowledge, we got hit by one of those Global Warming enhanced extreme rain events Friday into Saturday morning and my basement took on a little water but luckily no real damage other than wet indoor/outdoor carpeting I have in my workshop and computer room. Just to add insult to injury we are going back above flood stage for the second time this summer so I won't be getting out on the river for a couple of weeks at least anyway and there is not a lot of AIS traffic at the 500 acre new lake I'm depth mapping. However I do need to get this going as I'm having my house sided in a month and I have to take down my antennas and I don't think I'll be putting that one back up (2 stacked vertical dipoles) because line of sight issues limits my range and this part of the Mississippi River is already well covered on MarineTraffic. I do however sit 6 blocks from the river right above a lock and dam that also happens to be district headquarters for the Corps of Engineers so I do get a lot of traffic for testing. 

Since last year I run everything at 38400 baud since my GPS has 10 hz output with the exception of the Garmin "Intelliducer" on my aquabot (Be sure to check that out on my blog, I just finished Version 2 a month ago) which is fixed at 4800 in but is bumped up to 38400 like the GPS when it is multiplexed and sent out the USB and Bluetooth outputs with the position data.  It's also nice to have that I2C port just to make for an easier and better looking assembly for the Enviro pHat 

Share this post


Link to post
Share on other sites

Hi Chicken,

I start building the AIS receiver based on dAISy. I bought two dAISy HAT. Then, I removed MSP430 and connect SPI from STM32F7 discovery kit to handle Si4467. I use the radio_config.h to set up the registers. Unfortunately, it receives the messages from the nearby devices. Meanwhile, the other dAISy HAT obtains to 8 knots. The attached file is the configuration file for Si4467 that I refered from Github. How should I do to improve the distance?

Tks!

Si446x.h

Share this post


Link to post
Share on other sites

I apologize for the slow response.

Besides configuration, severely limited range can be a noise issue. You may introduce noise to the radios with the wires connecting over to the STM32.

The radio_config.h for the Si4362 should be a good starting point as the EzRadioPRO chips are compatible. You can generate the radio_config files for the Si4467 with the WDS tool from Silabs:

https://www.silabs.com/products/development-tools/software/wireless-development-suite

Seems like they changed the file format since the last time I used it. The attached project file can be loaded with the latest version of WDS. I also attached a radio_config.h for the Si4467 that I created with this project file. I haven't tested the results though.

 

WDS3211_si4362_revb1_direct_rx.xml

radio_config_Si4467.h

chiase likes this

Share this post


Link to post
Share on other sites

Hi Adrian,

Thanks so much for your reply. I'll try the configuration. I also generate the configure from WDS, but some paramaters I can't know clearly. Is the file that you attached for dAISy HAT?

Again, thanks so much, Adrian!

P.s: I also transmitted message AIS successfully. However, I need fix some bugs (such as I only switch from Rx to Tx mode first time. The second switching is failed.) I'll publish it at here when I fix it.

chicken likes this

Share this post


Link to post
Share on other sites

Hmm, it's a while since I looked at it in detail. Channel spacing is 50KHz. If I remember correctly, bandpass was set to 20 or 15KHz.

I stay away from building a transponder as there's a real risk of disrupting AIS traffic if done wrong. But if you want to go down that avenue, check out this project:

https://github.com/peterantypas/ais_transponder

 

chiase likes this

Share this post


Link to post
Share on other sites

Regarding your range problem: I program the firmware on my HATs with the debugger on the MSP430F5529 launchpad. If I don't power cycle (unplug and reconnect USB) after programming and before testing, I see elevated noise levels. I don't know the exact reason, but suspect that the JTAG traffic on USB introduces noise.

Maybe there's a similar issue with the Discovery boards.

Share this post


Link to post
Share on other sites

Thanks Adrian!

I'll try the configuration that you advise. I hope it is good as your dAISy HAT!

P.s: I'm so impressive with your project! It's simple but it's so effective

Share this post


Link to post
Share on other sites

Hi All,

I have been develop dAISy using MSP430 and it worked when I tested dAISy in the coast. I tested dAISy in the case where there are many vessels in the coastal area.

After that, I tested dAISy in the laboratory with single AIS Transponder that transmitted AIS signal every 3 minutes (because the transponder didn't move). I got the results that my dAISy couldn't receive AIS signal every time the transponder transmit AIS signal. dAISy only received a few of AIS data in the beginning of testing. But after that, dAISy couldn't receive anymore. I have been tested dAISy using MATSUTEC HA-02.

Can you help me please? What is my problem?

Thanks.

 

Regards,

Rian

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