Ke hana nei i ʻīpuka ma waena o Wi-Fi a me LoRa no UDP

He moeʻuhane koʻu i koʻu wā kamaliʻi - e hoʻopuka i kēlā me kēia ʻohana "me ka ʻole o WiFi" i kahi tikiki pūnaewele, ʻo ia hoʻi kahi IP address a me ke awa. Ma hope o kekahi manawa, ʻike wau ʻaʻohe kumu o ka hoʻopanee. Pono mākou e lawe a hana.
Hana ʻenehana
E hana ia i ʻīpuka M5Stack me ka LoRa Module i hoʻokomo ʻia (Figure 1). E hoʻopili ʻia ka ʻīpuka i ka pūnaewele Wi-Fi, kahi e loaʻa ai kahi leka uila IP kūloko ma o DHCP. E hoʻolaha ka ʻīpuka i kona inoa (e like me ka SSID no Wi-Fi) a me ke ʻano o nā awa kūpono i ka hoʻolaha ʻana o LoRa i kekahi alapine, i ʻike nā mea ʻē aʻe aia kahi pūnaewele e hiki ai iā lākou ke hoʻohui a ma ke ʻano hea. hiki iā lākou ke koho i kahi awa manuahi. No ka mea he prototype kēia, ʻaʻole koi ʻia ka hōʻoia i kēia manawa. E ʻike nā mea kūʻai aku hou i kahi pūnaewele LoRa i loaʻa a hoʻouna i ke awa i koho ʻia iā ia. Ma hope o ka loaʻa ʻana o ke awa mai kahi mea kūʻai aku hou, nānā ʻo ia inā manuahi; inā pēlā, hoʻopaʻa inoa ʻo ia i ka mea kūʻai hou a hoʻomaka e hoʻolohe i kēia awa ma kāna kikowaena UDP asynchronous. Ma hope o ka hoʻopaʻa inoa ʻana, e loaʻa i ka mea kūʻai aku ka ʻae a hōʻole paha e hoʻohana i ke awa i haʻi ʻia. Hōʻike ʻia ke kaʻina hana ma ka Papa 1.

1 Kānāwai
1 Pūnaewele
aoao
kuhikuhi a me ka ʻikepili
aoao
kau
[ mea kūʻai aku ]
<— hōʻailona kukui —
[ puka komo ]
0xA1
[ mea kūʻai aku ]
— awa i koho ʻia —>
[ puka komo ]
0xB1
[ mea kūʻai aku ]
<— ʻae a hōʻole paha —
[ puka komo ]
0xA2
[ mea kūʻai aku ]
— Pūʻolo-UPD —>
[ puka komo ]
0xB2
[ mea kūʻai aku ]
<— Pūʻolo UPD —
[ puka komo ]
0xA3
[ ʻupena ]
<— Pūʻolo UPD —
[ puka komo ]
0xC1
Aia nā ʻano Module a pau no M5Stack e waiho ana ma ka papaʻaina i mua oʻu a ʻoluʻolu lākou. E lawe kākou iā LoR a leʻaleʻa me ia. He mea kupanaha ka manaʻo o nā modules ponoʻī! He aha kaʻu e ʻōlelo ai? Akā, loaʻa iaʻu nā modula hoʻoponopono mua, nona ka antenna i kūkulu ʻia, i hana ʻia ma kahi papa kaapuni paʻi maʻalahi a hoʻopili ʻia i ka paia ʻaoʻao o ka hihia. Ua hana au i nā hoʻokolohua kahua o ia mau modula (hiki iā ʻoe ke nānā iā lākou ma ke kahawai ʻōlelo Lūkini ma YouTube):

