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