完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
NodeMCU的lua开发分别有哪些优缺点呢?
rduino IDE下的开发方式有哪些优缺点呢? 怎样使ESP8266连接指定名称和密码的Wifi热点呢? |
|
相关推荐
1个回答
|
|
##1.开发
###1.1NodeMCU的lua开发:NodeMCU本质也是ESP8266,只是它的固件是与lua脚本语言交互。 优点:节省资源,开发简单,代码量少。 缺点: 1.lua解释器执行效率较低,我最终换成ArduinoIDE开发,就是因为读取传感器数据时,老是漏掉一个数据。2.前期准备比较麻烦。需要准备相应功能的固件,烧录进去,然后使用lua语言和工具与之调试。 ###1.2Arduino IDE下的开发方式: 优点:集编程和烧录一体,使用很方便。语言执行效率高,节省资源,开发简单,该有的库也都有。重要的是开发语言,对于我用单片机的人来说,能够很快上手。 缺点:Arduino IDE需要写较长的代码时,不是很方便,如果需要查看底层函数或者方法,非常费劲。 ##2.开发操作 点我 ##3.固件烧写 这一步,老师可以提前给孩子完成; 点我 ##4.案例 ###4.1实验一 连接指定Wifi网络 这一段程序将使得ESP8266连接指定名称和密码的Wifi热点,主要流程如下 程序流程: 在Arduino IDE的编辑器界面,开始部分添加头文件 #include #include #include #include 之后设置两个宏定义用于填写Wifi名称和密码 #define WIFINAME “**" #define WIFIPW "” 点亮一个LED灯用于指示电源,并设定串口波特率用以通信 pinMode(BUILTIN_LED, OUTPUT); Serial.begin(115200); 设定并连接Wifi,如果没有连接上就会一直重试 WiFi.begin(WIFINAME, WIFIPW); Serial.print(“Connecting…”); while (WiFi.status() != WL_CONNECTED) {undefined delay(500); Serial.print("."); } 整体的代码如下 #include #include #include #include #define WIFINAME "******" #define WIFIPW "****" void setup() { // put your setup code here, to run once: pinMode(BUILTIN_LED, OUTPUT); Serial.begin(115200); Serial.println(""); WiFi.begin(WIFINAME, WIFIPW); Serial.print("Connecting.."); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.print("Connected,IP Address:"); Serial.println(WiFi.localIP()); } void loop() { // put your main code here, to run repeatedly: } 如果成功连接,串口将输出连接成功提示,并且可以通过PC端PING通ESP8266(在同一网段) ###4.2实验二 网页客户端 ESP8266可以直接作为一个网页客户端来使用,封装的库中提供函数以快速配置ESP8266为一个网页客户端,能够直接获取网页服务端的代码。例如打开百度首页,通过串口返回所有html代码。这里暂未设置DNS服务因此需要通过IP直接访问。 程序流程: 添加头文件 #include #include #include #include 以宏定义的形式设定地址,端口和wifi名称,密码 #define HTTPIP "14.215.177.37" //baidu的ip #define HTTPPORT 80 #define WIFINAME "你的wifi名称" #define WIFIPW "wifi密码" 配置串口并尝试连接Wifi Serial.begin(115200); Serial.println(); Serial.println("Connecting"); WiFiMulti.addAP(WIFINAME,WIFIPW); while(WiFiMulti.run()!=WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected!"); 连接指定的网页服务器IP,这里的"/“是指页面文件名称,例如"index.jsp”"main.php"等 http.begin(HTTPIP,HTTPPORT,"/"); 获取代码,如果返回值为200则表示请求网页成功,打印页面 int Code = http.GET(); if(Code) { Serial.printf("HTTP Code:%dn",Code); if(Code == 200) { String payload = http.getString(); Serial.println(payload); } else { Serial.println("Couldn't link to server"); } 实验二整体代码如下 #include #include #include #include ESP8266WiFiMulti WiFiMulti; #define HTTPIP "14.215.177.37"//baidu #define HTTPPORT 80 #define WIFINAME "*******" #define WIFIPW "*****" void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.println(); Serial.println("Connecting"); WiFiMulti.addAP(WIFINAME,WIFIPW); while(WiFiMulti.run()!=WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected!"); } void loop() { // put your main code here, to run repeatedly: HTTPClient http; Serial.println("Try link to http."); http.begin(HTTPIP,HTTPPORT,"/"); int Code = http.GET(); if(Code) { Serial.printf("HTTP Code:%dn",Code); if(Code == 200) { String payload = http.getString(); Serial.println(payload); } else { Serial.println("Couldn't link to server"); } } delay(5000); } ###4.3实验三 设置ESP8266为软热点 将ESP8266设置为一个热点,可供其他设备连接并交换数据,主要使用的函数:WiFi.softAP(ssid, password, channel, hidden) 参数说明: ssid:Wifi热点名称,支持最大63个英文字符 password:密码设置,可选参数,也就是可以没有密码,如果设定为WPA2-PSK channel:信道设置,可选参数,1-13,没有填写则默认为1 hidden:是否隐藏SSID,可选参数,如果设置为true则隐藏 ESP8266开启的默认IP地址为192.168.4.1,可以使用softAPConfig (local_ip, gateway, subnet) 函数进行修改 参数说明: local_ip:软热点的地址 gateway:网关地址 subnet:子网掩码 程序流程: 头文件 #include 声明各个IP地址 IPAddress local_IP(192,168,4,4); IPAddress gateway(192,168,4,1); IPAddress subnet(255,255,255,0); 配置软AP参数 WiFi.softAPConfig(local_IP, gateway, subnet); 启动AP WiFi.softAP(“SoftAP001”,“999999999”); 获取IP地址 Serial.print("Soft-AP IP address = "); Serial.println(WiFi.softAPIP()); 下载完成后,在笔记本上Wifi可以搜到设置的AP 实验三整体代码如下 #include IPAddress local_IP(192, 168, 4, 4); IPAddress gateway(192, 168, 4, 1); IPAddress subnet(255, 255, 255, 0); void setup() { // put your setup code here, to run once: Serial.begin(115200); WiFi.softAPConfig(local_IP, gateway, subnet); WiFi.softAP("SoftAP001", "999999999"); Serial.print("Soft-AP IP address = "); Serial.println(WiFi.softAPIP()); } void loop() { // put your main code here, to run repeatedly: } ##5.知识点补充 ###5.1ip ###5.2mac ###5.3子网掩码 ###5.4DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。 DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能: 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。 DHCP应当可以给用户分配永久固定的IP地址。 DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。 DHCP服务器应当向现有的BOOTP客户端提供服务。 DHCP有三种机制分配IP地址: 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。 三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。 DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。RFC 951和RFC 1542对BOOTP协议进行了详细描述。 ###5.6网关 ###5.7路由 ###5.8终结者让你明白 ip mac dns 网关 |
|
|
|
只有小组成员才能发言,加入小组>>
3192 浏览 9 评论
2881 浏览 16 评论
3385 浏览 1 评论
8822 浏览 16 评论
3981 浏览 18 评论
9614浏览 3评论
987浏览 3评论
505浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
508浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2231浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-22 23:22 , Processed in 0.978749 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号