Ma keʻano maʻamau, pono mākou e wehe i kēia mau kumu a me ka solder i nā antenna helical maʻamau e hele mai me ka Ra-01. Ma hope o kēlā hana maʻamau, ua hoʻomaikaʻi maikaʻi ʻia ka laulā kamaʻilio, akā ua ʻike ʻia kahi pilikia ʻaoʻao - ʻoi aku ka nui o ka antenna ma mua o ka mamao i ʻae ʻia ma waena o nā modula. Pono wau e haʻalele i ka Module Hope no ka lōʻihi o ka papahana.
ʻO nā pilikia mua mai ka paʻa paʻa
Me he mea lā, e lawe i ka hale waihona puke WiFiUdp.h, kahi i loaʻa ai nā mea a pau no ka noho ʻoluʻolu o kahi kikowaena UDP, ʻaʻole kēia ka hihia. Hoʻolālā ʻia ka waihona no ka hoʻāla ʻana i kahi kikowaena synchronous, ʻaʻole naʻe, ʻaʻole hiki ke lawelawe i kekahi mau pilina i ka manawa like. ʻAʻole kūpono kēlā waihona no ka hana o kēia manawa. Pono wau e inu i nā kīʻaha kī he nui a ʻimi i kahi waihona e hiki ai iaʻu ke kūkulu i kahi kikowaena UDP asynchronous hiki ke kākoʻo i nā pilina he nui i ka manawa like. Ua loaʻa kahi hale waihona puke - AsyncUDP.h. He aha ka ʻokoʻa ma waena o kahi kikowaena synchronous a me kahi asynchronous? E nānā kākou i nā ʻāpana ʻeono ma ke Kiʻi 2 e hōʻike liʻiliʻi nei i ka hana ʻana o nā kumu.

