Სარჩევი:
ვიდეო: ESP8266 პირდაპირი მონაცემთა კომუნიკაცია: 3 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
შესავალი
Arduinos– ისა და nRF24l01 მოდულებით რამდენიმე პროექტის განხორციელებისას მაინტერესებდა, შემეძლო თუ არა ძალისხმევის დაზოგვა ESP8266 მოდულის ნაცვლად. ESP8266 მოდულის უპირატესობა ის არის, რომ იგი შეიცავს მიკრო კონტროლერს ბორტზე, ამიტომ არ არის საჭირო დამატებითი Arduino დაფა. დამატებით ESP8266 მეხსიერების ზომა გაცილებით დიდია და რაც შეეხება სიჩქარეს ESP8266 მუშაობს მაქსიმუმ 160 MHz– ზე Arduino– ს 16 MHz– ის ნაცვლად. რა თქმა უნდა, არსებობს უარყოფითი მხარეები.
ESP8266 მუშაობს მხოლოდ 3.3 ვ -ზე, აქვს ნაკლები ქინძისთავები და აკლია არდუინოს ლამაზი ანალოგური საშუალებები (მას აქვს ერთი, მაგრამ მხოლოდ 1.0 ვ და არა 3.3 ვ). გარდა ამისა, არსებობს მრავალი სხვა კოდის მაგალითი Arduino + nRF24l01– სთვის, ასევე ESP8266– ისთვის, განსაკუთრებით მაშინ, როდესაც საქმე ეხება მონაცემთა პირდაპირ გადაცემას.
პროექტის გათვალისწინებით, მე ჩავხედე ორი ESP8266 მონაცემთა სწრაფი და მსუბუქი გადაცემის თემას WWW და HTTP პერსონალის გარეშე.
ინტერნეტში მაგალითების ძებნისას (ქვემოთ მოყვანილი კოდის უმეტესი ნაწილი ამოღებულია ქსელიდან სხვადასხვა ადგილას) მე წავაწყდი ბევრ კითხვას, თუ როგორ განვახორციელო მონაცემთა პირდაპირი გადაცემა ლამაზი "ამის გაკეთება ასე" მაგალითების გარეშე. იყო კოდის მაგალითი, მაგრამ ძირითადად კითხვაზე, თუ რატომ არ იმუშავა.
ასე რომ, წაკითხვისა და გააზრების მცდელობის შემდეგ, მე შევქმენი ქვემოთ მოყვანილი მაგალითები, რომლებიც იძლევა მონაცემების სწრაფ და მარტივ გადაცემას ორ ESP8266- ს შორის.
ნაბიჯი 1: საზღვრები და ფონი (TCP წინააღმდეგ UDP)
იქ მისასვლელად, ზოგიერთი საზღვარი უნდა დაზუსტდეს nRF24l01– თან შედარებით.
ESP8266 არდუინოს გარემოში გამოსაყენებლად, ძირითადი ბიბლიოთეკა არის ESP8266WiFi.h. შეიძლება განსხვავებული იყოს, მაგრამ მაგალითების უმეტესობა იყენებს აღნიშნულს. ამის გამოყენებისას, თქვენ უნდა მიიღოთ თქვენი კომუნიკაცია WiFi დონეზე.
ასე რომ, კომუნიკაციისთვის საჭიროა იყოს მინიმუმ წვდომის წერტილი (AP) / სერვერი და კლიენტი. AP შეიცავს ქსელის სახელს და IP მისამართებს და კლიენტი დაუკავშირდება ამ სერვერს.
ასე რომ, შევადარეთ nRF24l01, სადაც კოდი ორივე ბოლოში მეტნაკლებად იგივეა (გარდა გადამცემი არხებისა) ESP8266 კოდი ფუნდამენტურად განსხვავებულია, რადგან ერთი კონფიგურირებულია როგორც AP, ხოლო მეორე კლიენტი.
შემდეგი თემა არის ის, რომ ნაცვლად იმისა, რომ მხოლოდ რამდენიმე ბაიტი გაგზავნოთ nRF24l01– ზე, ESP8266– ის გადაცემის პროტოკოლების დაცვაა საჭირო.
არსებობს ორი გავრცელებული პროტოკოლი: TCP და UDP.
TCP (გადაცემის კონტროლის პროტოკოლი) არის პროტოკოლი, რომელიც საშუალებას იძლევა გადაეცეს სერვერსა და კლიენტს შორის ზარალის გარეშე. პროტოკოლი მოიცავს „ხელის ჩამორთმევას“(ბევრი დროშა და აკრძალვა გაგზავნილი ორივე მხარეს შორის) და პაკეტების ნუმერაცია და გამოვლენა დაკარგული პაკეტების იდენტიფიცირებისა და ხელახალი გადაცემის მიზნით. გარდა ამისა, ყველა ამ ხელის ჩამორთმევის საშუალებით პროტოკოლი ხელს უშლის მონაცემების დაკარგვას ქსელში ერთდროულად გაგზავნილი მრავალი პაკეტის გამო. მონაცემთა პაკეტები დაელოდება მათ მიღებას.
UDP (User Datagram Protocol) აკლია ხელის ჩამორთმევა, პაკეტების ნუმერაცია და ხელახალი გადაცემა. ამიტომ მისი ზედაპირი უფრო მცირეა და არ არის საჭირო ყველა ხელის ჩამორთმევა კავშირის შესანარჩუნებლად. UDP აერთიანებს შეცდომების გამოვლენის ძირითად ნაწილს, მაგრამ არა შესწორებას (კორუმპირებული პაკეტი უბრალოდ იშლება). მონაცემები იგზავნება, ცოდნის გარეშე, თუ მიმღები მხარე თავისუფალია მიიღოს მონაცემები. ამავდროულად, მრავალი პაკეტი შეიძლება შეჯახდეს, რადგან თითოეული მხარე აგზავნის მონაცემებს, როდესაც ეს საჭიროა. ხელის ჩამორთმევის გამოტოვებით, არის UDP– ის კიდევ ერთი სასიამოვნო ფუნქცია სახელწოდებით "multicast" და "broadcast". "მულტიკასტის" შემთხვევაში მონაცემთა პაკეტები იგზავნება წევრების წინასწარ განსაზღვრულ ჯგუფში, ხოლო "მაუწყებლობის" მონაცემების პაკეტები იგზავნება ყველა დაკავშირებულ წევრთან. ეს მნიშვნელოვნად ამცირებს მონაცემთა გადაცემას იმ შემთხვევაში, თუ ნაკადები მიიღება რამდენიმე წევრის მიერ (მაგ. ვიდეო მიმღების გაგზავნით მრავალ მიმღებზე ან მიმდინარე დროის გაგზავნით მრავალ დაკავშირებულ მოწყობილობაზე).
Youtube– ზე არის რამდენიმე კარგი ვიდეო, რომელიც ამას უკეთესად ხსნის.
ასე რომ, მონაცემების გაგზავნისას მნიშვნელოვანია იცოდეთ თქვენი საჭიროებები:
- არაკორუმპირებული მონაცემები, მრავალი თანატოლის მართვა ხელის ჩამორთმევით → TCP
- რეალურ დროში მონაცემები, სწრაფი კავშირი → UDP
მე პირველად დავიწყე TCP დაფუძნებული კომუნიკაციის განხორციელებით (ერთ სერვერსა და ერთ კლიენტს შორის). მისი შემოწმების დროს, მე მქონდა გადაცემის პრობლემები. თავიდან მონაცემები სწრაფად გაცვალეს, შემდეგ გარკვეული პერიოდის შემდეგ სიჩქარე მკვეთრად დაეცა. მე დავასკვენი, რომ ეს იყო TCP მიდგომის ტიპიური პრობლემა (რაც არასწორი იყო!), ამიტომ შემდეგ გადავიყვანე UDP– ზე დაფუძნებულ გადაწყვეტაზე. ბოლოს ორივე მივუახლოვდი მუშაობას. ასე რომ, ორივე გამოსავალი იქნება.
ქვემოთ მოცემულ ესკიზებს აქვთ საერთო TCP და UDP ნიშნები:
- დამოუკიდებელია ნებისმიერი არსებული WiFi ქსელისგან. ასე რომ, ის იმუშავებს ყველგან შორს ინტერნეტიდან და დაკავშირებული მარშრუტიზატორებიდან.
- აგზავნიან ASCII მონაცემებს სერიული მონიტორის საშუალებით დასაბეჭდად.
- აგზავნიან მონაცემებს მიღებული millis () ფუნქციით, გადაცემის სიჩქარის გასაანალიზებლად.
- არ არის ტესტირებული მრავალ კლიენტზე (ქსელის შექმნის აპარატურის გამო)
ნაბიჯი 2: აპარატურა
მთელი კონფიგურაციის შესამოწმებლად გამოვიყენე ორი ESP8266 მოდული. ერთი მოდული არის ESP-01 + USB-to-UART ადაპტერი. სხვა მოდული არის ESP-12 დაფუძნებული მოდული, რომელიც მოიცავს USB კავშირს, ძაბვის რეგულატორს და რამდენიმე სახალისო ნივთს, როგორიცაა კონცენტრატორები, LDR და მრავალ ფერადი LED.
ESP-01– ის USB-to-UART მოდული საჭიროებდა ოდნავ შეცვლას, რათა შეძლებოდა პროგრამისტად გამოყენებას (ისევ Ysube by Csongor Varga).
ესკიზების გასაშვებად, თქვენ უნდა დააინსტალიროთ ESP8266 ბიბლიოთეკები (როგორც ეს აღწერილია ინტერნეტის ბევრ ადგილას). ორივე შემთხვევაში (TCP და UDP) არის თითოეული სერვერისა და კლიენტის ესკიზი. რომელი ესკიზი რომელ მოდულში იტვირთება არ აქვს მნიშვნელობა.
მადლობები
როგორც აღვნიშნეთ, ესკიზები დაფუძნებულია ბევრ ნაჭერზე, რომელიც ვიპოვე ინტერნეტში. აღარ მახსოვს სად ვიპოვე რა და რა არის ორიგინალური კოდი ან რა შევცვალე. ასე რომ, მე მინდოდა მადლობა გადაეხადა ზოგადად დიდ საზოგადოებისთვის, რომ გამოქვეყნებულიყო ყველა შესანიშნავი მაგალითი.
ნაბიჯი 3: ესკიზები
კოდი შედგება ორი ესკიზისგან (ახსნილია), სერვერის ესკიზი და კლიენტის ესკიზი, თითოეული TCP და UDP- ისთვის.
გირჩევთ:
როგორ გავხადოთ კორონავირუსი COVID 19 მონაცემთა პირდაპირი მაძიებელი ESP8266– ით, ელექტრონული ქაღალდის ჩვენებით: 7 ნაბიჯი
როგორ გავხადოთ კორონავირუსი COVID 19 მონაცემთა პირდაპირი მაძიებელი ESP8266– ით, ელექტრონული ქაღალდის ჩვენებით: 1
როგორ გავხადოთ ტენიანობა და ტემპერატურა რეალურ დროში მონაცემთა ჩამწერი Arduino UNO და SD ბარათით - DHT11 მონაცემთა მრიცხველის სიმულაცია Proteus– ში: 5 ნაბიჯი
როგორ გავხადოთ ტენიანობა და ტემპერატურა რეალურ დროში მონაცემთა ჩამწერი Arduino UNO და SD ბარათით | DHT11 მონაცემთა მრიცხველის სიმულაცია Proteus- ში: შესავალი: გამარჯობა, ეს არის Liono Maker, აქ არის YouTube ბმული. ჩვენ ვაკეთებთ შემოქმედებით პროექტს Arduino– სთან და ვმუშაობთ ჩამონტაჟებულ სისტემებზე. Data-Logger: მონაცემთა მრიცხველი (ასევე მონაცემების ჩამწერი ან მონაცემთა ჩამწერი) არის ელექტრონული მოწყობილობა, რომელიც დროთა განმავლობაში აფიქსირებს მონაცემებს
პირდაპირი 4G/5G HD ვიდეო ნაკადი DJI Drone– დან დაბალი ლატენტურობით [3 ნაბიჯი]: 3 ნაბიჯი
პირდაპირი 4G/5G HD ვიდეო ნაკადი DJI Drone– დან დაბალი ლატენტურობით [3 ნაბიჯი]: შემდეგი სახელმძღვანელო დაგეხმარებათ მიიღოთ პირდაპირი HD ხარისხის ვიდეო ნაკადები თითქმის ნებისმიერი DJI თვითმფრინავისგან. FlytOS მობილური აპლიკაციისა და FlytNow ვებ აპლიკაციის დახმარებით თქვენ შეგიძლიათ დაიწყოთ ვიდეოს სტრიმინგი დრონიდან
მონაცემთა მოპოვებისა და მონაცემთა ვიზუალიზაციის სისტემა MotoStudent Electric Racing Bike– ისთვის: 23 ნაბიჯი
მონაცემთა მოპოვებისა და მონაცემთა ვიზუალიზაციის სისტემა MotoStudent Electric Racing Bike: მონაცემთა მოპოვების სისტემა არის აპარატურისა და პროგრამული უზრუნველყოფის ერთობლიობა, რომელიც მუშაობს გარე სენსორების მონაცემების შეგროვების მიზნით, შემდგომში შესანახად და დამუშავების მიზნით, რათა ის იყოს ვიზუალურად გრაფიკული და გაანალიზებული, ინჟინრებს საშუალებას აძლევს გააკეთონ
EAL-Industri4.0-RFID მონაცემთა დამთვალიერებელი მონაცემთა ბაზა: 10 ნაბიჯი (სურათებით)
EAL-Industri4.0-RFID მონაცემთა დამთვალიერებელი მონაცემთა ბაზა: შეიმუშავეთ ყველა გზა, რათა დარეგისტრირდეთ და დაარეგისტრიროთ იდენტიფიკატორით. RFID, მონაცემების ჩამორჩენა MySQL მონაცემთა ბაზაში. node-RED, როგორც წესი, ვიცავთ და ვიმუშავებ მონაცემების და C# პროგრამის სახით Windows Form Application– ის საშუალებით