Difference between revisions of "Wireless Relay Arduino Shield"

From ElectroDragon Wiki
 
 
Line 1: Line 1:
== Pin definition and Rating  ==
== Pin definition and Rating  ==
[[File:SHD RL01 4.jpg|thumbnail]]
[[File:SHD RL01 4.jpg|thumbnail]]
== Programming ==
=== Use with Nrf24l01  ===
The demo code is test the module RF, BTBee and Relay part. And the code base on the [[NRF24L01]], you need change the pin define as below. If you test the Bluetooth Bee interface, you need used other Bluetooth device paired with BTBee. Here we used a Android phone with our [http://elecfreaks.com/store/download/datasheet/Bluetooth/EF_BluetoothBeeV1.1.zip APP] as client to paired with BTbee(HC-o6), more about paired [http://www.elecfreaks.com/829.html here].
<syntaxhighlight lang="arduino">
#include "API.h"
//---------------------------------------------
#define TX_ADR_WIDTH    5 
// 5 unsigned chars TX(RX) address width
#define TX_PLOAD_WIDTH  1 
// 20 unsigned chars TX payload
//---------------------------------------------
#define CE      9
// CE_BIT:  Digital Input    Chip Enable Activates RX or TX mode
#define CSN      10
// CSN BIT:  Digital Input    SPI Chip Select
#define SCK      13
// SCK BIT:  Digital Input    SPI Clock
#define MOSI    11
// MOSI BIT: Digital Input    SPI Slave Data Input
#define MISO    12
// MISO BIT: Digital Output    SPI Slave Data Output, with tri-state option
#define IRQ      8
// IRQ BIT:  Digital Output    Maskable interrupt pin
//*********************************************
#endif
</syntaxhighlight>


== Control by Bluetooth Module Software Serial Port ==  
== Control by Bluetooth Module Software Serial Port ==  

Latest revision as of 17:30, 25 October 2025

Pin definition and Rating

SHD RL01 4.jpg

Control by Bluetooth Module Software Serial Port

RelayShield.jpg
RelayShield02.jpg
  • Use softserial library create software serial port, communicate with bluetooth module
#include <NewSoftSerial.h>
#include <TimerOne.h>

#define rxPin 2
#define txPin 3

NewSoftSerial mySerial(rxPin, txPin);

void Callback()
{
   Serial.println("------->  Callback Send AT");
   mySerial.print("AT");
}

void setup()
{
   // define pin modes for tx, rx, led pins:
   pinMode(rxPin, INPUT);
   pinMode(txPin, OUTPUT);
   mySerial.begin(9600);
   Serial.begin(9600);
   
   //Timer1.initialize(2000000);             // setting callback is 2s
   //Timer1.attachInterrupt(Callback); 
   Serial.println("-------> Start ");
}

void loop()
{
  int i = 0;
  char someChar[32] = {0};
  // when characters arrive over the serial port...
  if(Serial.available()) {
    Serial.println(); 
    Serial.print("------->  ");
    do{
      someChar[i++] = Serial.read();        // Note HC-06 end not '/r/n', direct input "AT" command from Serial port
    }while (Serial.available() > 0);
    
    mySerial.print(someChar);
    Serial.println(someChar);
  }
  
  while(mySerial.available()) 
      Serial.println((char)mySerial.read());    
}

Arduino Mega or Hardware serial port

RelayShield-Mega.jpg

If you used Arduino Mage1280/250 there are some different.Please note the NewSoftSerial library about Mage2560 explanation in SoftwareSerial.cpp :

// Specifically for the Arduino Mega 2560 (or 1280 on the original Arduino Mega)
// A majority of the pins are NOT PCINTs, SO BE WARNED (i.e. you cannot use them as receive pins)
// Only pins available for RECEIVE (TRANSMIT can be on any pin):
// (I've deliberately left out pin mapping to the Hardware USARTs - seems senseless to me)
// Pins: 10, 11, 12, 13,  50, 51, 52, 53,  62, 63, 64, 65, 66, 67, 68, 69

That's mean the library do not support D0-D7 as receive pins, just could use pins:10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 for receive. So there are two way to resolve it, but all need external jumper wires.

  • First method: Change the define of rxPin and txPin. Jumper wires connect DOUT-D10, DIN-D11.


#define rxPin 10
#define txPin 11

  • Second method: Use the others Hardware Serialport because of Mage there are 4 hardware serialport. Jumper wires connect DOUT-RX1(D19) DIN-TX1(D18)
void setup()
{
   Serial.begin(9600);
   Serial1.begin(9600);

}
void loop()
{
  int i = 0;
  char someChar[32] = {0};
  // when characters arrive over the serial port...
  if(Serial.available()) {
    Serial.print("------->  ");
    do{
      someChar[i++] = Serial.read();
    }while (Serial.available() > 0);
    
    Serial1.println(someChar);
    Serial.println(someChar);
  }
  
  while(Serial1.available())
      Serial.print((char)Serial1.read()); 
}

Documents