找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8438|回复: 3
打印 上一主题 下一主题
收起左侧

esp8266连接智能音箱(纯新手教程)

  [复制链接]
跳转到指定楼层
楼主
ID:170892 发表于 2020-2-17 18:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    首先说明一下,本教程只支持连接天猫精灵与小度音箱,如果想连接小爱同学可以看下面第三点。    再次说明本文只适合想快速搭建连接智能音箱的同学,不需要基础。

    一、需要你有一块nodemcu开发板或者ESP8266-01或12F
    二、需要你的电脑安装java环境,Java环境需要的安装包,文章末尾,还有java环境变量配置这个请自行度娘,教程太多了。
    三、拥有一个天猫精灵或者一个小度音箱 (说明:为什么没有小爱同学,本文通过贝壳物联第三方来对接音箱,但是贝壳现在暂时不支持小爱同学,如果大家想要连接小爱同学的话,可以通过blinker平台,这里不多赘述)
    四、需要大家登录 贝壳物联 官网注册账号

    剩下的就可以安装下方的视频教程操作。

    视频链接:https://www.bilibili.com/video/av89179475?p=1 共有3集,视频中并没有提及esp8266烧写固件操作,这个很简单的操作,大家还是度娘吧,这个要是再写出来就得上图了。

    上方所提到需要的软件下载链接 : https://pan.baidu.com/s/1DBEwOz0FoIhns47qd9amhw   提取码: 1uuk


     -------------------------------------------------------------------------------------------------------------------------------------------------
     到这里上面的所有操作应该都做完了。


     这里我直接把程序写好,上面我都注释了,只需要改动4个位置即可。
     1、把"ST模式的WIFI名称"以及"ST模式的WIFI密码"分别改成路由器的wifi名和密码,这2个就是告诉esp8266要连接哪个WIFI,WIFI必须有网。
     2、"设备的ID" 这个需要对应自己贝壳物联上设备的ID号
     3、"设备的APIKEY" 也是对应设备的APIKEY


  1. --GPIO引脚模式设置
  2. gpio.mode(4,gpio.OUTPUT)    --GPIO2   对应板子上的LED控制引脚

  3. --设置nodemcu为AP与ST模式共存
  4. wifi.setmode(wifi.STATIONAP)

  5. --设置WiFi物理模式
  6. --"wifi.PHYMODE_B" 对应 802.11b,范围更大,传输速率低  ,消耗更多电流
  7. --"wifi.PHYMODE_G" 对应 802.11g,中等范围,中等传输速率,中等电流消耗
  8. --"wifi.PHYMODE_N" 对应 802.11n,最小范围,快速传输速率,最小电流
  9. wifi.setphymode(wifi.PHYMODE_N)

  10. --设置AP wifi名称及密码
  11. cfg={}
  12. cfg.ssid = "xiaodabuliu"--AP模式的WIFI名称(小于32字节)
  13. cfg.pwd = "12345678"        --AP模式的WIFI密码(最少8位才能设置成功)
  14. --cfg.auth = "wifi.OPEN"        --WIFI认证方式(wifi.OPEN(默认)、wifi.WPA_PSK 、 wifi.WPA2_PSK 、wifi.WPA_WPA2_PSK)
  15. --cfg.channel = 6                        --WIFI信道(1~14)        
  16. cfg.hidden = false                --WIFI是否隐藏
  17. cfg.max = 1                                --WIFI最大连接数(1~4)
  18. --cfg.beacon = 100                --WIFI广播间隔(100~60000 默认100)
  19. cfg.save = false                --是否保存到闪存
  20. wifi.ap.config(cfg)                --设置AP模式


  21. --设置ST wifi名称及密码
  22. station_cfg={}
  23. station_cfg.ssid = "abcdefgh"        --ST模式的WIFI名称(小于32字节)
  24. station_cfg.pwd = "12345678"        --ST模式的WIFI密码(最少8位才能设置成功)
  25. station_cfg.auto = true                         --启用自动连接并连接到接入点
  26. --station_cfg.bssid = "AA:BB:CC:DD:EE:FF"        --设置BSSID
  27. station_cfg.save = false                        --是否保存到闪存
  28. wifi.sta.config(station_cfg)

  29. --在站点模式下连接到已配置的AP。仅当在中禁用了自动连接时,才需要调用此方法
  30. --wifi.sta.connect()

  31. --
  32. tcp_bit = 0                                        --连接服务器标志位
  33. beat_time = 0                                --用来计算心跳时间

  34. URL = "www<font face="&quot;">点</font>bigiot<font face="&quot;">点</font>net"                --输入贝壳物联网址
  35. port = 8181                                        --连接的端口号

  36. ID1 = "14562"                                --设备的ID
  37. KEY1 = "f126dc2f3"                        --设备的APIKEY

  38. --获取当前的 AP配置
  39. do
  40.     print("\n当前AP配置:")
  41.     for k,v in pairs(wifi.ap.getconfig(true)) do
  42.         print("   "..k.." :",v)
  43.     end
  44. end

  45. --获取当前的 WiFi 配置
  46. do
  47.         local sta_config=wifi.sta.getconfig(true)
  48.         print(string.format("\n当前ST配置:\n\tssid:\"%s\"\n\tpassword:\"%s\"\n\tbssid:\"%s\"\n\tbssid_set:%s\n", sta_config.ssid,         sta_config.pwd, sta_config.bssid, (sta_config.bssid_set and "true" or "false")))
  49. end


  50. --创建一个TCP客户端
  51. cu = net.createConnection(net.TCP,0)

  52. cu:on("receive",function(cu,pay)        --客户端接收回调
  53.    
  54.      print(pay)         --打印接收消息
  55.    
  56.      r = sjson.decode(pay)        --接收数据处理

  57.     if r.M == "WELCOME TO BIGIOT" then        --服务器连接成功判断

  58.       --发送设备登录消息
  59.         ok, s1 = pcall(sjson.encode,{M="checkin",ID=ID1,K=KEY1})
  60.         cu:send(s1.."\n")

  61.         print("Server connection success\n")
  62.     end

  63.     if r.M == "checkinok" then                --设备登录成功判断
  64.         tcp_bit = 1
  65.         print("已上线\n")
  66.     end

  67.     if r.C == "play" then            --接收到打开命令判断处理
  68.        gpio.write(4,gpio.LOW)        --打开LED
  69.     end
  70.    
  71.     if r.C == "stop" then           --接收到关闭命令判断处理
  72.         gpio.write(4,gpio.HIGH)        --关闭LED
  73.     end
  74.    
  75. end)

  76. --定义定时器myt0  间隔0.5s
  77. local myt0 = tmr.create()               
  78. myt0:alarm(5000, tmr.ALARM_AUTO, function()    -- 发送

  79.     if tcp_bit == 0 then
  80.        cu:connect(port,URL)    --连接贝壳服务器
  81.     else
  82.        beat_time = beat_time + 1
  83.     end

  84.     --发送心跳包
  85.     if beat_time >=10 then
  86.         ok, s1 = pcall(sjson.encode,{M="beat"})
  87.         cu:send(s1.."\n")
  88.         beat_time = 0
  89.     end
  90.    
  91. end)

  92. myt0:stop()        --停止定时器 myt0

  93. --定义定时器myt1  间隔1s
  94. local myt1 = tmr.create()               
  95. myt1:alarm(1000, tmr.ALARM_AUTO,function()

  96.         --获取连接WIFI分配的IP地址
  97.     if wifi.sta.getip() == nil then
  98.        print("not connected, Waiting...")
  99.     else
  100.        myt1:stop()                        --停止定时器 myt1

  101.         print("分配的IP:"..wifi.sta.getip())
  102.         myt0:start()                --定时器 myt0 开始计时
  103.         myt1:unregister()   --销毁定时器 myt1
  104.     end
  105. end)
