विषयसूची:

ESP32 बाहरी लंबी दूरी के एंटीना के साथ: 10 कदम
ESP32 बाहरी लंबी दूरी के एंटीना के साथ: 10 कदम
Anonim
Image
Image
एपी को व्रोवर के साथ माउंट करना
एपी को व्रोवर के साथ माउंट करना

आज का विषय बाहरी एंटीना के साथ ESP32 के साथ दूरी परीक्षण से संबंधित है। आइए आज दो मॉड्यूल का उपयोग करें: एस्प्रेसिफ और टीटीजीओ से। आइए फिर इन दो ESP32 एंटेना के बीच RSSI की जाँच करें, इतिहास से एक ग्राफ़ उत्पन्न करें, और एक.csv फ़ाइल में मानों का एक लॉग लिखें।

तब हमारे पास AP के रूप में ESP32 व्रोवर और स्टेशन के रूप में TTGO का ESP32 है। मैंने एक एंटेना का उपयोग किया जो मैंने थोड़े बड़े टीपी-लिंक से लिया और एक अन्य राउटर जिसे 9dbm एंटीना के रूप में जाना जाता है। मैंने दोनों में कोई अंतर नहीं देखा।

अंत में, दो माइक्रोकंट्रोलर सॉकेट के माध्यम से जुड़ते हैं और, प्रत्येक डेटा पैकेट भेजने के साथ, हम एक डिस्प्ले पर बार के साथ एक ग्राफ प्रिंट करते हैं जो डीबीएम के अनुपात को दर्शाता है।

चरण 1: एपी को व्रोवर के साथ माउंट करना

चरण 2: टीटीजीओ के साथ स्टेशन की असेंबली

टीटीजीओ के साथ स्टेशन की सभा
टीटीजीओ के साथ स्टेशन की सभा

चरण 3: परिणाम

नतीजा
नतीजा
नतीजा
नतीजा
नतीजा
नतीजा

2x बाहरी एंटेना के साथ अधिकतम दूरी: 315 मीटर

बाहरी और आंतरिक एंटीना के साथ अधिकतम दूरी: 157 मीटर

चरण 4: पुरालेख LOG. CSV

पुरालेख लॉग.सीएसवी
पुरालेख लॉग.सीएसवी
पुरालेख लॉग.सीएसवी
पुरालेख लॉग.सीएसवी

मैंने एक एसडी कार्ड पर डेटा रिकॉर्ड किया, जिसमें डेटा मिलिस, डीबीएम और पैकेज स्ट्रिंग में था।

चरण 5: एडफ्रूट जीएफएक्स लाइब्रेरी

एडफ्रूट जीएफएक्स लाइब्रेरी
एडफ्रूट जीएफएक्स लाइब्रेरी

Arduino IDE में, स्केच पर जाएं-> लाइब्रेरी शामिल करें-> लाइब्रेरी प्रबंधित करें …

एडफ्रूट जीएफएक्स लाइब्रेरी स्थापित करें

चरण 6: एडफ्रूट ST7735 लाइब्रेरी

एडफ्रूट ST7735 लाइब्रेरी
एडफ्रूट ST7735 लाइब्रेरी

Arduino IDE में, स्केच पर जाएं-> लाइब्रेरी शामिल करें-> लाइब्रेरी प्रबंधित करें …

एडफ्रूट ST7735. स्थापित करें

चरण 7: कार्ड को कॉन्फ़िगर करना

कार्डों को कॉन्फ़िगर करना
कार्डों को कॉन्फ़िगर करना
कार्डों को कॉन्फ़िगर करना
कार्डों को कॉन्फ़िगर करना

मतभेदों के लिए बने रहें:

चरण 8: AP.ino

हमने आवश्यक पुस्तकालयों को शामिल किया है और कुछ मापदंडों को परिभाषित किया है।

