NodeMCU 的文档里面终于发现,ESP8266 的GPIO 2 确实是 PIN 4,GPIO 0 是 PIN 3。

https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn

话说,这个 API 不是给地球人看的。按照说明,net.createServer 返回的是 Server,事实上,如果用 UDP,按照里面的代码你死活干不出来的。终于在 www.esp8266.com 论坛里面找到了答案,本篇的内容就是描述 UDP 在 NodeMCU 里面的正确姿势。

接线、BBB 开 UART,和 minicom 相关的,请看上几篇。首先我直接上代码。

LUA 代码

init.lua

print('init.lua ver 0.9')
wifi.setmode(wifi.STATION)
print('set mode=STATION (mode='..wifi.getmode()..')')
print('MAC: ',wifi.sta.getmac())
print('chip: ',node.chipid())
print('heap: ',node.heap())
wifi.sta.config('SSID','PWD')
dofile('main.lua')

init.lua 是启动后执行的用户程序代码,wifi 设成 station 模式(另外可以是 AP 模式的),然后设置 SSID 和密码,如果你想试,代码里面的 wifi.sta.config 需要改为正确值。代码的最后一句是让它执行另一个 lua 代码档。

main.lua

print('Connecting...')
tmr.alarm(0, 1000, 1, function()
        if wifi.sta.getip() ~= nil then
        print('IP: ',wifi.sta.getip())
        tmr.stop(0)
        dofile('udp.lua')
        end
end)

这个没什么,每秒钟看一遍是否已经连上了无线路由,如果连上了,就执行另一个代码档。(又一个档案?有点多余是吧,这是我个人癖好,我每个单独测试的)

udp.lua

sv=net.createServer(net.UDP,0)
sv:on('receive', function(c,pl)
        print(pl)
        r=cjson.decode(pl)
        if r.cmd == '0' then
                print('I got a ZERO cmd.')
                c:send('{\"cmd\":\"2\",\"GUID\":\"24F92\",\"dType\":\"powerPlug\"}')
        end
end)
sv:listen(4000)
print('Server started')

关键就是这个 on 方法。你看官方 API,on 是 socket 的方法,不是 server 的。而 net.createServer 按照官方说明,是返回 server 的。就是说,如果按照官方说明,我这代码是错误的。我是看了 http://www.esp8266.com/viewtopic.php?f=24&t=645 这里才知道这“错误”做法…。

上传代码

我代码是用 vim 在 BBB 里面写的,保存在 BBB,然后用 luatool 写入。https://github.com/4refr0nt/luatool。python 而已,git clone 下来就能用,里面还有个 telnet 代码示范。这 luatool 其实是帮我操作 NodeMCU 命令并且转换代码而已。运行时加 –v 参数你就知道它是干嘛的了。

用法是 python luatool.py –p /dev/ttyO2 –b 9600 –f XXX.lua –v

-p 是串口端口,-b 是 baud,-f 是本机的代码档,-v 是显示过程。很明显它只不过调用 NodeMCU 的lua 命令而已,而它最不好的地方是,它会等待 NodeMCU 反应返回字符来判断操作有没有顺利执行。如果你像我一样,有东西在里面跑,有 print 的话,就会出现些错误,因为 print 和这 luatool 的响应混在一起了。

效果

不用 BBB,从 Windows,通过无线路由,直接发 UDP 给 ESP8266,开着 BBB 的 minicom 看看这些 debug (呃,print)信息。我首先发了 cmd: 1 和 2 字符过去,反应正常,也正确 print 了出来。然后 cmd:0,它正确的回传了自己的身份,powerPlug。没错,我准备玩智能插座。

广播一样 no problem(向广播地址 192.168.0.255 端口 4000发送):

今天到此为止。

我在这群里,欢迎加入交流:
开发板玩家群 578649319
硬件创客 (10105555)

转载于:https://www.cnblogs.com/leptonation/p/5176668.html