复制代码


我上面的代码是加注释的,但是附件包里面是没有注释的,因为向8266下载的lua程序如果带中文就会出现错误,所以附件里面的是我把注释都删掉的,可以按照上面所说修改完直接下载使用。
下载的时候,大家可以把下载的lua文件重命名为init.lua这样每次上电都会执行程序,如果不是这个名字下载进去,那么下次上电程序不会自动运行,当然也有其他方法,但是不如直接用init.lua方便。


大家遇到什么操作有误或者程序不能运行,在下面留言哦。

init.zip (1.1 KB, 下载次数: 31)




2020-02-21 更新
     大家可以利用一个nodemcu同时登录贝壳物联的多个设备,实现多个控制,多个的登录代码我会下次更新分享。
     还有现在用的是基于Lua和nodemcu开发的,因为我这用Docker或者Linux编译估计一直失败,不知道是不是网络原因,所以就没有Smartconfig(WIFI一键配置)功能,如果大神有这个功能的最新固件,求大神分享一份。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:686739 发表于 2020-2-17 23:00 | 只看该作者
学习一下
回复

使用道具 举报

板凳
ID:684338 发表于 2020-2-18 12:35 | 只看该作者
谢谢!下载试试
回复

使用道具 举报

地板
ID:694712 发表于 2020-2-18 15:11 | 只看该作者
谢谢分享。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表