Мазмұны:

ESP8266 Деректермен тікелей байланыс: 3 қадам
ESP8266 Деректермен тікелей байланыс: 3 қадам

Бейне: ESP8266 Деректермен тікелей байланыс: 3 қадам

Бейне: ESP8266 Деректермен тікелей байланыс: 3 қадам
Бейне: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Қараша
Anonim
ESP8266 тікелей деректер байланысы
ESP8266 тікелей деректер байланысы

Кіріспе

Кейбір жобаларды Arduinos және nRF24l01 модульдерімен жасаған кезде мен оның орнына ESP8266 модулін қолдана отырып, біраз күш -жігерді үнемдей аламын ба деп ойладым. ESP8266 модулінің артықшылығы - оның бортында микроконтроллер бар, сондықтан қосымша Arduino тақтасы қажет емес. Сонымен қатар, ESP8266 жады көлемі әлдеқайда үлкен және жылдамдыққа байланысты ESP8266 Arduino 16 МГц емес, 160 МГц жиілікте жұмыс істейді. Әрине, кейбір жағымсыз жақтары бар.

ESP8266 тек 3.3В жұмыс істейді, түйреуіштері аз және Arduino -да жақсы аналогтық кірістер жоқ (оның біреуі бар, бірақ тек 3,3В емес, 1.0В үшін). Сонымен қатар, Arduino + nRF24l01 үшін көптеген код мысалдары бар, содан кейін ESP8266 үшін, әсіресе деректерді тікелей жіберуге қатысты.

Мен жобаны ескере отырып, барлық WWW және HTTP материалдарынсыз екі ESP8266 арасында деректерді жылдам және жеңіл тасымалдау тақырыбын қарастырдым.

Мысалдарды интернеттен іздеу кезінде (төмендегі кодтың көп бөлігі желіден әр жерден алынды) мен «дәл осылай істе» деген мысалдарсыз деректерді тікелей жіберуді қалай жүзеге асыруға болатыны туралы көптеген сұрақтарға тап болдым. Кейбір мысал кодтары болды, бірақ көбінесе ол неге жұмыс істемеді деген сұрақ туындайды.

Біраз оқып, түсінуге тырысқаннан кейін мен екі ESP8266 арасында деректерді жылдам және қарапайым тасымалдауға мүмкіндік беретін төмендегі мысалдарды жасадым.

1 -қадам: Шекаралар мен фон (TCP қарсы UDP)

Оған жету үшін nRF24l01 -ге қарағанда кейбір шекараларды нақтылау қажет.

ESP8266 жүйесін Arduino ортасында қолдану үшін ESP8266WiFi.h негізгі кітапханасы қолданылады. Бұл әр түрлі болуы мүмкін, бірақ көптеген мысалдарда көрсетілген. Бұл функцияны қолданған кезде сіз байланыс деңгейін WiFi деңгейіне жеткізуіңіз керек.

Сонымен, байланысу үшін кем дегенде кіру нүктесі (AP) / сервер мен клиент болуы керек. АТ желі атауын және IP мекенжайларын береді, ал клиент осы серверге қосылады.

NRF24l01 салыстырылады, мұнда екі жақтағы код көп немесе аз болады (беру арналарын қоспағанда), ESP8266 коды түбегейлі ерекшеленеді, себебі бірі AP ретінде, екіншісі клиент ретінде конфигурацияланған.

Келесі тақырып - nRF24l01 -ге бірнеше байтты жіберудің орнына, ESP8266 тасымалдау хаттамаларын сақтау қажет.

Жалпы қолданылатын екі хаттама бар: TCP және UDP.

TCP (Transmission Control Protocol)-бұл сервер мен клиент арасында шығынсыз жіберуге мүмкіндік беретін хаттама. Хаттамада «қол алысу» (екі жақтың арасында жіберілген көптеген жалаушалар мен аккордтар) және жоғалған пакеттерді анықтау мен қайта жіберу үшін пакеттерді нөмірлеу мен анықтау бар. Бұған қоса, барлық қол алысуларды қолдану арқылы хаттама желіде бір уақытта жіберілетін көптеген пакеттерге байланысты деректердің жоғалуын болдырмайды. Деректер пакеттері оларды қабылдауды күтеді.

