一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

454398 ? 來源:網(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儀表盤和小部件創(chuàng)建。

一個(gè)。創(chuàng)建設(shè)備和變量后,我們可以創(chuàng)建儀表板和小部件以控制來自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)選擇頁面右上方的加號(hào)圖標(biāo)。然后按“切換”作為窗口小部件類型,選擇所需的變量進(jìn)行控制,并根據(jù)需要完成窗口小部件的配置。

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

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

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

1a上。打開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中打開并安裝ESP8266板:工具-》 Board-》 Boards Manager

2a。您可以通過在搜索欄中鍵入“ ESP8266”來輕松找到該板。

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

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

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

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

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

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

步驟5:編程ESP8266:

設(shè)置好ESP8266之后,我們就可以開始從Ubidots發(fā)布數(shù)據(jù)和向Ubidots訂購數(shù)據(jù),以控制Wifi開關(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助手配置語音命令:

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

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

單擊“我的小程序”。

然后,單擊“ New Applet”。

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

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

單擊“說一個(gè)簡單的短語”。

完成觸發(fā)字段中包含您要用來控制燈光,響應(yīng)和語言的短語,然后單擊“創(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

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

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

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

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

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

Line ---》 L

Neutral ---》 N

Light Line‘---》 B

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

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

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

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

步驟8:摘要:

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

責(zé)任編輯:wv

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

    關(guān)注

    22

    文章

    2740

    瀏覽量

    101862
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5399

    瀏覽量

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

    關(guān)注

    1

    文章

    3

    瀏覽量

    6877
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    普通交換機(jī)和車載交換機(jī)的區(qū)別有哪些?怎么選?

    你可能知道 交換機(jī) 是一種網(wǎng)絡(luò)設(shè)備,用于在計(jì)算機(jī)網(wǎng)絡(luò)中連接多個(gè)設(shè)備(如計(jì)算機(jī)、服務(wù)器、打印機(jī)等),并實(shí)現(xiàn)這些設(shè)備之間的數(shù)據(jù)交換。但是不同場景
    的頭像 發(fā)表于 07-09 15:53 ?51次閱讀
    普通<b class='flag-5'>交換機(jī)</b>和車載<b class='flag-5'>交換機(jī)</b>的區(qū)別有哪些?怎么選?

    什么是工業(yè)級(jí)交換機(jī)?工業(yè)交換機(jī)作用有哪些?

    重中之重!?。?? ? 工業(yè)級(jí)交換機(jī) 是專為工業(yè)環(huán)境設(shè)計(jì)的 網(wǎng)絡(luò)設(shè)備 ,主要作用是實(shí)現(xiàn)以太網(wǎng)設(shè)備的互聯(lián),擴(kuò)大網(wǎng)絡(luò)覆蓋范圍。與普通的商業(yè)交換機(jī)相比,工業(yè)級(jí)
    的頭像 發(fā)表于 07-07 16:25 ?147次閱讀

    工業(yè)交換機(jī)與普通交換機(jī)的區(qū)別:為什么工廠網(wǎng)絡(luò)寧貴不?。?/a>

    在工業(yè)4.0和智能制造的浪潮下,工廠的每一臺(tái)設(shè)備、每一處傳感器都成了網(wǎng)絡(luò)中的“神經(jīng)元”,而連接這些“神經(jīng)元”的核心設(shè)備——工業(yè)交換機(jī),卻常被忽視。許多人會(huì)問:“工業(yè)交換機(jī)和普通
    的頭像 發(fā)表于 05-23 17:14 ?284次閱讀

    交換機(jī)和分交換機(jī)的連接光纖接口是否是lc

    交換機(jī)和分交換機(jī)的連接光纖接口是否采用LC接口,取決于設(shè)備型號(hào)、設(shè)計(jì)需求和場景要求,并非固定選擇。 在光纖網(wǎng)絡(luò)中,主交換機(jī)和分交換機(jī)之間的
    的頭像 發(fā)表于 04-15 10:42 ?357次閱讀

    POE交換機(jī)接口詳解

    在現(xiàn)代網(wǎng)絡(luò)設(shè)備中,PoE(以太網(wǎng)供電)技術(shù)已成為不可或缺的一部分。PoE交換機(jī)接口不僅能傳輸數(shù)據(jù),還能通過同一條網(wǎng)線為終端設(shè)備供電,有效簡化布線,降低成本,并提升網(wǎng)絡(luò)部署效率。本文將全面解析PoE
    發(fā)表于 03-27 17:17

    如何實(shí)現(xiàn)POE交換機(jī)串聯(lián)?

    :通過級(jí)聯(lián)方式擴(kuò)展端口數(shù)量,滿足更多設(shè)備的接入需求。 集中管理 :多個(gè)POE交換機(jī)串聯(lián)后可實(shí)現(xiàn)統(tǒng)一管理與供電控制,簡化運(yùn)維。 POE交換機(jī)串聯(lián)所需工具 在進(jìn)行串聯(lián)之前,需
    發(fā)表于 03-25 19:10

    PoE交換機(jī)如何助力智慧城市基礎(chǔ)設(shè)施建設(shè)?

    交換機(jī)構(gòu)建這些網(wǎng)絡(luò)中發(fā)揮著至關(guān)重要的作用。本文將探討PoE交換機(jī)如何助力智慧城市發(fā)展,以及它們?cè)?b class='flag-5'>構(gòu)建強(qiáng)大城市網(wǎng)絡(luò)中的重要性。 智慧城
    發(fā)表于 03-25 10:20

    PoE交換機(jī)在安防監(jiān)控系統(tǒng)中的關(guān)鍵作用

    設(shè)備宕機(jī)和故障的風(fēng)險(xiǎn)。 PoE交換機(jī)提供的可靠性確保了穩(wěn)定且不間斷的數(shù)據(jù)流,這對(duì)于安全監(jiān)控和訪問控制的有效性至關(guān)重要。通過消除數(shù)據(jù)傳輸中的潛在障礙,PoE交換機(jī)有助于
    發(fā)表于 03-24 16:41

    PoE交換機(jī)與非PoE交換機(jī)的比較:兩者能否協(xié)同工作?

    的正常運(yùn)行。因此,PoE設(shè)備和非PoE設(shè)備可以同時(shí)接入同一臺(tái)PoE交換機(jī),而不會(huì)出現(xiàn)任何問題。此外,許多PoE交換機(jī)還能自動(dòng)禁用不需要供電的
    發(fā)表于 03-21 19:20

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

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

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

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

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

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

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

    反射內(nèi)存交換機(jī)是一種用于實(shí)現(xiàn)高速數(shù)據(jù)共享和通信的關(guān)鍵設(shè)備,以下是關(guān)于如何使用反射內(nèi)存交換機(jī)的詳細(xì)介紹:一、前期準(zhǔn)備?在開始使用反射內(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)用場景和技術(shù)實(shí)現(xiàn)上有明顯區(qū)別。
    的頭像 發(fā)表于 08-07 15:33 ?2602次閱讀

    網(wǎng)管型交換機(jī)和非網(wǎng)管型交換機(jī)的區(qū)別

    網(wǎng)管型交換機(jī)和非網(wǎng)管型交換機(jī)是兩種不同類型的交換機(jī),它們?cè)诠δ堋⑿阅?、?yīng)用場景等方面存在明顯的差異。 定義 網(wǎng)管型交換機(jī)(Managed Switch)是一種具有網(wǎng)絡(luò)管理功能的
    的頭像 發(fā)表于 08-05 15:41 ?4216次閱讀