chicken

[POTM] dAISy - A Simple AIS Receiver

264 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

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