Code Monkey home page Code Monkey logo

pt3p-zeta's Introduction

pt3p-zeta

Library for radio module and part III project solution.


The Project

The synopsis of my Part III individual project is networking in transient systems. Take for example an end node of which is only powered by a transient - that meaning it is intermittent and non-constant - supply such as a solar cell, it would only be powering the device when there is light incident on the cell (i.e. daytime). Any messages that are sent to this node when it is not powered would therefore be lost.

My approach to solving this problem is to incorporate wake-up receiver (WuRx) technology with low power operation and non-volatile memory.

The Platform

Pinout diagram

Micro-controller

The micro-controller of choice is the MSP430FR5739 from Texas Instruments. This is due to its low power consumption and integrated non-volatile FRAM memory. The intention for the final solution is that the received data will be stored in NVM until the supply is sufficient to handle the data. Hence after a SPI transfer from the radio, the data will be written to FRAM and the MCU will sleep.

Supply Monitoring

The supply of the node is monitored by a low-power comparator that triggers at approximately 3V. When the supply is above 3V, the node is active and runs the code for its normal operation. When the supply is below this, the node will cut its power-supply and only wake-up when there is activity on the channel. Should a packet be incoming the device is woken, writes the received packet to non-volatile memory (NVM), and then shuts down again. This keeps the inactive consumption very low -- on the order of nano-amps -- allowing the inactive device to survive for a very long time.

RF Radio

The radio that will be used - and hence the repo is for - is the ZETAPLUS module from RF solutions. This comes with a CODEC chip for simple SPI/UART communications and a very low power sleep state. The actual radio part of the module is the Si4455 from Silicon labs.

Wake-up Trigger

The wake-up trigger is in the form of the UB20 voltage detector and associated rectifying antenna from the University of Bristol. This ultra-low-power and very sensitive voltage detector will connect the power supply to the MCU when the rectenna detects RF activity, thus allowing it to receive the packet.

The Repository

This repository contains the code necessary for driving the ZETAPLUS radio that I have chosen as the communications method for this project. Onboard the module there is a CODEC chip which decodes simple Hayes commands in order set the required registers on the Si4455 radio, from Silicon Labs.

Directory Structure

  • hibernus/ - Contains hibernus library from D. Balsamo et al.
  • lib/ - Contains the library files of the implementation.
    • spi - Contains the SPI initialisation and transfer functions.
    • uart - Contains the UART initialisation and print functions for debugging.
    • util - Used to setup peripherals such as clocks/timers/pins etc. for the MSP430FR5793.
    • zeta - This holds the main library functions for interfacing with the radio module.
  • test/ - Main files to test each module.
    • test-hib.c - Test hibernus modifications work.
    • test-radio-rx.c - Test receiving packets from radio module.
    • test-radio-tx.c - Test transmitting packets from radio module.
    • test-radio.c - Unified radio test suite. Just different define for Tx'er or Rx'er.
    • test-sdn-hib.c - Incorporate hibernus into the shutdown test case. This shows two modes of operation; active, which counts up the LEDs, and inactive, where the processor flashes the LEDs and then removes power. This is the backbone of the main proposed operation.
    • test-sdn.c - Test the simple case where the same code is run, but release the latch of the power-supply.
  • LICENSE - Here is the copyright licenses of any other software that is used in this project (although it may not be included in the repo).
  • README.md - This file.
  • main.c - Combined main file which will demonstrate the proposed solution to the project. This will receive few updates until all other modules have been tested and work as expected.
  • pinout.png - Pinout diagram for connecting peripherals to the MSP board.

Documentation

The library used in this project is documented with Doxygen style comments. The compiled Doxygen is available here.

TODO

  • Write libraries.
    • UART
    • SPI
    • ZETAPLUS
  • Configure radio with libraries (i.e. set RF baud and sync bytes).
  • Get transmission working.
  • Receive packet over RF.
  • Store packet in NVM.
  • Wake-up node over RF with UB20.
    • Investigate relationship between rectenna output voltage and range.
  • Write unified main.c program.
    • Test Hibernus.
      • Test comparator.
      • Test Hibernus in isolation.
      • Remove clashes with clock/pin initialisation (change as per the above pinout diagram).
      • Sleep hibernus test in LPM4.5.
    • Test shutdown hardware.
    • Incorporate hibernus into shutdown hardware.
    • Test main.c without radio modules (Hardware triggers i.e. buttons).
    • Test main.c with radio hardware included.
    • Incorporate NVM packet storage.

pt3p-zeta's People

Contributors

rhthomas avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

riaduli

pt3p-zeta's Issues

50% packet reception

When the FR5994 programmer board is disconnected, the receiver only wakes and up gets a packet 50% of the time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.