色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用ESP模塊構(gòu)建自己的WiFi交換機(jī)以及如何控制任何設(shè)備

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-11 16:20 ? 次閱讀

步驟1:原理圖:

您可以使用PCBGoGo制造PCB。/p》

步驟2:Ubidots設(shè)備和變量創(chuàng)建。

a。轉(zhuǎn)到您的Ubidots帳戶的“設(shè)備”部分,然后創(chuàng)建一個(gè)名為“ wifiswitch”的新設(shè)備。

b。在您的“ wifiswitch”設(shè)備內(nèi),創(chuàng)建一個(gè)名為“ light”的變量。

步驟3:Ubidots儀表盤(pán)和小部件創(chuàng)建。

一個(gè)。創(chuàng)建設(shè)備和變量后,我們可以創(chuàng)建儀表板和小部件以控制來(lái)自Web或移動(dòng)儀表板的燈光。要?jiǎng)?chuàng)建新的儀表板,請(qǐng)按“數(shù)據(jù)》儀表板”。然后按加號(hào)圖標(biāo),然后根據(jù)需要完成儀表板配置。

b。現(xiàn)在,創(chuàng)建一個(gè)控件小部件以設(shè)置與變量“ light”關(guān)聯(lián)的燈泡的狀態(tài)。要?jiǎng)?chuàng)建控件小部件,請(qǐng)選擇頁(yè)面右上方的加號(hào)圖標(biāo)。然后按“切換”作為窗口小部件類型,選擇所需的變量進(jìn)行控制,并根據(jù)需要完成窗口小部件的配置。

c。然后即可開(kāi)始編程和測(cè)試項(xiàng)目。

步驟4:使用Arduino IDE進(jìn)行編程。

1。如果尚未完成,請(qǐng)下載Arduino IDE。

1a上。打開(kāi)Arduino IDE,然后選擇文件-》首選項(xiàng)

1b。將以下網(wǎng)址添加到“其他董事會(huì)經(jīng)理網(wǎng)址”字段中。您可以使用逗號(hào)分隔多個(gè)URL。

http://arduino.esp8266.com/stable/package_esp8266.。.

2。在Boards Manager中打開(kāi)并安裝ESP8266板:工具-》 Board-》 Boards Manager

2a。您可以通過(guò)在搜索欄中鍵入“ ESP8266”來(lái)輕松找到該板。

3。現(xiàn)在,從工具-》板菜單中選擇通用ESP8266板

4。定義或仔細(xì)檢查設(shè)備正在與之通信的PC的端口。轉(zhuǎn)到工具-》端口:-》選擇端口。

4b。通過(guò)轉(zhuǎn)到工具-》上傳速度-》 115200

5,確保您的IDE上傳速度為115200。如果尚未下載UbidotsESPMQTT庫(kù),請(qǐng)下載它。現(xiàn)在,單擊Sketch –》 Include Library –》 Add .ZIP Library并選擇Ubidots ESP8266 MQTT庫(kù)。

如果上傳正確,您將得到響應(yīng):“庫(kù)已添加到庫(kù)中。”

8。關(guān)閉并再次打開(kāi)Arduino IDE。

步驟5:編程ESP8266:

設(shè)置好ESP8266之后,我們就可以開(kāi)始從Ubidots發(fā)布數(shù)據(jù)和向Ubidots訂購(gòu)數(shù)據(jù),以控制Wifi開(kāi)關(guān)。

1.將以下代碼復(fù)制并粘貼到Arduino IDE中。不要忘記自定義Wi-Fi SSID和密碼以及您的Ubidots令牌。

2。在此處下載代碼:

/****************************************

* Libraries

****************************************/

#include “UbidotsESPMQTT.h”

/****************************************

* Define constants

****************************************/

#define TOKEN “。..。..。..。..。..。..。..。..。..” // Your Ubidots TOKEN

#define WIFINAME “。..。..。..” //Your SSID

#define WIFIPASS “。..。..。..” // Your Wifi Pass

#define DEVICE_LABEL “wifiswitch” // Name of the device

#define VARIABLE_LABEL1 “l(fā)ight” // Name of the Ubidots variable

const int ERROR_VALUE = 65535; // Error value

const uint8_t NUMBER_OF_VARIABLES = 2; // Cantidad de variables a las que el programa se va a suscribir

char * variable_labels[NUMBER_OF_VARIABLES] = {“l(fā)ight”}; // Variables names

#define luz 0

#define boton 2

int seguro=0;

int ledState = LOW; // the current state of the output pin

int buttonState; // the current reading from the input pin

int lastButtonState = HIGH; // the previous reading from the input pin

