设计ESP8266-03开发板的第一步

本文介绍了如何配置ESP8266-03开发板,包括USB转UART设置、默认固件操作、检测通信设备、连接Wi-Fi、建立TCP和UDP连接,以及使用SDK进行独立设备编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一个项目当中有两个平台,一个多么有趣的下午...

 

正如我在之前博客中所提及的那样,我在设计ESP8266-03开发板时非常乐观,甚至在投入批量生产前都没有生产原型开发板。今天我收到了几个邮寄过来的开发板,而且网上关于这个模组的信息比比皆是,接下来我具体描述一下开发的第一步...

配置FT230X



开发板上的USBUART的转换器有四个CBUS管脚,这四个管脚可配置为GPIOs或者status管脚。其中的三个管脚(CBUS0/1/3)可以被连接到绿色LEDs,因此如果你想改变默认配置,可以下载FT_Prog工具(点击下载),编程新的设置,断开/重新连接开发板


默认固件

以下深受一篇好文的启发而作。

利用微型USB将开发板连接到你的电脑,开发一个你最喜欢的终端程序(这是我用的程序),波特率设置为9600,选择发送选项卡,勾选+CR & +LF框,进入不同的指令,点击发送ASCII”


检测通信设备

>AT

OK

获取固件版本:

>AT+GMR

0018000902-AI03

将Wifi模式设置为AP+STA,并列出附近的接入点

(APs):

>AT+CWMODE=3

OK

>AT+CWLAP

+CWLAP:(3,"mysuperwifi",-76,"90:xx:xx:xx:xx:xx",1)

+CWLAP:(4,"zak-52122",-79,"a4:xx:xx:xx:xx:xx",3)

+CWLAP:(3,"ZyXEL_133A",-80,"cc:xx:xx:xx:xx:xx",2)

+CWLAP:(3,"somewifi",-81,"e0:xx:xx:xx:xx:xx",4)

+CWLAP:(0,"HP-Print-0C-Photosmart",-82,"6c:xx:xx:xx:xx:xx",4)

+CWLAP:(4,"anotherwifi",-83,"fc:xx:xx:xx:xx:xx",1)


正如你所看到的那样,你会发现接入点名称和MAC地址、RSSIs。第一个数字是加密模式的(0:open, 1:wep, 2:wpa_psk, 3:wpa2_psk, 4:wpa_wpa2_psk)


连接到你的接入点:

>AT+CWJAP="mysuperwifi","mypassword"

OK

检测一下是否已经连接:

下载运行TCP服务器/终端(由tomeko创建的Bcbserver),将数据发送到你的主计算机上:

> AT+CIPMUX=0

OK

>AT+CIPSTART="TCP","your computer IP",7778

OK

已连接

+IPD,24: 已建立连接

OK


现在已建立TCP连接,要具体列出发送几个字节数位(例如这里是4个)

>AT+CIPSEND=4

(在此输入4个字节)

发送OK

你应该可以看到显示在BCBcostam的文本。

最后,终止TCP连接: 

>AT+CIPCLOSE

OK

取消链接

你会在此处此处发现更多的AT指令。

建立Espressif工具链

直到现在我们一直把ESP8266当作外部设备使用,这意味着我们需要利用电脑/手机/微控制器来操作它。然而,自从ESP8266厂商发布芯片SDK 以来,我们可以用自己的代码对芯片进行编码,这样它就可以当作独立设备运作起来。为了实现这一点,首先我们需要建立一个Espressif工具链。


这恐怕要花一点时间...所以可以有时间再做!我非常推荐要根据此处的指南进行操作。这是针对 linux的指南,针对Windows的指南,可以点击此处


请注意,在Linux 指南中,我在写入时必须要运行 "mv esp_iot_sdk_v0.9.3/* ESP8266_SDK",而不是"mv esp_iot_sdk_v0.9.3 ESP8266_SDK"


创建自己的程序

我们举个例子来讲。我花了4-5个小时完成这项有趣的设置:

un sketch on the ESP8266-03 development board

<div class="player-unavailable"><h1 class="message">出现错误。</h1><div class="submessage"><a href="http://www.youtube.com/watch?v=cw2yjEPAaz8">请尝试在 www.youtube.com 上观看此视频</a>,或者在浏览器中启用 JavaScript(如果已在浏览器中停用)。</div></div>

