1.利用APP inventor做出手机app, 组件设计:
逻辑界面
2.就是利用NODEjs做出本地服务器的网页,可以事实刷新当前灯的开关并进行控制。 index.js代码如下:
var express = require('express') var app = express()
var on = '0'
app.get('/get',function(req,res){ var data = { 'on':on } console.log(data) res.json(data) })
app.get('/set',function(req,res){ if(req.query.mon =="0" || req.query.mon == "1") on = req.query.mon var data = { 'on':on } console.log(data) res.json(data) })
//利用ejs模版显示web浏览器界面 app.set('view engine','ejs') app.get('/',function(req,res){ var state = "开" if(on == "0") state = "关" res.render("default",{lightState:state}) })
var server = app.listen(8000,function(){ var host = server.address().address; var port = server.address().port; console.log("addres:%s, port:%s",host,port) })
default.ejs 代码如下:
3.arduino ide 中连接mcookie套件的控制命令:
#include <ESP8266.h>
#define SSID "iPhone" #define PASSWORD "12341234" #define HOST_NAME "114.115.157.153" #define HOST_PORT 8000
ESP8266 wifi(&Serial1); //Arduino 与 ESP8266通过UART1相连接,必须是串口1,ESP8266默认接UART1,硬件电路已经确定 int LED = 4; const char *hello = "GET /get HTTP/1.0\r\nHost: 114.115.157.153:8000\r\nConnection: close\r\n\r\n";// HTTP 请求格式,详细请查看HTTP协议
void setup(void) {
pinMode(LED,OUTPUT);
WifiInit(Serial1, 115200); Serial.begin(115200); //调试信息输出
Serial.print(F("FW Version:")); Serial.println(wifi.getVersion().c_str());
if (wifi.setOprToStationSoftAP()) { //把ESP8266设置成 station 与 AP (access piont)模式 Serial.print(F("to station + softap ok\r\n")); } else { Serial.print(F("to station + softap err\r\n")); }
if (wifi.joinAP(SSID, PASSWORD)) {// 连接WIFI 信息 Serial.print(F("Join AP success\r\n"));
Serial.print(F("IP:")); //连接WIFI后IP相关信息
Serial.println( wifi.getLocalIP().c_str());
} else { Serial.print(F("Join AP failure\r\n")); }
if (wifi.disableMUX()) { //关闭多机连接模式 Serial.print(F("single ok\r\n")); } else { Serial.print(F("single err\r\n")); } }
void loop(void) { if (wifi.createTCP(HOST_NAME, HOST_PORT)) {// 连接中心服务器 Serial.print(F("create tcp ok\r\n")); } else { Serial.print(F("create tcp err\r\n")); }
wifi.send((const uint8_t *)hello, strlen(hello) * sizeof(char)); //直接发送 Serial.print("发送:"); Serial.print(hello);
uint8_t buffer[512] = {0}; uint32_t len = wifi.recv(buffer, sizeof(buffer), 20000);// 服务器返回数据 if (len > 0) {//解析服务器返回数据 // Serial.print(F("Received:[")); // for (uint32_t i = 0; i < len; i++) { // Serial.print((char)buffer[i]); // } char response = (char)buffer[len-3]; Serial.print("服务器返回:"); Serial.print(response); //开关灯 if(response == '0'){ digitalWrite(LED,LOW); } else { digitalWrite(LED,HIGH); } }
delay(1000); }
4.想问一下大佬,怎么可以控制两盏灯?
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。