Forum: Mikrocontroller und Digitale Elektronik NRF24L01+ mit ATMEGA328P Standalone


von noah (Gast)


Angehängte Dateien:

Lesenswert?

Hallo miteinander,

Ich programmiere schon seit 5 Tagen eine Funkverbindung und komme nicht 
weiter.
Als kleine Background Info, ich bin ein Elektroniker 
Lehrling(auszubildender) im 4ten Jahr und in diesem Jahr müssen wir ein 
Projekt für den Abschluss machen. Ich habe mich für ein erbau eines 
Ferngesteuertem Feuerwehr Auto entschieden. Zurzeit bin ich an der 
Fernsteuerung dran doch ich bekomme die NRF24L01+ Module nicht zu 
laufen.

Ich habe mich zuerst an das Tutorial auf microcontroller.net gewandt 
doch das funktionierte nicht und ich fand heraus das dieses Forum heraus 
das diese Anleitung Fehler Haft war. Dieser Forum beitrage ist jetzt 
schon 4 Jahre alt darum habe einen neuen angefangen.

Den Code habe ich von dem Forum Genommen und für meine Anwendung 
angepasst.

Zum Aufbau:
Ich Habe 2 NRFL24L01+ Module
2 ATMEGA328P mit 2 16Mhz externen quarzen
1 LCD am Empfänger
labornetzgerät mit 5v und einmal 3.3
(Bild angehängt)

Fehler:
1.Ich komme nicht mehr mit ich habe soviel gelesen Daten Blatt Forum und 
alles doch ich bekomme keine Verbindung her der Sender sollte doch so 
funktionieren der ACK sollte im ein Signal geben um die Arrays zu 
versenden oder übersehe ich etwas.

2.Ist das auch normal das ich wenn ich den ATMEGA programmieren will den 
MOSI PIN (7) des NRF24L01+ abstecken muss. Sonst komm eine Fehler 
Meldung das der MOSI PIN nicht verfügbar ist.

3.Wie ich das verstehe sollte es am liegt des am Sender das er den 
Empfänger nicht finden kann da meine LED Blinkt zur Prüfung:
1
temp = nrf24_lastMessageStatus();
2
3
 
4
    if(temp == NRF24_MESSAGE_LOST)
5
    {
6
      PORTD |=(1<<0);
7
      _delay_ms(200);
8
      PORTD &= ~(1<<0);
9
    
10
    }

danke im voraus, ich hoffe mir kann jemand helfen irgendwas muss ich 
übersehen haben.

Gruß

Noah

von Einer K. (Gast)


Lesenswert?

noah schrieb:
> 2.Ist das auch normal das ich wenn ich den ATMEGA programmieren will den
> MOSI PIN (7) des NRF24L01+ abstecken muss. Sonst komm eine Fehler
> Meldung das der MOSI PIN nicht verfügbar ist.
Du solltest den /CS Pin des nRF per Pullup hochhängen.
Dann quatscht der dir nicht mehr dazwischen.

von NRF Tester (Gast)


Lesenswert?

Hast du hier mitgelesen?

Beitrag "2,4 Ghz Kommunikation"

So würde ich anfangen, Ok, das Windows Testprogramm ist von
mir und es ist nicht für alle Systeme geeignet (Einschränkung
auf 32 Bit). Aber du hast den grossen Vorteil dass du nicht
zwei Baustellen gleichzeitig bedienen musst.

Du als "Anfänger" wirst zu viele Fehler auf einmal machen
inklusive der Steckbrett-Aufbauten die unter aller Sau sind
und einer genaueren Prüfung bedürfen.

So kommst du jedenfalls nicht weiter und du müsstest
mindestens deine Schaltpläne und grosse Aufnahmen
deiner Steckbrett-Aufbauten zeigen. Dann können wir
weiter diskutieren und Fehler suchen.

von NRF Tester (Gast)


Lesenswert?

NRF Tester schrieb:
> So kommst du jedenfalls nicht weiter

NRF Tester schrieb:
> Hast du hier mitgelesen?

Und der Threasd zeigt auch auf wie kritisch die Stromversorgung
ist bzw. sein kann.

von NRF Tester (Gast)


Lesenswert?

NRF Tester schrieb:
> So würde ich anfangen, Ok, das Windows Testprogramm ist von
> mir

