LoRa NRF24L01+
De NRF24L01+ chip is een LoRa transceiver die middels een SPI break out geschikt is gemaakt voor gebruik met een Arduino. Wij gebruiken deze transceiver in een poging om een lokaal LoRa netwerk te maken gebaseerd op Arduino bordjes.

  • Ping en Pong
  • /robotigs/documentatie/plaatjes/lora_test1.png
      Ping en Pong zijn 2 minimale robotjes, ieder uitgerust met een LoRa transceiver (Banggood). De software is bijna identiek voor beiden. Ping is onze gateway blijft bij de server. Pong is uitgerust met een accupack en is dus mobiel.
    • Zendvermogen en afstanden
    • Tabelletje maken over de IoT zendafstanden die hier ter plekke kunnen worden bereikt met deze modules. Bij de zwakste zendinstelling (radio.setPALevel(RF24_PA_MIN); //RF24_PA_MAX=default, HIGH LOW MIN) is het al mogelijk om met de kas of vanuit de schuur te communiceren!
    • Oversturing zendvermogen
    • De kwaliteit van de zender holt achteruit als het vermogen op MAX wordt gezet. Ook Pong moet op MIN staan om een succesvolle zendactie te kunnen maken met Ping naar Pong. Internet studie laat zien dat deze modules makkelijk overstuurd kunnen worden. Wat voor piek aan vermogen heeft een zendactie dan nodig?
    • Ping zonder Pong
    • Als ik Pong uitzet dan geeft Ping ineens dat hij niet correct kan zenden. Zit er dan een controle bij het zenden, een soort ontvangstbevestiging van Pong op? Ja, maar het kan goed zijn dat de acknowledgement pas komt nadat de het aantal retries is verstreken.

  • Bibliotheek tmrh20
  • De aanbevolen bibliotheek is RF24 van Tmrh20. Deze bibliotheek is niet alleen geschikt voor een Arduino. Dit is merkbaar in het moeilijkere gebruik maar de bibliotheek kan wel worden geïnstalleerd vanuit de IDE. Er bestaat op Github een overzicht van de classes. Ik heb eerlijk gezegd nog geen andere serieuze bibliotheek gevonden. Het meest simpele programma dat ik kan vinden is Getting started van tmrh20. Met een simpele setting in het programma wordt er 1 van beide de hoofdzender (ping) die wordt aangesloten op de seriële monitor. De andere transceiver (pong) wordt enkel op de voedingsspanning aangesloten. Door nu een `T` commando te geven zal ping de huidige tijd naar pong sturen. Pong stuurt de ontvangen gegevens dan weer terug en ping laat zien hoe lang de hele cyclus heeft geduurd.
    • https://github.com/pstolarz/NRF_HAL/blob/master/examples/nrf_scan/nrf_scan.ino
    • Software instellingen bibliotheek tmrh20
    • Er bestaat op Github een overzicht van alle classes.
      • radio.setRetries(3,5);
      • void setRetries (uint8_t delay, uint8_t count) Set the number and delay of retries upon failed submit. De default is 3,5. Het uitzetten leidt er toe dat er regelmatig een time-out gebeurt bij het lezen van het antwoord van Pong. Set the number and delay of retries upon failed submit. Parameters: delay = How long to wait between each retry, in multiples of 250us, max is 15. 0 means 250us, 15 means 4000us. count = How many retries before giving up, max 15.
      • radio.setPALevel(RF24_PA_MIN)
      • void RF24::setPALevel ( rf24_pa_dbm_e level ) Er zijn in totaal 4 zendsterktes die in de software kunnen worden ingesteld. RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM, and RF24_PA_HIGH=0dBm. Overal wordt geadviseerd om het zendvermogen zo laag mogelijk (RF24_PA_MIN) te zetten in verband met problemen met de voeding. Het blijkt niet te maken te hebben met de voeding maar met oversturing van het signaal. Default staat de bibliotheek automatisch op RF24_PA_MAX en derhalve is het voor eerste testen aan te bevelen om dit te wijzigen in RF24_PA_MIN.
      • radio.setDataRate(RF24_250KBPS);
      • bool setDataRate (rf24_datarate_e speed) Stel de zendsnelheid in. 250Kbs is de default snelheid en de langzaamste snelheid. Voor ons echter meer dan snel genoeg. De 4 mogelijkheden zijn: RF24_250KBPS voor 250kbs, RF24_1MBPS voor 1Mbps, RF24_2MBPS voor 2Mbps .


  • Aansluitingen NRF24L01+
  • /robotigs/documentatie/plaatjes/Lora-pinout.png
    • Voeding
    • De voedingsspanning mag maximaal 3,3Vdc zijn maar de rest van de pennen mag op 5Vdc worden aangesloten.
    • Aansluitdraden
    • Deze tranceivers communiceren door middel van SPI. Buiten de 3 pennen benodigd voor SPI, zijn er nog 2 extra pennen nodig voor Chip Enable en Chip Select Not. Default worden deze pennen voorgeschreven, maar op de Arduino moet je 9 en 10 gebruiken in plaata van 7 en 8. Zorg dat pin 10 (op de UNO) de CE is. Het blijkt dat alles in Hello World uitsluitend correct werkt zodra de CE=10 en de CSN=9 worden aangesloten op een Arduino Uno. Het lijkt er dus op dat er niet helemaal juist gewerkt wordt met de SPI bibliotheek. Dat is iets dat ik al veel vaker heb zien gebeuren in sketches, vooral in assembler. If you are using pins other than 10 and 9 for CSN and CE you must still set pin 10 for OUTPUT to ensure that the Uno acts as the SPI master.
      • CE
      • CE (Chip Enable = 10) is an active-HIGH pin. When selected the nRF24L01 will either transmit or receive, depending upon which mode it is currently in.
      • CSN
      • CSN (Chip Select Not = 9) is an active-LOW pin and is normally kept HIGH. When this pin goes low, the nRF24L01 begins listening on its SPI port for data and processes it accordingly.
      RF24Arduinosketchkleur
      SCK13SCKoranje
      MSIO12MISOgeel
      MOSI11MOSIgroen
      CE10ce_pinpaars
      CSN9cs_pinwit

    How nRF24L01+ Wireless Module Works & Interface with Arduino

  • Documentatie
  • How nRF24L01+ Wireless Module Works & Interface with Arduino
    Uitleg2
    Wat kan ik ermee
    Welk netwerk wanneer?
    Welk netwerk?
    Heatmap TTN
    Heb ik een gateway nodig?
    The Things Network