- Arbejdsforklaring:
- Nødvendige komponenter:
- Kredsløbsdiagram:
- Arbejde med nRF24L01 + Wireless Transceiver Module:
- Programmering af Arduinos:
- Behandlingsprogram:
- Testning:
Oprettelse af et lokalt netværk for at dele personale og fortrolige data er blevet næsten umuligt for en almindelig mand i vores moderne verden. Dette skyldes primært, at alle almindelige chatmetoder som Whatsapp, Facebook, Hangout og næsten alt involverer en internetforbindelse.
Hvad hvis vi kunne dele data uden internetmediet ?
Hvor sejt ville det være, hvis du kunne kommunikere med mennesker i dit hjem eller på din arbejdsplads uden en netpakke eller internetforbindelse?
Hvad hvis vi kunne tilpasse vores chat-skærm med vores egen fantasi?
Alt dette er muligt med en mikrocontroller og et trådløst transmissionsmedium. Dette Arduino-chatrum, der bruger nRF24L01-projektet, hjælper dig med at oprette et billigt chatrum i dit lokale område.
Så lad os hoppe ind og se, hvordan det fungerer.
Arbejdsforklaring:
Dybest set for at få denne ting til at fungere, har vi brug for et par Arduino-kort og billige trådløse moduler. De trådløse moduler, som vi bruger her, er nRF24L01. Årsagen til at vælge disse moduler er, at disse er efterfølgerne til Zigbee og er nemme at arbejde med en opsat forbindelse. Disse moduler fungerer også på 2,4 GHz (ISM-bånd) med frekvenshopping spredt spektrum og stød burst muligheder, som får os til at føle os afslappede over forstyrrelsesproblemer.
Vores Arduino og NRF24L01 er forbundet sammen for at etablere en seriel kommunikation, så de kan tale med hinanden. NRF24L01 er halv duplex transceivermoduler, og derfor kan de sende og modtage data. Dataene indsamles fra brugeren og transmitteres disse data kan modtages af ethvert (eller et bestemt) modul og vise dem på deres skærm.
Men!!!!! Skal vi chatte ved hjælp af fejlfindingsskærmen i Arduino? Selvfølgelig ikke. Vi skal bygge og tilpasse vores egen chat-skærm ved hjælp af 'Processing'. Processing er en software, der er i stand til at kommunikere med Arduino ved hjælp af UART. Vi opretter en.exe-fil med Processing-sprog, som kan køre på enhver computer med Java Runtime. For at chatte skal vi bare tilslutte vores Arduino og åbne denne.exe-fil og Booooom !! vi er i vores eget privatiserede helt gratis chatrum.
Dette projekt er begrænset til blot at tilføje to medlemmer til chatrummet, men nRF24L01 har 6 rørledninger, og der kan således maksimalt være 6 medlemmer i vores chatrum. Dette char room kan arbejde inden for 100 meters rækkevidde afhængigt af nRF24L01-modulerne.
Så lad os shoppe !!!!
Nødvendige komponenter:
- Arduino (enhver version eller model) - 2Nos
- nRF24L01 + Trådløst transceiver-modul - 2Nr
- 3.3 Spændingsregulator - 2 nr. (Ikke obligatorisk)
- Tilslutning af ledninger
- Interesse (Lolz)
Kredsløbsdiagram:
Arduino Mega med nRF24L01:
Arduino Nano med nRF24L01:
Vores projekt involverer ingen komplekse forbindelser. Jeg har brugt en Arduino Mega og en Arduino Nano, og deres forbindelser med nRF24L01 er vist ovenfor. Du kan bruge alle Arduino-modeller.
Arbejde med nRF24L01 + Wireless Transceiver Module:
For at få vores nRF24L01 til at arbejde fri for støj vil vi måske overveje følgende ting. Jeg har arbejdet med denne nRF24L01 + i lang tid og har lært, at følgende punkter kan hjælpe dig med at blive ramt på en væg.
1. De fleste af nRF24L01 + modulerne på markedet er falske. De billige, som vi kan finde på Ebay og Amazon, er de værste (Bare rolig, med få tweaks kan vi få dem til at fungere)
2. Hovedproblemet er strømforsyningen, ikke din kode. De fleste af koder online fungerer korrekt, jeg har selv en arbejdskode, som jeg personligt testede. Lad mig vide, hvis du har brug for dem.
3. Vær opmærksom, fordi modulerne, der er trykt som NRF24L01 +, faktisk er Si24Ri (Ja, et kinesisk produkt).
4. Klon- og falske moduler vil forbruge mere strøm, og udvikl derfor ikke dit strømkredsløb baseret på nRF24L01 + datablad, fordi Si24Ri vil have et højt strømforbrug omkring 250 mA.
5. Pas på spændingsbølger og strømstød, disse moduler er meget følsomme og kan let brænde op. (;-(stegt indtil videre 2 moduler)
6. Tilføjelse af et par kondensatorer (10uF og 0.1uF) på tværs af Vcc og GND af modulet hjælper med at gøre din forsyning ren, og dette fungerer for de fleste moduler.
Stadig hvis du har problemer, skal du rapportere om kommentarsektionen eller læse igennem dette.
Programmering af Arduinos:
Programmet for både Arduino Nano og Mega vil være ens for ændringen i CE- og CS-ben. Jeg vil forklare programmet ved at opdele det i små segmenter.
Da Arduino og nRF24L01 kommunikerer gennem SPI, har vi opfordret til SPI-bibliotek. Vi har også inkluderet vores Maniacbug RF24 lib, så vores RF-moduler fungerer. Download filen herfra, og tilføj dem til din IDE.
#omfatte
Vores NRF-moduler er forbundet til pin 8 og 10 til henholdsvis CE og CS.
RF24 myRadio (8, 10);
Vi opretter en struktureret datapakke kaldet pakke . Den variable tekst vil blive brugt til at transmittere data i luften.
struct pakke {char tekst; // Tekst, der skal sendes i luften}; typedef struct pakke pakke; Pakkedata;
I funktionen tomrumsopsætning () initialiserer vi baudhastigheden til 9600 og indstiller vores moduler til 115 med MIN strømforbrug og 250KBPS hastighed. Du kan snakke med disse værdier senere.
ugyldig opsætning () {Serial.begin (9600); forsinkelse (1000); //Serial.print("Setup initialiseret "); myRadio.begin (); myRadio.setChannel (115); // 115 bånd over WIFI signaler myRadio.setPALevel (RF24_PA_MIN); // MIN power low rage myRadio.setDataRate (RF24_250KBPS); // Minimumshastighed}
Modulet er lavet til at fungere i transmissionstilstand, hvis data modtages gennem seriel buffer, ellers vil det være i modtagertilstand på udkig efter data i luften. Data fra bruger gemmes i en Char Array og sendes til WriteData () for at transmittere dem.
void loop () {while (Serial.available ()> 0) // Hent værdier fra bruger {val = Serial.peek (); hvis (indeks <19) // En mindre end størrelsen på arrayet {inChar = Serial.read (); // Læs et tegn inData = inChar; // Gem det indeks ++; // Forøg hvor du skal skrive næste inData = '\ 0'; // Nul afslut strengen} hvis (val == '#') {strcpy (data.text, inData); WriteData (); // Sæt modulet i transmissionstilstand, mens (index! = 0) {inData = ''; indeks--; }}} ReadData (); // Sæt modul Modtagefunktion}
ugyldig WriteData () -funktion skriver data på 0xF0F0F0F0AA-adresse, denne adresse bruges som skrivepipe på andet modul.
ugyldige WriteData () {myRadio.stopListening (); // Stop modtagelse og start transminitng myRadio.openWritingPipe (0xF0F0F0F066); // Sender data på denne 40-bit adresse myRadio.write (& data, sizeof (data)); forsinkelse (300); }
ugyldig ReadData () -funktion skriver data på 0xF0F0F0F066 denne adresse, denne adresse bruges som læserør på andet modul.
ugyldige ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Hvilket rør der skal læses, 40 bit Adresse myRadio.startListening (); // Stop transmission og start Reveicing hvis (myRadio.available ()) {mens (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
Det er det, vores programmeringsdel er forbi. Hvis du ikke kan forstå nogle få ting her, skal du kontrollere de to programmer for begge Arduinos, der er angivet i afsnittet Kode nedenfor, jeg har tilføjet kommentarlinjer for at forklare ting meget bedre.
Behandlingsprogram:
'Processing' er open source-software, der bruges af kunstnere til grafisk design. Denne software bruges til at udvikle software og Android-applikationer. Det er ret let at udvikle og ligner meget Android Development IDE. Derfor har jeg forkortet forklaringen.
Behandlingskoden for begge chatskærme er angivet her:
- Chat skærm 1 Behandlingskode
- Chat Screen 2-behandlingskode
Højreklik på dem, og klik på 'Gem link som..' for at downloade dem og åbne dem på din computer efter opsætning af Arduinos. Du skal installere 'Processing' -software for at åbne disse *.pde-filer og derefter 'Køre' dem for at åbne chatbokse. Kommentarsektionen er åben for forespørgsler. Behandlingsskissen for sender og modtagermodul er identisk.
I nedenstående kodeafsnit er "port = new Serial (this, Serial.list (), 9600); // Læser den 4. PORT ved 9600 baudrate", da den beslutter fra hvilken port til data fra.
ugyldig opsætning () {størrelse (510.500); port = ny Serial (denne, Serial.list (), 9600); // Læser den 4. PORT ved 9600 baudrate println (Serial.list ()); baggrund (0); }
Her har jeg læst data fra 4. port fra min Arduino.
Så for eksempel hvis du har COM COM COM COM COM
Derefter læser ovenstående kode data fra COM.
Testning:
Nu da vores Processing og Arduino-skitse er klar, skal du bare uploade programmet til Arduino og lade det være tilsluttet din bærbare computer. Åbn din behandlingsskitse, og begynd at skrive, og tryk på "Enter", din besked vil blive sendt til den anden Arduino, som viser den modtagne tekst på en anden behandlingsapplikation, der er forbundet med en anden computer. Yderligere tjek videoen nedenfor for fuld demonstration.
Så sådan kan du tale med dine venner og familie i dit lokale område uden at have nogen internetforbindelse ved hjælp af dette billige Arduino Chat Room.