Mündəricat:
Video: ESP8266 Birbaşa Məlumat Əlaqəsi: 3 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Giriş
Arduinos və nRF24l01 modulları ilə bəzi layihələr həyata keçirərkən, bunun əvəzinə bir ESP8266 modulu istifadə edərək bir az səy göstərə biləcəyimi düşünürdüm. ESP8266 modulunun üstünlüyü, içərisində mikro nəzarətçi olmasıdır, buna görə əlavə Arduino lövhəsinə ehtiyac yoxdur. Əlavə olaraq, ESP8266 -nın yaddaş ölçüsü daha böyükdür və sürət baxımından ESP8266, Arduino 16MHz əvəzinə maksimum 160MHz -də işləyir. Təbii ki, bunun mənfi tərəfləri də var.
ESP8266 yalnız 3.3V -də işləyir, daha az sancağa malikdir və Arduinonun gözəl analoq girişləri yoxdur (bir var, ancaq 3.3V deyil, yalnız 1.0V üçün). Əlavə olaraq Arduino + nRF24l01 üçün daha çox kod nümunəsi var, xüsusən də birbaşa məlumat ötürülməsinə gəldikdə ESP8266 üçün var.
Bir layihəni nəzərə alaraq, bütün WWW və HTTP məhsulları olmadan iki ESP8266 arasında sürətli və yüngül məlumat ötürülməsi mövzusuna baxdım.
Nümunələr üçün internetdə axtarış apararkən (aşağıdakı kodun çoxu müxtəlif yerlərdə şəbəkədən seçilmişdi) "belə et" nümunələri olmadan gözəl bir məlumat ötürülməsinin necə həyata keçiriləcəyi ilə bağlı bir çox suallarla qarşılaşdım. Bir nümunə kod var idi, amma əsasən niyə işləmədiyini soruşurdum.
Bir az oxuduqdan və başa düşməyə çalışdıqdan sonra iki ESP8266 arasında məlumatların sürətli və sadə ötürülməsinə imkan verən aşağıdakı nümunələri yaratdım.
Addım 1: Sərhədlər və Arxa Planlar (TCP vs UDP)
Oraya çatmaq üçün nRF24l01 ilə müqayisədə bəzi sərhədləri aydınlaşdırmaq lazımdır.
ESP8266 -nı Arduino mühitində istifadə etmək üçün əsas kitabxana ESP8266WiFi.h -dir. Fərqli ola bilər, amma əksər nümunələrdə yuxarıda göstərilənlər istifadə olunur. Bunu istifadə edərkən, ünsiyyətinizi WiFi səviyyəsinə çatdırmalısınız.
Beləliklə, ünsiyyət qurmaq üçün ən azı bir giriş nöqtəsi (AP) / server və bir müştəri olmalıdır. AP şəbəkənin adını və IP ünvanlarını təqdim edir və müştəri bu serverə qoşulacaq.
NRF24l01 ilə müqayisədə, hər iki ucdakı kodun az -çox eyni olduğu (ötürmə kanalları istisna olmaqla), ESP8266 -nın kodu kökündən fərqlidir, çünki biri AP, digəri müştəri kimi konfiqurasiya olunur.
Növbəti mövzu, nRF24l01 -ə bir neçə bayt göndərmək əvəzinə, ESP8266 ötürmə protokollarına riayət edilməsidir.
İki ümumi istifadə olunan protokol var: TCP və UDP.
TCP (Transmission Control Protocol), serverlə müştəri arasında itkisiz ötürülməyə imkan verən bir protokoldur. Protokolda "əl sıxışmalar" (hər iki tərəf arasında göndərilən çoxlu bayraqlar və biliklər) və itirilmiş paketlərin müəyyən edilməsi və yenidən ötürülməsi üçün paket nömrələnməsi və aşkarlanması daxildir. Əlavə olaraq, bütün bu əl sıxışmalardan istifadə edərək, protokol şəbəkədə eyni vaxtda göndərilən bir çox paket səbəbiylə itirilən məlumatların qarşısını alır. Məlumat paketləri alınana qədər gözləyin.
UDP (İstifadəçi Datagram Protokolu) bütün əl sıxışmalarından, paket nömrələnməsindən və yenidən ötürülməsindən məhrumdur. Buna görə yükü daha kiçikdir və əlaqəni qorumaq üçün bütün əl sıxışmalarına ehtiyac yoxdur. UDP bir neçə əsas səhv aşkarlamasını ehtiva edir, lakin heç bir düzəliş etmir (zədələnmiş paket yenicə atılır). Qəbul edən tərəfin məlumatları əldə etməkdə sərbəst olması halında, məlumat göndərilmədən göndərilir. Eyni zamanda, hər bir tərəf lazım olduqda məlumat göndərdiyi üçün birdən çox paket toqquşa bilər. Bütün əl sıxışmaları ataraq, UDP -nin "multicast" və "yayım" adlı daha bir gözəl xüsusiyyəti var. "Çox nöqtəli" vəziyyətdə məlumat paketləri əvvəlcədən təyin edilmiş üzv qrupuna, "yayımda" isə bütün bağlı üzvlərə göndərilir. Bu, axınların birdən çox üzv tərəfindən alınması halında (məsələn, birdən çox alıcıya video axını göndərməklə və ya birdən çox bağlı cihaza cari vaxtı göndərməklə) məlumat ötürülməsini əhəmiyyətli dərəcədə azaldır.
Youtube -da bunu daha yaxşı izah edən yaxşı videolar var.
Məlumat göndərərkən ehtiyaclarınızı bilmək vacibdir:
- zədələnməmiş məlumatlar, çoxsaylı həmyaşıdlarının əl sıxışması ilə idarə edilməsi → TCP
- real vaxt məlumatları, sürətli əlaqə → UDP
İlk olaraq TCP əsaslı bir ünsiyyətin tətbiqi ilə başladım (bir Server ilə bir Müştəri arasında). Test edərkən, ötürmədə dayanma problemləri var idi. Başlanğıcda məlumatlar sürətlə mübadilə edildi, sonra bir müddət sonra sürət kəskin şəkildə aşağı düşdü. Bunun TCP yanaşmasının tipik bir problemi olduğu qənaətinə gəldim (səhv idi!), Sonra UDP -yə əsaslanan bir həllə keçdim. Nəhayət, hər ikisi işə yaxınlaşdı. Beləliklə, hər iki həll də təmin ediləcəkdir.
Aşağıdakı eskizlər TCP və UDP üçün ortaqdır:
- mövcud WiFi şəbəkəsindən asılı deyil. Beləliklə, İnternetdən və bağlı marşrutlaşdırıcılardan uzaq bir yerdə işləyəcək.
- ASCII məlumatlarını serial monitor vasitəsilə çap etmək üçün göndərirlər.
- millis () funksiyası ilə əldə edilən məlumatları ötürmə sürətini təhlil etmək üçün göndərirlər.
- birdən çox müştəri üçün sınaqdan keçirilmir (hazırda şəbəkəni qurmaq üçün aparatın olması səbəbindən)
Addım 2: Avadanlıq
Bütün quruluşu sınamaq üçün iki ESP8266 modulundan istifadə etdim. Bir modul ESP-01 + USB-UART adapteridir. Digər modul, USB bağlantısı, gərginlik tənzimləyicisi və açarlar, LDR və çox rəngli LED kimi əyləncəli şeyləri özündə birləşdirən ESP-12 əsaslı bir moduldur.
ESP-01 üçün USB-UART Modulunu proqramçı kimi istifadə etmək üçün bir qədər dəyişdirilməli idi (yenə Youtube tərəfindən Csongor Varga).
Eskizləri işə salmaq üçün ESP8266 kitabxanalarını (İnternetin bir çox yerində təsvir edildiyi kimi) quraşdırmalısınız. Hər iki halda (TCP və UDP) hər biri bir server və müştəri eskizi var. Hansı eskizin hansı modula yüklənməsinin əhəmiyyəti yoxdur.
Təşəkkürlər
Qeyd edildiyi kimi, eskizlər internetdə tapdığım bir çox hissəyə əsaslanır. Artıq harada nəyi tapdığımı, orijinal kodun nə olduğunu və ya nəyi dəyişdiyimi xatırlamıram. Buna görə də bütün böyük nümunələri dərc etdikləri üçün ümumiyyətlə böyük bir cəmiyyətə təşəkkür etmək istədim.
Addım 3: Eskizlər
Kod, hər biri (izah edildiyi kimi) iki eskizdən, hər biri TCP və UDP üçün bir server eskizindən və müştəri eskizindən ibarətdir.
Tövsiyə:
Birbaşa Rəqəmsal Sintez (DDS) Çipli MIDI nəzarətli Step Motor: 3 Addım
Birbaşa Rəqəmsal Sintez (DDS) Çipi ilə MIDI tərəfindən idarə olunan Step Motor: SADƏ mini layihəyə çevrilməyiniz lazım olduğu barədə pis bir fikir var? Yaxşı, AD9833 Birbaşa Rəqəmsal Sintez (DDS) modulu ilə musiqi hazırlamaq məqsədi ilə Arduino Due üçün hazırladığım bir eskizlə oynayırdım … və bir anda düşündüm ki
(Alternativ cərəyan və birbaşa cərəyan) arasındakı fərq: 13 addım
(Alternativ cərəyan və birbaşa cərəyan) arasındakı fərq: Hər kəs bilir ki, elektrik əsasən DC -dir, amma başqa bir elektrik növü necə? Ac -ı tanıyırsınızmı? AC nə deməkdir? DC -dən sonra istifadə etmək mümkündürmü? Bu işdə elektrik növləri, mənbələr, tətbiq arasındakı fərqi biləcəyik
MotoStudent Elektrikli Yarış Velosipedinin Məlumat Alınması və Məlumat Vizualizasiya Sistemi: 23 addım
Bir MotoStudent Elektrik Yarış Velosipedi üçün Məlumat Toplama və Məlumat Görüntüləmə Sistemi: Məlumat əldə etmə sistemi, xarici sensorlardan məlumat toplamaq, sonra saxlamaq və emal etmək üçün birlikdə işləyən aparat və proqram təminatı toplusudur və qrafik olaraq görüntülənə və təhlil edilə bilər. mühəndislərə imkan verir
Noobs üçün ESP8266 və Python Əlaqəsi: 6 addım
Noobs üçün ESP8266 və Python Əlaqəsi: Bu təlimat, ESP8266 -dan istənilən məlumatı əldə etməyə və AT əmrləri olmadan python üzərində idarə etməyə imkan verir. Yeni başlayanlar üçün ESP8266 -dan istifadə ilə bağlı təlimatların çoxu çətindir, çünki "AT COMMANDS" "Çipinə daxil edin, yəni: Lazımsız Tullantılar
Accesspoint - İki ESP8266 MCU Arasında Stansiya Əlaqəsi: 3 Addım
Accesspoint - İki ESP8266 MCU Arasında Stansiya Əlaqəsi: Salam Yaradıcılar! Əvvəlki təlimatımda bir ev WiFi router vasitəsilə iki ESP8266 MCU arasında WiFi əlaqəsi yaratdım. Şərhlərdən gördüyüm kimi, ESP8266 MCU -larını yönləndirici aralığından çox uzaqda istifadə etmək istəyənlər var. Budur burada bir bar