在ESP8266-03开发板上素描


多普勒站


首先,我们需要内部拉高使能方式将ESP8266管脚设置为输入模式,这样我们就可以只在IO端口和平台之间连接按钮了。

PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13); // 设置GPIO13函数

gpio_output_set(0, 0, 0, BIT13); // 设置GPIO13为输入模式

PIN_PULLDWN_DIS(PERIPHS_IO_MUX_MTCK_U); // 关闭拉低使能

PIN_PULLUP_EN(PERIPHS_IO_MUX_MTCK_U); // 使能拉高


由于我们不能看到ESP8266芯片的英文介绍,但又想利用芯片所含有的所有功能,所以我们不得不使用SDK。可以在你喜欢的搜索网站浏览一下"ESP8266EX SDK Programming Guide" 


在芯片中管脚可由几个控制器驱动,第一行说明我们想在GPIO13上利用GPIO控制器。其余三行...仔细读一下评论。这种使用按钮的方式非常简单而且节能,因为你不需要使用中断的方式来读取数据,只需检测它的状态即可。


ETS_GPIO_INTR_DISABLE(); // 禁用GPIO中断

ETS_GPIO_INTR_ATTACH(doppler_int_handler, 12); // GPIO12中断处理程序

PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12); // 设置GPIO12函数

gpio_output_set(0, 0, 0, GPIO_ID_PIN(12)); // 设置GPIO12为输入方式

GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, BIT(12)); //  清除GPIO状态

gpio_pin_intr_state_set(GPIO_ID_PIN(12), 3); // GPIO12所有边沿中断

ETS_GPIO_INTR_ENABLE(); //GPIO使能中断


多普勒传感器有一个输出频率,输出电压为5V(不要忘记还有一个分压器),这意味着传感器会根据与物体速度成正比的频率,每秒几次切换管脚。在这个简单的固件中,你可以下载以下...我们采用了一个非常简单的方法,即:HB-100 FOUT管脚每切换一次,ESP8266就会产生一次中断,同时就会增加一个计数器。我们每0.5s阅读一次计数器的数值,并将其传送给电脑和其他ESP8266-03模组。


以上有趣的部分是第二行,其中将doppler_int_handler注册为GPIO12中断函数,每调用一次函数,就会增加一个计数器。 


PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2); // 设置GPIO2函数

gpio_output_set(0, BIT2, BIT2, 0); // GPIO2 设置为低输出模式


这两行将GPIO2设置为输出模式来驱动红色LED。由于ESP8266-03开发板已配置限流电阻,所以你可以直接连接LED。正如视频中所看到的那样,红色LED0.5s闪亮一次。


os_timer_disarm(&led_timer); // 停止led定时器

os_timer_setfn(&led_timer, (os_timer_func_t *)led_timerfunc, NULL); // 设置led定时器

os_timer_arm(&led_timer, 500, 1); // 启动led定时器,每0.5s启动一次


ESP8266‘操作系统’允许你在预定的频率上启动指定的定时器(函数)。我们在此指定应该每0.5s调用一次led_timerfunc函数。


char ssid32 = "mywifissid"; // Wifi SSID

char password64 = "mywifipassord"; // Wifi Password

struct station_config stationConf; // Station conf struct

wifi_set_opmode(0x1); // Set station mode

os_memcpy(&stationConf.ssid, ssid, 32); // Set settings

os_memcpy(&stationConf.password, password, 64); // Set settings

wifi_station_set_config(&stationConf); // Set wifi conf

//wifi_status_led_install(13, PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13); // Wifi LED status


将开发板连接至你家里的Wifi就是如此简单!最后一行说明你可以利用一个指定的LED来显示Wifi的状态。Wifi在试图连接或者连接异常时LED会闪烁,Wifi连接状态下LED不亮。


void ICACHE_FLASH_ATTR network_check_ip(void)

