mirror of
https://github.com/Adam-Ant/MQTT-nRF24-Bridge
synced 2024-12-20 07:34:35 +00:00
Initial Commit
This commit is contained in:
commit
031833ca9f
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.pioenvs
|
||||||
|
.piolibdeps
|
9
.gitmodules
vendored
Normal file
9
.gitmodules
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[submodule "lib/RF24"]
|
||||||
|
path = lib/RF24
|
||||||
|
url = git@github.com:nRF24/RF24.git
|
||||||
|
[submodule "lib/RF24Network"]
|
||||||
|
path = lib/RF24Network
|
||||||
|
url = git@github.com:nRF24/RF24Network.git
|
||||||
|
[submodule "lib/RF24Mesh"]
|
||||||
|
path = lib/RF24Mesh
|
||||||
|
url = git@github.com:nRF24/RF24Mesh.git
|
21
Makefile
Normal file
21
Makefile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Uncomment lines below if you have problems with $PATH
|
||||||
|
#SHELL := /bin/bash
|
||||||
|
#PATH := /usr/local/bin:$(PATH)
|
||||||
|
|
||||||
|
all:
|
||||||
|
platformio -f -c vim run
|
||||||
|
|
||||||
|
upload:
|
||||||
|
platformio -f -c vim run --target upload
|
||||||
|
|
||||||
|
clean:
|
||||||
|
platformio -f -c vim run --target clean
|
||||||
|
|
||||||
|
program:
|
||||||
|
platformio -f -c vim run --target program
|
||||||
|
|
||||||
|
uploadfs:
|
||||||
|
platformio -f -c vim run --target uploadfs
|
||||||
|
|
||||||
|
update:
|
||||||
|
platformio -f -c vim update
|
1
lib/RF24
Submodule
1
lib/RF24
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 4accec5883bb3e65b3370b2e64627a787a790dc3
|
1
lib/RF24Mesh
Submodule
1
lib/RF24Mesh
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit a832458dbd066c7b8073a46f124ddec0fc9a9491
|
1
lib/RF24Network
Submodule
1
lib/RF24Network
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 2292755ecb3f7912cf69bae7618c48f34ea612fe
|
16
platformio.ini
Normal file
16
platformio.ini
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
; PlatformIO Project Configuration File
|
||||||
|
;
|
||||||
|
; Build options: build flags, source filter
|
||||||
|
; Upload options: custom upload port, speed and extra flags
|
||||||
|
; Library options: dependencies, extra library storages
|
||||||
|
; Advanced options: extra scripting
|
||||||
|
;
|
||||||
|
; Please visit documentation for the other options and examples
|
||||||
|
; http://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
|
[env:esp12e]
|
||||||
|
platform = espressif8266
|
||||||
|
board = esp12e
|
||||||
|
framework = arduino
|
||||||
|
upload_port = /dev/ttyACM*
|
||||||
|
upload_speed = 460800
|
114
src/main.ino
Normal file
114
src/main.ino
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
/** RF24Mesh_Example_Master.ino by TMRh20
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This example sketch shows how to manually configure a node via RF24Mesh as a master node, which
|
||||||
|
* will receive all data from sensor nodes.
|
||||||
|
*
|
||||||
|
* The nodes can change physical or logical position in the network, and reconnect through different
|
||||||
|
* routing nodes as required. The master node manages the address assignments for the individual nodes
|
||||||
|
* in a manner similar to DHCP.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#include <WiFiClient.h>
|
||||||
|
#include <ESP8266WebServer.h>
|
||||||
|
|
||||||
|
#include "RF24Network.h"
|
||||||
|
#include "RF24.h"
|
||||||
|
#include "RF24Mesh.h"
|
||||||
|
#include <SPI.h>
|
||||||
|
//Include eeprom.h for AVR (Uno, Nano) etc. except ATTiny
|
||||||
|
#include <EEPROM.h>
|
||||||
|
|
||||||
|
const char* ssid = "XXXX";
|
||||||
|
const char* password = "XXXX";
|
||||||
|
|
||||||
|
/***** Configure the chosen CE,CS pins *****/
|
||||||
|
RF24 radio(4,5);
|
||||||
|
RF24Network network(radio);
|
||||||
|
RF24Mesh mesh(radio,network);
|
||||||
|
|
||||||
|
ESP8266WebServer http(80);
|
||||||
|
|
||||||
|
uint32_t displayTimer = 0;
|
||||||
|
|
||||||
|
String webpage = "";
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// Set the nodeID to 0 for the master node
|
||||||
|
mesh.setNodeID(0);
|
||||||
|
Serial.println(mesh.getNodeID());
|
||||||
|
Serial.println("Starting...... ");
|
||||||
|
// Connect to the mesh
|
||||||
|
mesh.begin();
|
||||||
|
|
||||||
|
WiFi.begin(ssid, password);
|
||||||
|
|
||||||
|
// Wait for connection
|
||||||
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
delay(500);
|
||||||
|
Serial.print(".");
|
||||||
|
Serial.println(WiFi.status());
|
||||||
|
}
|
||||||
|
Serial.print("IP address: ");
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
|
|
||||||
|
// Setup the web server
|
||||||
|
http.on("/", [](){
|
||||||
|
webpage = "<h1>Connected Clients:</h1><br>";
|
||||||
|
for(int i=0; i<mesh.addrListTop; i++){
|
||||||
|
webpage += "<b>NodeId: </b>";
|
||||||
|
webpage += mesh.addrList[i].nodeID;
|
||||||
|
webpage += " <b>MeshAddress: </b>";
|
||||||
|
webpage += mesh.addrList[i].address;
|
||||||
|
}
|
||||||
|
http.send(200, "text/html", webpage);
|
||||||
|
});
|
||||||
|
|
||||||
|
http.begin();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// Handle the HTTP Server
|
||||||
|
http.handleClient();
|
||||||
|
|
||||||
|
// Call mesh.update to keep the network updated
|
||||||
|
mesh.update();
|
||||||
|
|
||||||
|
// In addition, keep the 'DHCP service' running on the master node so addresses will
|
||||||
|
// be assigned to the sensor nodes
|
||||||
|
mesh.DHCP();
|
||||||
|
|
||||||
|
// Check for incoming data from the sensors
|
||||||
|
if(network.available()){
|
||||||
|
RF24NetworkHeader header;
|
||||||
|
network.peek(header);
|
||||||
|
|
||||||
|
uint32_t dat=0;
|
||||||
|
switch(header.type){
|
||||||
|
// Display the incoming millis() values from the sensor nodes
|
||||||
|
case 'M': network.read(header,&dat,sizeof(dat)); Serial.println(dat); break;
|
||||||
|
default: network.read(header,0,0); Serial.println(header.type);break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(millis() - displayTimer > 5000){
|
||||||
|
displayTimer = millis();
|
||||||
|
Serial.println(" ");
|
||||||
|
Serial.println(F("********Assigned Addresses********"));
|
||||||
|
for(int i=0; i<mesh.addrListTop; i++){
|
||||||
|
Serial.print("NodeID: ");
|
||||||
|
Serial.print(mesh.addrList[i].nodeID);
|
||||||
|
Serial.print(" RF24Network Address: 0");
|
||||||
|
Serial.println(mesh.addrList[i].address,OCT);
|
||||||
|
}
|
||||||
|
Serial.println(F("**********************************"));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user