UDP (User Datagram Protocol) барлық қол алысу, пакеттерді нөмірлеу және қайта жіберу жетіспейді. Оның үстеме шығыны аз, сондықтан байланыстың сақталуы үшін барлық қол алысудың қажеті жоқ. UDP кейбір негізгі қателерді табуды қамтиды, бірақ түзетулер жоқ (бүлінген пакет жойылады). Деректер, егер қабылдаушы тарап деректерді алуға еркін болса, білместен жіберіледі. Сонымен қатар, бірнеше пакеттер соқтығысуы мүмкін, себебі әр тарап деректерді қажет болғанда жібереді. Барлық қол алысуларды жібермей, UDP -дің «мультикаст» және «хабар тарату» деп аталатын тағы бір жақсы ерекшелігі бар. «Мультикаст» жағдайында деректер пакеттері алдын ала анықталған мүшелер тобына жіберіледі, ал «таратуда» деректер пакеттері барлық қосылған мүшелерге жіберіледі. Бұл ағындарды бірнеше мүшелер қабылдаған жағдайда деректерді беруді едәуір азайтады (мысалы, бірнеше қабылдағышқа бейне арнаны жіберу немесе бірнеше қосылған құрылғыларға ағымдағы уақытты жіберу арқылы).

Youtube -те жақсы түсіндіретін жақсы бейнелер бар.

Деректерді жіберу кезінде сіздің қажеттіліктеріңізді білу маңызды:

  • бүлінбеген деректер, қол ұстасу арқылы бірнеше құрдастарды басқару → TCP
  • нақты уақыттағы деректер, жылдам қосылу → UDP

Мен алғаш рет TCP негізіндегі байланысты енгізуден бастадым (бір сервер мен бір клиент арасында). Тестілеу кезінде менде таратуда қиындықтар болды. Басында деректер тез алмасылды, содан кейін біраз уақыттан кейін жылдамдық күрт төмендеді. Мен бұл TCP әдісінің әдеттегі мәселесі деп ойладым (бұл дұрыс емес!), Содан кейін UDP негізделген шешімге ауыстырылды. Ақырында мен екеуін жұмысқа шақырдым. Сондықтан екі шешім де қамтамасыз етіледі.

Төмендегі эскиздер TCP мен UDP үшін ортақ:

  • кез келген WiFi желісіне тәуелсіз. Сондықтан ол интернеттен және қосылған маршрутизаторлардан алыс жерде жұмыс істейді.
  • олар ASCII деректерін сериялық монитор арқылы басып шығаруға жібереді.
  • millis () функциясымен алынған мәліметтерді жіберу жылдамдығын талдау үшін жібереді.
  • бірнеше клиенттер үшін тексерілмеген (дәл қазір желіні орнатуға арналған жабдықтың болуына байланысты)

2 -қадам: Жабдық

Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал

Бүкіл қондырғыны тексеру үшін мен екі ESP8266 модулін қолдандым. Бір модуль-бұл ESP-01 + USB-UART адаптері. Басқа модуль-бұл USB қосылымы, кернеу реттегіші және қосқыштар, LDR және көп түсті жарық диоды бар ESP-12 модулі.

ESP-01 үшін USB-UART модулін бағдарламашы ретінде пайдалану үшін оны сәл өзгерту қажет болды (тағы да Csongor Varga Youtube).

Эскиздерді іске қосу үшін сізге ESP8266 кітапханаларын орнату қажет (интернеттің көптеген жерлерінде сипатталғандай). Екі жағдайда да (TCP және UDP) әрқайсысы сервер мен клиенттің эскизі болады. Қай эскиз қай модульге жүктелгені маңызды емес.

Алғыс хаттар

Жоғарыда айтылғандай, эскиздер мен интернеттен тапқан көптеген бөлшектерге негізделген. Мен қайда не тапқанымды, түпнұсқалық кодты не өзгерткенін есімде жоқ. Сондықтан мен барлық үлкен мысалдарды шығарғаны үшін үлкен қауымдастыққа алғыс айтқым келді.

3 -қадам: Эскиздер

Кодекстің әрқайсысы екі эскизден (түсіндірілгендей), әрқайсысы TCP мен UDP үшін серверлік эскизден және клиенттік эскизден тұрады.

Ұсынылған: