Jump to content
greeeg

GPS logger for a local Beagle club

Recommended Posts

I feel some serious tool-envy :wub:

 

Thanks, But don't be fooled. My setup takes quite awhile to setup. And I'm still learning all the time, The first pass I made on this cutout skipped steps somehow, ruining this enclosure.

I'd love to own some better tools ;) But I'm going to make use of what I have right now.

 

But I took the opportunity to try some cool stuff. (note the mis-aligned cutouts at the bottom and the duplicates on the far side.)

post-274-0-04925200-1471003264_thumb.jpg

 

Infill on my engravings and engraved pixel fonts!

post-274-0-43829900-1471003269_thumb.jpg

 

Getting the hang of F360, slowly.

post-274-0-39088600-1471004066_thumb.jpg

post-274-0-75546900-1471004061_thumb.jpg

 

Working on some custom parts now. Using a molding technique using milled ren-shape, silicone and polyurethane.

Mold model

post-274-0-46956200-1471004043_thumb.jpg

 

Blank ren-shape

post-274-0-24786200-1471003960_thumb.jpg

 

Mid milling

post-274-0-90032400-1471003497_thumb.jpg

Share this post


Link to post
Share on other sites

Polyurethane parts have come up nicely.

 

post-274-0-52774400-1471435852_thumb.jpg

 

Main advantages of this method of rapid prototyping

  • Part cost is low these use about $0.05 of polyurethane resin.
  • Parts can easily be coloured using dyes. (as demonstrated)
  • Very little time needed for each cast (about 5 minutes) 1-2 Hour cure time
  • 1-1 replica to original part.

Of course you need to invest the time and money to make the silicone molds to begin with. So for a single part 3d printing is often the preferred approach.

 

post-274-0-40759000-1471435860_thumb.jpg

post-274-0-29554300-1471435865_thumb.jpg

 

The parts are a perfect fit over the button and LEDs.

 

post-274-0-16474500-1471435873_thumb.jpg

 

 

Share this post


Link to post
Share on other sites

This project was put on hold over the holidays. It's always a busy time, plus the club doesn't hold meets over summer.

But I have just completed another 10 units. More of the same, but thought you guys might enjoy some more photos.

DSC00001.thumb.jpg.7c5284b7216fe259ba30accf1915c1a7.jpg

DSC00007.thumb.jpg.64cca089aeb68c683493814e385a6d70.jpg

DSC00011.thumb.jpg.f5ec336bc3ba8f646b1987e7fbe724f9.jpg

DSC00013.thumb.jpg.0f350b16c688968f41a70368eef69863.jpg

DSC00016.thumb.jpg.afa1c874ccd42cf3fdbb56933c8f3996.jpg

 

I couldn't get the same batteries as the last batch, which were 650mAh, these have much smaller 220mAh. But this still provides about 4 hours of run time.

The uBlox GPS modules are a huge improvement. Even without the SAW filter in the RF path and the sub-optimal PCB size compared to the antenna. These find more GPS satellites faster than the G.top modules, plus they also use glonass which doubles the visible satellites.

 

 

Share this post


Link to post
Share on other sites

Every time I look at this project I can't help but think what an amazing job you have done on every aspect of this. Especially the hardware. Outstanding !!

 

Cheers

PTB

Share this post


Link to post
Share on other sites

Finally got around to coding a bootloader for this project.

I'm posting version 0.1 here for reference. Lots of times people seem to have trouble with bootloaders (I put off writing one for ages) But this should show you can start simple, and optimise later.

The code right now is very rough. But is written in a way that could allow updating of itself it the help of a bootstrap Application. ie: Load new application which when run loads a new bootloader. This bootloader isn't 100% fool proof, if a bad app is loaded that fails to perform as a USB MSC then the user cannot use the USB port to load a new firmware file. but the SD can always be removed and a file copied from a PC if required. Worst case a debugger is required (Which is how they run right now)

Memory Map

Here is the memory map I've adopted. The bootloader fits at the top of FLASH, the default reset vector always runs the bootloader. 

59573757876ed_MemoryMap.thumb.png.d6a234519b13a5b40f49b34a27d009d1.png

 

The bootloader uses petiet FatFS to read "firmware.bin" off an SD card. It checks the file integrity with a CRC16 integrated into the firmware.bin file on a PC after it was compiled (last word of file). If the file is valid it check the current apps CRC, if they match then app runs. (Application already loaded). If they do not match the Application flash is erased and the new app loaded.

 

Running the Application

When launching the app it's CRC is checked to ensure it has loaded correctly. (This shouldn't happen, but you never know...) The App's Interrupt vectors are copied to top of RAM, and SYSCTL.SYSRIVECT is set. The address at the apps reset vector (0xDFFC) is called.

 

Application changes

Due to the construction of this bootloader the app needs to have a few changes made, specifically to the linker script. 

  • Reduce FLASH boundaries to remove bootloader area
  • Shift Interrupt Vectors to alternate location in flash. (the app doesn't need to know its vectors will be moved to RAM, they just need to be in a fixed location so the bootloader can do that)
  • Remove top 128 bytes of RAM (This is where the new interrupt vectors go. but default this is where the stack is initialised. which will damage the interrupt vectors)
  • Create .crc section (Ensure a fixed WORD is placed to hold our CRC value.)

 

I set up a build setting to output a Binary file format which I run through a simple C program to compute and fill the CRC value. These are all run automatically when the app is built.

Improvements

  • Reduce code size (I have a feeling an SD bootloader could squeeze under 4kb, right now it's at ~6kb)
  • Improve speed, I'm not using the DMA, which could be used to improve speed (Update takes ~10s)
  • Utilise High memory (Right now I'm not enabling the use of high memory, the MSP430F5514 has 17kb in >0x10000 address range.)
    • High memory could be utilised to hold the bootloader this would free up (~7.5kb ) that the Main app could use.

gpsLoggerBootloader_0.1.zip

Share this post


Link to post
Share on other sites

Greeeg, I think that chip has a BSL built in.  I'm curious whether you considered using that.  Of course the built in BSL would need a PC master (the Scripter program?) to drive it, and I understand your bootloader only needs an SD card plugged in.  But the built in version has the big advantage of having everything already done for you.

Anyway, your version looks very interesting.

 

Quote

 

 

Share this post


Link to post
Share on other sites

@Peabody The MSP430F5514 does have a default USB based BSL. (It's located in FLASH and can be user modified)

I wanted to create a firmware upgrade process that anyone could perform. Copying a single firmware.bin is easier for a non tech savy to grasp. 

Additionally to enter the integrated BSL extra hardware changes are required. the PUR pin must be held high while the RST pin is toggled. This has an advantage that even a bad firmware cannot brick the bootloader. I would have liked to add some additional circuitry to enable this feature. (Hold down button for ~15 seconds to enter bootloader mode).

Because my hardware lacks an extra button I opted to roll my own. I'd say it works pretty well.

Share this post


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...