All Projects → AngelLiang → Esp8266 Demos

AngelLiang / Esp8266 Demos

Licence: mit
ESP8266示例工程集合

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Esp8266 Demos

ResQ
Open Source Search and Rescue Tool for ground tracking and air usage based on ESP8266 hardware.
Stars: ✭ 20 (-89.47%)
Mutual labels:  esp8266, espressif
Dhtesp
Optimized DHT library for ESP32/ESP8266 using Arduino framework
Stars: ✭ 184 (-3.16%)
Mutual labels:  espressif, esp8266
Farm-Data-Relay-System
A system that uses ESP-NOW, LoRa, and other protocols to transport sensor data in remote areas without relying on WiFi.
Stars: ✭ 97 (-48.95%)
Mutual labels:  esp8266, espressif
Awesome Esp
📶 A curated list of awesome ESP8266/32 projects and code
Stars: ✭ 212 (+11.58%)
Mutual labels:  espressif, esp8266
Sming
Sming - Open Source framework for high efficiency native ESP8266 development
Stars: ✭ 1,197 (+530%)
Mutual labels:  espressif, esp8266
vscode-iot-utility
IoT Utility for Visual Studio Code: Arduino, Espressif, Raspberry Pi, mbed and more
Stars: ✭ 61 (-67.89%)
Mutual labels:  esp8266, espressif
Nodemcu Firmware
Lua based interactive firmware for ESP8266, ESP8285 and ESP32
Stars: ✭ 6,884 (+3523.16%)
Mutual labels:  espressif, esp8266
Esp32marauder
A suite of WiFi/Bluetooth offensive and defensive tools for the ESP32
Stars: ✭ 233 (+22.63%)
Mutual labels:  espressif, esp8266
Sparkfun esp8266 at arduino library
WiFi and TCP drivers for an ESP8266 running AT firmware.
Stars: ✭ 68 (-64.21%)
Mutual labels:  espressif, esp8266
Easyntpclient
Library to read time from Network Time Protocol (NTP) servers.
Stars: ✭ 20 (-89.47%)
Mutual labels:  espressif, esp8266
Lwesp
Lightweight Espressif AT parser library for ESP8266 and ESP32 devices.
Stars: ✭ 212 (+11.58%)
Mutual labels:  espressif, esp8266
Makingfunxyz Esp8266
个人ESP8266学习笔记。
Stars: ✭ 167 (-12.11%)
Mutual labels:  espressif, esp8266
Blynk Library
Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc.
Stars: ✭ 3,305 (+1639.47%)
Mutual labels:  espressif, esp8266
Esp Homekit Demo Stepbystep
tutorial step by step esp homekit demo
Stars: ✭ 24 (-87.37%)
Mutual labels:  demo, esp8266
Esp8266 aliyun mqtt app
基于ESP8266官方SDK快速接入阿里云物联网平台
Stars: ✭ 81 (-57.37%)
Mutual labels:  demo, esp8266
Wifimanager
WiFi manager for ESP8266 - ESP12 - ESP32 - micropython
Stars: ✭ 176 (-7.37%)
Mutual labels:  espressif, esp8266
Flutterminimalwebsite
A minimalistic Flutter website template for blogs and portfolios. Demo: https://gallery.codelessly.com/flutterwebsites/minimal/
Stars: ✭ 180 (-5.26%)
Mutual labels:  demo
Mongoose Os
Mongoose OS - an IoT Firmware Development Framework. Supported microcontrollers: ESP32, ESP8266, CC3220, CC3200, STM32F4, STM32L4, STM32F7. Amazon AWS IoT, Microsoft Azure, Google IoT Core integrated. Code in C or JavaScript.
Stars: ✭ 2,234 (+1075.79%)
Mutual labels:  esp8266
Blog
a blog demo on github pages
Stars: ✭ 179 (-5.79%)
Mutual labels:  demo
Demo
A framework for performing live pre-recorded command line demos in the wild 📼
Stars: ✭ 179 (-5.79%)
Mutual labels:  demo

ESP8266-Demos

ESP8266示例工程集合,基于ESP8266_NONOS_SDKv3.0.0。

使用指南

