Showing posts with label dAISY. Show all posts
Showing posts with label dAISY. Show all posts

Monday, 11 July 2016

dAISy off-grid receiver

Off-grid AIS Station is now live on marinetraffic:
Receiver altitude is approx. 230m ASL, so should be better

Station coverage:
https://www.marinetraffic.com/en/ais/details/stations/910/

Remote unit battery level monitor real-time
https://thingspeak.com/channels/113422
https://io.adafruit.com/steve098/aismon

Compare the receiption to the Moxon square RTL-SDR receiver in my loft at sea level,
https://www.marinetraffic.com/en/ais/details/stations/1618/

The remote receiver picks up vessels in Oban Bay more reliably (not surprising as it can see over the top of several hills compared to my home station), and sees 'around the corner' into the Sound of Mull better, being able to track the Loch Fyne CalMac ferry on most of its route from Lochaline to Fishnish on the Isle of Mull.

It sacrifices coverage up Loch Creran.


Todo:
* convert daisy to 3.3v operation. I have received advice from Adrian Studer on how to fix excess power drain when operating the dAISy at 3.3v by isolating the 3.3v LDO reg.
* convert the AIS parser script that powers the Twitter feeds @ObanAIS and @ObanSARwatch to accept AIS sentences from the remote receiver.



Thursday, 19 May 2016

source code on GIT

source code for the AIS receiver/repeater (Teensy 3.1):
https://github.com/beinnlora/AIS-repeater

credit to Stuart Robinson for the base LoRa code
https://www.dropbox.com/sh/na2d9yt09nr91f7/AADqSNprExezpBEcqIxewDpBa?dl=0


source code for the Raspberry Pi LoRa gateway:
https://github.com/beinnlora/lora-gateway

credit to Dave Ackerman for the base LoRa code
https://github.com/PiInTheSky/lora-gateway

Thursday, 12 May 2016

remote AIS receiver/repeater - part 9 - more power measurements

[prev]     [first]     [next]  

I have moved the dAISy to being powered via the 5v pad direct from Vbat (3.7-4.2V) since the power consumption is (perversely) much lower at 5V than 3V

I have changed the threshold for the microcontroller to send everything to sleep up to 3.6V.

Total system current now idles at 38mA @ 4V which is a great improvement.

The Teensy is drawing around 19mA at 4V. This will be the next target for power optimisation.

There may be a way of putting the teensy into micro sleeps - if we can profile the AIS traffic in an area and perhaps predict from the protocol timing if we can sleep at a given moment by sacrificing position update frequency for high-data-rate vessels for example, that would be an OK tradeoff

There is an odd anomaly with the dAISy when powering via 3.3V pad vs 5V pad - configuring the dAISy to output at 9600 baud is ignored when powering at 3.3V - serial data rate is 38400. However, move to powering via the 5V pad and the baud rate setting is reduced to 9600 as per the setting. The manufacturer is looking into it.


remote AIS receiver/repeater - part 8 - more dAISy current measurements

[prev]     [first]     [next]  

powering the dAISy from the 3.3v pad and current consumption for the dAISy runs at about 71mA (234mW)

powering the dAISy from the 5v pad at 4.1V takes about 17mA (70mW)

Some difference!

However, if I power the dAISY from the 3.3v, the battery can get down to about 3.2V before the dAISy stops receiving, but from the 5v pad, it gets flaky at 3.6V

I guess strictly I shouldn't be dragging the 18650 cells down this low, but it is all extra capacity useable down from 3.6 to 3.3Vbat, but what a power difference.

Threshold for system sleep is 3.3Vbat at present. I think I will up this to 3.6V, power the dAISy on the 5V pad and hope for the best.

I could do some calculations comparing the lost capacity vs overall consumption...

Friday, 6 May 2016

remote AIS receiver/repeater - part 7 - current measurements

 Overall power consumption measurements

[prev]     [first]     [next]
Overall system current @ battery voltage (3.7-4.2V). Active=transmitting LoRa, Standby=listening.

dAISy current measured at 3.3V (via output of onboard 3.3v Regulator on Teensy) Active = receiving/parsing. AIS sentence. Standby = listening

Teensy current  @ battery voltage with no peripherals powered up, taken from internet (not yet measured)

HopeRF not measured




