- Arbeidsforklaring:
- Nødvendige komponenter:
- Kretsdiagram:
- Arbeide med nRF24L01 + Wireless Transceiver Module:
- Programmering av Arduinos:
- Behandlingsprogram:
- Testing:
Å skape et lokalt nettverk for å dele personell og konfidensielle data har blitt nesten umulig for en vanlig mann i vår moderne verden. Dette er hovedsakelig fordi alle vanlige chatmetoder som Whatsapp, Facebook, Hangout og nesten alt involverer en internettforbindelse.
Hva om vi kunne dele data uten internett ?
Hvor kult det ville vært hvis du kunne kommunisere med folk hjemme eller på arbeidsplassen uten nettpakke eller Internett-tilkobling?
Hva om vi kunne tilpasse chat-skjermen med vår egen fantasi?
Alt dette er mulig med en mikrokontroller og et trådløst overføringsmedium. Dette Arduino-chatterommet ved hjelp av nRF24L01-prosjektet vil veilede deg om å sette opp et billig chatterom i ditt lokale område.
Så la oss hoppe inn og se hvordan det fungerer.
Arbeidsforklaring:
I utgangspunktet for å få denne tingen til å fungere, trenger vi et par Arduino-kort og billige trådløse moduler. De trådløse modulene som vi skal bruke her er nRF24L01. Årsaken til å velge disse modulene er at disse er etterfølgerne til Zigbee og er enkle å jobbe med en konfigurert forbindelse. Disse modulene fungerer også på 2,4 GHz (ISM-bånd) med frekvenshoppende spredt spektrum og sjokk burst-alternativer som gjør at vi føler oss avslappede av interferensproblemer.
Arduino og NRF24L01 er koblet sammen for å etablere en seriekommunikasjon slik at de kan snakke med hverandre. NRF24L01 er halvdupleks transceiver-moduler, og de kan derfor sende og motta data. Dataene samles inn fra brukeren og overføres disse dataene kan mottas av alle (eller en bestemt) modul og vise dem på skjermen.
Men!!!!! Skal vi chatte ved hjelp av feilsøkingsskjermen til Arduino? Selvfølgelig ikke. Vi skal bygge og tilpasse vår egen chat-skjerm ved hjelp av 'Processing'. Processing er en programvare som er i stand til å kommunisere med Arduino ved hjelp av UART. Vi oppretter en.exe-fil med Processing-språk, som kan kjøres på hvilken som helst datamaskin med Java Runtime. For å chatte må vi bare koble til Arduino og åpne denne.exe-filen, og Booooom !! vi er i vårt eget privatiserte helt gratis chatterom.
Dette prosjektet er begrenset til å bare legge til to medlemmer i chatterommet, men nRF24L01 har 6 rørledninger, og det kan derfor være maksimalt 6 medlemmer i chatterommet vårt. Dette rom kan fungere innen 100 meters rekkevidde, avhengig av nRF24L01-modulene.
Så la oss shoppe !!!!
Nødvendige komponenter:
- Arduino (hvilken som helst versjon eller modell) - 2Nos
- nRF24L01 + Trådløs transceiver-modul - 2Nr
- 3.3 Spenningsregulator - 2Nr. (Ikke obligatorisk)
- Koble ledninger
- Interesse (Lolz)
Kretsdiagram:
Arduino Mega med nRF24L01:
Arduino Nano med nRF24L01:
Prosjektet vårt involverer ingen komplekse forbindelser. Jeg har brukt en Arduino Mega og en Arduino Nano, og forbindelsene deres med nRF24L01 er vist ovenfor. Du kan bruke alle Arduino-modeller.
Arbeide med nRF24L01 + Wireless Transceiver Module:
For å få nRF24L01 til å fungere uten støy, vil vi kanskje vurdere følgende ting. Jeg har jobbet med denne nRF24L01 + i lang tid og har lært at følgende punkter kan hjelpe deg fra å bli truffet på en vegg.
1. De fleste av nRF24L01 + -modulene i markedet er falske. De billige som vi kan finne på Ebay og Amazon er de verste (Ikke bekymre deg, med få justeringer kan vi få dem til å fungere)
2. Hovedproblemet er strømforsyningen, ikke koden din. De fleste kodene på nettet vil fungere skikkelig, jeg har selv en arbeidskode som jeg personlig testet. Gi meg beskjed hvis du trenger dem.
3. Vær oppmerksom fordi modulene som skrives ut som NRF24L01 + faktisk er Si24Ri (Ja, et kinesisk produkt).
4. Klon- og falske moduler vil forbruke mer strøm, og derfor ikke utvikle strømkretsen din basert på nRF24L01 + datablad, fordi Si24Ri vil ha høyt strømforbruk ca 250mA.
5. Vær oppmerksom på spenningsryper og strømspenninger, disse modulene er veldig følsomme og kan lett brenne opp. (;-(stekt opp to moduler så langt)
6. Å legge til et par kondensatorer (10uF og 0.1uF) over Vcc og GND av modulen hjelper deg med å gjøre forsyningen ren, og dette fungerer for de fleste modulene.
Fortsatt hvis du har problemer, rapporter om kommentarseksjonen eller les gjennom dette.
Programmering av Arduinos:
Programmet for både Arduino Nano og Mega vil være likt for endringen i CE- og CS-pinner. Jeg vil forklare programmet ved å dele det opp i små segmenter.
Siden Arduino og nRF24L01 kommuniserer gjennom SPI, har vi bedt om SPI-bibliotek. Vi har også tatt med vår Maniacbug RF24 lib for at RF-modulene skal fungere. Last ned filen herfra, og legg dem til IDE.
#inkludere
Våre NRF-moduler er koblet til pin 8 og 10 til henholdsvis CE og CS.
RF24 myRadio (8, 10);
Vi lager en strukturert datapakke kalt pakke . Den variable teksten skal brukes til å overføre data i luften.
struct pakke {char tekst; // Tekst som skal sendes i luften}; typedef struktur pakke; Pakkedata;
I void setup () -funksjonen initialiserer vi overføringshastigheten til 9600 og setter opp modulene til 115 med MIN strømforbruk og 250KBPS hastighet. Du kan fikle med disse verdiene senere.
ugyldig oppsett () {Serial.begin (9600); forsinkelse (1000); //Serial.print("Setup initialisert "); myRadio.begin (); myRadio.setChannel (115); // 115 bånd over WIFI signaler myRadio.setPALevel (RF24_PA_MIN); // MIN kraft lav rage myRadio.setDataRate (RF24_250KBPS); // Minste hastighet}
Modulen er laget for å fungere i sendemodus hvis Data mottas gjennom seriell buffer, ellers vil den være i mottakermodus på jakt etter data i luften. Dataene fra brukeren lagres i en Char Array og sendes til WriteData () for å overføre dem.
void loop () {while (Serial.available ()> 0) // Få verdier fra bruker {val = Serial.peek (); hvis (indeks <19) // En mindre enn størrelsen på matrisen {inChar = Serial.read (); // Les et tegn inData = inChar; // Lagre det indeks ++; // Øk hvor du skal skrive neste inData = '\ 0'; // Null avslutte strengen} if (val == '#') {strcpy (data.text, inData); WriteData (); // Sett modulen i overføringsmodus mens (indeks! = 0) {inData = ''; indeks--; }}} Lesedata (); // Sett modul mottaksmodus}
void WriteData () -funksjonen skriver dataene på 0xF0F0F0F0AA-adressen, denne adressen brukes som skriverør på en annen modul.
ugyldig WriteData () {myRadio.stopListening (); // Stopp mottak og start transminitng myRadio.openWritingPipe (0xF0F0F0F066); // Sender data på denne 40-biters adressen myRadio.write (& data, sizeof (data)); forsinkelse (300); }
ugyldig ReadData () -funksjonen skriver dataene på 0xF0F0F0F066 denne adressen, denne adressen brukes som leserør på annen modul.
ugyldig ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Hvilket rør som skal leses, 40 bit Adresse myRadio.startListening (); // Stopp transmittering og start gjenoppretting hvis (myRadio.available ()) {mens (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
Det er det, vår programmeringsdel er over. Hvis du ikke kan forstå få ting her, sjekk de to programmene for begge Arduinos, gitt i Kodeseksjonen nedenfor, jeg har lagt til kommentarlinjer for å forklare ting mye bedre.
Behandlingsprogram:
'Processing' er programvare med åpen kildekode som brukes av kunstnere til grafikkdesign. Denne programvaren brukes til å utvikle programvare og Android-applikasjoner. Det er ganske enkelt å utvikle og ligner veldig på Android Development IDE. Derfor har jeg forkortet forklaringen.
Behandlingskoden for begge chat- skjermene er gitt her:
- Chat Screen 1 Behandlingskode
- Chat Screen 2 Behandlingskode
Høyreklikk på dem og klikk på 'Lagre lenke som..' for å laste dem ned og åpne dem på datamaskinen din etter at du har satt opp Arduinos. Du må installere prosesseringsprogramvare for å åpne disse *.pde-filene og deretter kjøre dem for å åpne chatboksene. Kommentarseksjonen er åpen for spørsmål. Behandlingsskissen for sender og mottakermodul er identisk.
I kodeseksjonen nedenfor er "port = new Serial (this, Serial.list (), 9600); // Leser den 4. PORTEN ved 9600 baudrate" er viktig da den bestemmer fra hvilken port til data fra.
ugyldig oppsett () {størrelse (510 500); port = ny Serial (denne, Serial.list (), 9600); // Leser 4. PORT ved 9600 baudrate println (Serial.list ()); bakgrunn (0); }
Her har jeg lest data fra den fjerde porten fra min Arduino.
Så for eksempel hvis du har COM COM COM COM COM
Da vil ovennevnte kode lese data fra COM.
Testing:
Nå siden prosesserings- og Arduino-skissen er klar, er det bare å laste opp programmet til Arduino og la det være koblet til den bærbare datamaskinen. Åpne behandlingsskissen din og begynn å skrive og trykk "Enter" meldingen din vil bli overført til den andre Arduino som viser den mottatte teksten på et annet behandlingsapplikasjon som er koblet til en annen datamaskin. Se videoen nedenfor for full demonstrasjon.
Så dette kan du snakke med venner og familie i ditt lokale område uten å ha noen internettforbindelse, ved å bruke dette billige Arduino Chat Room.