建议把本仓库当作一个代码实现参考的地方,有需要即可拷贝移植。也可以用O00-empty_app空白工程作为基础模板,需要什么功能再进行添加。

系列说明

D系列:与编码(Decode)相关的demo,加密和哈希相关的也会放在这里。

序号 工程名称 说明
D01 cjson_app 使用cJSON示例
D02 base64_app base64编码示例
D03 md5_app ESP8266使用MD5进行Hash

H系列:与ESP8266片上硬件(Hardware)资源相关的demo,部分demo会有外设使用实例。

序号 工程名称 说明
H01 gpio_app 定时设置GPIO和GPIO的中断处理函数
H02 iic_app IIC使用示例
H03 spi_app SPI使用示例,支持HARD_SPI和SOFT_SPI
H04 adc_app 定时读取ADC数值
H05 hw_timer_app ESP8266使用硬件中断定时器示例
H06 ir_app IR接口示例
H07 uart_app UART回显示例

N系列:与ESP8266网络(Network)相关的demo。

序号 工程名称 说明
N00 speed_test_app ESP8266 TCP/UDP速率测试
N01 tcp_ssl_client_app TCP和SSL客户端示例
N02 tcp_udp_server_app TCP和UDP服务器示例
N03 http_client_app ESP8266作为http client示例
N04 coap_app  搭建一个简单的CoAP Server
N05 sntp_app SNTP使用示例工程
N06 esp_now_app ESP-NOW使用示例,分为slave和controller两部分
N07 smartconfig_app 简单SmartConfig示例
N08 smartconfig_wifi_app 上电先SmartConfig,一段时间后WiFi连接
N09 sniffer_app sniffer使用示例
N10 wifi_event_cb_app 连接Wi-Fi后回调事件功能
N11 multiudp_server_app UDP多播
N12 mqtt_app MQTT client 实例,基于官方SDK example下面的esp_mqtt_proj工程

O系列:其他(Other)demo,未分类的都放在这里。

序号 工程名称 说明
O00 empty_app 空白工程
O01 upgrade_app 远程更新固件示例
O02 lwip_open_src_template_proj 官网提供的lwip示例工程,添加了一些个人示例代码

部分app文件夹下有说明文件(README.md)和效果图(screenshot)。

本人所用的开发环境

