Jump to content
43oh

[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=

Link to post
Share on other sites
  • Replies 327
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Overview dAISy (do AIS yourself) is a very simple AIS receiver that I developed from scratch. It is built around the Silicon Labs EZRadioPRO Si4362 receiver, using a Texas Instruments MSP430G2553 MC

Ain't she pretty?    

Good news for everyone having difficulties sourcing the Si4362 radio IC.   I verified that the transceiver Si4463 works with dAISy. This probably also applies to Si4460 and Si4461. Besides being mor

Posted Images

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.

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

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

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.

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

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.

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.

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. 

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?
 

Link to post
Share on other sites
  • 3 weeks later...

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.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...