Სარჩევი:
- ნაბიჯი 1: შეაერთეთ თქვენი სენსორები
- ნაბიჯი 2: კოდი
- ნაბიჯი 3: Ibm Cloud
- ნაბიჯი 4: კვანძი-წითელი
- ნაბიჯი 5: Node-RED Setup: Light
- ნაბიჯი 6: Node-RED დაყენება: ტემპერატურა
- ნაბიჯი 7: Node-RED დაყენება: ტენიანობა
- ნაბიჯი 8: Node-RED დაყენება: ტენიანობა
- ნაბიჯი 9: თქვენ დასრულებული ხართ
ვიდეო: PInt@t10n: Smart Plant მონიტორინგის სისტემა: 9 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
ეს პროექტი შეიქმნა როგორც ibm iot ღრუბლის გამოცდა. ჩვენ ვიყენებთ esp-8266 მონაცემების გაგზავნას და მიღებას ibm ღრუბელში და მისგან. Esp და ibm ღრუბელს შორის კავშირი ხდება MQTT საშუალებით.
ყველა მონაცემის დასამუშავებლად და მომხმარებლის ინტერფეისის წარსადგენად ჩვენ ვიყენებთ წითელ კვანძს. ძალიან მეგობრულია დამწყებთათვის.
დასაწყებად გჭირდებათ:
- Esp-8266
- dht 11/22 ტემპერატურა/ტენიანობის სენსორი
- ფოტომგრძნობიარე დიოდი (სინათლის გაზომვა)
- ზუზუნი
- მიწის ტენიანობის სენსორი
- ibm ღრუბლოვანი ანგარიში
ნაბიჯი 1: შეაერთეთ თქვენი სენსორები
როგორც უკვე აღვნიშნეთ, ჩვენ ვაპირებთ გამოვიყენოთ esp8266 სენსორის მონაცემების წასაკითხად და გასაგზავნად. ამ გაკვეთილისთვის ჩვენ ვივარაუდოთ, რომ თქვენ იცით როგორ დაუკავშიროთ თქვენი სენსორები თქვენს მიკრო კონტროლერს. თქვენ ასევე უნდა იცოდეთ როგორ ატვირთოთ კოდი esp8266– ზე.
ჩვენს esp მოდელს აქვს მხოლოდ ერთი ანალოგური პორტი, ასე რომ ჩვენ შევარჩიეთ ანალოგური ინფორმაციის მიღება ჩვენი სინათლის სენსორიდან, რადგან შემდეგ ჩვენ შეგვიძლია თვალყური ვადევნოთ რამდენ შუქს იღებს მცენარე.
ყველა სხვა სენსორი დაკავშირებულია ციფრულად. ჩვენი DHT11 სენსორი აგზავნის მონაცემებს ციფრულად და ჩვენ ვიყენებთ dht ბიბლიოთეკას სენსორების მონაცემების ინტერპრეტაციისთვის.
ზემოთ თქვენ შეგიძლიათ ნახოთ სქემის დიაგრამა ჩვენს მიერ გამოყენებული სენსორებისთვის. მაგრამ გთხოვთ გახსოვდეთ, რომ სენსორები, რომლებსაც ჩვენ ვიყენებდით, ხშირად მოყვება მოდული, ასე რომ თქვენ შეგიძლიათ მარტივად დაუკავშიროთ იგი თქვენს მიკრო კონტროლერს ყოველგვარი ზედმეტი წინააღმდეგობის გარეშე, რომელიც ჩვენ შევიტანეთ დიაგრამაში.
ნაბიჯი 2: კოდი
ეს არის არდუინოს ესკიზი, რომელიც ჩვენ გამოვიყენეთ. თქვენ შეგიძლიათ გაიგოთ როგორ მუშაობს კოდი თუ წაიკითხავთ კომენტარებს.
#მოიცავს ArduinoJson.h #მოიცავს DHT_U.h #მოიცავს DHT.h #მოიცავს ESP8266WiFi.h #მოიცავს ESP8266WiFiMulti.h #მოიცავს PubSubClient.h
#განსაზღვრეთ STASSID "ucll-projectweek-IoT" #განსაზღვრეთ STAPSK "Foo4aiHa" #განსაზღვრეთ DHTPin 5 #განსაზღვრეთ ტენიანობა Pin 4 #განსაზღვრეთ DHTType DHT11 DHT dht (DHTPin, DHTType); ESP8266WiFiMulti WiFiMulti; float temp = 0; float ტენიანობა = 0; ლოგიკური ტენიანობა = ყალბი; int სინათლე = 0; const char* ssid = STASSID; const char* პაროლი = STAPSK; const char* mqtt_server = "cmfwqk.messaging.internetofthings.ibmcloud.com"; WiFiClient espClient; PubSubClient კლიენტი (espClient); ხანგრძლივი lastMsg = 0; char msg [50]; int მნიშვნელობა = 0; #განსაზღვრეთ MQTT_HOST "cmfwqk.messaging.internetofthings.ibmcloud.com" #განსაზღვრეთ MQTT_PORT 1883 #განსაზღვრეთ MQTT_DEVICEID "d: cmfwqk: ESP8266: ESP" #define MQTT_USER "MIC #" MICT " #" iot-2/evt/status/fmt/json " #განსაზღვრეთ MQTT_TOPIC_DISPLAY" iot-2/cmd/update/fmt/json "#include" pitches.h "// შენიშვნები მელოდიაში: // შენიშვნის ხანგრძლივობა: 4 = მეოთხედი შენიშვნა, 8 = მერვე შენიშვნა და სხვა: int shortTone = 80; int longTone = 200; int standardDelay = 50; int delayBetweenBars = 50; void setup_wifi () {დაგვიანებით (10); // ჩვენ ვიწყებთ WiFi ქსელთან დაკავშირებით Serial.println (); Serial.print ("დაკავშირება"); Serial.println (ssid); WiFi.begin (ssid, პაროლი); while (WiFi.status ()! = WL_CONNECTED) {დაგვიანებით (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi დაკავშირებულია"); Serial.println ("IP მისამართი:"); Serial.println (WiFi.localIP ()); } void callback (char* თემა, byte* payload, unsigned int length) {Serial.print ("შეტყობინება მოვიდა ["); Serial.print (თემა); Serial.print ("]"); for (int i = 0; i <სიგრძე; i ++) {Serial.print ((char) payload ); } Serial.println (); StaticJsonDocument jsonBuffer; deserializeJson (jsonBuffer, დატვირთვა); JsonObject root = jsonBuffer.as (); if (root ["სიმღერა"] == "darude") {darude (); } if (root ["სიმღერა"] == "starwars") {starwars (); } if (root ["სიმღერა"] == "ჟაკ") {Serial.println ("jakakakakakkakaka"); ჟაკი (); }} void ხელახლა დაკავშირება () {// მარყუჟი სანამ ხელახლა არ შევუერთდებით სანამ (! client.connected ()) {Serial.print ("MQTT კავშირის მცდელობა …"); // მცდელობა დაკავშირება if (client.connect (MQTT_DEVICEID, MQTT_USER, MQTT_TOKEN)) {Serial.println ("დაკავშირებულია"); client.subscribe (MQTT_TOPIC_DISPLAY); } else {Serial.print ("ვერ მოხერხდა, rc ="); Serial.print (client.state ()); Serial.println ("ხელახლა სცადე 5 წამში"); // დაელოდეთ 5 წამი ხელახლა ცდის დაგვიანებამდე (5000); }}} void setup () {Serial.begin (9600); pinMode (moistPin, INPUT); dht. დაწყება (); pinMode (0, OUTPUT); setup_wifi (); client.setServer (mqtt_server, MQTT_PORT); client.setCallback (გამოძახება); დაგვიანება (20); } void loop () {if (! client.connected ()) {ხელახლა დაკავშირება (); } client.loop (); ტენიანობა = digitalRead (ტენიანი პინი); მსუბუქი = analogRead (A0); temp = dht.readTemperature (); ტენიანობა = dht.readHumidity (); Serial.println ("ტემპერატურა =" + სიმებიანი (ტემპერატურა, 1) + "\ n ტენიანობა =" + სიმებიანი (ტენიანობა, 1) + "\ n ტენიანობა:" + სიმებიანი (ტენიანობა) + "\ n სინათლე:" + სიმებიანი (მსუბუქი)); სიმებიანი დატვირთვა = "{" ts / ": {" t / ":"+სიმებიანი (ტემპი, 1)+", \" h / ":"+სიმებიანი (ტენიანობა, 1)+"}, \" ms / ": {" m / ":"+სიმებიანი (ტენიანობა)+"}, \" ls / ": {" l / ":"+სიმებიანი (მსუბუქი)+"}}"; Serial.println (დატვირთვა); if (client.publish (MQTT_TOPIC, (char*) payload.c_str ())) {Serial.println ("გამოაქვეყნე კარგად"); } else {Serial.println ("გამოქვეყნება ვერ მოხერხდა"); } დაყოვნება (2000); } void darude () {ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, longTone); დაგვიანება (longTone); noTone (0); შეფერხება (delayBetweenBars); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_B3, longTone); დაგვიანება (longTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_E4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_E4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_E4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_E4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_E4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_E4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_E4, longTone); დაგვიანება (longTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_D4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_D4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_D4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_D4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_D4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_D4, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_D4, longTone); დაგვიანება (longTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_A3, longTone); დაგვიანება (longTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, longTone); დაგვიანება (longTone); noTone (0); შეფერხება (delayBetweenBars); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, longTone); დაგვიანება (longTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_E4, longTone); დაგვიანება (longTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, longTone); დაგვიანება (longTone); noTone (0); შეფერხება (delayBetweenBars); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანება (სტანდარტული დაყოვნება); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, shortTone); დაგვიანება (shortTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_B3, longTone); დაგვიანება (longTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); ტონი (0, NOTE_E4, longTone); დაგვიანება (longTone); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); } void starwars () {სიგნალი (NOTE_A4, 500); სიგნალი (NOTE_A4, 500); სიგნალი (NOTE_A4, 500); სიგნალი (NOTE_F4, 350); სიგნალი (NOTE_C5, 150); სიგნალი (NOTE_A4, 500); სიგნალი (NOTE_F4, 350); სიგნალი (NOTE_C5, 150); სიგნალი (NOTE_A4, 650); დაგვიანება (500); სიგნალი (NOTE_E5, 500); სიგნალი (NOTE_E5, 500); სიგნალი (NOTE_E5, 500); სიგნალი (NOTE_F5, 350); სიგნალი (NOTE_C5, 150); სიგნალი (NOTE_GS4, 500); სიგნალი (NOTE_F4, 350); სიგნალი (NOTE_C5, 150); სიგნალი (NOTE_A4, 650); } void beep (int შენიშვნა, int ხანგრძლივობა) {// ტონის დაკვრა buzzerPin ტონზე (0, შენიშვნა, ხანგრძლივობა); დაგვიანება (ხანგრძლივობა); noTone (0); დაგვიანებით (სტანდარტული დაგვიანებით); } void heartOfCourage () {} void jacques () {სიგნალი (NOTE_C4, 500); სიგნალი (NOTE_D4, 500); სიგნალი (NOTE_E4, 500); სიგნალი (NOTE_C4, 500); სიგნალი (NOTE_C4, 500); სიგნალი (NOTE_D4, 500); სიგნალი (NOTE_E4, 500); სიგნალი (NOTE_C4, 500); სიგნალი (NOTE_E4, 500); სიგნალი (NOTE_F4, 500); სიგნალი (NOTE_G4, 500); სიგნალი (NOTE_E4, 500); სიგნალი (NOTE_F4, 500); სიგნალი (NOTE_G4, 500); სიგნალი (NOTE_G4, 500); სიგნალი (NOTE_A4, 500); სიგნალი (NOTE_G4, 500); სიგნალი (NOTE_F4, 500); სიგნალი (NOTE_E4, 500); სიგნალი (NOTE_C4, 500); სიგნალი (NOTE_G4, 500); სიგნალი (NOTE_A4, 500); სიგნალი (NOTE_G4, 500); სიგნალი (NOTE_F4, 500); სიგნალი (NOTE_E4, 500); სიგნალი (NOTE_C4, 500); სიგნალი (NOTE_C4, 500); სიგნალი (NOTE_G4, 500); სიგნალი (NOTE_C4, 500); სიგნალი (NOTE_C4, 500); სიგნალი (NOTE_G4, 500); სიგნალი (NOTE_C4, 500); }
ნაბიჯი 3: Ibm Cloud
თქვენ უნდა დააყენოთ IBM-cloud მაგალითი. ამის შესახებ ინფორმაციის მოძიება შეგიძლიათ ამ ბმულის საშუალებით: github.
ნაბიჯი 4: კვანძი-წითელი
ჩვენ ვიყენებთ წითელ კვანძს ჩვენი ზოგადი ბიზნეს ლოგიკის დასამუშავებლად და ამ მონაცემების ვიზუალიზაციისთვის ინტუიციურ ინტერფეისში.
ნაბიჯი 5: Node-RED Setup: Light
შემოიტანეთ შემდეგი კოდი თქვენს პროექტში.
[{"id": "deb0d57.1c46528", "type": "tab", "label": "Light", "disabled": false, "info": ""}, {"id": "8a0fcaac. 4e54 "," type ":" ibmiot in "," z ":" deb0d57.1c46528 "," authentication ":" boundService "," apiKey ":" "," inputType ":" evt "," logicInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," ფორმატი ": "json", "name": "მიიღეთ მონაცემები ESP- დან", "service": "რეგისტრირებულია", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 120, "y": 62, "ხაზები":
ნაბიჯი 6: Node-RED დაყენება: ტემპერატურა
შემოიტანეთ შემდეგი კოდი თქვენს პროექტში.
[{"id": "fbad3799.f0e0e", "type": "tab", "label": "Temperature", "disabled": false, "info": ""}, {"id": "b8618eb9. 1c9288 "," type ":" ibmiot in "," z ":" fbad3799.f0e0e "," authentication ":" boundService "," apiKey ":" "," inputType ":" evt "," logicInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," ფორმატი ": "json", "name": "მიიღეთ მონაცემები ESP- დან", "service": "რეგისტრირებულია", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 145.5, "y": 49, "ხაზები":
ნაბიჯი 7: Node-RED დაყენება: ტენიანობა
შემოიტანეთ შემდეგი კოდი თქვენს პროექტში.
[{"id": "144cd53b.c00473", "type": "tab", "label": "ტენიანობა", "გამორთული": false, "info": ""}, {"id": "d958f58b 2678e "," type ":" ibmiot in "," z ":" 144cd53b.c00473 "," authentication ":" boundService "," apiKey ":" "," inputType ":" evt "," logicInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," ფორმატი ": "json", "name": "მიიღეთ მონაცემები ESP- დან", "service": "რეგისტრირებულია", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 142, "y": 87, "ხაზები":
ნაბიჯი 8: Node-RED დაყენება: ტენიანობა
შემოიტანეთ შემდეგი კოდი თქვენს პროექტში.
[{"id": "4ee73536.ec6fc4", "type": "tab", "label": "ტენიანობა", "გამორთული": false, "info": ""}, {"id": "a6daac3e. 2d5268 "," type ":" ibmiot out "," z ":" 4ee73536.ec6fc4 "," authentication ":" boundService "," apiKey ":" "," outputType ":" cmd "," deviceId ":" ESP "," deviceType ":" ESP8266 "," eventCommandType ":" განახლება "," ფორმატი ":" json "," data ":" msg "," qos ": 0," name ":" გაუგზავნე ბრძანება ESP- ს "," service ":" რეგისტრირებული "," x ": 804.1944580078125," y ": 383.0000305175781," ხაზები ": }, {" id ":" 4134fdb7.18e9b4 "," type ":" ibmiot in ", "z": "4ee73536.ec6fc4", "ავთენტიფიკაცია": "boundService", "apiKey": "", "inputType": "evt", "logicInterface": "" "," ruleId ":" "," deviceId ": "ESP", "applicationId": "", "deviceType": "ESP8266", "eventType": "განახლება", "commandType": "", "format": "json", "name": "მიიღეთ მონაცემები ESP- დან "," service ":" რეგისტრირებული "," allDevices ": false," allApplications ":" "," allDeviceTypes ": false," allLogicalInterfaces ":" "", "allEvents": true, "allCommands": "", "allFormats": false, "qos": 0, "x": 115, "y": 76, "wires":
ნაბიჯი 9: თქვენ დასრულებული ხართ
გილოცავთ! თქვენ გაქვთ სამუშაო მცენარეთა დაკვირვების სისტემა.
თუ თქვენ გაქვთ რაიმე შეკითხვა, ნუ მოგერიდებათ დაგვიკავშირდეთ!