ዝርዝር ሁኔታ:
- ደረጃ 1: AP ን ከ Wrover ጋር መጫን
- ደረጃ 2 የ STATION ስብሰባ ከ TTGO ጋር
- ደረጃ 3 ፦ ውጤት
- ደረጃ 4: LOG.CSV ን በማህደር ያስቀምጡ
- ደረጃ 5: Adafruit GFX ቤተ -መጽሐፍት
- ደረጃ 6: Adafruit ST7735 ቤተ -መጽሐፍት
- ደረጃ 7 ካርዶቹን በማዋቀር ላይ
- ደረጃ 8 AP.ino
- ደረጃ 9: Station.ino
- ደረጃ 10 - ፋይሎች
ቪዲዮ: ESP32 ከውጭ ረጅም ርቀት አንቴና ጋር - 10 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:32
የዛሬው ርዕስ የርቀት ሙከራን ከ ESP32 ጋር ከውጭ አንቴና ጋር ይመለከታል። ዛሬ ሁለት ሞጁሎችን እንጠቀም - ከኤስፕሬሲፍ እና ከ TTGO። ከዚያ በእነዚህ ሁለት የ ESP32 አንቴናዎች መካከል RSSI ን እንፈትሽ ፣ ከታሪክ ግራፍ አምጣ እና በ.csv ፋይል ውስጥ የእሴቶችን ምዝግብ እንፃፍ።
ከዚያ ESP32 Wrover እንደ AP ፣ እና የ TTGO ESP32 እንደ ጣቢያ አለን። እኔ በትንሹ ከትልቁ TP-Link እና 9dbm አንቴና በመባል ከሚታወቅ ሌላ ራውተር የወሰድኩትን አንቴና ተጠቅሜያለሁ። በሁለቱ መካከል ምንም ልዩነት አላስተዋልኩም።
በመጨረሻም ፣ ሁለቱ የማይክሮ መቆጣጠሪያዎች በሶኬት በኩል ይገናኛሉ እና በእያንዳንዱ የውሂብ እሽጎች በመላክ የዲቢቢውን ጥምርታ ከሚያመለክቱ አሞሌዎች ጋር ግራፍ በማተም ላይ እናተምታለን።
ደረጃ 1: AP ን ከ Wrover ጋር መጫን
ደረጃ 2 የ STATION ስብሰባ ከ TTGO ጋር
ደረጃ 3 ፦ ውጤት
በ 2x ውጫዊ አንቴናዎች ከፍተኛው ርቀት 315 ሜትር
በውጫዊ እና ውስጣዊ አንቴና ያለው ከፍተኛ ርቀት 157 ሜትር
ደረጃ 4: LOG. CSV ን በማህደር ያስቀምጡ
መረጃውን በ SD ካርድ ላይ ፣ በሚሊስ ፣ በዲቢኤም እና በጥቅሉ ሕብረቁምፊ ውስጥ አስገብቻለሁ።
ደረጃ 5: Adafruit GFX ቤተ -መጽሐፍት
በአርዱዲኖ አይዲኢ ውስጥ ወደ Sketch-> ቤተ-መጽሐፍት አካትት-> ቤተ-መጽሐፍቶችን ያቀናብሩ…
Adafruit GFX ቤተ -መጽሐፍትን ይጫኑ
ደረጃ 6: Adafruit ST7735 ቤተ -መጽሐፍት
በአርዱዲኖ አይዲኢ ውስጥ ወደ Sketch-> ቤተ-መጽሐፍት አካትት-> ቤተ-መጽሐፍቶችን ያቀናብሩ…
Adafruit ST7735 ን ይጫኑ
ደረጃ 7 ካርዶቹን በማዋቀር ላይ
ልዩነቶችን ይከታተሉ -
ደረጃ 8 AP.ino
አስፈላጊዎቹን ቤተ -መጻሕፍት አካትተናል እና አንዳንድ መመዘኛዎችን ገለጥን።
#ያካትቱ #ያካትቱ #ያካትቱ ምንም ጣቢያ deve ser igual #define SSID "RSSI_Test" #define PASSWORD "87654321" // Tempo de timeout para ግምት of conexão pedida #define TIMEOUT 2000 // Largura e altura do display #defiine DISPLAY_WIDTH 160 #define DISPLAY_HEIGHT 128 // መግለጫ cor, margem e tamanho do gráfico #define PLOT_COLOR ST77XX_GREEN #define PLOT_MARGIN 20 #definine PLOT_SIZE (ማሳያ_ከፍታ - 2*PLOT_MARGIN) // አርኪቮ ዴ ሎግ ኖ ኤስዲ #ጥራት ፊይል "/ፋይል"/ፋይል።
ከሌሎች ተለዋዋጮች መካከል ፒኖችን እንገልፃለን
// ፒኖዎች ያሳያሉ #DISPLAY_DC 12 // A0 #defiine DISPLAY_CS 13 // CS #define DISPLAY_MOSI 14 // SDA #defiine DISPLAY_CLK 27 // SCK #defiine DISPLAY_RST 0 // Pino do SDCard። Os pinos mosi, miso e sck são os nativos (23, 19 e 18 respectivamente) #define SDCARD_CS 15 // Pixel onde o gráfico começa horizontalmente int currentX = PLOT_MARGIN; // Objeto responsável pelo display Adafruit_ST7735 ማሳያ = Adafruit_ST7735 (DISPLAY_CS ፣ DISPLAY_DC ፣ DISPLAY_MOSI ፣ DISPLAY_CLK ፣ DISPLAY_RST) ፤ // Criamos um አገልጋይ (ብቃት ያለው ፖርታ ቫላዳ ለደንበኛ አገልግሎት የሚውል ፖስታን ይጠቀማል) የ WiFi አገልጋይ አገልጋይ (80); // Variável para armazenar o client (ምንም caso o ESP32 em modo station) conectado WiFiClient client; // String que recebemos ደንበኛ ያደርጋሉ ሕብረቁምፊ ደርሷል ፤ // RSSI enviado pelo cliente para este ESP32 long rssi = 0; // Faz o controle do temporizador (interrupção por tempo) hw_timer_t *ሰዓት ቆጣሪ = NULL; // Utilizado para guardar os ultimos std:: vector rssiHistory;
አዘገጃጀት
ባዶነት ማዋቀር () {Serial.begin (115200); setupDisplay (); // Inicializa o SD ((SD. } // ሲሪያን ዋይፋይ ፣ በአገልጋዩ ወይም በአገልጋዩ ኮንቴክታር ማዋቀር WiFi (); server.begin (); waitForClient (); // Espera 3 segundos, limpa a tela e inicializa o Watchdog delay (3000); display.fillScreen (ST77XX_BLACK); display.setCursor (0, 0); setupWatchdog (); }
WiFi ን ያዋቅሩ
// Cria um Access Point e configura o IPvoid setupWiFi () {display.println («softAP መፍጠር» + String (SSID)); WiFi. ግንኙነት ያቋርጡ (); WiFi.mode (WIFI_AP); WiFi.softAPConfig (IPAddress (192 ፣ 168 ፣ 0 ፣ 1) ፣ IPAddress (192 ፣ 168 ፣ 0 ፣ 1) ፣ IPAddress (255 ፣ 255 ፣ 255 ፣ 0))); WiFi.softAP (SSID ፣ PASSWORD); display.println ("softAP" + String (SSID) + "የተፈጠረ!")); }
የማዋቀር ማሳያ
// Incializa o display, muda a orientação e limpa a telavoid setupDisplay () {// Inicializa o display display.initR (INITR_BLACKTAB); // Rotaciona o conteúdo mostrado display.setRotation (3); // Pinta a tela de preto display.fillScreen (ST77XX_BLACK); }
waitForClient
ባዶ waitForClient () {display.println («ደንበኛን በመጠበቅ ላይ»); // አግአርዳ ወይም የደንበኛ ግንኙነት (((ደንበኛ = አገልጋይ አለ ())) {display.print (".")); መዘግየት (500); } display.println («ደንበኛ ተገናኝቷል»); // Tempo máximo que o cliente deve demorar para responder // antes de dizermos que a conexão foi perdida client.setTimeout (TIMEOUT); }
IRAM_ATTR ዳግም አስጀምር ሞዱል እና ማዋቀር ጠባቂ
// função que o temporizador irá chamar, para reiniciar o ESP32 IRAM_ATTR resetModule () {ets_printf ("(watchdog) reiniciar / n"); esp_restart_noos (); // reinicia o ቺፕ} ባዶ ማዋቀርWatchdog () {timer = timerBegin (0 ፣ 80 ፣ እውነት) ፤ // timerID 0 ፣ div 80 // ሰዓት ቆጣሪ ፣ መልሶ መደወያ ፣ interrupção de borda timerAttachInterrupt (ሰዓት ቆጣሪ ፣ እና ዳግም ሞዱል ፣ እውነት); // ሰዓት ቆጣሪ ፣ ቴምፕ (እኛ) ፣ repetição timerAlarmWrite (ሰዓት ቆጣሪ ፣ 10000000 ፣ እውነት); ሰዓት ቆጣሪ ማንቂያ (ሰዓት ቆጣሪ); // habilita a interrupção}
ሉፕ
ባዶነት loop () {timerWrite (ሰዓት ቆጣሪ ፣ 0); // reseta o temporizador (alimenta o watchdog) checkConnection (); // checa se possui conexão com o ደንበኛ readFromClient (); // lê os dados ደንበኛ sendToClient (); // envia confirmação para o የደንበኛ ሴራ (); // mostra o gráfico de histórico de rssi log (); // salva um log no cartão SD}
ቼክ ግንኙነት
ባዶ ቼክ ግንኙነት () {// Se o cliente não estiver conectado ((client.connected ()) {// Limpa a tela e espera pelo cliente display.fillScreen (ST77XX_BLACK); display.println ("ደንበኛ ተቋርጧል"); waitForClient (); }}
ከደንበኛ ያንብቡ
ባዶነት ማንበብFromClient () {// Espera até o cliente enviar algo ou desconectar while (client.connected () &&! client.available ()) {delay (100); } // ደንበኛ ከሆነ (ደንበኛ) ከተገናኘ ()) {ተቀብሏል = client.readStringUntil ('\ n')) // Lê o texto que o ደንበኛ enviou received.remove (የተቀበለው. ርዝመት ()-1); // አስወግድ o / n የመጨረሻ rssi = client.parseInt (); // Lê o rssi que o ደንበኛ enviou clearText (); // ሊምፓ ወይም ቴክቶ ማሳያ። // ጠቋሚውን ወደ ቴክስቶ para para ወደ መጥተው ማሳያ ማሳያ ማሳያ ("RSSI:" + String (rssi))) ይውሰዱ; // Mostra o RSSI ምንም ማሳያ display.println ("ተቀበለ:" + ተቀብሏል); // አብዛኛው ሰው ምንጊዜም ከደንበኛ ጋር ይገናኛል // አንድ መጠነ -ልኬት ወደ ባራስ እስከ ግሪሲኮ ድረስ ሊወስደው ይችላል (rssiHistory.size () == (DISPLAY_WIDTH - 2*PLOT_MARGIN)/2) {rssiHistoryHeraory (rssi.ጀማሪ ()); } // Adiciona የመጨረሻ ታሪክ የለውም (mais recente) rssiHistory.push_back (rssi); }}
sendToClient
void sendToClient () {// Se o cliente estiver conectado enviamos de volta a mensagem com um OK ከሆነ (client.connected ()) {ሕብረቁምፊ መላክ = ተቀብሏል + "እሺ"; client.println (መላክ); }}
ሴራ
ባዶ ባዶ ሴራ () {// ኮሎካ ኖ ፖንቶ ኢንፊሻል ኢ ሊምፓሞስ ኦ ግራግራፎ የአሁኑ ኤክስ = PLOT_MARGIN; display.fillRect (PLOT_MARGIN ፣ 2*PLOT_MARGIN ፣ DISPLAY_WIDTH - 2*PLOT_MARGIN ፣ DISPLAY_HEIGHT - 2*PLOT_MARGIN ፣ ST77XX_BLACK); // ፓራ ካዳ በጀግንነት ሂስቶሪኮ ፋሲሞስ ወይም ካላኩሎ ታማንሆ ዳ ባራ ዶ ግራካፎ ፣ desenhamos e avançamos para o próximo for (int i = 0; i -120? Map (rssiHistory , -120, 0, 0, PLOT_SIZE): 0; display.drawFastVLine (currentX ፣ DISPLAY_HEIGHT - እሴት ፣ እሴት ፣ PLOT_COLOR) ፤ currentX += 2;}}
clearText እና መዝገብ
ባዶ ባዶ ጽሑፍ () {// Limpa a área com o texto da mensagem vinda do cliente display.fillRect (0, 0, DISPLAY_WIDTH ፣ 2*PLOT_MARGIN ፣ ST77XX_BLACK); } ባዶ ባዶ መዝገብ () {// Abrimos o arquivo para escrevermos no final dele ፋይል ፋይል = SD.open (FILE_PATH ፣ FILE_APPEND) ፤ // Se não conseguimos abrir o arquivo mostramos uma mensagem de erro if (! ፋይል) {Serial.println ("ፋይል መክፈት አልተሳካም"); መመለስ; } // Gravamos uma linha com o tempo desde o boot, o rssi atual e a mensagem recebida String data = String (millis ()) + ";" + ሕብረቁምፊ (rssi) + ";" + ተቀበለ; file.println (ውሂብ); file.close (); }
ደረጃ 9: Station.ino
አስፈላጊዎቹን ቤተ -መጻሕፍት አካትተናል እና አንዳንድ መመዘኛዎችን ገለጥን።
#አካትት #አካትት #አካትት #አካትት #አካትት #አካት // Nome da rede que nos conectaremos. Criado pelo AP #define SSID "RSSI_Test" #define PASSWORD "87654321" #define HOST "192.168.0.1" // IP que foi configurado no setup do AP #define PORT 80 // Porta do sever. Qualquer porta válida contanto que seja igual nos dois arquivos // Tempo de timeout para conterar a conexão pedida #define TIMEOUT 2000 // Largura e altura do display #define DISPLAY_WIDTH 160 #define DISPLAY_HEIGHT 128 // Configurações t corho, margem #ጥራት PLOT_COLOR ST77XX_GREEN #ጥራት PLOT_MARGIN 20 #መግለፅ PLOT_SIZE (ማሳያ_ከፍታ - 2*PLOT_MARGIN) // አርኪቮ ዴ ሎግ የለም ኤስዲ #ፍቺ_ፓት "/log.csv"
ማሳያውን እና ኤስዲ ካርዱን የሚያካትቱ ቅንብሮችን እንገልፃለን።
ረጅም ቆጠራ = 0; // Contador de mensagens enviadaslong rssi = 0; // RSSI ማስላት ሕብረቁምፊ ደርሷል ፣ // Mensagem de confirmmação que o AP nos envia // Pixel onde o gráfico começa horizontalmente int currentX = PLOT_MARGIN; // ለአገልጋዩ WiFi አገልጋይ ሶኬት; #መግለፅ DISPLAY_DC 12 // A0 #ገላጭ DISPLAY_CS 13 // CS #define DISPLAY_MOSI 14 // SDA #ገላጭ DISPLAY_CLK 27 // SCK #ገላጭ DISPLAY_RST 0 // Pino do SDCard። Os pinos mosi, miso e sck são os nativos (23, 19 e 18 respectivamente) #define SDCARD_CS 15 // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (ማሳያ_ሲኤስ ፣ DISPLAY_DC ፣ DISPLAY_MOSI ፣ DISPLAY_MOSI ፣ DISPLAY) hw_timer_t *ሰዓት ቆጣሪ = NULL; // faz o controle do temporizador (interrupção por tempo) // Utilizado para guardar os ultimos std:: vector rssiHistory;
አዘገጃጀት
ባዶነት ማዋቀር () {setupDisplay (); // Inicializa o SD ((SD. } // Conecta no access point criado pelo outro ESP32 e conecta ao server setupWiFi (); connectToServer (); // Espera 3 segundos, limpa a tela e inicializa o Watchdog delay (3000); display.fillScreen (ST77XX_BLACK); display.setCursor (0, 0); setupWatchdog (); }
ማዋቀር ማሳያ
// Incializa o display, muda a orientação e limpa a telavoid setupDisplay () {// Inicializa o display display.initR (INITR_BLACKTAB); // Rotaciona o conteúdo mostrado display.setRotation (1); // Pinta a tela de branco display.fillScreen (ST77XX_BLACK); display.setTextColor (ST77XX_WHITE); }
ማዋቀር WiFi
// Conecta ao AP void setupWiFi () {WiFi.disconnect (); WiFi.mode (WIFI_STA); WiFi.begin (SSID ፣ PASSWORD); display.println ("ከ" + String (SSID) ጋር መገናኘት); // Enquanto não estiver conectado à rede WiFi (WiFi.status ()! = WL_CONNECTED) {መዘግየት (500); display.print ("."); } display.println (""); display.print ("ተገናኝቷል"); display.println (SSID); }
connectToServer
ባዶነት connectToServer () {display.println ("የሶኬት ግንኙነትን በመሞከር ላይ"); // (! መዘግየት (500); } display.println (); display.println ("ተገናኝቷል!"); // Tempo máximo que o cliente deve demorar para responder // antes de dizermos que a conexão foi perdida socket.setTimeout (TIMEOUT); }
IRAM_ATTR ዳግም አስጀምር ሞዱል እና ማዋቀር ጠባቂ
// função que o temporizador irá chamar, para reiniciar o ESP32 IRAM_ATTR resetModule () {ets_printf ("(watchdog) reiniciar / n"); esp_restart_noos (); // reinicia o ቺፕ} ባዶ ማዋቀርWatchdog () {timer = timerBegin (0 ፣ 80 ፣ እውነት) ፤ // timerID 0 ፣ div 80 // ሰዓት ቆጣሪ ፣ መልሶ መደወያ ፣ interrupção de borda timerAttachInterrupt (ሰዓት ቆጣሪ ፣ እና ዳግም ሞዱል ፣ እውነት); // ሰዓት ቆጣሪ ፣ ቴምፕ (እኛ) ፣ repetição timerAlarmWrite (ሰዓት ቆጣሪ ፣ 10000000 ፣ እውነት); ሰዓት ቆጣሪ ማንቂያ (ሰዓት ቆጣሪ); // habilita a interrupção}
loop
ባዶነት loop () {timerWrite (ሰዓት ቆጣሪ ፣ 0); // reseta o temporizador (alimenta o watchdog) checkConnection (); // checa se possui conexão com o አገልጋይ checkRSSI (); // verifica o rssi ሴራ (); // mostra o gráfico de histórico de rssi sendToServer (); // envia uma mensagem com um contador para o server readFromServer (); // espera a confirmação do server log (); // salva um log no cartão SD መዘግየት (1000); // espera um segundo}
ቼክ ግንኙነት
ባዶ ቼክ ግንኙነት () {// Verifica a conexão com o AP ከሆነ (WiFi.status ()! = WL_CONNECTED) {display.fillScreen (ST77XX_BLACK) ፤ display.setCursor (0, 0); display.println ("WiFi ተቋርጧል"); setupWiFi (); መዘግየት (1000); } // ((socket.connected ()) {display.fillScreen (ST77XX_BLACK) ከሆነ ሶኬትን ያድርጉ። display.setCursor (0, 0); display.println ("ሶኬት ተቋርጧል"); connectToServer (); መዘግየት (3000); display.fillScreen (ST77XX_BLACK); }}
checkRSSI
ባዶ checkRSSI () {// Verifica o RSSI rssi = WiFi. RSSI (); // ሊምፓ ወይም ቴክቶ ኢስትራ ወይም RSSI ምንም ማሳያ የለም ጽሑፍ (); display.setCursor (0, 0); display.print ("RSSI:" + String (rssi)); // (rssiHistory.size () == (DISPLAY_WIDTH - 2*PLOT_MARGIN)/2) {rssiHistory.erase (rssiHistory.begin ()))። } // Adiciona የመጨረሻ ታሪክ የለውም (mais recente) rssiHistory.push_back (rssi); }
ሴራ
ባዶ ዕቅድ () {// Coloca no ponto inicial e limpamos o gráfico currentX = PLOT_MARGIN; display.fillRect (PLOT_MARGIN ፣ 2*PLOT_MARGIN ፣ DISPLAY_WIDTH - 2*PLOT_MARGIN ፣ DISPLAY_HEIGHT - 2*PLOT_MARGIN ፣ ST77XX_BLACK); // ፓራ ካዳ በጀግንነት ሂስቶሪኮ ፋሲሞስ ወይም ካላኩሎ ታማንሆ ዳ ባራ ዶ ግራካፎ ፣ desenhamos e avançamos para o próximo for (int i = 0; i -120? Map (rssiHistory , -120, 0, 0, PLOT_SIZE): 0; display.drawFastVLine (currentX ፣ DISPLAY_HEIGHT - እሴት ፣ እሴት ፣ PLOT_COLOR) ፤ currentX += 2;}}
ላክቶቨር
ባዶነት sendToServer () {// Se estiver conectado com o server (socket.connected ()) {// Envia um hello com um contador, mostra no display e incrementa o contadora string string መላክ = "Hello" + String (count); display.setCursor (0, 10); display.println ("መላክ:" + መላክ); socket.println (መላክ); socket.print (ሕብረቁምፊ (rssi)); ቆጠራ ++; }}
ከአገልጋይ ያንብቡ
ባዶ ንባብ ከ Server () {// Espera até o server enviar algo ou desconectar ሳለ (socket.connected () &&! socket.available ()) {መዘግየት (100); } // ካለ (socket.available ()) {// Faz a leitura ፣ የመጨረሻውን አስወግድ ምንም ማሳያ አልደረሰም = socket.readStringUntil ('\ n'); ተቀብሏል። display.println ("ተቀብሏል:" + ተቀብሏል); }}
ClearText እና መዝገብ
ባዶ ባዶ ጽሑፍ () {// Limpa a área com o texto da mensagem vinda do cliente display.fillRect (0, 0, DISPLAY_WIDTH ፣ 2*PLOT_MARGIN ፣ ST77XX_BLACK); } ባዶ ባዶ መዝገብ () {// Abrimos o arquivo para escrevermos no final dele ፋይል ፋይል = SD.open (FILE_PATH ፣ FILE_APPEND) ፤ // Se não conseguimos abrir o arquivo mostramos uma mensagem de erro if (! ፋይል) {Serial.println ("ፋይል መክፈት አልተሳካም"); መመለስ; } // Gravamos uma linha com o tempo desde o boot, o rssi atual e a mensagem recebida String data = String (millis ()) + ";" + ሕብረቁምፊ (rssi) + ";" + ተቀበለ; file.println (ውሂብ); file.close (); }
ደረጃ 10 - ፋይሎች
ፋይሎቹን ያውርዱ ፦
ፒዲኤፍ
INO
የሚመከር:
HC-12 የረጅም ርቀት ርቀት የአየር ሁኔታ ጣቢያ እና የዲኤችቲ ዳሳሾች -9 ደረጃዎች
HC-12 Long Range Distance Weather Station እና DHT sensors: በዚህ መማሪያ ውስጥ ሁለት dht ዳሳሾችን ፣ የ HC12 ሞጁሎችን እና የ I2C ኤልሲዲ ማሳያ በመጠቀም የርቀት ረጅም የአየር ሁኔታ ጣቢያ እንዴት መሥራት እንደሚቻል እንማራለን። ቪዲዮውን ይመልከቱ
Raspberry Pi 4 Retropie ቡት ከውጭ የ SD ካርድ ከሌለ 5 ደረጃዎች
Raspberry Pi 4 Retropie Boot ከውጭ የ SD ካርድ ከሌለ ~ github.com/engrpanda
DIY ረጅም ርቀት ምርጥ የጓደኛ መብራቶች 4 ደረጃዎች (ከስዕሎች ጋር)
DIY ረጅም ርቀት ምርጥ ጓደኛ መብራቶች - ‹ምርጥ ጓደኛ› በመባል የሚታወቁ የረጅም ርቀት የተመሳሰሉ መብራቶችን ሠራሁ። መብራቶች። ያ ማለት እነሱ ከሌላው መብራት የአሁኑ ቀለም ጋር ተመሳስለው ይቀመጣሉ ማለት ነው። ስለዚህ አንድ አምፖል አረንጓዴን ቢቀይሩ ፣ ሌላኛው መብራት ወዲያውኑ ይቃጠላል
አርዱኑኖ - ሰርቨር ሞተርን ከውጭ ኃይል ጋር እንዴት መጠቀም እንደሚቻል - 5 ደረጃዎች
አርዱኒኖ - ሰርቨር ሞተርን ከውጭ ኃይል ጋር እንዴት መጠቀም እንደሚቻል - ይህ አስተማሪው የእኔ " አርዱinoኖ -ሰርቪ ሞተርን ከውጭ ኃይል ጋር እንዴት መጠቀም እንደሚቻል የተፃፈ ነው። በቅርቡ የሰቀልኩት የ YouTube ቪዲዮ። እርስዎ እንዲፈትሹት አጥብቄ እመክራለሁ። የዩቲዩብ ቻናልን ይጎብኙ
የ Wifi Signal Strainer (WokFi) ረጅም ርቀት 3 ደረጃዎች (ከስዕሎች ጋር)
የ Wifi Signal Strainer (WokFi) ረጅም ርቀት - በዚህ አስተማሪ ውስጥ አንድ የተለመደ የ WiFi Thumbdrive ወደ የበሰለ የ wifi ማራዘሚያ እሰራለሁ! 'ፓራቦሊክ የእስያ ምግብ ማብሰያ (ዱፕሊንግ) ማጣሪያ ለዚህ ፕሮጀክት ፍጹም እጩ ነው። 20 ተጨማሪ መዳረሻን ማንሳት ችያለሁ። በከተማው ውስጥ ነጥቦችን እና ከአንድ አውታረ መረብ ጋር ይገናኙ