lpinging01025 发表于 2018-12-18 21:45

小菜菜想做个智能家用垃圾桶寻求需要那些配件

新来的小菜鸟是个小白,想弄个远程控制器通过家用无线WIFI能控制垃圾盖。手机APP按开。那个就开。按关就关了,想请各位砖家需要买那些配件,还有那些能做这的工具。

gaoyang9992006 发表于 2018-12-18 21:50

看你在哪儿使用
如果只是在家用这功能,也就是手机跟这个垃圾桶在一个局域网很容易,你只需要一个手机APP,一个WIFI模块,一个电机驱动板(可以用模电自己搭建,也可以直接用小继电器驱动)一个电机(用于开启垃圾桶和盖上垃圾桶的动力),另外还需要简单的机械传动装置。

gaoyang9992006 发表于 2018-12-18 21:50

看你在哪儿使用
如果只是在家用这功能,也就是手机跟这个垃圾桶在一个局域网很容易,你只需要一个手机APP,一个WIFI模块,一个电机驱动板(可以用模电自己搭建,也可以直接用小继电器驱动)一个电机(用于开启垃圾桶和盖上垃圾桶的动力),另外还需要简单的机械传动装置。

gaoyang9992006 发表于 2018-12-18 21:53

如果你不是在家用,而是远程遥控(就是你和垃圾桶可能跨越千山万水)
你这需要一个中继的服务器了。
除了上面的东西你要搭建一个服务器或者租用一个网络服务器,服务器上要编写中继用的服务(可以用简单的PHP实现)。
垃圾桶用WIFI模块跟服务器通信,接收指令,上传状态。
APP给服务器发送指令,接收服务器传来的状态。
当然这个模块推荐便宜好用的ESP8266来做,可以直接烧录NODEMCU固件,然后用脚本就可以轻松编写好整个程序。

gaoyang9992006 发表于 2018-12-18 21:58

给你个我之前学习时候的例子
通过TCP协议控制LED(设备端) 本程序采用lua脚本语言编写,使用两个程序文件,init.lua负责加入WIFI网络的初始化工作,完成后执行另外一个文件kaiguan.lua

在kaiguan.lua实现创建TCP服务器,并监听端口指令,注册回调函数,在函数里实现接收内容的判断,并根据内容执行开灯或关灯指令。

[*]--init.lua
[*]print("set up wifi mode")
[*]wifi.setmode(wifi.STATION)
[*]wifi.sta.config("360WiFi-SJB","shejibu123")
[*]wifi.sta.connect()
[*]print("IP unavaiable, Waiting...")
[*]tmr.alarm(1, 1000, 1, function()
[*]if wifi.sta.getip()~= nil then
[*]tmr.stop(1)
[*]print("Config done, IP is "..wifi.sta.getip())
[*]dofile("kaiguan.lua")
[*]end
[*]
[*]end)


———————————————————————————————————————————————————————

[*]--kaiguan.lua
[*]LED=3
[*]gpio.mode(LED,gpio.OUTPUT)
[*]svr=net.createServer(net.TCP, 30)
[*]
[*]function receiver(sck,data)
[*]if (data=="ON")
[*]then
[*]gpio.write(LED,gpio.LOW)
[*]sck:send("LED is ON")
[*]else
[*]gpio.write(LED,gpio.HIGH)
[*]sck:send("LED is OFF")
[*]end
[*]print("Receive: "..data)
[*]
[*]
[*]-- sck:close()
[*]end
[*]
[*]if svr then
[*]svr:listen(80,function(conn)
[*]conn:on("receive",receiver)
[*]conn:send("Hell world,my LED Light")
[*]end)
[*]end
———————————————————————————————————这是esp8266端的nodeMCU固件跑的程序。


gaoyang9992006 发表于 2018-12-18 21:58

下面是手机APP的程序的代码

E4A开发TCP协议的安卓上位机 该APP分为两个窗口设计,参考了官方提供的例程。

主窗口和通信窗口,启动软件后在主窗口设置IP和PORT,点击链接跳转到通信窗口,也可以从通信窗口返回http://freemcu.cn/emlog/content/uploadfile/201703/03d01490413913.png?pt=5&ek=1&kp=1&sce=0-12-12主窗口代码为:

