前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11-开发板接入小五物联实现远程控制(Wi-Fi模块,远程升级自己的程序)

11-开发板接入小五物联实现远程控制(Wi-Fi模块,远程升级自己的程序)

作者头像
杨奉武
发布2018-08-15 11:07:36
3920
发布2018-08-15 11:07:36
举报
文章被收录于专栏:知识分享知识分享

https://cloud.tencent.com/developer/article/1185631

基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢

https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-18540610442.6.36a74814ZSaRsu&id=569295486025

这一节为教程最终版功能演示,现在不必深究,早晚自己全部都会实现的(静静的跟着我学哈)

这一节学习远程升级自己的程序

如果要远程升级自己的程序,需要自己下载底层的升级程序,因为需要修改一些参数,让模块远程访问自己

的升级软件

如果前面下载了,可以用下面的方式清除程序

如果这种方式清除不了,可以

现在打开远程升级软件

 修改些东西,因为自己这个软件既可以升级WIFI也可以升级GPRS,所以需要做对应的修改

 好现在下进去程序

 我给大家准备了一个测试的程序(其实就是自己云端默认的程序,上上姐默认远程下载的程序)

代码语言:javascript
复制
local RelayNowState=0
local RelayNowStateCopy=0
globalSendData ="nil";

local UsartReceiveData="";
local UsartReceiveDataCnt=0;
local UsartReceiveDataCntCopy=0;

RelayPin = 2;

if  file.open("switch.lua", "r") then
    if  file.read() == "relay=1" then
        gpio.write(RelayPin,1)
        gpio.mode(RelayPin,gpio.OUTPUT)
        print("relay=1")
    else
        gpio.write(RelayPin,0)
        gpio.mode(RelayPin,gpio.OUTPUT)
        print("relay=0")
    end
    file.close();
end

local DataDisposeTimerCnt = 0;
local DataDisposeTimer = tmr.create()
DataDisposeTimer:register(10, 1, function() 
    RelayNowState = gpio.read(RelayPin)
    if  RelayNowState ~= RelayNowStateCopy then
        RelayNowStateCopy = RelayNowState
        globalSendData = "switch;relay="..RelayNowState
    end

    if  UsartReceiveDataCnt ~= 0 then
        DataDisposeTimerCnt=DataDisposeTimerCnt + 1;
    if  DataDisposeTimerCnt>=10 then
            UsartReceiveDataCnt = 0;
        DataDisposeTimerCnt=0;
            globalSendData = UsartReceiveData;
            UsartReceiveData="";
    end
    end
    if  Mymqtt ~= nil and MqttConnectedFlage == true then
        if  globalSendData ~= "nil" then
            Mymqtt:publish(PublishTopic,globalSendData, 0, 0, function(client)
            end)
            globalSendData = "nil"
        end
    end
end)
DataDisposeTimer:start()

function MqttDisposeMethod(client, topic, data)
    uart.write(0,data)
    list = split(data, ';')
    if  string.find(list[1],"switch") ~= nil then
        if  list[2] ~= nil then
            if  file.open(list[1]..".lua", "w+") then
                file.write(list[2])
                file.close()
            end
            if  list[2] == "relay=0"  then
                 gpio.write(RelayPin,0)
                 gpio.mode(RelayPin,gpio.OUTPUT)
            elseif  list[2] == "relay=1"  then
                 gpio.write(RelayPin,1)
                 gpio.mode(RelayPin,gpio.OUTPUT)
            end
            globalSendData = data;
        end
    elseif  string.find(list[1],"query")  then
        if  list[2] ~= nil then
            if  list[2] == "switch" then
                RelayNowState = gpio.read(RelayPin)
                globalSendData = "switch;relay="..RelayNowState
            end
        end
    end
end

--[[
uart.setup(0, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1)
uart.on("data",0,function(data)
    UsartReceiveData = UsartReceiveData..data;
    UsartReceiveDataCnt = UsartReceiveDataCnt + 1;
    DataDisposeTimerCnt = 0;
end, 0)]]

为了测试明显,咱修改个地方,用手机APP直接远程控制

这个灯

 好了现在远程下载

 可以用手机也可以直接用软件

 更新完成后

现在用手机再控制试一试

现在用手机再试一试更新程序(需要更改个地方,因为是为了方便所有人,为了避免更新冲突)

根据自己的修改哈

好现在用手机去更新程序

 更新完

可以自己再试一试切换,或者试一试清除所有文件

以后几节就要开始真正的学习啦!!!勤快点哈

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档