2017-11-20 16:54:06 +01:00
|
|
|
/*
|
|
|
|
* Author - Marcel Schulz (alias Schullebernd)
|
|
|
|
* *************************************************************
|
|
|
|
* See further library details on https://github.com/Schullebernd/SBNetwork
|
|
|
|
* *************************************************************
|
|
|
|
* This Getting started is prepared for using it with a Wemos D1 mini as a master device.
|
2017-11-21 23:51:58 +01:00
|
|
|
* If you want to use an Arduino, then change the line 38 "SBNetwork networkDevice(false, D2, D8);" to the correct pinout for an Arduino "SBNetwork networkDevice(false, 6, 7);".
|
2017-11-20 16:54:06 +01:00
|
|
|
* **************************************************************
|
|
|
|
* Step 1 - Prepare your device
|
|
|
|
* Connect a nRF24L01 transmitter to a Wemos D1 mini or an Arduino Device
|
2017-11-22 00:23:53 +01:00
|
|
|
* WEMOS > RF24 ARDUINO > RF24 --------------------------------------
|
|
|
|
* ------------ -------------- | GND # # VCC TOP VIEW |
|
|
|
|
* 3V3 > VCC VCC > VCC | CE # # CSN of nRF24L01 |
|
|
|
|
* GND > GND GND > GND | SCK # # MOSI |
|
|
|
|
* D2 > CE 6 > CE | MISO # # IRQ |
|
|
|
|
* D8 > CSN 7 > CSN | |
|
|
|
|
* D7 > MOSI 11 > MOSI --------------------------------------
|
|
|
|
* D6 > MISO 12 > MISO
|
|
|
|
* D5 > SCK 13 > SCK
|
2017-11-20 16:54:06 +01:00
|
|
|
*
|
|
|
|
* Step 2 - Build the sketch for the master device
|
|
|
|
* Connect the Wemos via USB to the PC, select the right board and COM interface in the tools menu and run the project.
|
|
|
|
* After building and loading up to the Wemos, the serial monitor should show some log data.
|
|
|
|
*
|
|
|
|
* Step 3 - Now open the example sketch GettingStartedClient to build a client device
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <SBNetwork_config.h>
|
|
|
|
#include <SBNetwork.h>
|
|
|
|
|
|
|
|
// Type in here the mac address of the device.
|
|
|
|
// This must be unique within your complete network otherwise the network will not work.
|
|
|
|
SBMacAddress deviceMac(0x01, 0x02, 0x03, 0x04, 0x05);
|
|
|
|
//SBMacAddress deviceMac(0x05, 0x04, 0x03, 0x02, 0x01);
|
|
|
|
|
|
|
|
// Create a new network device with Wemos D1 mini and set the _ce and _cs pin.
|
2017-11-21 23:51:58 +01:00
|
|
|
// The first argument defines the type of the device. false=master and true=client device
|
|
|
|
SBNetwork networkDevice(false, D2, D8);
|
|
|
|
//SBNetwork networkDevice(true, 6, 7);
|
2017-11-20 16:54:06 +01:00
|
|
|
|
|
|
|
void setup() {
|
|
|
|
// Init serial connection
|
|
|
|
Serial.begin(19200);
|
|
|
|
|
|
|
|
// Initialize the network device
|
|
|
|
networkDevice.initialize(deviceMac);
|
|
|
|
|
2017-12-12 21:51:50 +01:00
|
|
|
// Enables the master to automatically add new clients
|
|
|
|
networkDevice.enableAutomaticClientAdding(true);
|
|
|
|
|
2017-11-20 16:54:06 +01:00
|
|
|
Serial.println(F("*** PRESS 'N' to reset the device"));
|
|
|
|
}
|
|
|
|
|
|
|
|
void loop() {
|
|
|
|
|
|
|
|
// This routine is for resetting the device
|
|
|
|
// All flash data will be deleted
|
|
|
|
if (Serial.available())
|
|
|
|
{
|
|
|
|
char c = toupper(Serial.read());
|
|
|
|
if (c == 'N') {
|
|
|
|
networkDevice.resetData();
|
|
|
|
}
|
2017-12-12 21:51:50 +01:00
|
|
|
if (c == 'E') {
|
|
|
|
// Only master should handle the switch of adding new clients
|
|
|
|
if (!networkDevice.RunAsClient) {
|
|
|
|
Serial.println("*****");
|
|
|
|
if (networkDevice.isAutomaticClientAddingEnabled()) {
|
|
|
|
Serial.println("Deactivating AutomaticClientAdding");
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
Serial.println("Activating AutomaticClientAdding");
|
|
|
|
}
|
|
|
|
Serial.println("*****");
|
|
|
|
networkDevice.enableAutomaticClientAdding(!networkDevice.isAutomaticClientAddingEnabled());
|
|
|
|
}
|
|
|
|
}
|
2017-11-20 16:54:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// Call this in the loop() function to maintain the network device
|
|
|
|
networkDevice.update();
|
|
|
|
|
|
|
|
// Check, if there are messages available
|
|
|
|
uint8_t messageSize = networkDevice.available();
|
|
|
|
if (messageSize > 0) {
|
|
|
|
Serial.print(F("Received Content: "));
|
|
|
|
Serial.println((char*)networkDevice.getMessage());
|
|
|
|
}
|
|
|
|
|
|
|
|
// If the master has received a message, it will sent a message to the sender
|
|
|
|
if (networkDevice.available()) {
|
|
|
|
char* message = "Hello client, yes I can hear you well!";
|
2017-11-21 23:51:58 +01:00
|
|
|
networkDevice.sendToDevice(networkDevice.MasterStorage.Slaves[0], message, strlen(message) + 1);
|
2017-11-20 16:54:06 +01:00
|
|
|
}
|
|
|
|
} // Loop
|