- Arbeitserklärung:
- Erforderliche Komponenten:
- Schaltplan:
- Arbeiten mit dem drahtlosen Transceiver-Modul nRF24L01 +:
- Programmierung der Arduinos:
- Verarbeitungsprogramm:
- Testen:
Die Schaffung eines lokalen Netzwerks zum Austausch von Personal und vertraulichen Daten ist für einen einfachen Mann in unserer modernen Welt fast unmöglich geworden. Dies liegt hauptsächlich daran, dass alle gängigen Chat-Methoden wie WhatsApp, Facebook, Hangout und fast alles eine Internetverbindung beinhalten.
Was wäre, wenn wir Daten ohne das Medium Internet teilen könnten ?
Wie cool wäre es, wenn Sie ohne Netzpaket oder Internetverbindung mit Menschen in Ihrem Zuhause oder am Arbeitsplatz kommunizieren könnten ?
Was wäre, wenn wir unseren Chat-Bildschirm mit unseren eigenen Vorstellungen anpassen könnten ?
All dies ist mit einem Mikrocontroller und einem drahtlosen Übertragungsmedium möglich. Dieser Arduino-Chatraum mit dem nRF24L01-Projekt hilft Ihnen beim Einrichten eines kostengünstigen Chatraums in Ihrer Nähe.
Also lasst uns hineinspringen und sehen, wie es funktioniert.
Arbeitserklärung:
Grundsätzlich benötigen wir ein Paar Arduino-Boards und billige Funkmodule, damit dies funktioniert. Die drahtlosen Module, die wir hier verwenden werden, sind nRF24L01. Der Grund für die Auswahl dieser Module ist, dass dies die Nachfolger von Zigbee sind und mit einer eingerichteten Verbindung einfach zu arbeiten sind. Diese Module arbeiten auch mit 2,4 GHz (ISM-Band) mit Frequenzsprung-Spreizspektrum und Schock-Burst-Optionen, wodurch wir uns von Interferenzproblemen entspannt fühlen.
Unser Arduino und NRF24L01 sind miteinander verbunden, um eine serielle Kommunikation herzustellen, damit sie miteinander kommunizieren können. Die NRF24L01 sind Halbduplex-Transceiver-Module und können daher Daten senden und empfangen. Die Daten werden vom Benutzer gesammelt und übertragen. Diese Daten können von beliebigen (oder einem bestimmten) Modul empfangen und auf ihrem Bildschirm angezeigt werden.
Aber!!!!! Werden wir über den Debug-Bildschirm von Arduino chatten? Natürlich nicht. Wir werden unseren eigenen Chat-Bildschirm mit Hilfe von 'Verarbeitung' erstellen und anpassen. Processing ist eine Software, die über UART mit dem Arduino kommunizieren kann. Wir werden eine EXE-Datei mit der Verarbeitungssprache erstellen, die auf jedem Computer mit Java Runtime ausgeführt werden kann. Um zu chatten, müssen wir nur unser Arduino anschließen und diese EXE-Datei öffnen und Booooom !! Wir sind in unserem eigenen privatisierten völlig kostenlosen Chat-Raum.
Dieses Projekt beschränkt sich darauf, nur zwei Mitglieder zum Chatraum hinzuzufügen. Der nRF24L01 verfügt jedoch über 6 Pipelines, sodass maximal 6 Mitglieder in unserem Chatraum vorhanden sein können. Dieser Saiblingraum kann je nach nRF24L01-Modul im Bereich von 100 Metern arbeiten.
Also lass uns einkaufen gehen !!!!
Erforderliche Komponenten:
- Arduino (jede Version oder jedes Modell) - 2Nos
- nRF24L01 + Drahtloses Transceiver-Modul - 2Nr
- 3.3 Spannungsregler - 2Nos. (Nicht verpflichtend)
- Kabel anschließen
- Interesse (Lolz)
Schaltplan:
Arduino Mega mit nRF24L01:
Arduino Nano mit nRF24L01:
Unser Projekt beinhaltet keine komplexen Zusammenhänge. Ich habe ein Arduino Mega und ein Arduino Nano verwendet und ihre Verbindungen mit nRF24L01 sind oben gezeigt. Sie können beliebige Arduino-Modelle verwenden.
Arbeiten mit dem drahtlosen Transceiver-Modul nRF24L01 +:
Damit unser nRF24L01 jedoch geräuschfrei funktioniert, sollten Sie die folgenden Punkte berücksichtigen. Ich habe lange an diesem nRF24L01 + gearbeitet und gelernt, dass die folgenden Punkte Ihnen helfen können, nicht an eine Wand getroffen zu werden.
1. Die meisten auf dem Markt befindlichen nRF24L01 + -Module sind gefälscht. Die billigen, die wir bei Ebay und Amazon finden können, sind die schlechtesten (Keine Sorge, mit wenigen Verbesserungen können wir sie zum Laufen bringen).
2. Das Hauptproblem ist das Netzteil, nicht Ihr Code. Die meisten Online-Codes funktionieren ordnungsgemäß. Ich selbst habe einen Arbeitscode, den ich persönlich getestet habe. Lassen Sie mich wissen, wenn Sie sie benötigen.
3. Achten Sie darauf, dass die Module, die als NRF24L01 + gedruckt werden, tatsächlich Si24Ri sind (Ja, ein chinesisches Produkt).
4. Die Klon- und Fake-Module verbrauchen mehr Strom. Entwickeln Sie daher Ihren Stromkreis nicht basierend auf dem Datenblatt nRF24L01 +, da Si24Ri einen hohen Stromverbrauch von ca. 250 mA hat.
5. Achten Sie auf Spannungswelligkeiten und Stromstöße. Diese Module sind sehr empfindlich und können leicht verbrennen. (;-(2 Module bisher gebraten)
6. Das Hinzufügen eines Kondensators (10uF und 0,1uF) über Vcc und Gnd des Moduls hilft dabei, Ihre Versorgung rein zu machen, und dies funktioniert für die meisten Module.
Wenn Sie dennoch Probleme haben, melden Sie sich im Kommentarbereich oder lesen Sie diese durch.
Programmierung der Arduinos:
Das Programm für Arduino Nano und Mega wird für den Wechsel der CE- und CS-Pins ähnlich sein. Ich werde das Programm erklären, indem ich es in kleine Segmente aufteile.
Da Arduino und nRF24L01 über das SPI kommunizieren, haben wir die SPI-Bibliothek aufgerufen. Wir haben auch unsere Maniacbug RF24 lib aufgenommen, damit unsere RF-Module funktionieren. Laden Sie die Datei von hier herunter und fügen Sie sie Ihrer IDE hinzu.
#einschließen
Unsere NRF-Module sind an Pin 8 und 10 an CE bzw. CS angeschlossen.
RF24 myRadio (8, 10);
Wir erstellen ein strukturiertes Datenpaket namens package . Der variable Text wird zur Übertragung von Daten auf Sendung verwendet.
Strukturpaket {char text; // Text, der auf Sendung übertragen werden soll}; typedef struct package Package; Paketdaten;
In der Funktion void setup () initialisieren wir die Baudrate auf 9600 und stellen unsere Module auf 115 mit MIN Stromverbrauch und 250 KBit / s Geschwindigkeit ein. Sie können später mit diesen Werten herumspielen.
void setup () {Serial.begin (9600); Verzögerung (1000); //Serial.print("Setup Initialized "); myRadio.begin (); myRadio.setChannel (115); // 115 Band über WIFI-Signalen myRadio.setPALevel (RF24_PA_MIN); // MIN Power Low Rage myRadio.setDataRate (RF24_250KBPS); // Mindestgeschwindigkeit}
Das Modul arbeitet im Sendemodus, wenn Daten über den seriellen Puffer empfangen werden. Andernfalls befindet es sich im Empfangsmodus und sucht nach Daten in der Luft. Die Daten des Benutzers werden in einem char-Array gespeichert und an WriteData () gesendet, um sie zu übertragen.
void loop () {while (Serial.available ()> 0) // Werte vom Benutzer abrufen {val = Serial.peek (); if (index <19) // Eins kleiner als die Größe des Arrays {inChar = Serial.read (); // Ein Zeichen lesen inData = inChar; // Speichern Sie es index ++; // Inkrementiere, wo als nächstes geschrieben werden soll inData = '\ 0'; // Null beendet den String} if (val == '#') {strcpy (data.text, inData); WriteData (); // Modul in den Sendemodus versetzen while (index! = 0) {inData = ''; Index--; }}} ReadData (); // Modul Empfangsmodus setzen}
Die Funktion void WriteData () schreibt die Daten in die Adresse 0xF0F0F0F0AA. Diese Adresse wird als Schreibpipe in einem anderen Modul verwendet.
void WriteData () {myRadio.stopListening (); // Stoppen Sie den Empfang und starten Sie die Übertragung von myRadio.openWritingPipe (0xF0F0F0F066); // Sendet Daten an diese 40-Bit-Adresse myRadio.write (& data, sizeof (data)); Verzögerung (300); }}
Die Funktion void ReadData () schreibt die Daten auf 0xF0F0F0F066 dieser Adresse. Diese Adresse wird als Lesepipe auf einem anderen Modul verwendet.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Welche Pipe soll gelesen werden, 40 Bit Adresse myRadio.startListening (); // Transminting beenden und Reveicing starten if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
Das war's, unser Programmierteil ist vorbei. Wenn Sie hier einige Dinge nicht verstehen können, überprüfen Sie die beiden Programme für beide Arduinos, die im Code-Abschnitt unten angegeben sind. Ich habe Kommentarzeilen hinzugefügt, um die Dinge viel besser zu erklären.
Verarbeitungsprogramm:
'Processing' ist eine Open-Source-Software, die von Künstlern für das Grafikdesign verwendet wird. Diese Software wird zum Entwickeln von Software und Android-Anwendungen verwendet. Es ist recht einfach zu entwickeln und der Android Development IDE sehr ähnlich. Daher habe ich die Erklärung verkürzt.
Der Verarbeitungscode für beide Chat-Bildschirme ist hier angegeben:
- Chat-Bildschirm 1 Code verarbeiten
- Chat-Bildschirm 2 Code verarbeiten
Klicken Sie mit der rechten Maustaste darauf und klicken Sie auf "Link speichern unter…", um sie herunterzuladen und nach dem Einrichten der Arduinos auf Ihrem Computer zu öffnen. Sie müssen die Software 'Processing' installieren, um diese *.pde-Dateien zu öffnen, und sie dann 'ausführen', um die Chat-Boxen zu öffnen. Der Kommentarbereich ist offen für Anfragen. Die Verarbeitungsskizze für Sender und Empfänger ist identisch.
Im folgenden Codeabschnitt ist "port = new Serial (this, Serial.list (), 9600); // Liest den 4. PORT mit 9600 Baudrate" wichtig, da er entscheidet, von welchem Port Daten stammen sollen.
void setup () {size (510.500); port = new Serial (this, Serial.list (), 9600); // Liest den 4. PORT bei 9600 Baudrate println (Serial.list ()); Hintergrund (0); }}
Hier habe ich Daten vom 4. Port von meinem Arduino gelesen.
Zum Beispiel, wenn Sie COM COM COM COM COM haben
Dann liest der obige Code Daten von COM.
Testen:
Jetzt, da unsere Verarbeitungs- und Arduino-Skizze fertig ist, laden Sie das Programm einfach auf Arduino hoch und lassen Sie es an Ihren Laptop angeschlossen. Öffnen Sie Ihre Verarbeitungsskizze und beginnen Sie mit der Eingabe. Drücken Sie die Eingabetaste. Ihre Nachricht wird an das andere Arduino gesendet, das den empfangenen Text in einer anderen Verarbeitungsanwendung anzeigt, die an einen anderen Computer angeschlossen ist. Weitere Informationen finden Sie im Video unten.
So können Sie mit Ihrem preiswerten Arduino Chat Room mit Ihren Freunden und Ihrer Familie in Ihrer Nähe sprechen, ohne über eine Internetverbindung zu verfügen.