int reading;

unsigned long lastDebounceTime = 0; // the last time the output pin was toggled

unsigned long debounceDelay = 50;

float estadoluz; // Variable to be used in the code

float value; // Variable to store input data

uint8_t variable; // To use with the switch case

Ubidots ubiClient(TOKEN);

WiFiClient client;

/****************************************

* Auxiliar functions

****************************************/

void callback(char* topic, byte* payload, unsigned int length) {

char* variable_label = (char *) malloc(sizeof(char) * 30);

get_variable_label_topic(topic, variable_label);

value = btof(payload, length);

set_state(variable_label);

execute_cases();

free(variable_label);

/////////////////Light////////////////////

digitalWrite(luz, estadoluz);

/////////////////Light////////////////////

}

// Parse topic to extract the variable label which changed value

void get_variable_label_topic(char * topic, char * variable_label) {

Serial.print(“topic:”);

Serial.println(topic);

sprintf(variable_label, “”);

for (int i = 0; i 《 NUMBER_OF_VARIABLES; i++) {

char * result_lv = strstr(topic, variable_labels[i]);

if (result_lv != NULL) {

uint8_t len = strlen(result_lv);

char result[100];

uint8_t i = 0;

for (i = 0; i 《 len - 3; i++) {

result[i] = result_lv[i];

}

result[i] = ‘’;

Serial.print(“Label is: ”);

Serial.println(result);

sprintf(variable_label, “%s”, result);

break;

}

}

}

// cast from an array of chars to float value.

float btof(byte * payload, unsigned int length) {

char * demo = (char *) malloc(sizeof(char) * 10);

for (int i = 0; i 《 length; i++) {

demo[i] = payload[i];

}

float value = atof(demo);

free(demo);

return value;

}

// State machine to use switch case

void set_state(char* variable_label) {

variable = 0;

for (uint8_t i = 0; i 《 NUMBER_OF_VARIABLES; i++) {

if (strcmp(variable_label, variable_labels[i]) == 0) {

break;

}

variable++;

}

if (variable 》= NUMBER_OF_VARIABLES) variable = ERROR_VALUE; // Not valid

}

// Function with switch case to determine which variable changed and assigned the value accordingly to the code variable

void execute_cases() {

switch (variable) {

case 0:

estadoluz = value;

Serial.print(“Luz: ”);

Serial.println(estadoluz);

Serial.println();

break;

case ERROR_VALUE:

Serial.println(“error”);

Serial.println();

break;

default:

Serial.println(“default”);

Serial.println();

}

}

/****************************************

* Funcion principal

****************************************/

void setup() {

// put your setup code here, to run once:

pinMode(luz, OUTPUT);

pinMode(boton, INPUT);

ubiClient.ubidotsSetBroker(“industrial.api.ubidots.com”); // Sets the broker properly for the business account

ubiClient.setDebug(true); // Pass a true or false bool value to activate debug messages

Serial.begin(115200);

ubiClient.wifiConnection(WIFINAME, WIFIPASS);

ubiClient.begin(callback);

if(!ubiClient.connected()){

ubiClient.reconnect();

}

char* deviceStatus = getUbidotsDevice(DEVICE_LABEL);

if (strcmp(deviceStatus, “404”) == 0) {

ubiClient.add(“l(fā)ight”, 0); //Insert your variable Labels and the value to be sent

ubiClient.ubidotsPublish(DEVICE_LABEL);

ubiClient.loop();

}

ubiClient.ubidotsSubscribe(DEVICE_LABEL,VARIABLE_LABEL1); //Insert the Device and Variable‘s Labels

Serial.println(variable_labels[1]);

}

void loop() {

// put your main code here, to run repeatedly:

if(!ubiClient.connected()){

ubiClient.reconnect();

ubiClient.ubidotsSubscribe(DEVICE_LABEL,VARIABLE_LABEL1); //Insert the Device and Variable’s Labels

}

ubiClient.loop();

Read();

Debounce();

// save the reading. Next time through the loop, it‘ll be the lastButtonState:

lastButtonState = reading;

}

void Read(){

// read the state of the switch into a local variable:

reading = digitalRead(boton);

if (reading != lastButtonState) {

// reset the debouncing timer

lastDebounceTime = millis();

}

}

void Debounce(){

if ((millis() - lastDebounceTime) 》 debounceDelay) {

// whatever the reading is at, it’s been there for longer than the debounce

// delay, so take it as the actual current state:

// if the button state has changed:

if (reading != buttonState) {

buttonState = reading;

Toggle();

}

}

}