[*]变量 已切换 为 逻辑型
[*]事件 按钮1.被单击()
[*]已切换 = 假
[*]客户1.连接服务器(编辑框1.内容,编辑框2.内容,5000) '在模拟器中,本地IP为10.0.2.2
[*]'如果要在外网连接内网里的服务器,可以使用nat123进行端口映射,例如:客户1.连接服务器("si.nat123.net",1,5000)
[*]'nat123的具体使用方法请参考存放在资源文件里的那张图片
[*]'注意:E4A的客户组件目前只能与易语言的服务器组件配合使用,其他的可能无法正常连接通讯
[*]保存对象("客户1",客户1) '保存客户组件
[*]保存设置("地址",编辑框1.内容)
[*]保存设置("端口",编辑框2.内容)
[*]结束 事件
[*]
[*]
[*]
[*]事件 客户1.连接完毕(结果 为 逻辑型)
[*]如果 结果 = 真 则
[*]弹出提示("连接成功")
[*]如果 已切换 = 假 则
[*]
[*]切换窗口(创建 通信窗口)
[*]结束 如果
[*]已切换 = 真
[*]否则
[*]信息框("LED Light","连接服务器失败","确定")
[*]结束 如果
[*]结束 事件
[*]
[*]事件 主窗口.创建完毕()
[*]保存窗口("主窗口",主窗口)
[*]
[*]
[*]结束 事件
[*]
[*]事件 编辑框1.内容被改变(新内容 为 文本型)
[*]
[*]结束 事件
[*]
[*]事件 编辑框2.内容被改变(新内容 为 文本型)
[*]
[*]结束 事件
[*]
[*]
[*]事件 按钮2.被单击()
[*]结束程序()
[*]结束 事件

[*]——————————————————————————————————————————————————

[*]通信窗口
http://freemcu.cn/emlog/content/uploadfile/201703/b01c1490413926.png?pt=5&ek=1&kp=1&sce=0-12-12
代码为:

[*]变量 客户1 为 客户
[*]事件 通信窗口.创建完毕()
[*]客户1 = 读取对象("客户1") '读取在主窗口中保存的客户组件
[*]结束 事件
[*]
[*]事件 客户1.收到数据(数据 为 字节型())
[*]编辑框1.内容 = 编辑框1.内容 & "\n" & "服务器:" & "\n" & 字节到文本(数据,"GBK") '收到服务器发来的字节集数据,转换成文本
[*]编辑框1.置光标位置(取文本长度(编辑框1.内容))
[*]结束 事件
[*]
[*]事件 按钮1.被单击()
[*]编辑框1.内容 = 编辑框1.内容 & "\n" & "客户端:" & "\n" & 编辑框2.内容
[*]客户1.发送数据(文本到字节(编辑框2.内容,"GBK")) '向服务器发送数据
[*]结束 事件
[*]
[*]事件 按钮3.被单击()
[*]客户1.断开连接() '断开与服务器的连接
[*]结束 事件
[*]
[*]事件 按钮2.被单击()
[*]客户1.连接服务器(读取设置("地址"),"80",5000)
[*]结束 事件
[*]
[*]事件 客户1.连接断开()
[*]弹出提示("连接已断开")
[*]结束 事件
[*]
[*]
[*]事件 按钮4.被单击()
[*]切换窗口(读取窗口("主窗口"))
[*]结束 事件
[*]
[*]事件 按钮5.被单击()
[*]客户1.发送数据(文本到字节("ON","GBK")) '向服务器发送数据
[*]结束 事件
[*]
[*]事件 按钮6.被单击()
[*]客户1.发送数据(文本到字节("OFF","GBK")) '向服务器发送数据
[*]结束 事件



gaoyang9992006 发表于 2018-12-18 22:00

这是整个工程需要的所有源码和生成好的APP


gaoyang9992006 发表于 2018-12-18 22:01


软件界面,这是一个简单的局域网通信控制LED灯开关的例子,跟你的应用很类似。

山东电子小菜鸟 发表于 2018-12-18 22:52

javon 发表于 2019-2-22 10:43

远程的不建议用WIFI,建议 用2G 或者NB
页: [1]
查看完整版本: 小菜菜想做个智能家用垃圾桶寻求需要那些配件