Nicht ohne weiteres zu finden, daher:
Beitrag "NRF24L01 - Testprogramm für Windows PC"

Wenn du Arduinos hast kannst du testhalber auch erst einmal
so anfangen:

Beitrag "NRF24L01+ test program for Arduino Uno"
Beitrag "NRF24L01+ test program for Arduino Mega"

und dich dann Schritt für Schritt an deine eigene Hardware
herantasten. Auch ein alleinstehender aber mit Sicherheit
funktionsfähiger NRF24 mit Arduino ist breits eine grosse
Hilfestellung bei der Inbetriebnahme.

von Brain 2.0 (Gast)


Lesenswert?

Unabhängig von den ganze Funkproblemen die du hast, sehe ich an deinem 
Atmega328p keine Abblockkondensatoren. Dann sind die Anschlussdrähte des 
Quarzes (was ist das für einer ?) und der Kondensatoren viel zu lang. Da 
könnten leicht Probleme auftreten, dass der Oszillator nicht arbeitet. 
Wie schon geschrieben wurde, den Aufbau solltest du überprüfen und erst 
mal in Ordnung bringen.

von NRF Tester (Gast)


Lesenswert?

NRF Tester schrieb:
> Wenn du Arduinos hast kannst du testhalber auch erst einmal
> so anfangen:
>
> Beitrag "NRF24L01+ test program for Arduino Uno"

Du hast ja zwei Mega328. Damit könntest du nach der Vorlage
des Testprogramms eine Minimalschaltung aufbauen und die
beiden miteinander kommunizieren lassen. Allerdings bräuchtest
du noch einen (zwei) Terminal-Anschluss (Rx, Tx, Masse) zum
Computer um das Testprogramm steuern zu können. Dafür wären
dann die FT232 USB Adapter recht hilfreich ...

Aber für stabile Versorgung der Controller musst du auf jeden
Fall sorgen sonst wird das nichts.

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo

das hier ist empfehlenswert,wie schon genannt:
Beitrag "2,4 Ghz Kommunikation"

zu1: wie im Link zu lesen. Kannst Du die Register lesen und z.b. in 
einer Liste anzeigen lassen? Ja, dazu muß man vielleicht einige 
Codeteile verstehen und nutzbringend an selbst hinzugefügte Zeilen 
anknüpfen.

zu2: CS mittels Widerstand z.B. 33 kOhm inaktiv schalten, falls der 
Ausgang hochohmig wird.

Den Aufbau würde ich lieber auf Lochraster mit kurzen Verbindungen und 
Abblockkondensatoren direkt an den ICs sehen. Kurze Anschlüsse zum 
Quarz, Anschlüsse zum NRF kleiner als 5 cm.

Außerdem sollte der IO-Pin mit dem SS Signal VORHER auf Ausgang gestellt 
sein. Siehe Datenblatt, ""SS pin functionality".

Und stecke besser den Programmieradapter ab.

mfG

: Bearbeitet durch User
Beitrag #6464772 wurde vom Autor gelöscht.
von noah (Gast)


Lesenswert?

Hallo

Danke für die schnellen und vielen antworten ich werde mal eine nach der 
anderen probieren

NRF Tester schrieb:
> das Windows Testprogramm ist von
> mir und es ist nicht für alle Systeme geeignet (Einschränkung
> auf 32 Bit)

mein PC hat 64 Bit also wird diese Anwendung nicht funktionieren.

Kannst du ein Terminal Application Programm empfehlen für den Arduino 
aufbau.

Gruß

Noah

von Brain 2.0 (Gast)


Lesenswert?

Was genau willst du damit machen ?
Als Editor, dann nimm Notepad++, das kannst du in der IDE direkt 
einbinden.

von Georg G. (df2au)


Angehängte Dateien:

Lesenswert?

Du kannst gern von mir zwei Platinen bekommen, die für deine 
Fernsteuerung geeignet sind. Sender und Empfänger unterscheiden sich nur 
in der Software.
Bei Bedarf melde dich bitte unter df2au@gmx.de.

von noah (Gast)


Lesenswert?

Brain 2.0 schrieb:
> Was genau willst du damit machen ?
> Als Editor, dann nimm Notepad++, das kannst du in der IDE direkt
> einbinden.