void Toggle(){

// only toggle the LED if the new button state is LOW

if (buttonState == LOW) {

ledState = !ledState;

// set the LED:

digitalWrite(luz, ledState);

ubiClient.add(“l(fā)ight”, ledState); //Insert your variable Labels and the value to be sent

ubiClient.ubidotsPublish(DEVICE_LABEL);

}

}

char* getUbidotsDevice(char* deviceLabel) {

char* data = (char *) malloc(sizeof(char) * 700);

char* response = (char *) malloc(sizeof(char) * 400);

sprintf(data, “GET /api/v1.6/devices/%s/”, deviceLabel);

sprintf(data, “%s HTTP/1.1 ”, data);

sprintf(data, “%sHost: industrial.api.ubidots.com User-Agent:wifiswitch/1.0 ”, data);

sprintf(data, “%sX-Auth-Token: %s Connection: close ”, data, TOKEN);

char* data1 = data;

free(data);

if (client.connect(“industrial.api.ubidots.com”, 80)) {

client.println(data1);

}

else {

free(data);

return “e”;

}

int timeout = 0;

while(!client.available() && timeout 《 5000) {

timeout++;

if (timeout 》= 4999){

free(data);

return “e”;

}

delay(1);

}

int i = 0;

while (client.available()) {

response[i++] = (char)client.read();

if (i 》= 399){

break;

}

}

char * pch;

char * statusCode;

int j = 0;

pch = strtok (response, “ ”);

while (pch != NULL) {

if (j == 1 ) {

statusCode = pch;

}

pch = strtok (NULL, “ ”);

j++;

}

free(response);

return statusCode;

}

步驟6:使用Google助手配置語(yǔ)音命令:

要使用Google Home控制您的“ WiFi交換機(jī)”,首先我們需要配置一個(gè)稱為IFTTT的中介平臺(tái),將我們的Switch與Google Assistant配對(duì)。要正確配置,請(qǐng)按照以下步驟操作。

如果您沒(méi)有帳戶,請(qǐng)注冊(cè)。

單擊“我的小程序”。

然后,單擊“ New Applet”。

單擊“ + this”以配置條件觸發(fā)條件。

搜索“ Google助手”服務(wù),然后單擊它。

單擊“說(shuō)一個(gè)簡(jiǎn)單的短語(yǔ)”。

完成觸發(fā)字段中包含您要用來(lái)控制燈光,響應(yīng)和語(yǔ)言的短語(yǔ),然后單擊“創(chuàng)建觸發(fā)”。

然后,單擊“ + that”配置操作。

搜索“ Webhooks”操作服務(wù)。

單擊“發(fā)出Web請(qǐng)求”

完整的操作字段:

URL ----》 http://things.ubidots.com/api/v1.6/devices/wifisw 。..成為您的Ubidots令牌)

方法----》 POST

內(nèi)容類型----》 application/json

正文----》要打開(kāi) {“燈光”:1} ,請(qǐng)關(guān)閉 {“輕”:0}

11。最后,單擊“完成”。

注意:重復(fù)所有操作,以正確的Body語(yǔ)句設(shè)置“關(guān)閉燈光”小程序。

步驟7:測(cè)試會(huì)話:

由于圖中所示,將模塊正確連接到交流電

Line ---》 L

Neutral ---》 N

Light Line‘---》 B

接線端子SW中添加您喜歡的瞬時(shí)按鈕。

識(shí)別電源線,中性線和輕型電纜:

進(jìn)行連接并放置按鈕,擰緊螺釘并進(jìn)行測(cè)試

如果您是視覺(jué)學(xué)習(xí)者,請(qǐng)查看以下視頻教程。您可以找到我精心構(gòu)建的用于構(gòu)建此項(xiàng)目的所有步驟:

步驟8:摘要:

