Jump to content
chicken

[POTM] dAISy - A Simple AIS Receiver

Recommended Posts

However there's also the overhead of reconfiguring the radio (about 1.5 clock ticks). 

Isn't just change channel command? From DS:

 

 

5.3.1.1.  EZ Frequency Programming

In applications that utilize multiple frequencies or channels, it may not be desirable to write four API registers each

time a frequency change is required. EZ frequency programming is provided so that only a single register write

(channel number) is required to change frequency. A base frequency is first set by first programming the integer

and fractional components of the synthesizer. This base frequency will correspond to channel 0. Next, a channel

step size is programmed into the FREQ_CONTROL_CHANNEL_STEP_SIZE_1 and

FREQ_CONTROL_CHANNEL_STEP_SIZE_0 API registers. The resulting frequency will be:

RF Frequency Base Frerquency Channel+ Stepsi? ze=

Share this post


Link to post
Share on other sites

Isn't just change channel command? From DS:

 

Right, changing the channel is as simple as passing it with the START_RX command. However, the radio requires some time to adjust its PLL. Looking at the CTS signal (indicator that chip is busy), this takes about 0.17ms.

 

There's a faster method using RX_HOP, but that takes some additional work on my side and I wanted to get the hop logic working first (the source on Github currently seems to be broken (fixed and tested)  )

 

Do you have some experience with this radio? Being a total n00b when it comes to RF, I definitely could need some help to make this project more reliable.

Share this post


Link to post
Share on other sites

Did some work on the firmware.

  • Moved channel hopping and RSSI statistics (signal strength) into ISR to avoid blocking by long-running code in main thread (e.g. serial transfers). This also means that the state machine model reverts back to the original (no more separate hop state)
  • To reduce time spent in ISR, sped up SPI clock to 8 MHz (Si4362 can handle up to 10 MHz)
  • Optimized RSSI readout by using the radio's FRR (fast read registers)
  • Also inlineing of some code (SPI byte transfer, radio status check)
  • Put main thread into LPM4 until a successful sync (preamble + start flag), a complete packet is received, or an error occured.

This time I tested the changes in real-world before pushing the code to GitHub :smile:  (btw, very straight-forward and practical Git tutorials can be found on Atlassian's website: https://www.atlassian.com/git/)

 

Attached screenshots of two successful captures of an AIS message as seen by the logic analyzer. Note that in after.png there's channel hopping (channel 1), i.e. data processing while serial data is sent back to the computer (channel 7).

post-9974-0-35705800-1389848668_thumb.png

post-9974-0-64277800-1389848677_thumb.png

Share this post


Link to post
Share on other sites

I also reworked the breakout board:

  • Replaced crystal with one that meets specs as per application note AN785 (load capacitance max. 10pF, ESR max 80 ohm). The crystal on Rev A was too high on both, and doing some experimentation with XO tuning I think frequency is a bit too high.. though just guessing as I don't have a signal generator to really test this.
  • Widened signal track from antenna to radio and also added a footprint for an optional AC coupling cap.
  • Added ground plane on top with plenty of vias around signal track and under radio.
  • Fixed known errors of Rev A (pull-down on SDO, swapped GPIO 0 and 1, widened holes to fit breakout headers)

Any feedback from people more knowledgeable about RF than me (i.e. with any RF know-how) is very welcome.. though I'm impatient and already sent the new design off to OSHPark :rolleyes:

post-9974-0-52867900-1389850498_thumb.jpg

Share this post


Link to post
Share on other sites

I see it has a lot of IOs. maybe it would be cool to include a uC onboard that would output 3v3 UART for easier implementation?

 

also when you end up selling these (populated and tested) I would love to buy one.

Share this post


Link to post
Share on other sites

I see it has a lot of IOs. maybe it would be cool to include a uC onboard that would output 3v3 UART for easier implementation?

 

Yes, I plan to do a standalone version that works without the LaunchPad, probably with the next revision. I'm thinking about using an MSP430F55xx to directly talk to USB.

Share this post


Link to post
Share on other sites

Updated the main post to reflect the refactoring of the state machine I did over the last two weeks. It's now much better at detecting valid and dismissing invalid preambles.

 

I also received the reworked breakout PCB from OSH Park, and a matching stencil from OSH Stencils. Next up, figure out how to reflow with a hotplate.

post-9974-0-50956500-1390683307_thumb.jpg

Share this post


Link to post
Share on other sites

Hi

Instead of siglal generator you can use ham VHF , on some VHF there is a power selector H, L, EL.

Put power selector to EL it is 20mW if not put on low. Instead of antenna instal dummy load resistor; non inductive resistor (carbon) 50 ohm 2W.

On hot part connect trimer 100k and 10k to gnd. Small signal you can take from connection between trimer and 10k.

Signal you can adjust by trimer.

Share this post


Link to post
Share on other sites

Instead of siglal generator you can use ham VHF , on some VHF there is a power selector H, L, EL.

Put power selector to EL it is 20mW if not put on low. Instead of antenna instal dummy load resistor; non inductive resistor (carbon) 50 ohm 2W.

On hot part connect trimer 100k and 10k to gnd. Small signal you can take from connection between trimer and 10k.

Signal you can adjust by trimer.

 

Good idea and thank you for the hook-up instructions. I already ordered a cheap Chinese radio (Baofeng UV-5R Plus) for testing antenna and noise issues with a reproducible signal.

Share this post


Link to post
Share on other sites

Hi

When you received VHF, contact me to help you with connection or you have any question.

He, do not worry, I will have for your project; AIS receiver.

Share this post


Link to post
Share on other sites

I looked at your layout and it looks like your traces for the radio are not 50 ohms but ~65. How I did this is using AWR tx-line calculator(its free) , its really helpful when dealing with trace impedances.  When doing RF stuff you always need to be conscious of impedance.  Also using an SMA connector will help because it is designed for 50ohm impedance the pins you have right now are probably also messing with your signal because the impedance is probably greater than 50ohms. 

Share this post


Link to post
Share on other sites

@@KwaiChang nice little tool, thanks for pointing it out!

 

So plugging the numbers from OSHPark into the CPW Ground calculator, with 10 mil spacing to the ground fill-in, my signal traces should by approx. 50 mils wide. Or 35 mil traces if I push spacing all the way down to the 6 mil limit. Does that sound about right?
 

Share this post


Link to post
Share on other sites

Yup that sounds right.  Also since its a technically a mixed signal maybe isolating the digital and analog parts may help? maxim has a pretty good mixed signal layout [here] . It may not be necessary because it is such a simple system.  I don't know too much about mixed signal stuff so dont take my word for it.

Share this post


Link to post
Share on other sites

dAISy USB is alive!

 

Before reflow - can you spot the DOH! moment I had shortly after reflow? :blush:

post-9974-0-07140200-1393641552_thumb.jpg

 

And flashing LED after programming via F5529 LaunchPad

post-9974-0-45824000-1393641570_thumb.jpg

 

Pretty jazzed that it worked at first try! :smile2:

Next up, migrating the dAISy project to the MSP430F5508. Already have it working on the MSP430F5529.

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

×