Ich hätte für den Anfang sonst auch Arduino IDE genommen. Doch wir 
dürfen das nicht für das Projekt verwenden da es schon zu einfach ist 
mit den ganzen lib. laut meinem Lehrer. Wir verwenden Atmel Studio.

Ich möchte 2 - 3 Schalter und 2 Joysticks(jeweils bei einem VRx und VRy 
wie bei einer Fernbedienung) einlesen und an das steuerbord im Auto 
schicken damit es Fährt, Lenkt,...

von noah (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe wieder mal zeit gefunden und habe weiter gemacht und habe einen 
Test Print erstellt wie oben angehängt. Ich kann sonst auch den 
Schaltplan schicken.
Die Reader Schaltung habe ich von dem Forum:
Beitrag "NRF24L01+ test program for Arduino Uno"

quarz habe ich ein 16 MHz.

Doch wenn ich mit dem Oszi messe bekomme ich kein Signal auf dem 
nrf23l01 ist ein eigener quarz drauf der schwingt bei mir nicht kann das 
der Fehler sein.
Wenn ja wie bekomm ich ihn wieder zum schwingen?


Christian S. schrieb:
> Außerdem sollte der IO-Pin mit dem SS Signal VORHER auf Ausgang gestellt
> sein. Siehe Datenblatt, ""SS pin functionality".

habe ich behoben mit sollte so stimmten oder:
1
    DDR_SPI &= ~((1<<DD_MOSI)|(1<<DD_MISO)|(1<<DD_SS)|(1<<DD_SCK));
2
    // Define the following pins as output
3
    DDR_SPI |= ((1<<DD_MOSI)|(1<<DD_SCK));

entschuldigen sie die lange pause aber ich hatte selten zeit.

Gruß

Noah

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> ich habe wieder mal zeit gefunden

... und du hast mal wieder totales Chaos geliefert.

noah schrieb:
> quarz habe ich ein 16 MHz.

Da du ja nur eine AVR-Schaltung zeigst ist es leicht diesen
Quarz zuzuordnen ....

noah schrieb:
> Die Reader Schaltung habe ich von dem Forum:
> Beitrag "NRF24L01+ test program for Arduino Uno"

Auf dem Foto ist ein LCD am Arduino. Das Programm unterstützt
nicht die Ausgabe via LCD. Du brauchst ein Terminal Programm
zum Bedienen.

noah schrieb:
> Doch wenn ich mit dem Oszi messe bekomme ich kein Signal auf dem
> nrf23l01 ist ein eigener quarz drauf der schwingt bei mir nicht kann das
> der Fehler sein.

Bitte schreibe klare kurze Sätze. In diesem Mehrfach-Langsatz ist
nicht klar was du auf was beziehst.

noah schrieb:
> kann das der Fehler sein.

Welcher Fehler? Du schreibst nicht von einem Fehler.

Chaos pur!

von noah (Gast)


Lesenswert?

NRF Tester schrieb:
> Auf dem Foto ist ein LCD am Arduino. Das Programm unterstützt
> nicht die Ausgabe via LCD. Du brauchst ein Terminal Programm
> zum Bedienen.

die uart zeilen habe ich entfernt und die Sachen die ich sehen wollte 
mit dem LCD raus schreiben, dachte das würde durch Abänderung des Codes 
gehen.

NRF Tester schrieb:
> Bitte schreibe klare kurze Sätze. In diesem Mehrfach-Langsatz ist
> nicht klar was du auf was beziehst.

Es kommt garnix an der Antenne an. Der NRF24l01+ quarz schwingt nicht. 
Sollte so doch nicht sein.


Tut mir leid das ich nicht so gut bin wie Sie und undeutlich schrieb, 
ich versuche mein bestes und lese mich auch rein aber ich finde das 
Thema sehr schwierig.

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> Die Reader Schaltung habe ich von dem Forum:
> Beitrag "NRF24L01+ test program for Arduino Uno"

Nein, das ist keine "Reader Schaltung". Es ist ein Testprogramm
für NRF24L01-Module mit dem man testweise senden und empfangen
kann. Die "Schaltung" ist eine Verbindung eines Arduino mit
einem NRF24L01-Modul.

Wenn du den Sinn und Funktion des Programms nicht verstehst
(da du die Anordnung "Reader Schaltung" nennst) dann frage
danach oder lass es sein denn dann hat es wirklich keinen Zweck.

Versuche dich allgemein klar und deutlich auszudrücken, denn
es ist sehr mühlselig und unmotivierend dauernd nachzufragen
und dir die (richtigen) Gedanke herauszuholen.

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> Der NRF24l01+ quarz schwingt nicht. Sollte so doch nicht sein.

Zeige wie du das gemessen hast. Die meisten Messungen eines
Anfängers an Quarzen schlagen fehl.

von Christian S. (roehrenvorheizer)


Lesenswert?

Naja, er hat wohl wie auf dem rechten Bild zu sehen dort einen flachen 
16 MHz Quarz verbaut. Welche Werte haben denn die Kondensatoren am 
Quarz? Ist das vielleicht so ein Obertonquarz, das noch einen 
Schwingkreis erfordert? Steht noch ein anderer Quarz zur Verfügung zum 
Testen? Normalerweise sollte auf dem Oszilloskop dort eine Schwingung 
erkennbar sein. Zur Not ließe sich die Funktion mittels Blink LED 
anzeigen.


Mfg

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> Es kommt garnix an der Antenne an.

Wie hast du das herausgefunden? Du kannst nicht direkt an der
Antenne messen. Oh das ist wirklich sehr mühselig.

von NRF Tester (Gast)


Lesenswert?

Christian S. schrieb:
> Naja, er hat wohl wie auf dem rechten Bild zu sehen dort einen flachen
> 16 MHz Quarz verbaut.

Deine Antwort lässt darauf schliessen dass du ihn auch nicht
verstehst. Du bist nicht allein. Er meint wohl den Quarz auf
dem NRF24.

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> die uart zeilen habe ich entfernt und die Sachen die ich sehen wollte
> mit dem LCD raus schreiben, dachte das würde durch Abänderung des Codes
> gehen.

Vielleicht wäre es (sehr) gut wenn du erst mal diesen Artikel
(netiquette) lesen und verstehen würdest.

Insbesondere der Abschnitt "Klare Beschreibung des Problems".

von Christian S. (roehrenvorheizer)


Lesenswert?

Ein Glück, daß ich nicht alleine bin! Das Funkmodul kann auch defekt 
sein, durch Überspannung oder ESD.

mfg

von noah (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe die netiquette Seite gelesen.

>> Naja, er hat wohl wie auf dem rechten Bild zu sehen dort einen flachen
>> 16 MHz Quarz verbaut.

Ich habe auf meinem Print einen 16 MHz quarz mit 2x 22pf Kondensator auf 
GND für den ext Takt am ATmega 328P, das NRF24l01+ Modul hat auch einen 
16 MHz quarz.
Ich habe die Messung an beiden quarz durchgeführt, mein quarz schwingt 
der des NRF24l01+ Moduls sollte doch ähnlich schwingen, doch dieser 
schwingt gar nicht.
Messung des NRF24l01x quarz am x1 pin1 laut Bild.

NRF Tester schrieb:
> Wie hast du das herausgefunden?

ich habe am RFx2401C IC am pin 10 Ant gemessen und an der spule L5 laut 
Bild.
An beiden keine Veränderung zu sehen.

Ist das verständlich?

entschuldigen sie die ungenauen angaben.

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> Ich habe die Messung an beiden quarz durchgeführt, mein quarz schwingt
> der des NRF24l01+ Moduls sollte doch ähnlich schwingen, doch dieser
> schwingt gar nicht.

Der NRF24 zeigt erst Schwingungen wenn er auf Receive oder
Transmit geschaltet ist.

Stelle mit Hilfe des Terminals dein Arduino-Testprogramm
auf Transmit oder Receive, dann kannst du die Quarz-Schwingungen
nachweisen.

noah schrieb:
> ich habe am RFx2401C IC am pin 10 Ant gemessen und an der spule L5 laut
> Bild.
> An beiden keine Veränderung zu sehen.

An der Antennenleitung (egal wo) kannst du nichts nachweisen da dein
Oszilloskop keine 2.4 GHz anzeigen kann. Um dies zu sehen bräuchtest
du einen Spektrum Analyzer.

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> Die Reader Schaltung habe ich von dem Forum:
> Beitrag "NRF24L01+ test program for Arduino Uno"

Falls du es noch nicht ganz verstanden haben solltest:

Wenn du zwei Aufbauten dieser Art hast kannst du die
Funktionsfähigkeit der NRF Module damit zweifelsfrei nachweisen.
Ein Arduino sendet, der andere empfängt, und umgekehrt.

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> Print_2.jpeg

Wenn du mir zu diesem Aufbau den Prozessortyp, die Taktfrequenz
und die Pin-Belegung nennst baue ich dir ein Testprogramm wie
es für den Arduino von mir zur Verfügung gestellt worden ist.
Damit könntest du dann auch wie mit einem zweiten Arduino deine
Module testen.

von noah (Gast)


Angehängte Dateien:

Lesenswert?

NRF Tester schrieb:
> Wenn du mir zu diesem Aufbau den Prozessortyp, die Taktfrequenz
> und die Pin-Belegung nennst

Print_2.jpeg

Prozessortyp: Atmel Atmega 328P
        IC MCU 8BIT 32KB FLASH 28DIP

Taktfrequenz: 16 MHz

Pin Belegung: siehe excel

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> Pin Belegung: siehe excel

Ein irgendwie geartetes Rückmelden wo einmal ein Dank für die
Unterstützung erwähnt wird, das scheint wohl ein Ding der
Unmöglichkeit .....

Hast du denn auf dieser Platine überhaupt eine Möglichkeit
mittels Terminal-Programm an die serielle Schnittstelle des
Atmega 328P zu kommen? Sonst hat diese Version auch keinen
Sinn ....

Eine Rückmeldung ob du das alles verstehst was hier getan wird
und beabsichtigt ist wäre auch nicht schlecht. Wenn ich dir
erzähle

NRF Tester schrieb:
> Nein, das ist keine "Reader Schaltung". Es ist ein Testprogramm
> für NRF24L01-Module mit dem man testweise senden und empfangen
> kann. Die "Schaltung" ist eine Verbindung eines Arduino mit
> einem NRF24L01-Modul.

und es kommt von dir nichts zurück dann weiss ich nicht ob ich
davon ausgehen kann dass du das Prinzip verstanden hast. Alles
in allem sind deine Kommentare sehr knapp gehalten sodass es
oft schwierig ist sich einen Reim daraus zu machen.

von noah (Gast)


Lesenswert?

NRF Tester schrieb:
> und es kommt von dir nichts zurück dann weiss ich nicht ob ich
> davon ausgehen kann dass du das Prinzip verstanden hast. Alles
> in allem sind deine Kommentare sehr knapp gehalten sodass es
> oft schwierig ist sich einen Reim daraus zu machen.

Ich versuche mich kurzzuhalten aber ich habe es verstanden das es kein 
Reader Print ist sondern nur eine Verbindung von den NRF24l01 Pins zum 
Arduino ist.

NRF Tester schrieb:
> Hast du denn auf dieser Platine überhaupt eine Möglichkeit
> mittels Terminal-Programm an die serielle Schnittstelle des
> Atmega 328P zu kommen?

ja ich komme an seriellen Schnittstellen Pins PD0 und PD1.


Und ich weiß ihre Hilfe sehr zu schätzen und entschuldige mich für die 
Anstrengung die ich ihnen bereite. Danke für die bisherige Hilfe

von NRF Tester (Gast)


Lesenswert?

noah schrieb:
> ja ich komme an seriellen Schnittstellen Pins PD0 und PD1.

Gut. Du brauchst dann noch von diesen Pins eine Verbindung
zum PC, entweder Serial-COM-Adapter oder Serial-USB Adapter.
Und natürlich ein Terminal Programm.

Ich werde heute Abend eine Version des Testprogramms für
deine speziele Konfiguration erstellen und zum Download hier
zur Verfügung stellen.

von NRF Tester (Gast)


Angehängte Dateien:

Lesenswert?

noah schrieb:
> Pinbelegung.xlsx

So, also hier im Anhang eine Version des NRF24 Testprogramms
speziell auf die angegebene Pinbelegung konfiguriert.

Achtung: Terminal auf 57600 Baud stellen. Die höheren
Baudraten funktionierten nicht bei allen AVRs bzw. Arduinos
zuverlässig. Im Programm lässt sich die Baudrate nicht
verändern.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.