在本指南中,我們剛剛學(xué)習(xí)了如何建立一個(gè)可以通過(guò)語(yǔ)音,手機(jī)應(yīng)用程序或PC進(jìn)行Internet控制的WiFi開(kāi)關(guān),讓您控制臥室或其他任何地方的燈泡。該設(shè)備基于ESP8266 WiFi模塊工作,該模塊是一個(gè)很小的模塊,可讓項(xiàng)目輕松上線。而且該設(shè)備可用于控制許多不同的設(shè)備,例如風(fēng)扇,電機(jī),窗簾,燈,LED燈條等。

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 交換機(jī)
    +關(guān)注

    關(guān)注

    21

    文章

    2646

    瀏覽量

    99806
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5301

    瀏覽量

    204088
  • ESP模塊
    +關(guān)注

    關(guān)注

    1

    文章

    3

    瀏覽量

    6815
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    交換機(jī)與集線器的優(yōu)缺點(diǎn) 如何監(jiān)控交換機(jī)流量

    交換機(jī)與集線器是網(wǎng)絡(luò)中常見(jiàn)的兩種設(shè)備,它們各自具有獨(dú)特的優(yōu)缺點(diǎn)。以下是對(duì)這兩種設(shè)備的優(yōu)缺點(diǎn)以及如何監(jiān)控交換機(jī)流量的分析: 一、
    的頭像 發(fā)表于 12-12 18:22 ?452次閱讀

    交換機(jī)的工作原理是什么?3類交換機(jī)故障詳解

    )的工作原理交換機(jī)和網(wǎng)橋一樣,是工作在鏈路層的聯(lián)網(wǎng)設(shè)備,它的各個(gè)端口都具有橋接功能,每個(gè)端口可以連接一個(gè)LAN或一臺(tái)高性能網(wǎng)站或服務(wù)器,能夠通過(guò)自學(xué)習(xí)來(lái)了解每個(gè)端口的設(shè)備連接情況。所有端口由專用處理器進(jìn)行
    的頭像 發(fā)表于 11-05 10:12 ?343次閱讀

    如何測(cè)試交換機(jī)端口速率

    交換機(jī)端口速率是指交換機(jī)端口在數(shù)據(jù)傳輸過(guò)程中的最大傳輸速率。在網(wǎng)絡(luò)環(huán)境中,交換機(jī)端口速率對(duì)于確保網(wǎng)絡(luò)性能和數(shù)據(jù)傳輸效率至關(guān)重要。測(cè)試交換機(jī)端口速率可以幫助網(wǎng)絡(luò)管理員了解網(wǎng)絡(luò)
    的頭像 發(fā)表于 10-18 09:48 ?1728次閱讀

    如何使用反射內(nèi)存交換機(jī)

    反射內(nèi)存交換機(jī)是一種用于實(shí)現(xiàn)高速數(shù)據(jù)共享和通信的關(guān)鍵設(shè)備,以下是關(guān)于如何使用反射內(nèi)存交換機(jī)的詳細(xì)介紹:一、前期準(zhǔn)備?在開(kāi)始使用反射內(nèi)存交換機(jī)之前,需要進(jìn)行以下準(zhǔn)備工作:?1.了解系統(tǒng)需
    發(fā)表于 09-14 09:23 ?0次下載

    二層交換機(jī)和三層交換機(jī)有什么區(qū)別

    交換機(jī)分為二層交換機(jī)和三層交換機(jī),它們?cè)诠δ堋?yīng)用場(chǎng)景和技術(shù)實(shí)現(xiàn)上有明顯區(qū)別。
    的頭像 發(fā)表于 08-07 15:33 ?1434次閱讀

    如何將ESP用作Internet交換機(jī)

    有一個(gè) esp 代碼可以在 NAT 路由器中轉(zhuǎn)換它。有沒(méi)有辦法將 AP 和 STA 接口僅用作兩個(gè)交換機(jī)端口?我想使用路由器的dhcp服務(wù)器,所有設(shè)備都必須連接到同一個(gè)子網(wǎng)上。
    發(fā)表于 07-10 07:24

    交換機(jī)怎么配置IP地址

      在構(gòu)建和管理網(wǎng)絡(luò)架構(gòu)中,交換機(jī)作為核心設(shè)備之一,其IP地址的配置是確保網(wǎng)絡(luò)正常運(yùn)行的重要步驟。正確配置交換機(jī)的IP地址,可以使得網(wǎng)絡(luò)設(shè)備
    的頭像 發(fā)表于 06-06 11:16 ?1.2w次閱讀

    廣域網(wǎng)交換機(jī)與局域網(wǎng)交換機(jī)的區(qū)別

      在構(gòu)建和管理網(wǎng)絡(luò)架構(gòu)時(shí),交換機(jī)作為核心設(shè)備,其選擇和配置直接影響到網(wǎng)絡(luò)的性能、可靠性和安全性。廣域網(wǎng)交換機(jī)和局域網(wǎng)交換機(jī)作為兩種不同類型
    的頭像 發(fā)表于 06-06 11:07 ?1138次閱讀

    光纖交換機(jī)和網(wǎng)絡(luò)交換機(jī)的區(qū)別在哪

    光纖交換機(jī)和網(wǎng)絡(luò)交換機(jī)是兩種不同類型的網(wǎng)絡(luò)設(shè)備,它們?cè)跀?shù)據(jù)傳輸介質(zhì)、傳輸速率、應(yīng)用場(chǎng)景以及設(shè)計(jì)上有所區(qū)別。
    的頭像 發(fā)表于 05-28 15:16 ?2355次閱讀

    帶光口的交換機(jī)和插光模塊交換機(jī)有什么區(qū)別?

    帶光口的交換機(jī)和插光模塊交換機(jī)在功能上有一定的相似性,但它們?cè)谠O(shè)計(jì)、用途和性能方面存在一些關(guān)鍵的區(qū)別。
    的頭像 發(fā)表于 05-28 14:59 ?2456次閱讀

    POE交換機(jī)是什么?POE交換機(jī)的特點(diǎn)

    ,還能為此類設(shè)備提供直流電的技術(shù)。這種交換機(jī)包含網(wǎng)絡(luò)交換機(jī)和PoE供電兩個(gè)功能,是PoE供電系統(tǒng)中比較常見(jiàn)的供電設(shè)備。 POE交換機(jī)端口支持
    的頭像 發(fā)表于 04-17 14:48 ?1867次閱讀

    什么是交換機(jī)堆疊?有哪些設(shè)備可以堆疊?如何建立堆疊?

    。 在交換機(jī)堆疊中,有兩種常見(jiàn)的連接方式:物理堆疊和邏輯堆疊。物理堆疊是通過(guò)專用的堆疊模塊和堆疊線纜將多個(gè)交換機(jī)直接連接在一起。邏輯堆疊是通過(guò)軟件來(lái)實(shí)現(xiàn),將多個(gè)獨(dú)立的交換機(jī)虛擬成一個(gè)邏
    的頭像 發(fā)表于 02-04 11:21 ?1941次閱讀

    交換機(jī)的作用與功能 交換機(jī)的基本配置

    的 MAC 地址進(jìn)行數(shù)據(jù)的無(wú)沖突傳輸,提高了網(wǎng)絡(luò)傳輸?shù)男屎头€(wěn)定性。本文將詳細(xì)介紹交換機(jī)的作用、功能以及基本配置。 一、交換機(jī)的作用與功能 數(shù)據(jù)的轉(zhuǎn)發(fā)與交換
    的頭像 發(fā)表于 02-04 09:17 ?1.7w次閱讀

    路由器當(dāng)交換機(jī)使用后可以用wifi

    WiFi同時(shí)使用,并進(jìn)一步探討如何配置路由器以及一些注意事項(xiàng)。 一、路由器和交換機(jī)的功能和作用 路由器: 路由器是一種網(wǎng)絡(luò)設(shè)備,可將數(shù)據(jù)從一個(gè)網(wǎng)絡(luò)發(fā)送到另一個(gè)網(wǎng)絡(luò)。它具有連接不同網(wǎng)絡(luò)
    的頭像 發(fā)表于 01-23 15:06 ?9568次閱讀

    匯聚交換機(jī)和核心交換機(jī)區(qū)別

    交換機(jī)的區(qū)別。 一、定義和作用 匯聚交換機(jī):匯聚交換機(jī)是部署在網(wǎng)絡(luò)邊緣的設(shè)備,主要用于連接用戶設(shè)備(例如電腦、服務(wù)器、IP電話等)與核心
    的頭像 發(fā)表于 01-22 14:32 ?4655次閱讀
    主站蜘蛛池模板: www黄色大片| 一级毛片美国| 97人摸人人澡人人人超一碰| 狠狠色狠狠色综合日日91app| 色戒床震视频片段| 超嫩校花被灌醉在线观看| 男污女XO猛烈的动态图| 51国产偷自视频在线视频播放| 久久成人a毛片免费观看网站| 小骚妇BBBXXX| 国产片MV在线观看| 午夜福利网国产A| 国产精品毛片AV久久97| 无码AV精品久久一区二区免费| 国产69精品久久久久无码麻豆| 日韩欧美一区二区三区在线| wwwxxc| 欧美在线看欧美视频免费| 99在线观看视频免费| 欧美00后rapper潮水| av天堂网2014在线| 全免费a级毛片免费看| 成人午夜精品无码区久久漫画日本| 皮皮色狼网| 成人在无码AV在线观看一| 日本无码免费久久久精品 | 国产亚洲高清视频| 亚洲成人国产| 娇小亚裔被两个黑人| 一级毛片两人添下面| 麻豆精品传媒一二三区| aaa在线观看视频高清视频| 琪琪午夜福利免费院| 大岛优香久久中文字幕| 撕烂衣服扒开胸罩揉爆胸| 国产剧果冻传媒星空在线观看| 小柔的性放荡羞辱日记| 果冻传媒在线观看视频| 一个人免费视频在线观看高清版| 久色视频网| G国产精品无马|