如何连接和编程ESP8266

步骤1:为arduino设置esp8266
有很多使用esp8266的方法,包括使用它作为简单的wifi调制解调器,连接到arduino或在其上运行脚本语言(“ lua”)。在此指导中,我们将使用带有arduino核心的esp8266来代替。本质上,这意味着一旦设置好,您就可以从常规arduino ide编程esp8266。这有很多优点:它提供了很好的性能,有大量的用户,您会发现大量的代码示例以及用于各种硬件的库。..但是,坦白地说,设置起来可能有点复杂
幸运的是,其他人已经就如何做到这一点撰写了出色的说明。例如。此指令或此指令(使用另一种编程技术)。如果这一切看起来有些吓人,您可以使用带有usb连接器的开发板(例如wemos d1),使进入esp8266的世界变得容易得多(但成本略高)。例如,此处给出了非常详尽的说明(也适用于许多类似的板)。
步骤2:初学者2:在esp8266上设置web服务器
现在您的esp8266已设置为与arduino环境一起使用,我们可以开始编程了。为了确保我们在教科书的同一页上,我们将首先设置一个简单的web服务器,以静态消息向我们打招呼。以下是您所需的全部代码:
#include
#include
// create a web server on port 80 (http)
esp8266webserver server(80);
// this function is called for each http request
void handlepage() {
server.send(200, “text/plain”, “hello world!”);
}
void setup() {
// example wifi setup as an access point. change this to whatever suits you, best.
wifi.mode(wifi_ap);
wifi.softapconfig (ipaddress (192,168,4,1), ipaddress (0,0,0,0), ipaddress (255,255,255,0));
wifi.softap(“embajaxtest”, “12345678”);
// register the page handler and start the server
server.on(“/”, handlepage);
server.begin();
}
void loop() {
// inside loop(), add this line to check for and handle incoming connections
server.handleclient();
}
草图非常简单,几乎不需要解释内嵌注释。我想指出的一件事是,在本示例(及以下示例)中,我们将esp8266设置为无线接入点。这提供了一个非常简单但有效的安全机制:只有范围,和范围内的客户端才能知道会话密码。
好,因此请将草绘上载到esp8266。接下来,在您的pc上,启动wifi连接管理器,扫描名为“ embajaxtest”的网络,然后连接(密码为“ 12345678”,如草图中所配置)。现在启动网络浏览器,然后在位置栏中输入“ http://192.168.4.1”。应该会收到消息“ hello world!”。
步骤3:安装embajax
一切正常,所以远?大!下一步将很容易。首先,我们必须安装embajax库。和往常一样,有许多方法可以完成此操作,但这是一种方法:
下载该库的zip。
在arduino ide中,选择“ sketch-》 include library-》 add .zip library”,然后选择下载的zip。
为了很好地采取措施,请重新启动arduino(虽然可能不需要)
要正确验证embajax已安装,请检查“文件-》”下是否列出了任何内容。示例-》 embajax”。
第4步:闪烁您的led-网络控制
好吧,我保证您可以做得更多除了使用embajax闪烁led之外,但这仍然是入门的有用示例。我们将从第3步开始扩展示例。 (以下清单直接取自embajax库附带的“ blink”示例:“ file-》 examples-》 embajax-》 blink”)。
#include
#include
#include
#define ledpin led_builtin
// set up web server, and register it with embajax
esp8266webserver server(80);
embajaxoutputdriveresp8266 driver(&server);
// define the main elements of interest as variables, so we can access to them later in our sketch.
const char* modes[] = {“on”, “blink”, “off”};
embajaxradiogroup《3》 mode(“mode”, modes);
embajaxslider blinkfreq(“blfreq”, 0, 1000, 100); // slider, from 0 to 500, initial value 400
// define a page (named “page”) with our elements of interest, above, interspersed by some uninteresting
// static html. note: make_embajaxpage is just a convenience macro around the embajaxpage###》-class.
make_embajaxpage(page, “embajax example - blink”, “”,
new embajaxstatic(“
control the builtin led
set the led to: ”),
&mode,
new embajaxstatic(“
blink frequency: slow”),
&blinkfreq,
new embajaxstatic(“fast
”)

void handlepage() {
if(server.method() == http_post) { // ajax request
page.handlerequest(updateui);
} else { // page load
page.print();
}
}
void setup() {
// example wifi setup as an access point. change this to whatever suits you, best.
wifi.mode(wifi_ap);
wifi.softapconfig (ipaddress (192,168,4,1), ipaddress (0,0,0,0), ipaddress (255,255,255,0));
wifi.softap(“embajaxtest”, “12345678”);
// tell the server to serve our embajax test page on root
server.on(“/”, handlepage);
server.begin();
pinmode(ledpin, output);
}
void updateui() {
// enabled / disable the slider. note that you could simply do this inside the loop. however,
// placing it here makes the client ui more responsive (try it)。
blinkfreq.setenabled(mode.selectedoption() == 1);
}
void loop() {
// handle network
server.handleclient();
// and these lines are all you have to write for the logic: access the elements as if they were plain
// local controls
if (mode.selectedoption() == 1) { // blink
digitalwrite(ledpin, (millis() / (1100 - blinkfreq.intvalue())) % 2);
} else { // on or off
digitalwrite(ledpin, mode.selectedoption() != 0);
}
}
好,此清单更长一点,但是您会发现它几乎没有害处。从顶部开始,我们现在将embajax libraray添加到了草图中(显然)。接下来,我们定义该引脚以使led闪烁。令人惊讶的是,这是更复杂的方面之一,因为esp板在其板载led的连接位置上存在巨大差异。如果所有其他方法均失败,则可能需要调整此定义,以将外部led(带有电阻!)连接到gpio引脚之一。
接下来,我们在web之外还定义了“输出驱动器”服务器实例。不用担心这一行,基本上,您只是在告诉embajax库在哪里发送和接收数据。
以下几行更加有趣:我们定义了一些embajax元素,重要的是一组单选按钮,以及一个滑块。然后将它们添加到网页(make_embajaxpage)。除了收音机和滑块之外,它还包含一些静态元素。尝试添加自己的。乍一看可能很复杂,但实际上非常简单。
handlepage()函数现在稍微复杂一点:它现在区分“ get”请求(正常页面加载),和“ post”请求(用于传输ajax数据)。幸运的是,我们不必在这里填写任何复杂的内容。您需要担心的一点是,当客户端发出更改信号时,将提供要调用的函数的名称(updateui(),如下所述)。
与我们的静态web服务器示例相比, setup()实际上是不变的。唯一的补充是我们设置了led引脚的输出模式。每当在web客户端中更改控件之一时,就会调用
updateui()。当且仅当在单选按钮组中选择了“闪烁”选项时,我们才能使用此功能将滑块元素设置为启用。这实际上是我希望您会认为“整洁”的第一点:请注意,您将控件当作普通的本地对象来处理。您不必担心发送或接收任何数据。所有这些都是由库处理的。
类似地,在循环内,控件的外观就像本地对象一样。您可以查询它们的当前状态并对此采取行动(请注意,这些操作非常快;它们实际上并不异步,因此不涉及每个呼叫的网络请求)。
理论上足够了!上载草图,然后在浏览器中重新加载“ http://192.168.4.1”。 (esp8266重启后,您不一定要重新连接到“ embajaxtest” wifi网络;这取决于您的系统和设置。)您应该看到一个无线电组和一个滑块。开始播放!
第5步:从此处出发
单选按钮和滑块并不多,但是当然,embajax不仅具有更多元素。上面是浏览“输入”示例的屏幕截图(“文件-》示例-》 embajax-》输入”)。这显示了embajax中当前可用的控件。 您知道在您的项目中将这些内容用于什么,所以我将不提供任何其他示例,而只是将您引向embajax api文档。请注意,您还可以添加自定义css进行样式设置。
作为输入示例的另一件事,我将指出,右侧显示的值是从服务器设置的 的。重点是要演示一个完整的循环,从
控件在客户端更改
更改传播到服务器并在服务器中处理
更新状态给客户
如果您没有发现令人兴奋的地方-好的,我会原谅您缺乏热情。这正是embajax库的全部意义:它使您免于幕后工作的所有无聊工作,并且您最终可以完全不用担心要在项目中显示的 控件和显示内容,而比如何。所以-开发愉快!


一个二极管引发的电路设计思考
这种换热器管板管束表面防腐新技术,为您解决管板腐蚀问题
逻辑芯片的市场现状,几大巨头竞争
英特尔9900k好还是9900kf好
5G通信“杀手锏”:与毫米波完美配合的大规模天线阵列技术
如何连接和编程ESP8266
智能硬件产品有哪些_智能硬件网络配置方式
什么是等离子电视
Lime将在法国巴黎推共享电动滑板车
香港理大3D打印实验室为医生提供TAVI心脏手术模拟系统
OPPO Reno将定位为旗舰影像手机
雷达、差压、磁致伸缩液位计三种液位计的分析比较
创可贴一样的传感器
直流变换器设计及参数详说
ERP工程师是什么
英诺迅推出新型的宽带压控振荡器芯片YV257208
74ls193引脚图及功能表
无人机上的倾角传感器你知道吗
开发单片机的集成开发环境工具(IDE)有哪些?
苹果MacBook Pro购买指南:哪个型号最适合你?