BeagleBone Black– 智能家居控制系统 LAS - ESP8266 UDP 服务相关推荐

  1. 基于华为云设计的智能家居控制系统(STM32+ESP8266)

    1. 功能介绍 现在物联网已经遍布生活每个角落,几乎哪里都能看到物联网的应用.物联网就是物物相连的互联网,可以将之前单机设备全部接入互联网,完成数据交互,远程控制. 比如: 智能电表(远程抄表),智能 ...

  2. 智能家居-3.基于esp8266的语音控制系统(软件篇)

    智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) 赞赏支持 QQ:505645 ...

  3. 智能家居-2.基于esp8266的语音控制系统(硬件篇)

    智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) 赞赏支持 QQ:505645 ...

  4. 基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+

    ## **基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块(阿里云 或ONENET或局域网)+DHT11温湿度采集+MQ系列 烟雾及可燃气体+ ...

  5. 智能家居-1.基于esp8266的语音控制系统(开篇)

    智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) apache-apollo安 ...

  6. 【百问网智能家居5】ESP8266的相关知识

    [百问网智能家居5]ESP8266的相关知识 这是基于乐鑫资料和百问网资料总结而来,如有错漏,欢迎大家指正啊 一.ESP8266相关AT指令 AT 测试 AT 启动 AT+RST 重启模块 AT+GM ...

  7. 树莓派蓝牙ble gattlib c语言,树莓派构建智能家居控制系统 篇三:花花草草智能监测仪接入树莓派Domoticz...

    树莓派构建智能家居控制系统 篇三:花花草草智能监测仪接入树莓派Domoticz 2017-05-22 19:30:08 35点赞 410收藏 31评论 作为工科男,实在对花花草草没太多感觉.家里阳台养 ...

  8. 基于ZigBee和STM32的智能家居控制系统的设计与实现(五)--终结篇

    基于ZigBee和STM32的智能家居控制系统的设计与实现(五)–终结篇 说明 首先祝贺自己顺利的完成了毕业答辩工作,想起整个过程还是挺让自己感动的.最后还被评为优秀毕业设计,虽然并没有什么luan用 ...

  9. 基于ZigBee和STM32的智能家居控制系统的设计与实现(二)

    基于ZigBee和STM32的智能家居控制系统的设计与实现(二)   上一篇博客中总体介绍智能家居系统的基本实现原理,这篇博客和以后的几篇博客会详细进行相应的介绍.这里首先进行硬件电路的设计. 硬件电 ...

  10. 基于ZigBee和STM32的智能家居控制系统的设计与实现

    基于ZigBee和STM32的智能家居控制系统的设计与实现(一) 时间过的好快,已经到了做毕业设计的时候了,本次毕业设计题目是自己选的,为什么做这个?原因很简单,想把自己所学的大部分知识都应用上,虽然 ...

最新文章

  1. 【算法】DFS 刷题总结
  2. ACL-文件访问控制列表
  3. 如何设置多个图层层叠关系_如何玩转 XMind 中的多种思维结构?
  4. python文件是怎么写_python头文件怎么写
  5. 块级、行内元素水平垂直居中方法
  6. iphone屏幕突然变暗_iPhone 屏幕突然变暗是什么原因?
  7. Ubuntu中添加应用程序快速启动器的方法
  8. 一份阿里员工排查程序问题的命令列表
  9. vue2项目中给echarts地图设置背景图和打点
  10. 美国服务器托管机房如何选择?
  11. UE4 昵称修改后客户端的同步
  12. video.js 视频播放插件使用
  13. 极品冷幽默,搞笑没得说
  14. “万年老大难” - 沟通与协调
  15. 两种随机数生成方法——反函数法和舍选法
  16. java自动旋转矫正图片方向
  17. 【21岁扶墙当CTO】之无人机篇(1/n)
  18. 最新IP数据库-基于国家省份城市县区和运营商-专业准确-每月发行
  19. 多传感器数据融合技术如何应用在自动驾驶领域?
  20. UEFI双系统设置ubuntu或windows优先启动,u盘启动

热门文章

  1. 【PS | 学习】蛋黄酥海报制作
  2. timezone_name_from_abbr() 函数
  3. 《男孩别哭》海龟先生
  4. 图片实现裁剪功能vue-img-cutter
  5. html如何设置本地链接,本地连接受限制或无连接【方法|图文教程】-太平洋IT百科...
  6. androidStudio连接不上模拟器(夜神模拟器)
  7. springboot通过date_histogram 按时间统计数据
  8. 136A.Presents
  9. 【机器学习笔记】【随机森林】【回归器】【填充缺失值】
  10. Yolo opencv刻度尺识别 刻度读数识别 水尺识别 水位识别源码