- Darbinis paaiškinimas:
- Būtini komponentai:
- Grandinės schema:
- Darbas su „nRF24L01 +“ belaidžiu imtuvu-moduliu:
- „Arduinos“ programavimas:
- Apdorojimo programa:
- Testavimas:
Sukurti vietinį tinklą dalytis personalo ir konfidencialiais duomenimis paprastam žmogui šiuolaikiniame pasaulyje tapo beveik neįmanoma. Taip yra daugiausia todėl, kad visi įprasti pokalbių metodai, tokie kaip „Whatsapp“, „Facebook“, „Hangout“ ir beveik viskas, yra susiję su interneto ryšiu.
O jei mes galėtume dalytis duomenimis be interneto terpės ?
Kaip būtų puiku, jei galėtumėte bendrauti su žmonėmis namuose ar darbo vietoje neturėdami tinklo paketo ar interneto ryšio?
Ką daryti, jei mes galime pritaikyti savo pokalbių ekraną pagal savo vaizduotę?
Visa tai įmanoma naudojant mikrovaldiklį ir belaidę perdavimo terpę. Šis „ Arduino“ pokalbių kambarys, kuriame naudojamas „nRF24L01“ projektas, padės jums sukurti pigių pokalbių kambarį savo vietovėje.
Taigi įšokime ir pažiūrėkime, kaip tai veikia.
Darbinis paaiškinimas:
Iš esmės, kad šis dalykas veiktų, mums reikės poros „ Arduino“ plokščių ir pigių belaidžių modulių. Belaidžiai moduliai, kuriuos čia naudosime, yra nRF24L01. Šių modulių pasirinkimo priežastis yra ta, kad jie yra „Zigbee“ įpėdiniai ir juos lengva dirbti su nustatytu ryšiu. Šie moduliai taip pat veikia esant 2,4 GHz (ISM juostai) su dažnio šuolio sklaidos spektru ir smūgio sprogimo galimybėmis, kurie leidžia mums jaustis atsipalaidavusiems nuo trukdžių problemų.
Mūsų „Arduino“ ir NRF24L01 yra sujungti, kad užmegztų nuoseklųjį ryšį, kad jie galėtų kalbėtis tarpusavyje. NRF24L01 yra pusiau dupleksiniai siųstuvo ir imtuvo moduliai, todėl jie gali siųsti ir gauti duomenis. Duomenys yra renkami iš vartotojo ir perduodami. Duomenis gali gauti bet kuris (arba vienas konkretus) modulis ir pateikti juos savo ekrane.
Bet !!!!! Ar ketiname kalbėtis naudodami „Arduino“ derinimo ekraną? Žinoma ne. Mes sukursime ir pritaikysime savo pokalbių ekraną naudodami „Apdorojimą“. Apdorojimas yra programinė įranga, galinti bendrauti su „Arduino“ naudojant UART. Sukursime.exe failą su apdorojimo kalba, kuris galėtų veikti bet kuriame kompiuteryje su „Java Runtime“. Norėdami kalbėtis, tiesiog turime prijungti „Arduino“ ir atidaryti šį.exe failą bei „Booooom !!“ mes esame savo privatizuotame visiškai nemokamame pokalbių kambaryje.
Šis projektas apsiriboja tik dviejų narių įtraukimu į pokalbių kambarį, tačiau „nRF24L01“ yra 6 vamzdynai, todėl mūsų pokalbių kambaryje gali būti ne daugiau kaip 6 nariai. Šis char kambarys gali veikti 100 metrų atstumu, atsižvelgiant į „nRF24L01“ modulius.
Taigi einam apsipirkti !!!!
Būtini komponentai:
- „Arduino“ (bet kuri versija ar modelis) - 2
- „nRF24L01 +“ belaidis siųstuvas-imtuvas - 2 Nr
- 3.3 Įtampos reguliatorius - 2Nos. (Nera privalomas)
- Jungiamieji laidai
- Palūkanos (Lolz)
Grandinės schema:
„Arduino Mega“ su „nRF24L01“:
„Arduino Nano“ su „nRF24L01“:
Mūsų projekte nėra jokių sudėtingų ryšių. Aš naudojau „ Arduino Mega“ ir „Arduino Nano“, o jų sąsajos su nRF24L01 parodytos aukščiau. Galite naudoti bet kokius „Arduino“ modelius.
Darbas su „nRF24L01 +“ belaidžiu imtuvu-moduliu:
Tačiau norėdami, kad „nRF24L01“ veiktų be triukšmo, norėtume apsvarstyti šiuos dalykus. Ilgą laiką dirbau su šiuo „nRF24L01 +“ ir sužinojau, kad šie dalykai gali padėti pataikyti į sieną.
1. Dauguma rinkoje esančių „nRF24L01 +“ modulių yra netikri. Pigiausios, kurias galime rasti „Ebay“ ir „Amazon“, yra blogiausios (nesijaudinkite, mes galime priversti jas veikti su keletu patobulinimų)
2. Pagrindinė problema yra maitinimo šaltinis, o ne jūsų kodas. Dauguma kodų internete veiks tinkamai, aš pats turiu darbinį kodą, kurį aš asmeniškai išbandžiau. Praneškite man, jei jums jų reikia.
3. Atkreipkite dėmesį, nes moduliai, atspausdinti kaip NRF24L01 +, iš tikrųjų yra Si24Ri (taip, kinų produktas).
4. Klonas ir netikri moduliai sunaudos daugiau energijos, todėl nekurkite savo maitinimo grandinės, remdamiesi „nRF24L01 +“ duomenų lapu, nes „Si24Ri“ suvartos didelę srovę apie 250 mA.
5. Saugokitės įtampos bangų ir srovės šuolių, šie moduliai yra labai jautrūs ir gali lengvai sudegti. (;-(iki šiol pakepė 2 modulius)
6. Pridėjus porą kondensatorių (10uF ir 0.1uF) visoje modulio Vcc ir Gnd sistemoje, jūsų tiekimas bus švarus, ir tai tinka daugumai modulių.
Vis tiek, jei turite problemų, praneškite apie komentarų skyrių arba perskaitykite tai.
„Arduinos“ programavimas:
„Arduino Nano“ ir „Mega“ programa bus panaši keičiant CE ir CS kaiščius. Paaiškinsiu programą suskaidydamas ją į mažus segmentus.
Kadangi „Arduino“ ir „nRF24L01“ bendrauja per SPI, mes paprašėme SPI bibliotekos. Mes taip pat įtraukėme savo „Maniacbug RF24 lib“, kad veiktų mūsų RF moduliai. Atsisiųskite failą iš čia ir pridėkite juos prie savo IDE.
# įtraukti
Mūsų NRF moduliai yra prijungti prie 8 ir 10 kontaktų atitinkamai prie CE ir CS.
RF24 „myRadio“ (8, 10);
Sukuriame struktūrizuotų duomenų paketą, vadinamą paketu . Kintamas tekstas bus naudojamas duomenims perduoti ore.
strukt paketas {char text; // Tekstas, kurį reikia perduoti eteryje}; typedef struct paketas Paketas; Pakuotės duomenys;
Funkcijoje „ void setup“ ( „ void setup“) inicijuojame perdavimo spartą iki 9600, o modulius nustatome į 115 su MIN energijos suvartojimu ir 250KBPS greičiu. Su šiomis vertybėmis galėsite vėliau mąstyti.
negaliojanti sąranka () {Serial.begin (9600); vėlavimas (1000); //Serial.print("Setup inicialized "); myRadio.begin (); „myRadio.setChannel“ (115); // 115 juostos virš WIFI signalų myRadio.setPALevel (RF24_PA_MIN); // MIN galios mažas įtūžis myRadio.setDataRate (RF24_250KBPS); // Minimalus greitis}
Modulis sukurtas veikti perdavimo režimu, jei duomenys gaunami per nuoseklųjį buferį, priešingu atveju jis bus imtuvo režime ir ieškos duomenų apie orą. Vartotojo duomenys saugomi char masyve ir siunčiami į WriteData () juos perduoti.
void loop () {while (Serial.available ()> 0) // Gauti reikšmes iš vartotojo {val = Serial.peek (); if (rodyklė <19) // Vienu mažesniu nei masyvo dydis {inChar = Serial.read (); // Perskaitykite simbolį inData = inChar; // „Store it index ++“; // Padidėjimas, kur rašyti toliau inData = '\ 0'; // Null nutraukti eilutę} if (val == '#') {strcpy (data.text, inData); WriteData (); // Įdėkite modulį į perdavimo režimą, kol (index! = 0) {inData = ''; indeksas--; }}} Skaityti duomenis (); // Įdėkite modulio priėmimo režimą}
funkcija void WriteData () įrašo duomenis 0xF0F0F0F0AA adresu, šis adresas naudojamas kaip kito modulio rašymo vamzdis.
negaliojantis WriteData () {myRadio.stopListening (); // Nustokite gauti ir pradėkite valdyti myRadio.openWritingPipe (0xF0F0F0F066); // Siunčia duomenis apie šį 40 bitų adresą myRadio.write (& data, sizeof (data)); vėlavimas (300); }
funkcija void ReadData () rašo duomenis 0xF0F0F0F066 šiuo adresu, šis adresas naudojamas kaip kito modulio skaitymo vamzdis.
negaliojantis „ReadData“ () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Kurį vamzdį skaityti, 40 bitų adresas myRadio.startListening (); // Sustabdykite „Transminting“ ir pradėkite „Reveicing if“ (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (duomenys.tekstas); }}
Viskas, mūsų programavimo dalis baigėsi. Jei čia negalite suprasti kelių dalykų, patikrinkite abi „Arduinos“ programas, pateiktas žemiau esančiame skyriuje „Kodas“. Aš pridėjau komentarų eilutes, kad paaiškinčiau daug geriau.
Apdorojimo programa:
„Processing“ yra atviro kodo programinė įranga, kurią menininkai naudoja kurdami grafiką. Ši programinė įranga naudojama programinei įrangai ir „Android“ programoms kurti. Tai gana lengva sukurti ir labai panaši į „Android Development IDE“. Taigi aš sutrumpinau paaiškinimą.
Abiejų pokalbių ekranų apdorojimo kodas pateikiamas čia:
- 1 pokalbių ekranas apdoroja kodą
- 2 pokalbių ekranas apdoroja kodą
Dešiniuoju pelės mygtuku spustelėkite juos ir spustelėkite „Išsaugoti nuorodą kaip..“, norėdami juos atsisiųsti ir atidaryti kompiuteryje, sukūrę „Arduinos“. Norėdami atidaryti šiuos *.pde failus, turite įdiegti „Processing“ programinę įrangą ir tada paleisti, kad atidarytumėte pokalbių dėžutes. Komentarų skiltis yra atvira užklausoms. Siųstuvo ir imtuvo modulio apdorojimo eskizas yra identiškas.
Žemiau esančiame kodo skyriuje "port = new Serial (this, Serial.list (), 9600); // skaito 4-ąjį uostą 9600 baudos greičiu" yra svarbu, nes jis nusprendžia, iš kurio prievado reikia duomenų.
void setup () {dydis (510 500); port = new Serial (tai, Serial.list (), 9600); // Skaito 4-ąjį uostą 9600 baudų greičiu println (Serial.list ()); fonas (0); }
Čia aš perskaičiau duomenis iš 4-ojo uosto iš savo „Arduino“.
Pavyzdžiui, jei turite COM COM COM COM COM
Tada aukščiau pateiktas kodas nuskaitys duomenis iš COM.
Testavimas:
Kadangi mūsų apdorojimo ir „Arduino“ eskizas yra paruoštas, tiesiog įkelkite programą į „Arduino“ ir palikite ją prijungtą prie savo nešiojamojo kompiuterio. Atidarykite „Processing“ eskizą ir pradėkite rašyti ir paspauskite „Enter“. Jūsų pranešimas bus perduotas kitam „Arduino“, kuris rodys gautą tekstą kitoje apdorojimo programoje, prijungtoje prie kito kompiuterio. Toliau peržiūrėkite toliau pateiktą vaizdo įrašą, kad galėtumėte demonstruoti.
Taigi, naudodamiesi šiuo nebrangiu „ Arduino“ pokalbių kambariu, galite kalbėtis su savo draugais ir šeima savo vietovėje neturėdami interneto ryšio.