使用步骤

  1. 首先到github或者官网下载SDK;

  2. 然后下载并拷贝相关工程文件夹(比如cjson_app)到主目录,用法类似于ESP8266_NONOS_SDK/examples里面的工程;

  3. ESP8266 IDE导入该SDK,,如果不熟悉该环境,参考这里

  4. 使用SDKv3.0.0还需要修改该SDK的顶层Makefile。编辑器打开该SDK的顶层Makefile( https://github.com/espressif/ESP8266_NONOS_SDK/blob/master/Makefile#L29 ),找到下面配置变量,修改SPI_SIZE_MAP为4(如果是使用32Mbit Flash)。

    # ...
    # 25行
    BOOT?=none
    APP?=0
    SPI_SPEED?=40
    SPI_MODE?=QIO
    SPI_SIZE_MAP?=4	
    

    如果不修改,后面编译会报下面错误:

    #error "The flash map is not supported"
    
  5. 最后编译下载即可(建议先clean)。

project_sample

烧写bin

这一步对新手来说可能坑比较多。可参考安信可的烧写步骤,也可参考我ESP8266-Demos仓库里wiki的烧写说明(目前待完善)。

对老手来说,平时怎么烧写就怎么烧写。

注意事项

  • 关于串口波特率

    ESP8266串口波特率打印默认为74800bps。

  • 关于中文乱码

    因为源码文件编码默认为UTF-8,而Windows Eclipse IDE默认为GBK,所以可能需要设置一下:

    菜单栏Window -> Preferences -> General -> Workspace -> 面板Text file encoding -> 选择UTF-8 -> OK

基于SDKv2.0.x的app移植到SDKv3.0.0步骤说明

环境同样还是安信可 ESP 系列一体化开发环境,只不过是把原本基于ESP8266_NONOS_SDKv2.x.x的app兼容到SDKv3.0.0。

第一步:下载SDKv3.0.0

到乐鑫官方的github下载SDK:

https://github.com/espressif/ESP8266_NONOS_SDK

第二步:导入该SDK到IDE

这个就不赘述了。

第三步:修改该SDK的顶层Makefile

编辑器打开该SDK的顶层Makefile,找到下面配置变量,修改SPI_SIZE_MAP为4(如果是使用32Mbit Flash)。

# ...
# 25行
BOOT?=none
APP?=0
SPI_SPEED?=40
SPI_MODE?=QIO
SPI_SIZE_MAP?=4

第四步:修改user_main.c文件

我参考了SDKv3.0.0的examples/IoT_Demo/user_main.c代码,并根据官方文档的说明。使SDKv2.x的app能兼容SDKv3.0.0,仅仅是需要拷贝下面代码到user_main.c即可:

#if ((SPI_FLASH_SIZE_MAP == 0) || (SPI_FLASH_SIZE_MAP == 1))
#error "The flash map is not supported"
#elif (SPI_FLASH_SIZE_MAP == 2)
#define SYSTEM_PARTITION_OTA_SIZE                           0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR                         0x81000
#define SYSTEM_PARTITION_RF_CAL_ADDR                        0xfb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR                      0xfc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR              0xfd000
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR           0x7c000
#elif (SPI_FLASH_SIZE_MAP == 3)
#define SYSTEM_PARTITION_OTA_SIZE                           0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR                         0x81000
#define SYSTEM_PARTITION_RF_CAL_ADDR                        0x1fb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR                      0x1fc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR              0x1fd000
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR           0x7c000
#elif (SPI_FLASH_SIZE_MAP == 4)
#define SYSTEM_PARTITION_OTA_SIZE                           0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR	                        0x81000
#define SYSTEM_PARTITION_RF_CAL_ADDR                        0x3fb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR                      0x3fc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR				0x3fd000
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR           0x7c000
#elif (SPI_FLASH_SIZE_MAP == 5)
#define SYSTEM_PARTITION_OTA_SIZE							0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR							0x101000
#define SYSTEM_PARTITION_RF_CAL_ADDR						0x1fb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR						0x1fc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR				0x1fd000
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR           0xfc000
#elif (SPI_FLASH_SIZE_MAP == 6)
#define SYSTEM_PARTITION_OTA_SIZE                            0x6A000
#define SYSTEM_PARTITION_OTA_2_ADDR                          0x101000
#define SYSTEM_PARTITION_RF_CAL_ADDR                         0x3fb000
#define SYSTEM_PARTITION_PHY_DATA_ADDR                       0x3fc000
#define SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR               0x3fd000
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR            0xfc000
#else
#error "The flash map is not supported"
#endif

#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM                SYSTEM_PARTITION_CUSTOMER_BEGIN

uint32 priv_param_start_sec;

static const partition_item_t at_partition_table[] = {
    { SYSTEM_PARTITION_BOOTLOADER, 						0x0, 												0x1000},
    { SYSTEM_PARTITION_OTA_1,   						0x1000, 											SYSTEM_PARTITION_OTA_SIZE},
    { SYSTEM_PARTITION_OTA_2,   						SYSTEM_PARTITION_OTA_2_ADDR, 						SYSTEM_PARTITION_OTA_SIZE},
    { SYSTEM_PARTITION_RF_CAL,  						SYSTEM_PARTITION_RF_CAL_ADDR, 						0x1000},
    { SYSTEM_PARTITION_PHY_DATA, 						SYSTEM_PARTITION_PHY_DATA_ADDR, 					0x1000},
    { SYSTEM_PARTITION_SYSTEM_PARAMETER, 				SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR, 			0x3000},
    { SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM,             SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM_ADDR,          0x1000},
};

void ICACHE_FLASH_ATTR user_pre_init(void)
{
    if(!system_partition_table_regist(at_partition_table, sizeof(at_partition_table)/sizeof(at_partition_table[0]),SPI_FLASH_SIZE_MAP)) {
		os_printf("system_partition_table_regist fail\r\n");
		while(1);
	}
}

第五步:完成,尝试编译烧写吧!

自此,基于SDKv2.x的app已经能在SDKv3.0上编译了。我测试了我的部分示例app,烧写后一切正常工作。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].