#शामिल करें #शामिल करें #शामिल करें #शामिल करें #शामिल करें // ईएसपी क्रिया को फिर से करें। कोई भी स्टेशन नहीं है जो #परिभाषित करें #SSID "RSSI_Test" # परिभाषित पासवर्ड "87654321" // टेम्पो डे टाइमआउट के लिए एक कॉनेक्सो पेडिडा पर विचार करें # परिभाषित टाइमआउट 2000 // लार्गुरा ई अल्टुरा प्रदर्शित करें # डिफाइन करें DISPLAY_WIDTH 160 # डिफाइन करें DISPLAY_HEIGHT 128 // डिफाइन करें कोर, मार्जम ए तमनहो दो ग्रैफिको #परिभाषित करें PLOT_COLOR ST77XX_GREEN #define PLOT_MARGIN 20 #define PLOT_SIZE (DISPLAY_HEIGHT - 2*PLOT_MARGIN) // Arquivo de log no SD #define FILE_PATH "/log.csv"

हम अन्य चरों के बीच पिन को परिभाषित करते हैं

// पिनो डिस्प्ले करते हैं#डिस्प्ले_डीसी 12 को परिभाषित करते हैं ओएस पिनोस मोसी, मिसो ई स्के साओ ओएस नेटिवोस (23, 19 और 18 सम्मान) #define SDCARD_CS 15 //Pixel onde o gráfico Começa क्षैतिज int currentX = PLOT_MARGIN; //Objeto प्रतिक्रिया प्रदर्शन Adafruit_ST7735 प्रदर्शन = Adafruit_ST7735(DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST); //Criamos um सर्वर (क्वाल्कर पोर्टा वेलिडा सर्व कॉन्टेंटो क्यू ओ क्लाइंट एक मेस्मा पोर्टा का उपयोग करता है) वाईफाईसेवर सर्वर (80); // वेरिअल पैरा आर्मज़ेनर ओ क्लाइंट (कोई कैसो ओ ईएसपी 32 एम मोडो स्टेशन नहीं) कनेक्टेडो वाईफाई क्लाइंट क्लाइंट; // स्ट्रिंग क्यू रिसेबेमोस क्लाइंट करते हैं स्ट्रिंग प्राप्त; // इस ESP32 लंबे rssi = 0 के लिए RSSI enviado पेलो क्लाइंट; // फ़ैज़ ओ कंट्रोले डो टेम्पोरिज़ाडोर (इंटररुप्सो पोर टेम्पो) hw_timer_t * टाइमर = NULL; // उपयोगिता पैरा गार्डर ओएस अल्टीमोस एसटीडी:: वेक्टर rssiHistory;

सेट अप