{

struct ip_info ipconfig;

 

os_timer_disarm(&network_timer); // Disarm timer

wifi_get_ip_info(STATION_IF, &ipconfig); // Get Wifi info

 

if (wifi_station_get_connect_status() == STATION_GOT_IP && ipconfig.ip.addr != 0) 

{

network_start(); // Everything in order

}

else 

{

os_printf("Waiting for IP...\n\r");

os_timer_setfn(&network_timer, (os_timer_func_t *)network_check_ip, NULL);

os_timer_arm(&network_timer, 1000, 0);

}


平台从你家的DHCP服务器(通常是你的路由器)获取IP地址之前, 这个1s定时器一直处于调用状态。平台获取IP地址之后,可开始与你的电脑以及其他设备进行连接。


global_tcp_connect.type=ESPCONN_TCP; // We want to make a TCP connection  

global_tcp_connect.state=ESPCONN_NONE; // Set default state to none  

global_tcp_connect.proto.tcp=&global_tcp; // Give a pointer to our TCP var

global_tcp_connect.proto.tcp->local_port=espconn_port(); // Ask a free local port to the API

global_tcp_connect.proto.tcp->remote_port=7778; // Set remote port (bcbcostam)

global_tcp_connect.proto.tcp->remote_ip0=ip1; // Your computer IP

global_tcp_connect.proto.tcp->remote_ip1=ip2; // Your computer IP

global_tcp_connect.proto.tcp->remote_ip2=ip3; // Your computer IP

global_tcp_connect.proto.tcp->remote_ip3=ip4; // Your computer IP

espconn_regist_connectcb(&global_tcp_connect, tcpNetworkConnectedCb); // Register connect callback

espconn_regist_disconcb(&global_tcp_connect, tcpNetworkDisconCb); // Register disconnect callback

espconn_regist_reconcb(&global_tcp_connect, tcpNetworkReconCb); // Register reconnection function

espconn_connect(&global_tcp_connect); // Start connection


建立一个TCP连接并没有那么复杂。建立连接、取消连接或重新连接时可以利用指定的IP/接口调用函数。


global_udp_connect.type=ESPCONN_UDP; // We want to make a UDP connection

global_udp_connect.state=ESPCONN_NONE; // Set default state to none

global_udp_connect.proto.udp=&global_udp; // Give a pointer to our UDP var

global_udp_connect.proto.udp->local_port=2222; // Set local port

global_udp_connect.proto.udp->remote_port=2222; // Set remote port

global_udp_connect.proto.udp->remote_ip0=ip1; // The other ESP8266 IP

global_udp_connect.proto.udp->remote_ip1=ip2; // The other ESP8266 IP

global_udp_connect.proto.udp->remote_ip2=ip3; // The other ESP8266 IP

global_udp_connect.proto.udp->remote_ip3=ip4; // The other ESP8266 IP

if(espconn_create(&global_udp_connect) == 0) // Correctly setup

{

os_printf("UDP connection set\n\r");

udp_conn_ok = TRUE;

}


UDP连接要简单得多,因为在TCP等传送数据那一块不需要添加任何逻辑操作ESP8266只是把字节发到一个指定的IP地址上。


以上内容已经包含所有基本的操作。接下来我会总结一下固件的功能,以便于你查看源代码:


-设置输入/输出模式

-注册一个0.5s的定时器,用于切换红色LED,读取多普勒频率,并将这一频率发送至你的电脑和ESP8266

-注册一个1s的定时器来检测ESP8266的连接状态。获取IP地址之后,使你的电脑建立TCP连接,ESP8266建立UDP连接。


指示平台

这里的操作更为简单:

连接至你的Wifi

为绿色/橙黄色/红色LED3个管脚设置为输出模式

建立UDP连接

解析传入的数据,了解LED的开关状态


若想下载资料可以点击doppler sensor code esp8266 client code,想获取更多示例可以点击 this github repository

可以在freenode上查看有关esp8266的所有内容!


谢谢zarya的帮助和编码!


版权声明:

本译文仅用于学习和交流目的。非商业转载请注明译者、出处,并保留文章在译言的完整链接。

原文来源:www.limpkinw.com/

原文标题:First Steps with the ESP8266-03 Development Board

原文地址:http://www.limpkin.fr/index.php?post/2014/12/07/First-Steps-with-the-ESP8266-03-Development-Board




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值