ESP8266 ESP-01 moduel WiFi client demo with LPC1768

Dependencies:   BreathLed BufferedSerial ESP8266 mbed

Committer:
steeven
Date:
Sun May 03 14:48:12 2015 +0000
Revision:
0:1e99d872e742
init version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
steeven 0:1e99d872e742 1 #include "mbed.h"
steeven 0:1e99d872e742 2 #include "BreathLed/BreathLed.h"
steeven 0:1e99d872e742 3 #include "ESP8266/Esp8266.h"
steeven 0:1e99d872e742 4 #include "BufferedSerial/BufferedSerial.h"
steeven 0:1e99d872e742 5
steeven 0:1e99d872e742 6 using namespace steeven;
steeven 0:1e99d872e742 7
steeven 0:1e99d872e742 8 /*
steeven 0:1e99d872e742 9 * ESP8266 demo that:
steeven 0:1e99d872e742 10 * 1. accept host name from console, print http request result
steeven 0:1e99d872e742 11 * 2. print AT command result from console
steeven 0:1e99d872e742 12 * Press user button on LPC1768 to switch mode and debug level, see console prompt
steeven 0:1e99d872e742 13 */
steeven 0:1e99d872e742 14
steeven 0:1e99d872e742 15 BreathLed led4(LED4);
steeven 0:1e99d872e742 16 DigitalOut led1(LED1); //0:no log, 1:log
steeven 0:1e99d872e742 17 DigitalOut led2(LED2); //2:dbg 1, 3:dbg 2
steeven 0:1e99d872e742 18 DigitalOut led3(LED3); //input host or cmd
steeven 0:1e99d872e742 19 InterruptIn btn(P2_8); //UBTN
steeven 0:1e99d872e742 20
steeven 0:1e99d872e742 21 BufferedSerial pc(USBTX, USBRX, 256, 20);
steeven 0:1e99d872e742 22 Esp8266 wifi(p28, p27, p29, p26);
steeven 0:1e99d872e742 23
steeven 0:1e99d872e742 24 void on_btn(void) {
steeven 0:1e99d872e742 25
steeven 0:1e99d872e742 26 int n = (led3 << 2) + (led2 << 1) + led1;
steeven 0:1e99d872e742 27 n++;
steeven 0:1e99d872e742 28 led3 = (n >> 2) & 1;
steeven 0:1e99d872e742 29 led2 = (n >> 1) & 1;
steeven 0:1e99d872e742 30 led1 = (n >> 0) & 1;
steeven 0:1e99d872e742 31 wifi.set_log((n & 7) > 0 ? &pc : NULL, (n & 3) - 1);
steeven 0:1e99d872e742 32 if (wifi._dbg == -1)
steeven 0:1e99d872e742 33 wifi.set_log(wifi._logger, 0);
steeven 0:1e99d872e742 34 pc.printf("log:%d dbg:%d mode:%s\n", wifi._logger == NULL ? 0 : 1,
steeven 0:1e99d872e742 35 wifi._dbg, led3 > 0 ? "host" : "cmd");
steeven 0:1e99d872e742 36
steeven 0:1e99d872e742 37 }
steeven 0:1e99d872e742 38
steeven 0:1e99d872e742 39 char *trim(char *buf) {
steeven 0:1e99d872e742 40 int len = strlen(buf);
steeven 0:1e99d872e742 41 int i;
steeven 0:1e99d872e742 42 for (i = len - 1; i >= 0; i--) {
steeven 0:1e99d872e742 43 if (buf[i] == '\r' || buf[i] == '\n' || buf[i] == '\t' || buf[i] == ' ')
steeven 0:1e99d872e742 44 buf[i] = 0;
steeven 0:1e99d872e742 45 else
steeven 0:1e99d872e742 46 break;
steeven 0:1e99d872e742 47 }
steeven 0:1e99d872e742 48 return buf;
steeven 0:1e99d872e742 49 }
steeven 0:1e99d872e742 50
steeven 0:1e99d872e742 51 void ipd_cb(char *buf, int len) {
steeven 0:1e99d872e742 52 if (buf != NULL) {
steeven 0:1e99d872e742 53 pc.printf("\n-----------HTTP data len: %d----------\n", len);
steeven 0:1e99d872e742 54 /* WARNNING: print data to console will cause data lost for big pages */
steeven 0:1e99d872e742 55 buf[len] = 0;
steeven 0:1e99d872e742 56 pc.puts(buf);
steeven 0:1e99d872e742 57 } else {
steeven 0:1e99d872e742 58 pc.puts("===================END====================\n");
steeven 0:1e99d872e742 59 }
steeven 0:1e99d872e742 60 }
steeven 0:1e99d872e742 61
steeven 0:1e99d872e742 62 int main() {
steeven 0:1e99d872e742 63 char buf[256];
steeven 0:1e99d872e742 64 char tx[256];
steeven 0:1e99d872e742 65 int r;
steeven 0:1e99d872e742 66 char *cmd;
steeven 0:1e99d872e742 67
steeven 0:1e99d872e742 68 pc.baud(115200);
steeven 0:1e99d872e742 69 pc.printf("starting...\n");
steeven 0:1e99d872e742 70
steeven 0:1e99d872e742 71 led4.loop(0.5, 0.2);
steeven 0:1e99d872e742 72 btn.fall(on_btn);
steeven 0:1e99d872e742 73
steeven 0:1e99d872e742 74 // wifi.set_log(&pc, 0);
steeven 0:1e99d872e742 75
steeven 0:1e99d872e742 76 wifi.init();
steeven 0:1e99d872e742 77 wifi.switchClientMode(1);
steeven 0:1e99d872e742 78
steeven 0:1e99d872e742 79 wifi.cmd_data("AT+CWLAP"); //list Routers
steeven 0:1e99d872e742 80
steeven 0:1e99d872e742 81 wifi.connect("steeven@qp", "xxxxxx");
steeven 0:1e99d872e742 82
steeven 0:1e99d872e742 83 // http://releases.ubuntu.com/14.10/MD5SUMS
steeven 0:1e99d872e742 84 wifi.send("releases.ubuntu.com", 80, "GET /14.10/MD5SUMS HTTP/1.1\r\nHOST: releases.ubuntu.com\r\n\r\n", ipd_cb);
steeven 0:1e99d872e742 85
steeven 0:1e99d872e742 86 // wifi.send("g.cn", 80, "GET / HTTP/1.1\r\nHOST: g.cn\r\n\r\n", ipd_cb);
steeven 0:1e99d872e742 87
steeven 0:1e99d872e742 88 while (1) {
steeven 0:1e99d872e742 89 pc.readl(buf, sizeof(buf));
steeven 0:1e99d872e742 90 cmd = trim(buf);
steeven 0:1e99d872e742 91 if (led3.read() == 1)
steeven 0:1e99d872e742 92 wifi.cmd_data(cmd);
steeven 0:1e99d872e742 93 else {
steeven 0:1e99d872e742 94 sprintf(tx, "GET / HTTP/1.1\r\nHOST: %s\r\n\r\n", cmd);
steeven 0:1e99d872e742 95 if ((r = wifi.send(cmd, 80, tx,
steeven 0:1e99d872e742 96 (led1 == 0 && led2 == 0) ? ipd_cb : NULL)) <= 0)
steeven 0:1e99d872e742 97 pc.printf("========== Error: %d ==========\n", r);
steeven 0:1e99d872e742 98 }
steeven 0:1e99d872e742 99 }
steeven 0:1e99d872e742 100 }
steeven 0:1e99d872e742 101
steeven 0:1e99d872e742 102