शून्य सेटअप () {Serial.begin (115200); सेटअप डिस्प्ले (); //Inicializa या SD if (!SD.begin(SDCARD_CS)) {display.println("Erro ao inicializar lib SD!"); } //Cria a rede WiFi, inicializa o server e espera o cliente conectar setupWiFi(); सर्वर। शुरू (); प्रतीक्षाफोर क्लाइंट (); // Espera 3 segundos, limpa a tela e inicializa o Watchdog देरी(3000); डिस्प्ले.फिलस्क्रीन (ST77XX_BLACK); डिस्प्ले.सेट कर्सर (0, 0); सेटअपवॉचडॉग (); }

सेटअप वाईफाई

//Cria um Access Point e configura o IPvoid setupWiFi() {display.println ("क्रिएटिंग सॉफ्टएप" + स्ट्रिंग (SSID)); वाईफाई.डिस्कनेक्ट (); वाईफाई.मोड (WIFI_AP); WiFi.softAPConfig(IPAddress(192, 168, 0, 1), IPAddress(192, 168, 0, 1), IPAddress(255, 255, 255, 0)); वाईफाई.सॉफ्टएप (एसएसआईडी, पासवर्ड); display.println ("सॉफ्टएपी" + स्ट्रिंग (एसएसआईडी) + "बनाया गया!"); }

सेटअप प्रदर्शन

// इनशियलाइज़ा ओ डिस्प्ले, मुदा ए ओरिएंटाकाओ ई लिम्पा ए टेलावॉइड सेटअपडिस्प्ले () {//इनिसियलिज़ा ओ डिस्प्ले डिस्प्ले.इनिटआर (INITR_BLACKTAB); // रोटासिओना ओ कॉन्टेडो मोस्ट्राडो डिस्प्ले।सेटरोटेशन(3); // पिंटा ए टेला डे प्रीटो डिस्प्ले।फिलस्क्रीन (ST77XX_BLACK); }

WaitForClient

शून्य प्रतीक्षाफॉरक्लाइंट () { display.println ("क्लाइंट की प्रतीक्षा कर रहा है"); // अगुआर्डा ओ क्लाइंट कनेक्टर जबकि (! (क्लाइंट = सर्वर। उपलब्ध ())) {डिस्प्ले.प्रिंट ("।"); देरी (500); } display.println ("क्लाइंट कनेक्टेड"); // टेम्पो मैक्सिमो क्यू ओ क्लाइंट डे डेमोरर पैरा रिस्पॉन्डर // एंट्स डे डिज़र्मोस क्यू ए कॉन्क्सो फॉई पेर्डिडा क्लाइंट।सेटटाइमआउट (टाइमआउट); }

IRAM_ATTR रीसेटमॉड्यूल और सेटअपवॉचडॉग

// função que o temporizador irá chamar, para reiniciar o ESP32void IRAM_ATTR resetModule(){ ets_printf("(watchdog) reiniciar\n"); esp_restart_noos (); // रीनिशिया ओ चिप} शून्य सेटअप वॉचडॉग () {टाइमर = टाइमरबीगिन (0, 80, सच); // टाइमरआईडी 0, डिव 80 // टाइमर, कॉलबैक, इंटररुपकाओ डे बोर्डा टाइमरअटैचइंटरप्ट (टाइमर, और रीसेट मॉड्यूल, सच); // टाइमर, टेम्पो (हमें), दोहराव टाइमर अलार्मवाइट (टाइमर, 10000000, सच); टाइमर अलार्म सक्षम (टाइमर); // हैबिलिटा ए इंटररुपकाओ }

कुंडली

शून्य लूप () {टाइमरराइट (टाइमर, 0); // रीसेट या टेम्पोरिज़ाडोर (एलिमेंटा ओ वॉचडॉग) चेककनेक्शन (); // चेक से possui conexão com या क्लाइंट readFromClient (); // lê ओएस डैडो क्लाइंट सेंड टू क्लाइंट (); // क्लाइंट प्लॉट के लिए पुष्टि करें (); // अधिकांश ओ ग्रैफिको डे हिस्टोरिको डे आरएसएसआई लॉग (); // सलवा उम लॉग नो कार्टो एसडी}

चेककनेक्शन

शून्य चेककनेक्शन () {// से ओ क्लाइंट नो एस्टीवर कनेक्टैडो अगर (! क्लाइंट। कनेक्टेड ()) {// लिम्पा ए टेला ई एस्पेरा पेलो क्लाइंट डिस्प्ले। फिलस्क्रीन (एसटी 77XX_ब्लैक); display.println ("क्लाइंट डिस्कनेक्ट हो गया"); प्रतीक्षाफोर क्लाइंट (); } }

रीडफ्रॉमक्लाइंट

शून्य रीडफ्रॉम क्लाइंट () {// एस्पेरा एट ओ क्लाइंट एनवीयर एल्गो कहां डिस्कोनेक्टर जबकि (क्लाइंट.कनेक्टेड () &&! क्लाइंट.उपलब्ध ()) {देरी (१००);] //Lê o texto que o cliente enviou get.remove(received.length()-1); // निकालें o \n अंतिम rssi = client.parseInt (); // Lê o rssi que o cliente enviou clearText (); // लिम्पा या टेक्स्टो डिस्प्ले.सेट कर्सर (0, 0); // मूव ओ कर्सर डू टेक्स्टो पैरा ओ कमको डू डिस्प्ले डिस्प्ले।प्रिंट्लन ("आरएसएसआई:" + स्ट्रिंग (आरएसआई)); // मोस्ट्रा या आरएसएसआई कोई डिस्प्ले डिस्प्ले नहीं। प्रिंट्लन ("प्राप्त:" + प्राप्त); // मोस्ट्रा ए मेन्सेजम रिसीबिडा डू क्लाइंट // से ए क्वांटिडेड डे बारस डो ग्रैफिको पासौ डो लिमिट अपागैमोस ओ रजिस्ट्रार माईस एंटीगो if(rssiHistory.size() == (DISPLAY_WIDTH - 2*PLOT_MARGIN)/2) { rssiHistory.erase(rssiHistory ।शुरू()); } // एडिसियोना नो फाइनल डू हिस्टोरिको (मैस रीसेंट) rssiHistory.push_back(rssi); } }

सेंड टू क्लाइंट

शून्य भेजने के लिए क्लाइंट () {// से ओ क्लाइंट एस्टीवर कनेक्टेडो एनवियामोस डी वोल्टा ए मेन्सेजम कॉम उम ओके इफ (क्लाइंट.कनेक्टेड ()) {स्ट्रिंग भेजना = प्राप्त + "ओके"; क्लाइंट.प्रिंट्लन (भेजना); } }

भूखंड

शून्य प्लॉट () {// कोलोका नो पोंटो इनिशियल ई लिम्पामोस ओ ग्रैफिको करंटएक्स = PLOT_MARGIN; display.fillRect(PLOT_MARGIN, 2*PLOT_MARGIN, DISPLAY_WIDTH - 2*PLOT_MARGIN, DISPLAY_HEIGHT - 2*PLOT_MARGIN, ST77XX_BLACK); // पैरा कैडा वेलोर डो हिस्टोरिको फ़ेज़ेमोस ओ कैलकुलो दो तमनहो दा बर्रा डो ग्रैफ़िको, डेसेनहैमोस ए एवांकामोस पैरा ओ प्रॉक्सिमो फॉर (इंट आई = 0; आई -120? मैप (आरएसएसआई हिस्ट्री , -120, 0, 0, PLOT_SIZE): 0; display.drawFastVLine(currentX, DISPLAY_HEIGHT - मान, मान, PLOT_COLOR); currentX += 2; } }

स्पष्ट पाठ और लॉग

शून्य स्पष्ट पाठ () {// लिम्पा एक क्षेत्र कॉम ओ टेक्स्टो दा मेन्सेजम विंदा दो क्लाइंट डिस्प्ले।फिलरेक्ट (0, 0, DISPLAY_WIDTH, 2 * PLOT_MARGIN, ST77XX_BLACK); } शून्य लॉग () {//Abrimos या arquivo para escrevermos no final dele file file = SD.open(FILE_PATH, FILE_APPEND); // से não conseguimos abrir o arquivo mostramos uma mensagem de erro if(!file) { Serial.println ("फ़ाइल खोलने में विफल"); वापसी; } //Gravamos uma linha com o tempo desde o boot, o rssi atual e a mensagem recebida String data = String(millis()) + ";" + स्ट्रिंग (आरएसआई) + ";" + प्राप्त; file.println (डेटा); फ़ाइल। बंद करें (); }

चरण 9: Station.ino

हमने आवश्यक पुस्तकालयों को शामिल किया है और कुछ मापदंडों को परिभाषित किया है।

#शामिल करें #शामिल करें #शामिल करें #शामिल करें क्रिआडो पेलो एपी # परिभाषित एसएसआईडी "आरएसएसआई_टेस्ट" # परिभाषित पासवर्ड "87654321" # परिभाषित करें होस्ट "192.168.0.1" // आईपी क्यू फोई कॉन्फिगुराडो नो सेटअप डू एपी # डिफाइन पोर्ट 80 // पोर्टा सेवर करें। क्वालकर पोर्टा मान्य कॉन्टेंटो क्यू सेजा इगुअल नोस डोइस आर्किवोस // टेम्पो डे टाइमआउट पैरा विचार ए कॉन्क्सो पेडिडा # डिफाइन टाइमआउट 2000 // लार्गुरा ई अल्टुरा डू डिस्प्ले # डिफाइन DISPLAY_WIDTH 160 #define DISPLAY_HEIGHT 128 // कॉन्फिगुरा, मार्ज ई कोर्टामैन #define PLOT_COLOR ST77XX_GREEN #define PLOT_MARGIN 20 #define PLOT_SIZE (DISPLAY_HEIGHT - 2*PLOT_MARGIN) // Arquivo de log no SD #define FILE_PATH "/log.csv"

हम उन सेटिंग्स को परिभाषित करते हैं जिनमें डिस्प्ले और एसडी कार्ड शामिल हैं।

लंबी गिनती = 0; // कोंटाडोर डी मेन्साजेन्स एनवियाडासलोंग आरएसएसआई = 0; // आरएसएसआई कैलकुडो स्ट्रिंग प्राप्त हुआ; // मेन्सेजम डे कन्फर्माकाओ क्यू ओ एपी नो एनविया // पिक्सल ऑनडे ओ ग्रैफिको कॉमेका हॉरिजॉन्टेमेंट इंट करंटएक्स = PLOT_MARGIN; // सर्वर वाईफाई क्लाइंट सॉकेट के लिए उपयोग करें; #define DISPLAY_DC 12 //A0 #define DISPLAY_CS 13 //CS #define DISPLAY_MOSI 14 //SDA #define DISPLAY_CLK 27 //SCK #define DISPLAY_RST 0 //Pino do SDCard. ओएस पिनोस मोसी, मिसो ई एसके साओ ओएस नेटिवोस (23, 19 और 18 सम्मान) #डिफाइन एसडीकार्ड_सीएस 15 // ऑब्जेटो रिस्पॉन्सवेल पेलो डिस्प्ले एडफ्रूट_एसटी7735 डिस्प्ले = एडफ्रूट_एसटी7735(DISPLAY_CS, DISPLAY_DC, DISPLAY_CLAY, DISPLAY_MOSI, DISPLAY_MOSI, DISPLAY_MOSI, DISPLAY_MOSI); hw_timer_t * टाइमर = NULL; //faz o controle do temporizador (interrupção por tempo) //Utilizado para Guardar os ultimos std::vector rssiHistory;

सेट अप

शून्य सेटअप () {सेटअप डिस्प्ले (); //Inicializa या SD if (!SD.begin(SDCARD_CS)) {display.println("Erro ao inicializar lib SD!"); } // कोनेक्टा नो एक्सेस प्वाइंट क्रिआडो पेलो आउट्रो ईएसपी३२ ई कनेक्टा एओ सर्वर सेटअपवाईफाई (); सर्वर से कनेक्ट करें(); // Espera 3 segundos, limpa a tela e inicializa o Watchdog देरी(3000); डिस्प्ले.फिलस्क्रीन (ST77XX_BLACK); डिस्प्ले.सेट कर्सर (0, 0); सेटअपवॉचडॉग (); }

सेटअप प्रदर्शन

// इनशियलाइज़ा ओ डिस्प्ले, मुदा ए ओरिएंटाकाओ ई लिम्पा ए टेलावॉइड सेटअपडिस्प्ले () {//इनिसियलिज़ा ओ डिस्प्ले डिस्प्ले.इनिटआर (INITR_BLACKTAB); // रोटासिओना ओ कॉन्टेúडो मोस्ट्राडो डिस्प्ले।सेटरोटेशन(1); // पिंटा ए टेल डे ब्रैंको डिस्प्ले। फिलस्क्रीन (ST77XX_BLACK); display.setTextColor (ST77XX_WHITE); }

सेटअपवाईफाई

// कनेक्टा एओ एपी शून्य सेटअप वाईफाई () {वाईफाई.डिस्कनेक्ट (); वाईफाई.मोड (वाईफाई_एसटीए); वाईफाई.बेगिन (एसएसआईडी, पासवर्ड); display.println ("कनेक्ट कर रहा है" + स्ट्रिंग (एसएसआईडी)); // Enquanto não estiver conectado à वाईफाई को फिर से करें जबकि (WiFi.status()!= WL_CONNECTED) {देरी (500); डिस्प्ले.प्रिंट ("।"); } डिस्प्ले.प्रिंट्लन (""); डिस्प्ले.प्रिंट ("कनेक्टेड"); डिस्प्ले.प्रिंट्लन (एसएसआईडी); }

सर्वर से कनेक्ट करें

void ConnectToServer(){ display.println ("सॉकेट कनेक्शन की कोशिश कर रहा है"); // Espera a conexão com o सर्वर जबकि(!socket.connect(HOST, PORT)) {display.print("."); देरी (500); } डिस्प्ले.प्रिंट्लन (); display.println ("कनेक्टेड!"); // टेम्पो मैक्सिमो क्यू ओ क्लाइंट डे डेमोरर पैरा रेस्पॉन्डर // एंटिस डी डिजरमॉस क्यू ए कॉन्क्सो फोई पेर्डिडा सॉकेट।सेटटाइमआउट (टाइमआउट); }

IRAM_ATTR रीसेटमॉड्यूल और सेटअपवॉचडॉग

// função que o temporizador irá chamar, para reiniciar o ESP32void IRAM_ATTR resetModule(){ ets_printf("(watchdog) reiniciar\n"); esp_restart_noos (); // रीनिसिया ओ चिप} शून्य सेटअप वॉचडॉग () {टाइमर = टाइमरबीगिन (0, 80, सच); // टाइमरआईडी 0, डिव 80 // टाइमर, कॉलबैक, इंटररुपकाओ डे बोर्डा टाइमरअटैचइंटरप्ट (टाइमर, और रीसेट मॉड्यूल, सच); // टाइमर, टेम्पो (हमें), दोहराव टाइमर अलार्मवाइट (टाइमर, 10000000, सच); टाइमर अलार्म सक्षम (टाइमर); // हैबिलिटा ए इंटररुपकाओ }

कुंडली

शून्य लूप () {टाइमरराइट (टाइमर, 0); // रीसेट या टेम्पोरिज़ाडोर (एलिमेंटा ओ वॉचडॉग) चेककनेक्शन (); // चेक से possui conexão com या सर्वर checkRSSI (); // सत्यापन या आरएसएसआई प्लॉट (); // अधिकांश या ग्रैफिको डे हिस्टोरिको डे आरएसएसआई सेंडटॉसेवर (); // सर्वर से पढ़ने के लिए सर्वर के साथ संपर्क करें (); // एक पुष्टिकरण सर्वर लॉग करें (); // सलवा उम लॉग नो कार्ट, एसडी डिले (1000); // एस्पेरा उम सेगुंडो }

चेककनेक्शन

void checkConnection(){//verifica a conexão com o AP if(WiFi.status() != WL_CONNECTED) { display.fillScreen(ST77XX_BLACK); डिस्प्ले.सेट कर्सर (0, 0); display.println ("वाईफाई डिस्कनेक्ट किया गया"); सेटअपवाईफाई (); देरी (1000); } // सत्यापित करें और सॉकेट करें यदि(!socket.connected()) {display.fillScreen(ST77XX_BLACK); डिस्प्ले.सेट कर्सर (0, 0); display.println ("सॉकेट डिस्कनेक्ट किया गया"); सर्वर से कनेक्ट करें(); देरी (3000); डिस्प्ले.फिलस्क्रीन (ST77XX_BLACK); } }

चेक आरएसएसआई

शून्य चेकआरएसएसआई () {// सत्यापन या आरएसएसआई आरएसएसआई = वाईफाई। आरएसएसआई (); // लिम्पा ओ टेक्स्टो ई मोस्ट्रा ओ आरएसएसआई नो डिस्प्ले क्लियरटेक्स्ट (); डिस्प्ले.सेट कर्सर (0, 0); डिस्प्ले.प्रिंट ("RSSI:" + स्ट्रिंग (rssi)); // अगर (rssiHistory.size() == (DISPLAY_WIDTH - 2*PLOT_MARGIN)/2) { rssiHistory.erase(rssiHistory.begin()); } //Adiciona no final do histórico (Mais हाल ही में) rssiHistory.push_back(rssi); }

भूखंड

शून्य प्लॉट () {// कोलोका नो पोंटो इनिशियल ई लिम्पामोस ओ ग्रैफिको करंटएक्स = PLOT_MARGIN; display.fillRect(PLOT_MARGIN, 2*PLOT_MARGIN, DISPLAY_WIDTH - 2*PLOT_MARGIN, DISPLAY_HEIGHT - 2*PLOT_MARGIN, ST77XX_BLACK); // पैरा कैडा वेलोर डो हिस्टोरिको फ़ेज़ेमोस ओ कैलकुलो दो तमनहो दा बर्रा डो ग्रैफ़िको, डेसेनहैमोस ए अवनकामोस पैरा ओ प्रॉक्सिमो फॉर (इंट आई = 0; आई -120? मैप (आरएसएसआई हिस्ट्री , -120, 0, 0, PLOT_SIZE): 0; display.drawFastVLine(currentX, DISPLAY_HEIGHT - मान, मान, PLOT_COLOR); currentX += 2; } }

भेजने के लिए सर्वर

शून्य सेंड टूसेवर () {// से एस्टिवर कनेक्टेडो कॉम ओ सर्वर अगर (सॉकेट। कनेक्टेड ()) {// एनविया उम हैलो कॉम उम कंटैडोर, मोस्ट्रा नो डिस्प्ले ई इंक्रीमेंट ओ कंटैडोर स्ट्रिंग भेजना = "हैलो" + स्ट्रिंग (गिनती); डिस्प्ले.सेट कर्सर (0, 10); display.println ("भेजना:" + भेजना); सॉकेट.प्रिंट्लन (भेजना); सॉकेट.प्रिंट (स्ट्रिंग (आरएसआई)); गिनती++; } }

रीडफ्रॉमसर्वर

शून्य रीडफ्रॉमसेवर () {// एस्पेरा एट ओ सर्वर एनवीयर एल्गो कहां डिस्कोनेक्टर जबकि (सॉकेट। कनेक्टेड () &&! सॉकेट। उपलब्ध ()) {देरी (१००);] प्राप्त। निकालें (प्राप्त। लंबाई () -1); display.println ("प्राप्त:" + प्राप्त); } }

स्पष्ट पाठ और लॉग

शून्य स्पष्ट पाठ () {// लिम्पा ए एरिया कॉम ओ टेक्स्टो दा मेन्सेजम विंदा डो क्लाइंट डिस्प्ले।फिलरेक्ट (0, 0, DISPLAY_WIDTH, 2 * PLOT_MARGIN, ST77XX_BLACK); } शून्य लॉग () {//Abrimos o arquivo para escrevermos no final dele file file = SD.open(FILE_PATH, FILE_APPEND); // से não conseguimos abrir o arquivo mostramos uma mensagem de erro if(!file) { Serial.println ("फ़ाइल खोलने में विफल"); वापसी; } //Gravamos uma linha com o tempo desde o boot, o rssi atual e a mensagem recebida String data = String(millis()) + ";" + स्ट्रिंग (आरएसआई) + ";" + प्राप्त; file.println (डेटा); फ़ाइल। बंद करें (); }

चरण 10: फ़ाइलें

फ़ाइलें डाउनलोड करें:

पीडीएफ

मैं नहीं

सिफारिश की: