E45_TTL_100, Lora transceiver, tested on KL25Z connection with E45 via RS232. Power 100 mW, 868 MHz, range 2 km

Dependencies:   MODSERIAL mbed

main.cpp

Committer:
GerritPathuis
Date:
2018-02-17
Revision:
2:329d3f88af27
Parent:
1:2b8fa0144c4f
Child:
3:19a244789b2b

File content as of revision 2:329d3f88af27:

#include "mbed.h"
#include "MODSERIAL.h"

// E45-TTL-100 RADIO------KL25Z
// AUX--------------------PTD4
// M1---------------------PTA12
// M0---------------------PTA4
// RXD--------------------PTE22(TX)
// TXD--------------------PTE23(RX)
// LORA Radio Transmits @ 868 mHz
// Expected range 2000m
// https://quadmeup.com/wp-content/uploads/2017/09/E45-TTL-100_Datasheet_EN_v1.2.pdf

Ticker timer;
MODSERIAL pc(USBTX, USBRX, 512);    // tx, rx of the pc, (512 char buffer)
MODSERIAL e45(PTE22, PTE23, 512);   // tx, rx of the E45 radio (512 char buffer)
InterruptIn aux(PTD4);              // AUX the E45 radio
DigitalOut m1(PTA12,PullUp);        // M1 the E45 radio
DigitalOut m0(PTA4, PullUp);        // M0 the E45 radio
DigitalOut myled(LED1);             // Kl25x led1


void flank_up()
{
    myled=1;    //Rising Edge Detected
}

void flank_down()
{
    myled=0;    //Falling Edge Detected
}

void timer_func()        // Send something every 3s
{
    if (myled == 1)  {   // AUX is high (Buffer empty), send something
        wait_ms(3);
        e45.puts("123");
        while(myled==0) {
            pc.puts("Wait for end Transmission\n\r");
            wait_ms(1);
        }
        pc.puts("\n\rRadio has sent 123\n\r");
    }
}


int main()
{
    pc.baud(115200);
    e45.baud(9600);
    pc.puts("\n\r\nE45-TTL-100 LORA\n\r");

    aux.rise(&flank_up);       //Service RISING EDGE Interrupt
    aux.fall(&flank_down);     //Service FALLING EDGE Interrupt

    // select mode
    // Transparant Transmission
    m0= 0;
    m1= 0;
    wait_ms(1);

    // wait for E45 to be ready
    while(myled==0) {
        pc.puts("Wait for E45 reset\n\r");
        wait_ms(20);
    }
    wait_ms(2);
    timer.attach(&timer_func, 3.0);
    pc.puts("E45 is now ready to send and receive \n\r");

    while(1) {
        if (myled == 0)  {   // AUX is low, Chars received
            wait_ms(3);
            while(myled==0) {
                if (e45.readable()) {
                    pc.putc(e45.getc()); //send to pc
                }
            }
        }
    }
}