active standby sleep
Overall 110mA 95mA 0.2mA
dAISy 77mA 74mA  0
Teensy ~20mA ~20mA 0.2mA
Hoperf

~0mA


Our challenge is to tame the dAISy which is someway off the published spec (<20mA @ 5V i.e.  100mW; we are seeing 74mA @ 3.3v i.e. 250mW)

Tuesday, 3 May 2016

remote AIS receiver/repeater - part 6 - power performance

Power budget

  [prev]     [first]     [next]
The dAISy has arrived. A quick comparison with the RTL-SDR and the RF sensitivity is about the same. (geography is my main limiting factor)

I am powering the dAISy via 3.3v header on the PCB rather than USB, and receiving AIS sentences via the hardware TX pin. The dAISy utility seems to ignore me setting the onboard serial data rate to 9600baud, and continues to spit out at 38400, but the Teensy can handle this fine.

The remote unit periodically spits out its voltage over the LoRa link, whereby the Raspberry Pi logs this to the cloud to see battery performance over time

I am logging the voltage of the battery to thingspeak, which are plotted below. Values below are raw ADC values (12 bit input. 4.2V battery voltage scaled to 1.2V to match the Teensy 3.1 internal Vref ), and averaged over the last 10 readings

.
Readings are currently send from the remote device every 20 seconds, but at present the Raspberry Pi receiver crashes about once a day when a corrupt packet is received.

I am uploading to marinetraffic.com which gives some (delayed) statistics on AIS message rate to give me some idea of the number of AIS sentences I am likely to  transmit

Current draw from the battery is 90mA @ 4.1v (0.37Watts)  idle, rising to about 120mA (0.5W) on LoRa transmit, but not measured very precisely. Most of this is the dAISy

When the battery voltage drops below about 3.6V, I have the Teensy turn off the dAISy receiver and put the HopeRF  into sleep, before itself sleeping for 20 seconds.

Every 20 seconds it wakes to measure the battery voltage, then sleeps again if needed.

Sleeping current is around 200uA, which can be improved with some effort
 , but should not be significant


Friday, 29 April 2016

remote AIS receiver/repeater - part 5 - base station

 [prev]     [first]     [next]

TL;DR

Raspberry Pi LoRa gateway


