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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用ESP模塊構建自己的WiFi交換機以及如何控制任何設備

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-11-11 16:20 ? 次閱讀

步驟1:原理圖:

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

步驟2:Ubidots設備和變量創建。

a。轉到您的Ubidots帳戶的“設備”部分,然后創建一個名為“ wifiswitch”的新設備。

b。在您的“ wifiswitch”設備內,創建一個名為“ light”的變量。

步驟3:Ubidots儀表盤和小部件創建。

一個。創建設備和變量后,我們可以創建儀表板和小部件以控制來自Web或移動儀表板的燈光。要創建新的儀表板,請按“數據》儀表板”。然后按加號圖標,然后根據需要完成儀表板配置。

b。現在,創建一個控件小部件以設置與變量“ light”關聯的燈泡的狀態。要創建控件小部件,請選擇頁面右上方的加號圖標。然后按“切換”作為窗口小部件類型,選擇所需的變量進行控制,并根據需要完成窗口小部件的配置。

c。然后即可開始編程和測試項目。

步驟4:使用Arduino IDE進行編程。

1。如果尚未完成,請下載Arduino IDE。

1a上。打開Arduino IDE,然后選擇文件-》首選項

1b。將以下網址添加到“其他董事會經理網址”字段中。您可以使用逗號分隔多個URL。

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

2。在Boards Manager中打開并安裝ESP8266板:工具-》 Board-》 Boards Manager

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

3。現在,從工具-》板菜單中選擇通用ESP8266板

4。定義或仔細檢查設備正在與之通信的PC的端口。轉到工具-》端口:-》選擇端口。

4b。通過轉到工具-》上傳速度-》 115200

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

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

8。關閉并再次打開Arduino IDE。

步驟5:編程ESP8266:

設置好ESP8266之后,我們就可以開始從Ubidots發布數據和向Ubidots訂購數據,以控制Wifi開關。

1.將以下代碼復制并粘貼到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 “light” // 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] = {“light”}; // 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(“light”, 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(“light”, 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交換機”,首先我們需要配置一個稱為IFTTT的中介平臺,將我們的Switch與Google Assistant配對。要正確配置,請按照以下步驟操作。

如果您沒有帳戶,請注冊。

單擊“我的小程序”。

然后,單擊“ New Applet”。

單擊“ + this”以配置條件觸發條件。

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

單擊“說一個簡單的短語”。

完成觸發字段中包含您要用來控制燈光,響應和語言的短語,然后單擊“創建觸發”。

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

搜索“ Webhooks”操作服務。

單擊“發出Web請求”

完整的操作字段:

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

方法----》 POST

內容類型----》 application/json

正文----》要打開 {“燈光”:1} ,請關閉 {“輕”:0}

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

注意:重復所有操作,以正確的Body語句設置“關閉燈光”小程序。

步驟7:測試會話:

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

Line ---》 L

Neutral ---》 N

Light Line‘---》 B

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

識別電源線,中性線和輕型電纜:

進行連接并放置按鈕,擰緊螺釘并進行測試

如果您是視覺學習者,請查看以下視頻教程。您可以找到我精心構建的用于構建此項目的所有步驟:

步驟8:摘要:

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

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 交換機
    +關注

    關注

    21

    文章

    2656

    瀏覽量

    99992
  • WIFI
    +關注

    關注

    81

    文章

    5308

    瀏覽量

    204446
  • ESP模塊
    +關注

    關注

    1

    文章

    3

    瀏覽量

    6815
