2016年12月

#include <ESP8266WiFi.h> // 配置WIFI用的
#include <ESP8266WebServer.h> // web服务用的

const char *ssid = "yqmiot";
const char *password = "yqmiot";

// 创建一个web服务对象,侦听80端口
ESP8266WebServer server(80);

void setup() {
    delay(1000);

    // 初始化串口
    Serial.begin(74880);

    // 初始化WIFI
    WiFi.begin ( ssid, password );

    // 等待WIFI连接完成
    while ( WiFi.status() != WL_CONNECTED ) {
        delay ( 500 );
        Serial.print ( "." );
    }
    Serial.println();
    Serial.printf("localIP: %s\n", WiFi.localIP().toString().c_str());

    // 设置web服务对 / 请求响应
    server.on("/", []() {
        // 当收到 / 请求时,给客户的发送状态码,内容类型,以及内容
        server.send ( 200, "text/plain", "Hello World!" );
    });

    // 设置web服务处理 POST 请求
    server.on("/haha", HTTP_POST, []() {
        int args = server.args();
        String data;

        for (int i = 0; i < args; ++i) {
            data += server.argName(i);
            data += " = ";
            data += server.arg(i);
            data += "\n";
        }

        server.send(200, "text/plain", data);
    });

    // 设置web服务访问不存在请求时的处理
    server.onNotFound([]() {
        // 404 表示资源没找到
        server.send ( 404, "text/plain", "what's your name?" );
    });

    // web服务启动
    server.begin();
}

void loop() {
    // 处理web访问
    server.handleClient();
}

ESP8266官方

http://espressif.com/zh-hans/support
https://github.com/espressif

用ESP8266做的WiFi音频频谱分析器

http://www.tuicool.com/articles/26VnAnE

esp8266逆向分析相关

http://esp8266-re.foogod.com/wiki/ESP8266_Reverse_Engineering_Wiki
http://richard.burtons.org/?s=esp8266

esp8266 flash 烧录相关

esp8266 flash烧写相关资料
ESP8266-ESP8266_NONOS_SDK开发包生成的镜像文件构建步骤分析
ESP8266_Flash
esp8266 rtos sdk编译后flash镜像构成

未分类

https://github.com/esp8266
https://github.com/esp8266/esp8266-wiki/wiki
esp8266上电引脚初始化状态问题
An open source boot loader for the ESP8266

持续更新中

Arduino for ESP8266的话,如果不修改代码,默认没有办法进入轻睡眠的省电模式,只能进入Modem Sleep,也就是说Wifi可以暂时睡眠但是CPU没法睡,Modem Sleep最低功耗在15mA-16mA,轻睡眠的最低功耗在1mA-2mA左右

如果要在Arduino中再腾出几KB内存的话,我这晨还有一个方法,就是去到esp8266 arduino的开发包中,找到一个叫"cont.h"的头文件,里边有一个栈大小的宏定义常量叫“CONT_STACKSIZE",他的值默认是4096,我试着将他改成1024,这样就省了3KB内存,具体稳定的话,我用一个程序目前测试了一下,还是可以顺利腾出3KB的内存的,因为刚好我应要用把这将近50K的内存用完,所以特此贡献这个方法
我先看看他的调度的汇编来确定一下是否有其他的隐患,目前是测得可以正常工作的

如果你用过SDK就会发现,有将近50K的内存,你用Arduino会少了几K,不好奇是去了哪里吗?有4K至少,是被用来做保存是上下文用的,什么是上下文?就是内核调度器的一个概念,你可以理解为,一个MCU要实现不同的线程,他就要为单个线程保存单独的现场环境,而这个现场环境就用掉了4K多一点的内存了

如果有空可以将试着去官网下载一个最新版的SDK文件夹,然后将"lib"中的文件替换至现在的2.0.0版的"lib"文件夹中,这样的话,可以使用一些SDK1.5.0的一些最新的特性(不知道的可以暂时不升级),记得替换前要进行好备份原来的文件夹,如果替换后编译时出错,则可以在这个旧的文件夹中找至具体出错的文件进行找旧版的覆盖上去用,目前我大部份测试Arduino 2.0.0将SDK 1.3.0替换成SDK1.5.0(最新版的)也是可以正常工作的

另外发现Arduino的一个问题就是在使用TCP(注意仅是TCP)发送一个内存缓冲区(大小是1450左右)函数的时候速度很慢(表现为TCP这个write函数执行时间较久),暂时我还没有办法找到内部的原因,但是使用SDK就没有这个问题,但是为了使用Arduino良好的编译环境,以及一堆的函数库(比如SD卡库),我在Ardiuno中使用了SDK的代码(可以直接编译成功,改动不大)


- 阅读剩余部分 -

烧录esp8266的固件可以使用esptool这个python模块,它除了能烧录固件外还可以做很多其他的事,末尾有张表列出它所有功能。用它来烧录esp8266的固件,首先得确保你电脑安装了python,如果没有安装可以到这里下载并安装 python下载 强烈建议安装的时候勾选把python加入环境变量,省的后来还得自己配置。esptool得要先安装,在linux mac下很简单一行命令就可以搞定。

sudo pip install esptool

环境都一切搞定后就简单了,调用esptool的write_flash命令来写入固件,这个命令它需要两个参数,分别是写入地址和文件路径。

- 阅读剩余部分 -