* Raspberry Pi 2/3 with HopeRf RFM98 shield from store.uptronics.com
* antenna can be yagi
* software on Pi adapted from Dave Ackerman's LoRa gateway software for High-altitude baloons
http://www.daveakerman.com/?p=1719
* Pi receives messages from LoRa and reconstructs full sentences (!AIVDM header is stripped from the on-air backhaul to save size, so is reconstructed on the Pi before pushing to the LAN over UDP
* pi also receives battery level from the remote receiver and publishes to IoT cloud e.g adafruit.io




remote AIS receiver/repeater - part 4 - LoRa data link


  [prev]     [first]     [next]

TL;DR

LoRa data link

* Transmitter HopeRF RFM98 433MHz HopeRF RFM98W-433S2
* code adapated from various sources listed on  kh-gps.de/lora.htm

Antenna is just 1/4 wire at the moment, but could be directional yagi/moxon, given that it need only point in one direction.


remote AIS receiver/repater - part 3 - power management


[prev]     [first]     [next]
TL;DR
* 10W 12V solar panel
* 2x18650 LiPo
LT3652  based Solar LiPo charge contoller
* Teensy 3.1 microcontroller for power management.


I want about 5 days of solar redundancy to allow for Highlands weather.

Instead of having a transparent serial link whereby all AIS sentences are just packetised and transmitted over the LoRa, we waste a lot of energy on partially-full LoRa packets, redundant AIS sentences and possible brownout at night. We want to be able to control the LoRa radio state too by using sleep mode to minimise current draw (we don't need it to receive any messages over LoRa just yet)

If we control the LoRa transmissions and AIS reception with a microcontroller, we can optimise power usage by pre-filtering sentences and packaging up several AIS sentences in on LoRa data frame (max 258bytes - could get perhaps 3 AIS sentences in one LoRa packet ). We can also monitor the power and switch off the AIS receiver when the battery is low or rate limit packets as the input current allows. There is a tradeoff between the extra draw of a microcontroller and that saved by optimising packets. We don't have to receive any information back through the LoRa link (unless we want to at a later date), so we can put it to sleep outside transmissions.

I have a few Teensy 3.1 controllers knocking around which are more than overkill for the job,but they seem suitable because
* 3.3v power possible for low current
* underclock easy for low current
* Snooze library good for low power mode
* good HW serial support for buffering AIS sentences
* good number crunching abilities should we wish to add AIS decoding/prefiltering

Some fag packet calculations. I have made up some assumptions on AIS packet data rates. The LoRa parameters are critical for power consumption - different coding rates, spreading factors etc all vary the packet transmission duration significantly, so I have just made a guess here based on some mid-range figures from the Semtech LoRa calculator

Device On state Sleep State
LoRa 130 2 mA
Teensy 20 1 mA
Ais 20 mA
Teensy duty cycle 0.75
time per sentence 0.15 s
sentences per min 120
sentences per hour 7200
tx time per hour 1080 s
calculated lora duty cycle 0.3
LoRa mean current over 1 hour 40.4 mA
Average total current draw over 1 hour 75.4 mA
energy used in 1 day 1809.6 mAh
battery capacity 5500 mAh
battery duration (no solar input) 136.1 hours
5.67days
solar panel Current @Pmax 550 mA
sunshine per day 4 hours
solar input per day
2200 mAh
time to full charge @ max flux 10 hours



I happened to have a 12V 10W solar panel going spare, so used this. I have a stash of 18650 cells too. Two in parallel give me 5500mAh.

The solar charge controller - I would have liked this from Adafruit  https://www.adafruit.com/products/390 but it is not available locally and only handles a 6V panel

but it didn't handle the 12V (20V open circuit) from my existing solar panel, so I chose one based on the LT3652 charge controller chip

https://www.sparkfun.com/products/12885

out of the box it required a bit of tinkering to get going. The board is set for a 4 hour timer using a 1uf cap on pin 6 of the LT3652 . I bypassed this to allow full current to the board (connected in parallel with the battery) when the sun is shining. Battery charge is then current - rather than time - limited.
There are options on the board for current sense resistors, which I could use to rate-limit the AIS backhaul based on available current should I so desire at a later date



remote AIS receiver/repeater - part 2 - AIS receiver

[prev]     [first]     [next

TL;DR
* dAISy AIS receiver running at 3.3v  3.7 - 4.2V and direct serial output
http://www.wegmatt.com/
* homemade 5 element colinear at 162MHz or Moxon rectangle (reception azimuth is limited)
http://arundale.com/docs/ais/aerial.html
http://w4.vp9kf.com/moxon_calculate.php




Originally I used a Raspberry Pi and RTL-SDR dongle to receive AIS messages at home, but this requires too much power for solar operation if my receiver/repeater is going to live on a remote hilltop

I have settled on a small standalone receiver called dAISy http://www.wegmatt.com/. Purchased from Tindie, not yet arrived from the USA.

The creator has been very helpful answering some technical queries about boot times, power management and reception advice.

The unit can be powered from 3.3v and output AIS messages over TTL serial. Power <20 mA@5V (untested at 3.3v)

Receiver is apparently easily desensitied by nearby transmitters, so need careful placement away from the LoRa transmitter




Remote AIS receiver/repeater

I live close to the sea, and my kids love seeing the comings and goings of boats into town on their way to school. I have an AIS receiver in the loft that feeds data to our local network and to the chart software on my laptop. I'm then primed each morning to answer the kid's questions of "What's that boat Daddy? Where is it going? Where is it from?".

When the search-and-rescue helicopters fly overhead to refuel at the local airfield, I get a ping from Twitter to tell me to point it out

I have AIS envy though. We are *just* in range of the larger ships entering town, but smaller fishing vessels are just out of range, hidden behind some big lumps of granite. The Scottish geography is not my friend here; across the bay just over 5 miles away is a receiver on top of a big hill - that receiver sees EVERYTHING, and I am jealous.

Here enters the gadget tinkerer, throwing his latest acquired technology toolkit towards the problem. I'm tinkering with a wireless race tracker project at the moment, which involves LoRa data links, GPS position reporting and low power/battery power design, so it's just one small step up to building a solar powered AIS receiver to plonk on a local hilltop and use the LoRa radio link to backhaul the AIS messages to my house.

There's a few parts to this project:
* AIS reception
* LoRa backhaul
* solar power management
* LoRa basestation and AIS WAN uplink

I'll cover each section in a separate post