This is the client side of our motion detection security scanner system.

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of Ethernet_UDP_client by NXP

Need to use this program too.

https://developer.mbed.org/users/dereklstinson/code/Motions_Secure_Server_IUPUI/

main.cpp

Committer:
dereklstinson
Date:
2016-12-16
Revision:
1:2f91eff1bb80
Parent:
0:29858159c001

File content as of revision 1:2f91eff1bb80:

/*------------------------------------------------------------------------------------*/
/*  Ethernet UDP Client (to be used with Ethernet_UDP_server)                         */
/*------------------------------------------------------------------------------------*/

/*--COMPANY-----AUTHOR------DATE------------REVISION----NOTES-------------------------*/
/*  NXP         mareikeFSL  2015.12.23      rev 1.0     initial                       */
/*                                                                                    */
/*------------------------------------------------------------------------------------*/
/*  This "Hello World" program is used in conjunction with the Ethernet_UDP_server    */
/*  program. It communicates between two FRDM-K64F boards via the Ethernet protocol.  */
/*  To use this program, you need to do the following:                                */
/*      - Connect an Ethernet cable between two FRDM-K64F boards (a crossover cable   */
/*        is not required).                                                           */
/*      - Flash one board with Ethernet_UDP_client and the other with                 */
/*        Ethernet_UDP_server                                                         */
/*      - [optional] If you would like to see the "Hello World" output on your        */
/*        monitor, install and open a terminal. Tera Term is used in the Wiki for     */
/*        this program.                                                               */
/*------------------------------------------------------------------------------------*/


/*--INCLUDES----------------------------------------------------------------------------*/
#include "mbed.h"
#include "EthernetInterface.h"
 

/*--DEFINES-----------------------------------------------------------------------------*/



/*--CONSTANTS---------------------------------------------------------------------------*/
const int PORT = 7;

static const char* SERVER_IP = "192.168.1.101"; //IP of server board
static const char* CLIENT_IP = "192.168.1.102"; //IP of client board
static const char* MASK = "255.255.255.0";      //mask
static const char* GATEWAY = "192.168.1.1";     //gateway


/*--INITS-------------------------------------------------------------------------------*/
Serial pc(USBTX, USBRX);        //create PC interface
EthernetInterface eth;          //create ethernet
UDPSocket sock;                 //creat Ethernet socket
Endpoint server;                //create endpoint

DigitalOut red(LED_RED);        //debug led
DigitalOut green(LED_GREEN);    //debug led
DigitalIn button(SW3);
DigitalIn button2(SW2);
DigitalOut led(PTD3); //ARDUINO D12 compareable
/*--VARIABLES---------------------------------------------------------------------------*/
int n;                  //size of received message
char in_buffer[1];      //create receive buffer
char counter[1] = {0};  //sample send buffer

Ticker flashes;
/*--FUNCTION DECLARATIONS---------------------------------------------------------------*/
void init_usb(void);    //initializes pc.printf if required
void init_eth(void);    //initializes Ethernet
void end_eth(void);     //closes Ethernet socket
int main(void);         //main
void alarmLight();

/*--FUNCTION DEFINITIONS----------------------------------------------------------------*/

/***********ALARM************************************************************************/

void alarmLight(){
  if (in_buffer[0] =='z' || led ==1){
  
            red=!red;
            led=!led;
          
        
 
}
}
/*****************************************************************************INIT_USB***/
void init_usb(void)
{
    pc.baud(9600);    //baud
    
}   //end init_usb()

/*****************************************************************************INIT_ETH***/
void init_eth(void)
{
    eth.init(CLIENT_IP, MASK, GATEWAY);                                         //set up IP
    eth.connect();                                                              //connect ethernet
    pc.printf("\nCLIENT - Client IP Address is %s\r\n", eth.getIPAddress());    //get client IP address
    
    sock.init();                                                                //initialize socket
    
    server.set_address(SERVER_IP, PORT);                                        //set address of server
    
}   //end init_eth()

/******************************************************************************END_ETH***/
void end_eth(void)
{
    sock.close();       //close socket
    eth.disconnect();   //close Ethernet
    
}   //end end_eth()

/*********************************************************************************MAIN***/
int main(void)
{
    red = 0;                                                                                //client
    green = 1;
   // led = 1;
    init_usb();                                                                             //initialize the PC interface
    init_eth();                                                                             //initialize the Ethernet connection
    flashes.attach(&alarmLight,.1);
    while(true)                                                                             //repeat forever
    { 
    if(button2==0) counter[0]='x';
    if(button==0) counter[0]='b';
        
    pc.printf("\nCLIENT - Sending '%i' to server %s\r\n", counter[0], SERVER_IP);       //print message to send
    sock.sendTo(server, counter, sizeof(counter)); 
       
        pc.printf("CLIENT - Waiting for UDP packet...\r\n");                                //wait for message
        
        n = sock.receiveFrom(server, in_buffer, sizeof(in_buffer));                         //receive message from server
        
        in_buffer[n] = '\0';                                                                //add \0 to end of message
        pc.printf("CLIENT - Received '%i' from server %s\r\n", in_buffer[0], SERVER_IP);    //print message received

            alarmLight();
         
            
        counter[0] = (counter[0] + 1)%11;                                                   //only count up to 10, then reset to 0
        
     //   wait(1);    
                                                                                //wait 1 second
    }
    
}   //end main()