Fireduino 开源创意平台 立即购买

拥有双核Cortex-M3处理器,集成高质量音频Codec和WiFi模组,拥有良好的IOT扩展性能,完美兼容Arduino IDE和Arduino标准接口,并支持FireBlock图形化编程软件,是一款首选的编程启蒙教学平台,更是一款开源的创意原型平台。

Fireduino WiFi 网络连接与设置

更新时间:2017-08-08 阅读:2027

WiFi 的网络连接

WiFi接入过程三个阶段

STA(工作站)启动初始化、开始正式使用AP传送数据帧前,要经过三个阶段才能够接入(802.11MAC层负责客户端与AP之间的通讯,功能包括扫描、接入、认证、加密、漫游和同步等功能):

  1)扫描阶段(SCAN)
  2)认证阶段 (Authentication)
  3)关联(Association)

Scanning

802.11 MAC 使用Scanning来搜索AP,STA搜索并连接一个AP,当STA漫游时寻找连接一个新的AP,STA会在在每个可用的信道上进行搜索。

  1)Passive Scanning(特点:找到时间较长,但STA节电)
    通过侦听AP定期发送的Beacon帧来发现网络,该帧提供了AP及所在BSS相关信息:“我在这里”…

  2)Active Scanning (特点:能迅速找到)
    STA依次在13个信道发出Probe Request帧,寻找与STA所属有相同SSID的AP,若找不到相同SSID的AP,则一直扫描下去..

Authentication

当STA找到与其有相同SSID的AP,在SSID匹配的AP中,根据收到的AP信号强度,选择一个信号最强的AP,然后进入认证阶段。只有身份认证通过的站点才能进行无线接入访问。AP提供如下认证方法:

  1)开放系统身份认证(open-system authentication)
  2)共享密钥认证(shared-key authentication)
  3)WPA PSK认证( Pre-shared key)
  4)802.1X EAP认证

Association

当AP向STA返回认证响应信息,身份认证获得通过后,进入关联阶段。

  1) STA向AP发送关联请求
  2) AP 向STA返回关联响应

  至此,接入过程才完成,STA初始化完毕,可以开始向AP传送数据帧。

Fireduino WiFi 关联网络

Fireduino SDK 提供了接入AP 的接口函数,具体请参考如下接口函数:

begin()

   说明
       初始化WiFi 库 以及接入WiFi 热点。
语法 WiFi.begin(ssid); WiFi.begin(ssid, pass);
参数 ssid : 接入点 pass:密钥
返回 WiFi 当前状态

参考示例

如下:

  // attempt to connect to Wifi network:
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
  }

Fireduino WiFi 网络配置

Fireduino 在加入网络后,默认会开启内部DHCP自动获取IP,一般情况下都能获取到路由器分配的IP地址,Fireduino 可以以此IP地址进行网络通信。

Fireduino SDK 也提供了网络配置函数的API,具体如下:

config()

   说明
       配置网络。
语法 WiFi.config(ip); WiFi.config(ip, dns); WiFi.config(ip, dns, gateway); WiFi.config(ip, dns, gateway, subnet);
参数 ip :设备的IP 地址 dns :DNS 服务器地址 gateway :网关地址 subnet :网络子掩码
返回 无

参考示例

如下:

//config ip
WiFi.config(IPAddress(192.168.1.99));
 
//config ip、dns
WiFi.config(IPAddress(192.168.1.99),IPAddress(192.168.1.1));
 
//config ip、dns、gateway
WiFi.config(IPAddress(192.168.1.99),IPAddress(192.168.1.1),IPAddress(192.168.1.1));
 
//config ip、dns、gateway、subne
WiFi.config(IPAddress(192.168.1.99),IPAddress(192.168.1.1),IPAddress(192.168.1.1),IPAddress(255.255.255.0));