1
电子说
我开发的时候比较早,用的是NONOS_v1.5.0的sdk,最新的v2.1.0的sdk烧录好固件后,上电会一直出Fatal exception 28的错误,搞了一天没弄清楚,所以用还留着的v1.5.3的sdk讲解,具体使用方法不会有很大改变,详细也可以参考API文档。
打开解压sdk包,将example文件夹下的IOT_Demo复制替换到app文件夹下,并将driver_lib/include/driver下的uart.h、uart_register.h复制到app/include下,driver_lib/driver下uart.c复制到app/driver下,同时将driver_lib下Makefile文件改名或者删除,懂makefile的朋友可以自行修改makefile文件否则会出现编译错误,目录结构如下。
我们主要修改的是user_main.c这个文件,将user_init()函数是程序入口,里的内容全删了
此外头文件修改为
#include “ets_sys.h”
#include “osapi.h”
#include “user_interface.h”
#include “uart.h”1234
user_rf_pre_init()这个函数不要删除,放着即可,这样user_main.c文件只有void user_rf_pre_init(void)、void user_init(void)这两个函数,以及4个头文件。
要连接wifi首先要指定要连接的wifi账号和密码,则需要定义两个变量来存放它们,同时还需要定义一个结构体用于存放:Wi-Fi Station 接口参数。
struct station_config station_cfg;
uint8 ssid[]=“xxx”; //wifi名
uint8 password[]=“xxx”; //wifi密码123
新买到的模块默认是作为AP,这里我们需要将它修改作为Station,这样才能连wifi,这里我将这几个操作放入一个函数里面。
void ICACHE_FLASH_ATTR
user_set_station_config(void)
{
wifi_set_opmode(STATION_MODE); //设置为STATION MODE
os_strcpy(station_cfg.ssid, ssid); //ssid名称
os_strcpy(station_cfg.password, password); //密码
wifi_station_set_config(&station_cfg); //设置WIFI帐号和密码
}12345678
注:添加ICACHE_FLASH_ATTR宏定义是因为8266的iRam空间有限,所以上电启动时不能把所有数据都放入iRam,只有在需要用到的时候才载入,因此推荐一般的函数都加ICACHE_FLASH_ATTR。
这样我们就能把这个函数放到user_init()中了,如下所示。
void user_init(void)
{
uart_init(BIT_RATE_115200,BIT_RATE_115200); //设置波特率为115200
os_printf(“SDK version:%s\n”, system_get_sdk_version()); //打印sdk版本
user_set_station_config(); //set STATION config
//user_set_station_config()中调用wifi_station_set_config(&station_cfg)
//底层会自动连接对应路由,不需要调用 wifi_station_connect 来进行连接。
}12345678
编译通过后烧入固件就能查看效果了。
esp8266如何破解wifi密码及详细步骤
首先,你要有一块esp8266模块,像这样的,最好是有底板的,带Micro口的,这些淘宝上都可以搜到的,我的就是淘宝上买的,大概30-40RMB左右,当然,如果你的动手能力比较强的话可以自己做底板。
在这里你需要下载两个东西,就是Flash下载工具和固件
Flash下载工具:http://espressif.com/zh-hans/support/download/other-tools
将自己的esp8266插到电脑上,确定连接没问题的话打开设备管理器看下自己的串口是多少。
将下载的Flash下载工具解压,打开ESPFlashDownloadTool_v3.4.9.2.exe,打开是这样的,选择esp8266 DownloadTool
在这里需要注意的几点是:
(1)固件选择之前下载的固件DNS.ino.ino.nodemcu.bin。
(2)地址输入0×00000(可能地址这一栏会出现红色的状况,导致无法烧入固件,此时把下载器关了重启下,然后把地址那栏清空再自己手动输入就好了)。
(3)这边需要将DoNotChgBin勾选起来,否则烧入固件后可能没有wifi,当然不同的板子可能不太一样,这个请大家自行测试。
(4)这边串口按照自己之前查的选择就行了,波特率115200就可以了。
其他设置按照红框里面的选择就行。
设置完这些后就点击START开始烧flash,烧完后如果模块正常的话电脑会多出来一个叫HH的wifi,这个wifi就是esp8266发出来的。
如果没有显示HH,就按下esp8266的RST键复位,等个几秒钟就会显示出来。此时你就可以连接HH了。wifi的密码为:m1234567
注:如果通过上面的方法还没有显示wifi的话,你可以试试擦除flash,擦除flash的方法请参考:http://bbs.eeworld.com.cn/thread-497588-1-1.html。在这里我就不详述了,擦完大概是下图的样子,然后重新按照上面的步骤烧flash就可以了。
到arduino官网下载适合你自己系统的软件:https://www.arduino.cc/en/Main/Software
web源码:http://pan.baidu.com/s/1miywNT
web源码上传工具:http://pan.baidu.com/s/1o8cEc7
我的是Windows系统,arduino版本是1.8.4,安装完后打开工具——开发板——开发板管理器,此时会自动更新,过个数分钟更新完毕后(当然,如果用外网的话可能几秒钟就能解决),搜索eps8266,选择第二个,版本选2.2.0,然后安装。
将上面解压后的web源码上传工具的tools放到Arduino根目录里合并,然后返回以下界面,点击文件——新建,新建一个项目,将里面的代码清空,然后点击文件——保存,将项目保存到一个你能找到的位置,点击工具——esp8266 sketch data upload,会出现以下的提示,选择No,会发现新建的项目中多出来一个data文件夹,里面是空的,然后将上面下载的web源码\data里面的三个文件复制到这个文件夹里面。
然后再返回arduino,点击工具,开发板按照自己买的选择,端口选择自己的端口,其他设置如下图红框里面的。
设置完后点击esp8266 sketch data upload,这时不会出现提醒,开始上传web页面,等个1分钟左右esp8266上的蓝灯不闪烁了就表示上传完了。
然后电脑连接HH的wifi,浏览器输入192.168.1.1/backdoor.html就能进入web页面了,如下图,路由器型号选择通用型,然后输入你测试的wifi编号,点确定,电脑提示SSID伪造成功,手机就会发现出现了个和你测试的wifi一样的没有加密的wifi,原来的HH会不见了,8266的蓝灯常亮,手机连接那个wifi后过几秒会自动弹出路由器升级的页面,然后输入管理员密码,点击开始升级,此时你的esp8266会将管理员密码保存,升级完后,8266的灯就会灭掉。
电脑重新连接HH,进入web页面后管理员密码会在下面的红框这一块显示,这时,就表示获取密码成功了。
将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:子网掩码。
程序流程:
1、连接NodeMCU板子到USB接口,打开Arduino IDE编辑器界面,选择好开发板型号和串口号。
2、在Arduino IDE的编辑器界面,开始部分添加头文件。
[cpp] view plain copy#include 《ESP8266WiFi.h》
3、声明各IP地址。
[cpp] view plain copyIPAddress local_IP(192,168,4,4);
IPAddress gateway(192,168,4,1);
IPAddress subnet(255,255,255,0);
4、配置软AP参数。
[cpp] view plain copyWiFi.softAPConfig(local_IP, gateway, subnet);
5、启动AP模式。
[cpp] view plain copyWiFi.softAP(“SoftAP001”,“123456789”);
6、获取IP地址。
[cpp] view plain copySerial.print(“Soft-AP IP address = ”);
Serial.println(WiFi.softAPIP());
下载完成后,在手机或笔记本上Wifi可以搜到设置的AP。
整体代码如下:
[cpp] view plain copy#include 《ESP8266WiFi.h》
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”, “123456789”);
Serial.print(“Soft-AP IP address = ”);
Serial.println(WiFi.softAPIP());
}
void loop() {
// put your main code here, to run repeatedly:
}
全部0条评论
快来发表一下你的评论吧 !