Communicates with the WiFi - be very careful when using as it is tempremental.

Dependencies:   mbed

initiateWifi.cpp

Committer:
qdanilc
Date:
2017-05-25
Revision:
6:99841ed0c8a8
Parent:
5:79618eee4d54
Child:
7:bfb2b5142c29

File content as of revision 6:99841ed0c8a8:

#include "mbed.h"
#include "RawSerial.h"

    //setup the other wifi pins
DigitalOut rstPin (PTE29);
DigitalOut chpdPin (PTE23);


RawSerial esp (PTC4, PTC3, 115200); //setup a serial to the  (board) Tx = PTC4 and  Rx = PTC3 pins at baud rate 115200

Serial pc(USBTX, USBRX, 115200);

DigitalOut redLED(LED1); // twp leds  
DigitalOut greenLED(LED2); // to allow visual check of bidirectional comms
DigitalOut blueLED(LED3);  //to prove it's working

char input; //character to store inputs/outputs in communication
char* startCommands[10]= {
    "AT",
    "AT",
    "AT",
    "AT+RST",
    "AT+CWMODE=1",
    //"AT+CWJAP=\"Hotspot\",\"password\"", skip signing in for debugging purposes
    "AT+CIPMUX=0",
    "AT+CIPSTART=\"TCP\",\"172.217.23.19\",80", // change to 172.217.23.19\", \"80\"",
    "AT+CIPSEND=0",
};


int numberOfCommands;

int k = 0; //counter for comm numb


void start() {
    pc.printf("Initialising start sequence\r\n");
    
    //numberOfCommands = sizeof(startCommands)/sizeof(startCommands[0]);
    numberOfCommands = 10;
    
    for (int i = 0; i<numberOfCommands; i++) { //replace the 9 with sizeOf start commands 
        
        pc.printf("\r\ncommand %d",i);  //identify the command number
        pc.printf("\r\n");     
        
        esp.printf("%s\r\n",startCommands[i]);    //send command
        esp.putc(10); //send the command by pressing enter
        
        
    }
}

void reset() {   //resets the module by turning rst off for 2 seconds then on again
    rstPin = 0;
    wait(2);
    rstPin = 1;
    pc.printf("Reset complete\r\n");
    
}
void esp_recv()
{
    redLED = !redLED;
    while(esp.readable()) {
        pc.putc(esp.getc());
        //wait_us(1);
    }
}
void pc_recv()
{
    char c;
    greenLED = !greenLED;
    while(pc.readable()) {
        c=pc.getc();
        esp.putc(c);
        
        
        if(c==13) {
            pc.printf("\r\ncommand %d",k);  //identify the command number
            pc.printf("\r\n");     
            
            esp.printf("%s\r\n",startCommands[k]);    //send command
            pc.putc(10); //ie makes enter perform as expected
            
            if (k <10) { k++;} else {k=0;} //reset k if required
        }
    }
}

void initiateWifi() {
    
    //initialise the pins
    rstPin = 1;
    chpdPin = 1;
    
    reset();    //perform an initial reset
    
    blueLED = 1; //turn on test light

    pc.attach(&pc_recv, Serial::RxIrq); // attach the two interrupt services
    esp.attach(&esp_recv, Serial::RxIrq);
    
    //wait(10);
    //start();

}