E45_TTL_100, Lora transceiver, tested on KL25Z connection with E45 via RS232. Power 100 mW, 868 MHz, range 2 km
Revision 5:3b737b1cedf5, committed 2018-04-01
- Comitter:
- GerritPathuis
- Date:
- Sun Apr 01 11:48:39 2018 +0000
- Parent:
- 4:1249c317e7f3
- Commit message:
- MODSERIAL dependency removed, printf removed from Timer Service Routine
Changed in this revision
MODSERIAL.lib | Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 1249c317e7f3 -r 3b737b1cedf5 MODSERIAL.lib --- a/MODSERIAL.lib Sun Feb 18 13:33:50 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/Sissors/code/MODSERIAL/#a3b2bc878529
diff -r 1249c317e7f3 -r 3b737b1cedf5 main.cpp --- a/main.cpp Sun Feb 18 13:33:50 2018 +0000 +++ b/main.cpp Sun Apr 01 11:48:39 2018 +0000 @@ -1,9 +1,7 @@ #include "mbed.h" -#include "MODSERIAL.h" #include <string> #include <ctype.h> - // E45-TTL-100 RADIO------KL25Z // AUX--------------------PTD4 // M1---------------------PTA12 @@ -15,38 +13,30 @@ // 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) +Serial pc(USBTX, USBRX); // tx, rx of the pc +Serial e45(PTE22, PTE23); // tx, rx of the E45 radio + 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(LED_BLUE); // KL25x BLUE led +DigitalOut myled(LED_RED); // KL25Z RED led -int ping=1; // this number bounces between radios and is incremented +int ping=1; // this number bounces between radios +bool send_something_flag= 0; // Send flag void flank_up() { - myled=1; //Rising Edge Detected + myled=1; //Rising Edge Detected } void flank_down() { - myled=0; //Falling Edge Detected + myled=0; //Falling Edge Detected } -void timer_func() // Send something every 3 seconds +void timer_func() // Send something every 3 seconds { - if (myled == 1) { // AUX is high (Buffer empty), send something - wait_ms(3); - - ping++; // Increase the value - e45.printf("%04d\n\r", ping); - while(myled==0) { - pc.puts("Wait for end Transmission\n\r"); - wait_ms(1); - } - pc.printf("\n\rRadio has sent %04d\n\r", ping); - } + send_something_flag= 1; // Set the send Flag } int main() @@ -58,7 +48,7 @@ pc.baud(115200); e45.baud(9600); // Default for E45 e45.format(8, SerialBase::None, 1); // Default for E45 - pc.puts("\n\r\nE45-TTL-100 LORA\n\r"); + pc.printf("\n\r\nE45-TTL-100 LORA\n\r"); aux.rise(&flank_up); //Service RISING EDGE Interrupt aux.fall(&flank_down); //Service FALLING EDGE Interrupt @@ -70,7 +60,7 @@ count++; if (count > 2000000) { //Kill time count=0; - pc.puts("Wait for AUX Rising edge "); + pc.printf("Wait for AUX Rising edge "); } } } @@ -79,20 +69,31 @@ m1= 0; //Set transparant mode wait_ms(1); - pc.puts("E45 is now ready to send and receive \n\r"); + pc.printf("E45 is now ready to send and receive \n\r"); timer.attach(&timer_func, 3.0); while(1) { if (ping>9999) ping=1; + if (send_something_flag==1) { + if (myled == 1) { // AUX is high (Buffer empty), send something + wait_ms(3); + ping++; // Increase the value + e45.printf("%04d\n\r", ping); + while(myled==0) { + } + send_something_flag=0; + pc.printf("\n\rRadio has sent %04d\n\r", ping); + } + } + if (myled == 0) { // AUX is low, Chars received - //incoming= ""; // Clear the string + incoming= ""; // Clear the string while(myled==0) { if (e45.readable()) { c=e45.getc(); if (isdigit(c)) incoming += c; - //pc.putc(c); //send to pc } else { // End transmission if (incoming.length()==4) { ping= atoi(incoming.c_str());