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

Dependencies:   mbed

initiateWifi.cpp

Committer:
qdanilc
Date:
2017-05-25
Revision:
8:e09edf050cca
Parent:
7:bfb2b5142c29
Child:
9:8cf34e4f9ca0

File content as of revision 8:e09edf050cca:

#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 * getRequest = "GET /HTTP/1.1\r\nHost:172.217.23.19\r\n\r\n";

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


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=='x') {
            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++;   //reset k if required
            } else {
                k=0;
            }
        } else if(c==13) {
            pc.putc(10); //ie makes enter perform as expected
            esp.putc(10);
        }
    }
}

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();

}