收藏 人收藏

    評論

    相關推薦

    交換機與集線器的優缺點 如何監控交換機流量

    交換機與集線器是網絡中常見的兩種設備,它們各自具有獨特的優缺點。以下是對這兩種設備的優缺點以及如何監控交換機流量的分析: 一、
    的頭像 發表于 12-12 18:22 ?542次閱讀

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

    )的工作原理交換機和網橋一樣,是工作在鏈路層的聯網設備,它的各個端口都具有橋接功能,每個端口可以連接一個LAN或一臺高性能網站或服務器,能夠通過自學習來了解每個端口的設備連接情況。所有端口由專用處理器進行
    的頭像 發表于 11-05 10:12 ?401次閱讀

    如何測試交換機端口速率

    交換機端口速率是指交換機端口在數據傳輸過程中的最大傳輸速率。在網絡環境中,交換機端口速率對于確保網絡性能和數據傳輸效率至關重要。測試交換機端口速率可以幫助網絡管理員了解網絡
    的頭像 發表于 10-18 09:48 ?1925次閱讀

    如何使用反射內存交換機

    反射內存交換機是一種用于實現高速數據共享和通信的關鍵設備,以下是關于如何使用反射內存交換機的詳細介紹:一、前期準備?在開始使用反射內存交換機之前,需要進行以下準備工作:?1.了解系統需
    發表于 09-14 09:23 ?0次下載

    二層交換機和三層交換機有什么區別

    交換機分為二層交換機和三層交換機,它們在功能、應用場景和技術實現上有明顯區別。
    的頭像 發表于 08-07 15:33 ?1549次閱讀

    如何將ESP用作Internet交換機

    有一個 esp 代碼可以在 NAT 路由器中轉換它。有沒有辦法將 AP 和 STA 接口僅用作兩個交換機端口?我想使用路由器的dhcp服務器,所有設備都必須連接到同一個子網上。
    發表于 07-10 07:24

    園區交換機 VS 數據中心交換機

    園區交換機和數據中心交換機交換機領域的兩大類別,很多人都很熟悉。但是,這兩者之間的區別并不是很清楚。在本文中,我們將對園區交換機和數據中心交換機
    的頭像 發表于 06-24 15:33 ?674次閱讀
    園區<b class='flag-5'>交換機</b> VS 數據中心<b class='flag-5'>交換機</b>

    交換機怎么配置IP地址

      在構建和管理網絡架構中,交換機作為核心設備之一,其IP地址的配置是確保網絡正常運行的重要步驟。正確配置交換機的IP地址,可以使得網絡設備
    的頭像 發表于 06-06 11:16 ?1.2w次閱讀

    廣域網交換機與局域網交換機的區別

      在構建和管理網絡架構時,交換機作為核心設備,其選擇和配置直接影響到網絡的性能、可靠性和安全性。廣域網交換機和局域網交換機作為兩種不同類型
    的頭像 發表于 06-06 11:07 ?1204次閱讀

    交換機的基本分類

      交換機作為網絡通訊中的核心設備之一,其在網絡架構中起著至關重要的作用。隨著信息技術的飛速發展,交換機也在不斷演進和革新,以滿足日益復雜的網絡需求。本文將對交換機的分類及其特點進行詳
    的頭像 發表于 06-06 11:06 ?2271次閱讀

    光纖交換機和網絡交換機的區別在哪

    光纖交換機和網絡交換機是兩種不同類型的網絡設備,它們在數據傳輸介質、傳輸速率、應用場景以及設計上有所區別。
    的頭像 發表于 05-28 15:16 ?2438次閱讀

    帶光口的交換機和插光模塊交換機有什么區別?

    帶光口的交換機和插光模塊交換機在功能上有一定的相似性,但它們在設計、用途和性能方面存在一些關鍵的區別。
    的頭像 發表于 05-28 14:59 ?2563次閱讀

    POE交換機是什么?POE交換機的特點

    ,還能為此類設備提供直流電的技術。這種交換機包含網絡交換機和PoE供電兩個功能,是PoE供電系統中比較常見的供電設備。 POE交換機端口支持
    的頭像 發表于 04-17 14:48 ?1964次閱讀

    什么是交換機堆疊?有哪些設備可以堆疊?如何建立堆疊?

    。 在交換機堆疊中,有兩種常見的連接方式:物理堆疊和邏輯堆疊。物理堆疊是通過專用的堆疊模塊和堆疊線纜將多個交換機直接連接在一起。邏輯堆疊是通過軟件來實現,將多個獨立的交換機虛擬成一個邏
    的頭像 發表于 02-04 11:21 ?2042次閱讀

    交換機的作用與功能 交換機的基本配置

    的 MAC 地址進行數據的無沖突傳輸,提高了網絡傳輸的效率和穩定性。本文將詳細介紹交換機的作用、功能以及基本配置。 一、交換機的作用與功能 數據的轉發與交換
    的頭像 發表于 02-04 09:17 ?1.7w次閱讀
    主站蜘蛛池模板: 鸭子玩富婆流白浆视频 | 国语92电影网午夜福利 | 卫生间被教官做好爽HH视频 | 青春草久久 | 亚洲精品一区国产欧美 | 老司机亚洲精品影院在线观看 | 插曲的痛30分钟视频最新章节 | 秋霞电影伦网理最新在线看片 | 久久久大香菇 | 果冻传媒2021一二三区 | G国产精品无马 | JAPANBABES11学生老师 | 国产精品久久久久久熟妇吹潮软件 | 影音先锋xfplay影院av | 亚洲精品乱码久久久久久中文字幕 | 中文字幕亚洲无线码高清不卡 | 日本午夜福利无码高清 | 色播播电影 | 一级毛片视频免费 | 国产AV精品无码免费看 | 我与旗袍老师疯狂床震 | 婬香婬色天天视频 | 神马老子影院午夜伦 | 亚州三级久久电影 | 午夜办公室在线观看高清电影 | youjizz怎么看| 久久a在线视频观看 | 免费撕开胸罩吮胸视频 | 一区二区中文字幕在线观看 | 久久久久国产精品美女毛片 | 妖精视频在线观看高清 | 成人在线视频播放 | 久久视频这有精品63在线国产 | 色爱区综合激情五月综合激情 | 三级网址在线 | 用震蛋调教女性下面视频 | 高傲教师麻麻被同学调教123 | 5278欧美一区二区三区 | 亚洲欧美自拍明星换脸 | 亚洲成人综合在线 | 国产二级一片内射视频播放 |