
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
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
.
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
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.
This project is based on the Arduino Uno and Semtech's modules SX127x.
SX127x | Arduino Uno |
---|---|
NSS | D10 |
MOSI | D11 |
MISO | D12 |
SCK | D13 |
GND | GND |
3.3V | 3.3V |
RST | D9 |
DIO0 | D2 |
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)
The following steps indicate the procedure to SET UP the program:
Download
orclone the repository
- Connect the LoRa module to the Arduino Uno as shown here.
- Compile and upload the
Arduino_gui.ino
file located in directoryGUI_V.0\Arduino_GUI
- Connect the
Arduino Board to your PC
via Serial (USB) and check whichPORT
is using (it may be "/dev/ACMx" in Linux and "COMx" in Windows). - Run
gui.py
located in directoryGUI_v.0
- 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.
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.
- 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
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!
- Fork the Project
- Create your Feature Branch
- Commit your Changes
- Push to the Branch
- Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
Guillermo Adell - [email protected]
Project Link: https://github.com/Adell02/LORA-NET
I'd like to add here some of the most helpful resources such as libraries, documents, GitHub repos...