Skip to content

Adell02/LORA-NET

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

A unique radio network

Report Bug · Request Feature

IMPORTANT! The project is being developed, for that reason, the features that aren't available at the moment will be marked as 🔴


Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

The aim of LORA net is to learn to build a network based in 2.4GHz LoRa communication modules and ATmega328P U (Arduino Uno) as the microcontroller.

LORA net consists in a mesh network based in two kinds of nodes: User Nodes and Middle Nodes.

User Nodes

Each user with an appropriate LoRa module and settings can access the network using the python-based desktop application in the GUI folder. There are (to date) three main functions available for User Nodes:


  • 🔴Google Search: The node request to any other in the network with internet connection available a Google Search. The User receives the entries relative to that search and can choose from which of all to get the text in it.
  • Private Message: The desired message is sent to a specific node in the network (according to an ID) if it's available.
  • File Transfer: Sending compressed via radio to any other user in the net

(back to top)

🔴Middle Nodes

Most of the nodes of the network may be Middle Nodes in order to ensure a good performance of the net at long distances. These make possible the connection between User Nodes that can't directly communicate with each other (whether they are too far, some nodes are busy...). They are in charge of forwarding the messages they receive to other Nodes (trying to follow the most efficient route) to make them reach the recipient.

We are working to bring a feature that allows converting a User Node into a Middle Node whenever needed, improving the net performance.

(back to top)

Getting Started

This project is based on the Arduino Uno and Semtech's modules SX127x.

Hardware Connections

SX127x Arduino Uno
NSS D10
MOSI D11
MISO D12
SCK D13
GND GND
3.3V 3.3V
RST D9
DIO0 D2

(back to top)

Files

Every file regarding the uC is programmed with the Arduino IDE (C++). The main Arduino file (Arduino_GUI.ino) is located here and works in line with the main python program named gui.py.

Commenting our code is relevant to make it readable.

(A more detailed explanation of each file will be written in the near future)

(back to top)

Usage

Set up

The following steps indicate the procedure to SET UP the program:

  1. Download or clone the repository
  2. Connect the LoRa module to the Arduino Uno as shown here.
  3. Compile and upload the Arduino_gui.ino file located in directory GUI_V.0\Arduino_GUI
  4. Connect the Arduino Board to your PC via Serial (USB) and check which PORT is using (it may be "/dev/ACMx" in Linux and "COMx" in Windows).
  5. Run gui.py located in directory GUI_v.0
  6. On the top-right corner, write the PORT in use.

If there is a success message and no errors are displayed in the console, your user node is configured correctly.

In Errors section you may find how to solve any error printed to the console.

(back to top)

GUI

The interface consists on a small window built with Tkinter and is intended to be a simple but useful and interactive GUI.

It has a menu-bar with some options available such as Save (the console log), Exit (the program), Clear (the prompt) or Select All.

On the right side of the window, there are some indicators whether the Node is Sending or Receiving a message/file/Google search from another one and also the Port Configuration.

At the center of the screen there are the functions available for User Nodes. Simply fill the text box and click the button next to it to perform an action.

Underneath it, there is the main console. Here, all errors/ success messages are shown, as well as the information about the incomming and outcomming radio transmissions.

At the very bottom, there is a loading bar to indicate the transmission/reception duration.

(back to top)

Errors

(back to top)

Roadmap

  • Build the main workframe (GUI and Arduino Basic transmission/reception)
  • Add Google Search Functionality
  • Improve Transmission Speed
  • Ensure Communication with redundancy Checking
  • Set ID's to each Node
  • Manage simultaneous transmission without colliding
  • Make Indirect communication through Middle Nodes
  • Improve overall performance

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch
  3. Commit your Changes
  4. Push to the Branch
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Guillermo Adell - [email protected]

Project Link: https://github.com/Adell02/LORA-NET

(back to top)

Acknowledgments

I'd like to add here some of the most helpful resources such as libraries, documents, GitHub repos...

(back to top)

Releases

No releases published

Packages

No packages published