2 Kānāwai
Hōkū ʻia:
ʻO ke kanaka i ka hana Socket;
Pigeon i ka hana Hoʻohui;
Pismo i ka hana Анных.
Mokuna A. ʻO ke kumu hoʻohui me ka manawa ʻole
Kū ke kanaka a hiki i ka lawe ʻana mai o ka Dove i ka Leta iā ia.
Mahele B. ʻO ke kumu hoʻohui me ka manawa pau
Ke kali nei ke kanaka i ka manawa i ʻaelike ʻia me ka Lupe, a inā ʻaʻole hiki i ka manawa, e haʻalele ke kanaka.
Mahele C. ʻO ke kumu hoʻohui me ka multithreading
Noho ke kanaka i hope a nānā i ka hāʻawi ʻana o nā manu nūnū i nā leka iā lākou iho.
Episode D. Asynchronous socket (inā ʻaʻohe mea e loaʻa ai)
Hana ke kanaka i kāna mau mea punahele, akā ʻaʻole poina iā Pigeons.
Episode E. Asynchronous socket (inā loaʻa kekahi mea e loaʻa ai)
Ua hoʻomaha iki ke kanaka mai kāna mau hana no ka loaʻa ʻana o kahi leka mai ka Dove.
Mokuna F. Asynchronous socket me ka multithreading
Hele ke kanaka i kāna ʻoihana a nānā i ka hāʻawi ʻana o nā Pigeons iā lākou iho i nā Leta.
Inā ʻoe e noʻonoʻo ana, ua ʻike paha ʻoe i ke kala o nā kola o nā Pigeons i kēlā me kēia hanana. ʻAʻole kēia me ke kumu ʻole. Ma ka māhele A a me B, hoʻokahi wale nō kumu e hana nei ma ke kikowaena a ʻo ia nō. Ma ka ʻāpana C, ʻelua mau kumu e hana nei. Ua loaʻa ʻekolu kumu i nā ʻāpana D, E a me F. "No ke aha he ʻelua ma laila a ʻekolu ma ʻaneʻi?" - ke nīnau nei ʻoe. ʻO kēia nā kūlana 2 a me 3, ʻoiaʻiʻo, ma kahi o 2 hiki ke loaʻa ka 20, a ma kahi o ʻekolu 200. ʻO ka pahuhopu e hōʻike i ka wela ʻole o nā kumu asynchronous i ka hao e like me ka synchronous.
Ma hea e kūpono ai ka nui o kekahi mea?
E nānā i ka Papa 1, e hōʻike ana i ke ʻano o kahi ʻeke UDP a noʻonoʻo i ka mea hiki iā mākou ke hana me ia.
Papa 1. Ka hoʻonohonoho pūʻolo UDP
nā ʻāpana
0 - 15
16 - 31
0-31
awa kumu
awa hoʻokele
32-63
Ka lōʻihi o ka ʻikepili (Loaʻa)
Checksum
64- ...
ʻIkepili
E hoʻohui i kahi kahua ʻē aʻe i ka hoʻomaka ʻana o kēia pākaukau. Kau (1 Byte). Ua lawa kēia no kēia papahana. Ma muli o ka Session, e ʻike ka mea hana i ka mea e hana ai me ka ʻeke. I kēia manawa, e hana mākou i nā code no nā kau a kākau iā lākou ma ka Papa 2.
Papa 2. Ka wehewehe o na kau
kuhi
Inoa
Hōʻike
0xA1
Hōlamalama
Hoʻolaha ka ʻīpuka i ka inoa o ka pūnaewele LoRa a me ka laulā o nā awa kūpono i kekahi alapine. Pono kēia i mea e ʻike ai nā mea kūʻai hou i ka pūnaewele i loaʻa, a me nā mea kūʻai aku i kēia manawa, inā ʻaʻohe hoʻouna, hiki ke hoʻoholo i ka pae hōʻailona.
0xB1
Palapala noi
Ke ʻike ka mea kūʻai aku i ka pūnaewele, hoʻouna ʻo ia i kāna awa makemake.
0xA2
ʻAe a hōʻole paha
Inā kūʻokoʻa ka awa i noi ʻia e ka mea kūʻai aku, a laila pane ke kikowaena me ka ʻae, a i ʻole me ka hōʻole.
0xB2
loulou i luna
Ke hoʻouna ka mea kūʻai aku i kahi ʻeke UDP i ka ʻīpuka.
0xA3
loulou iho
Ke hoʻouna ka ʻīpuka i kahi ʻeke UDP i ka mea kūʻai aku.
0xC1
Hoʻomau i ka Up-link
Ke hoʻouna ka ʻīpuka i kahi ʻeke UDP i ka pūnaewele kūloko.
Maikaʻi. I kēia manawa, e kūkākūkā kākou i ka haku ʻana o nā kau ma ka Papa 3.
Papa 3. Kau
inoa kau
'Ohui
Hōlamalama
Ka helu kau (1 Byte) + inoa pūnaewele LoRa (4 Bytes) + awa hoʻomaka (2 Bytes) + awa hoʻopau (2 Bytes)
Palapala noi
Ka helu hoʻouna (1 Byte) + LoRa inoa pūnaewele (4 Bytes) + awa makemake ʻia (2 Bytes)
ʻAe a hōʻole paha
Ka helu hoʻouna (1 Byte) + LoRa inoa pūnaewele (4 Byte) + awa i makemake ʻia (2 Byte) + Hua (1 Byte)
loulou i luna
Ke Code Transmission (1 Byte) + LoRa Network Name (4 Bytes) + Remote IP Address (4 Bytes) + Remote Port (2 Bytes) + Local IP Address (4 Bytes) + Local Port (2 Bytes) + Data Size (2 Bytes) ) + ʻIkepili
loulou iho
Ke Code Transmission (1 Byte) + LoRa Network Name (4 Bytes) + Remote IP Address (4 Bytes) + Remote Port (2 Bytes) + Local IP Address (4 Bytes) + Local Port (2 Bytes) + Data Size (2 Bytes) ) + ʻIkepili
Hoʻomau i ka Up-link
Ka helu IP mamao (4 Bytes) + Port mamao (2 Bytes) + Nui ʻIkepili (2 Bytes) + ʻIkepili
Ua kākau au i ʻelua mau mea kūʻai aku no Arduino a no M5Stack. Ma ka hiki iā ʻoe ke ʻike i ka hana ʻana. ʻAʻohe pilikia i loko o ke keʻena; ʻAʻole wau i hana i nā hoʻokolohua kahua.
Loaʻa ka code kumu ma GitHub ma
Hiki iā ʻoe ke aʻo hou e pili ana i ka M5Stack Base Device a kūʻai mai ma aneʻi
Hiki iā ʻoe ke koho i nā modules uea ʻole LoRa no ka Pūnaewele Base
E hauʻoli wau inā pono kēia papahana iā ʻoe. Mahalo nui iā ʻoe no kou manawa!
Ka papa inoa o nā kuhikuhi a (a) nā kumu:
Source: www.habr.com
