Giter Club home page Giter Club logo

mmesh's Introduction

Hi, I'm Johan Svensson ๐Ÿ‘‹

LinkedIn LinkedIn

๐Ÿง About Me:

  • ๐Ÿ‘ฏ Iโ€™m looking to collaborate on new and interesting stuff related to networking, IoT or embedded development.
  • ๐Ÿ’ฌ Ask me about Linux, Networking, C/C++ development, scripting
  • ๐Ÿ“ซ How to reach me: www.exclude.se

๐Ÿ’ป Languages and Technologies:

c c++ linux arduino bash EmbeddedC git perl rpi

๐Ÿ“Š My Github Stats

payano's Github Stats

payano's Top Languages


mmesh's People

Contributors

fatroshi avatar payano avatar

Watchers

 avatar  avatar

Forkers

fatroshi

mmesh's Issues

Radio battery saving

The nrf24 radio consumes around 15mA when in RX mode.
The stm32f103 circuit can be set to sleep mode and draw around 2uA.

If a battery has 2000mAh and the only consumer is the radio, it can drive the radio for around 133,3 hours.

Because of the battery consumption from the radio, there might be a good idea to have three nodes in the network:

  • Master
  • End device
  • Router

The master is directly connected to a computer and gets its energy from there. A router is connected to the main lines and can have the radio in RX mode all the time. An End Device is a device that uses a battery is energy source, therefore its good to set that radio in sleep mode as much as possible.

Create NRF24 adapter

NRF24L01 datasheet:
https://www.sparkfun.com/datasheets/Components/nRF24L01_prelim_prod_spec_1_2.pdf
It's good to know how to setup the data pipes for receiving and sending, pipe 0 is the broadcast address.

Information from tmrh20 blog, useful information to read up on:
http://tmrh20.blogspot.com/

NRF driver on github:
https://github.com/nRF24/RF24

Doxygen for the driver:
https://tmrh20.github.io/RF24/

The modified driver implementation is found here:
https://github.com/payano/mMesh/tree/master/src/network/RF24

The adapter is found here:
https://github.com/payano/mMesh/blob/master/src/network/Nrf24.cpp

The user of the adapter is found here:
https://github.com/payano/mMesh/blob/master/src/mesh/MeshNetworkHandler.cpp

Parent: child keepalive

If the child keepalive timer reaches 0, send a
disconnect to the child, and perhaps generate a new
host address so the child can't connect again?
The child will also have the timer.

Encryption algorithm

Investigate which encryption algorithm is best
suited for STM32F103C6T8, and (Arduino?), it
would be neat if it is easily portable.

Move network_recv into its own class

Keeping the state machine in Mesh.cpp and the network_recv methods into another class.
A good name for the class might be MeshNetworkHandler.
The Mesh class could also be renamed to MeshSM, and perhaps create a new class Mesh which creates instances of both classes mentioned above.

create a test server

Which have multiple stm32 connected via uart, jtag and usb dev.
Here we can monitor everything and see if a stm32 for example reaches an errornous state, we can get the state and hunt down the bug.

Child: parent keepalive

Ping parent. If parent doesn't respond after n tries,
send disconnect to children and get a generated address
and try to connect to network again.

UART: Create sending requests

Create sending requests via uart so we can ask the system for statistics and also change states of the application.

for example we should be able to mute the radio for testing the timeouts intervals.

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.