Mein Ziel war es, einem WEMOS D1 mini ein Datentelegram von einem Arduino Nano per 2,4 GHz NRF24l01 Modul zu übertragen.
Das hat mich wieder zwei Wochenende gekostet. Als Basis dienten zwei bereits funktionierende Programme, die auf zwei Nanos fehlerfrei funktionierten.
Einziger Unterschied, so dachte ich, war die Deklaration der Anschlusspins CE und CSN für den NRF24l01 beim WEMOS D1 mini. Trotz aller Bemühungen hat es nicht geklappt.
Zuerst dachte ich, es läge daran, welche Pins des D1 mini ich verwendet hatte. Aber alle Versuche schlugen fehl.
Nach langem Suchen, fummeln und Probieren habe ich einen kompletten Schnitt gemacht und zwei Beispielprogramme von einer Internetseite genommen.
Was soll ich sagen, es funktionierte auf Anhieb. Allerdings war dort die Kommunikation anders herum. Der D1 mini hat gesendet und der Nano empfangen.
Kurz die relevanten Programmteile untereinander getauscht und siehe da, es ging auch vom Nano zum D1 mini .
Nun gilt es noch herauszufinden, welche Programmteile der alten Programme für die Nanos, das Scheitern verursachte.
Signifikante Unterschiede sind zwei Einstellungen des NRF24, nämlich die Übertragungsgeschwindigkeit und die Signalstärke.
Im alten Programm ist die Übertragungsgeschwindigkeit 250kb/s und Übertragungsleistung auf Maximum.
In den neuen Programmen habe ich die Einstellung auf Default gelassen.
Zuerst möchte ich ein paar grundsätzliche Dinge zum Anschluß klären.
Das NRF24l01 wird über eine so genannte SPI-Schnittstelle angesteuert. Für einen SPI-Anschluß benötigt man mindestens die Signale MISO, MOSI, SCK und CS.
Das bedeutet MOSI (Master in Slave Out) und heißt, auf dieser Leitung sendet das Mastermodul an den Slave. MISO ist (Master in Slave Out) und bedeutet, dass auf dieser leitung der Slave Informationen an den Master sendet.
SCK ist die Taktleitung, die vom Master angesteuert wird, damit der Slave weiß, wann jeweils ein Informationsbit ankommt. Weil der SPI-Bus ein Bus ist, können mehrere Slaves an diesen Bus angeschlossen werden, dabei teilen sie sich alle die MOSI, MISO und SCK Leitung. Damit der jeweilige Slave auch weiß, dass er gemeint ist, gibt es noch den CS (Chip Select) Kanal. Dafür benötigt der master in der Regel soviele Ausgänge, wie Slaves angeschlossen sind.
Bei den unterschiedlichen Modulplattformen sind diverse Ports bereits für die erforderlichen Anschlüsse der SPI-Kommunikation vorgesehen und stellen damit so eine Art Standard dar.
Lediglich bei der CS (Chip Select) Leitung können unterschiedliche Ports gewählt werden. Leider kochen die Hersteller von Sensoren beim SPI-Bus teilweise eigene Süppchen. Bestes Beispeil ist der NRF24, der zusätzlich noch einen IRQ und CSN-Anschluß besitzt. Auf den IRQ-Anschluß kann man ggf. verzichten, nicht aber auf den CSN-Anschluß.
Kommen wir wieder zum konkreten Beispiel. Der WEMOS D1 mini sieht für die SPI-Schnittstelle die Ports D5, D6 und D7 vor. D5 - SCK, D6 - MISO und D7 - MOSI.
CE / CS habe ich in meinem Beispiel auf D1 liegen. Es funktionieren aber auch D2 und D4 (ausprobiert). Für CSN verwende ich D2, es geht aber auch D8 (ausprobiert)
Für den Nano sind die Anschlüsse D10, D11, D12 und D13 üblich. D10 - SS / CS (Chip Select), D11 MOSI, D12 - MISO und D13 - SCK (Clock).
CE und CSN werden gerne auf D8 und D9 gelegt. Es kommen durchaus auch die Ports D3 und D4 vor.
Meine spezielle Belegung für CS und CSN beim WEMOS D1 mini hat einen besonderen Grund. ich möchte später noch ein TFT-Display dazu anschließen, wie im Bericht WEMOS D1 mini mit 240x320 2,4" TFT Display RGB beschrieben. Da wird ein Portausgang für CS (TFT-Display) beim D1 mini bereits mit D2 belegt, weshalb ich den für den NRF24 für CS wahrscheinlich D8 oder D0 verwenden werde.
Eine kurze Anmerkung, warum ich unbedingt jetzt den D1 mini ans Laufen bringen möchte:
Das später noch anzuschließendes TFT-Display arbeitet leider nur mit 3,3V, weshalb ich bei einem Nano Spannungsteiler oder einen zusätzlichen Pegelwandler einsetzen müsste. Das liefert der D1 mini bereits "ab Werk" und es sind keine weiteren Hardwareanpassungen nötig. Außerdem habe ich die D1 minis hier schon nutzlos liegen. Die D1 minis sind zudem schneller und haben einen größeren Speicher. Die geringere Portzahl ist nicht so schlimm, weil ich damit sowieso nicht mehrere Sensoren betreiben, oder analoge Signale messen möchte. Trotzdem wird es mit dem NRF24 und dem geplaten TFT-Display langsam eng.
Das hat mich wieder zwei Wochenende gekostet. Als Basis dienten zwei bereits funktionierende Programme, die auf zwei Nanos fehlerfrei funktionierten.
Einziger Unterschied, so dachte ich, war die Deklaration der Anschlusspins CE und CSN für den NRF24l01 beim WEMOS D1 mini. Trotz aller Bemühungen hat es nicht geklappt.
Zuerst dachte ich, es läge daran, welche Pins des D1 mini ich verwendet hatte. Aber alle Versuche schlugen fehl.
Nach langem Suchen, fummeln und Probieren habe ich einen kompletten Schnitt gemacht und zwei Beispielprogramme von einer Internetseite genommen.
Was soll ich sagen, es funktionierte auf Anhieb. Allerdings war dort die Kommunikation anders herum. Der D1 mini hat gesendet und der Nano empfangen.
Kurz die relevanten Programmteile untereinander getauscht und siehe da, es ging auch vom Nano zum D1 mini .
Nun gilt es noch herauszufinden, welche Programmteile der alten Programme für die Nanos, das Scheitern verursachte.
Signifikante Unterschiede sind zwei Einstellungen des NRF24, nämlich die Übertragungsgeschwindigkeit und die Signalstärke.
Im alten Programm ist die Übertragungsgeschwindigkeit 250kb/s und Übertragungsleistung auf Maximum.
In den neuen Programmen habe ich die Einstellung auf Default gelassen.
Zuerst möchte ich ein paar grundsätzliche Dinge zum Anschluß klären.
Das NRF24l01 wird über eine so genannte SPI-Schnittstelle angesteuert. Für einen SPI-Anschluß benötigt man mindestens die Signale MISO, MOSI, SCK und CS.
Das bedeutet MOSI (Master in Slave Out) und heißt, auf dieser Leitung sendet das Mastermodul an den Slave. MISO ist (Master in Slave Out) und bedeutet, dass auf dieser leitung der Slave Informationen an den Master sendet.
SCK ist die Taktleitung, die vom Master angesteuert wird, damit der Slave weiß, wann jeweils ein Informationsbit ankommt. Weil der SPI-Bus ein Bus ist, können mehrere Slaves an diesen Bus angeschlossen werden, dabei teilen sie sich alle die MOSI, MISO und SCK Leitung. Damit der jeweilige Slave auch weiß, dass er gemeint ist, gibt es noch den CS (Chip Select) Kanal. Dafür benötigt der master in der Regel soviele Ausgänge, wie Slaves angeschlossen sind.
Bei den unterschiedlichen Modulplattformen sind diverse Ports bereits für die erforderlichen Anschlüsse der SPI-Kommunikation vorgesehen und stellen damit so eine Art Standard dar.
Lediglich bei der CS (Chip Select) Leitung können unterschiedliche Ports gewählt werden. Leider kochen die Hersteller von Sensoren beim SPI-Bus teilweise eigene Süppchen. Bestes Beispeil ist der NRF24, der zusätzlich noch einen IRQ und CSN-Anschluß besitzt. Auf den IRQ-Anschluß kann man ggf. verzichten, nicht aber auf den CSN-Anschluß.
Kommen wir wieder zum konkreten Beispiel. Der WEMOS D1 mini sieht für die SPI-Schnittstelle die Ports D5, D6 und D7 vor. D5 - SCK, D6 - MISO und D7 - MOSI.
CE / CS habe ich in meinem Beispiel auf D1 liegen. Es funktionieren aber auch D2 und D4 (ausprobiert). Für CSN verwende ich D2, es geht aber auch D8 (ausprobiert)
Für den Nano sind die Anschlüsse D10, D11, D12 und D13 üblich. D10 - SS / CS (Chip Select), D11 MOSI, D12 - MISO und D13 - SCK (Clock).
CE und CSN werden gerne auf D8 und D9 gelegt. Es kommen durchaus auch die Ports D3 und D4 vor.
Meine spezielle Belegung für CS und CSN beim WEMOS D1 mini hat einen besonderen Grund. ich möchte später noch ein TFT-Display dazu anschließen, wie im Bericht WEMOS D1 mini mit 240x320 2,4" TFT Display RGB beschrieben. Da wird ein Portausgang für CS (TFT-Display) beim D1 mini bereits mit D2 belegt, weshalb ich den für den NRF24 für CS wahrscheinlich D8 oder D0 verwenden werde.
Eine kurze Anmerkung, warum ich unbedingt jetzt den D1 mini ans Laufen bringen möchte:
Das später noch anzuschließendes TFT-Display arbeitet leider nur mit 3,3V, weshalb ich bei einem Nano Spannungsteiler oder einen zusätzlichen Pegelwandler einsetzen müsste. Das liefert der D1 mini bereits "ab Werk" und es sind keine weiteren Hardwareanpassungen nötig. Außerdem habe ich die D1 minis hier schon nutzlos liegen. Die D1 minis sind zudem schneller und haben einen größeren Speicher. Die geringere Portzahl ist nicht so schlimm, weil ich damit sowieso nicht mehrere Sensoren betreiben, oder analoge Signale messen möchte. Trotzdem wird es mit dem NRF24 und dem geplaten TFT-Display langsam eng.
Zuletzt bearbeitet: