chicken

[POTM] dAISy - A Simple AIS Receiver

266 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

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