BeetLora

Last Updated on 11 november 2024 by Syds

Ik had al een tijdje het plan om iets met LoRaWan te doen. LoRa staat voor Long Range, LoRaWan is een netwerk voor IOT-devices waarmee korte berichten (50 bytes) verzonden kunnen worden over afstanden tot wel 20 km. Kenmerkend is het lage energieverbruik van LoRaWan-devices.

Naast domotica, electronica en wandelen mag ik ook graag vissen. Nadat ook de afstand tussen de beetmelders op de steiger en ontvanger in huis van mijn tweede setje te groot bleek, ontstond het idee om de beetmelders aan te sluiten op een LoRa device en zo de aanbeet middels een app op de telefoon te kunnen ontsluiten.

De use-case van dit project is het aansluiten van één tot zes beetmelders op een microcontroller. Bij een aanbeet wordt er middels een LoRa zender een kort bericht naar een server gestuurd. Je kunt je via MQTT abonneren op events gegenereerd middels voorgenoemde berichten. De app ontvangt middels MQTT de berichten en stuurt vervolgens een melding naar het startscherm van de telefoon, speelt een signaal af en of trilt. In de app is te zien om welke beetmelder het gaat en hoe lang de run was/is. Tevens wordt een led op de beetLoRa geactiveerd welke aangeeft op welke beetmelder de aanbeet is geregistreerd. Middels een resetknop op de beetLora of in de app kan de led uitgezet worden.

Ben met beettracker.nl in contact om te kijken of de aanbeet vervolgens ook automatisch geregistreerd kan worden in hun app.

Onderdelenlijst:

AantalOnderdeelTe bestellen bijKosten
1Pico LiPo 16mb PIM560www.raspberrystore.nl€ 13,50
220-pins male header 2.54mm pitchOp voorraad
220-pins female header 2.54mm pitchOp voorraad
1RFM95W LORA modulewww.aliexpress.com€ 6,48
28-pins male header 2.0mm pitch
28-pins female header 2.0mm pitch
6Lumbert 1501-09 2.5mm Jack chassis socket Monowww.reichelt.com€ 6,30
6Led 5mm geelOp voorraad
6Weerstand 220OhmOp voorraad
12Condensator 10uFOp voorraad
6LF1117T 3.3 volt regulatorwww.tinytronics.nl€ 9,00
1Momentary tactile switchOp voorraad
1LiPo shim
1LiPo batterij 3.7vOp voorraad
1IPEX-1 coaxiale connector SMDwww.aliexpress.com€ 4,29 (per 10)
1868Mhz Lora Antenne + IPEX-1 kabelwww. aliexpress.com€ 5,69 (per 2)

Benodigd:

  • Soldeerbout + tin
  • 3D printer + PLA
  • Epoxy

Stap 1. PCB ontworpen

Belangrijkste componenten op de PCB zijn de Raspberry Pico en de RFM95W LoRa zender. Daarnaast uiteraard de inputs voor de beetmelders en de LED’s. Hiervoor de volgende pinout bedacht:

Pinout

Raspberry PicoDevice
GPIO 0 (1)2.5mm jack Input 1
GPIO 1 (2)2.5mm jack Input 2
GPIO 2 (4)2.5mm jack Input 3
GPIO 3 (5)2.5mm jack Input 4
GPIO 4 (6)2.5mm jack Input 5
GPIO 5 (7)
GPIO 6 (9)Reset switch
GPIO 7 (10)RFM95W-DIO0 (14)
GPIO 8 (11)RFM95W-NSS (5)
GPIO 9 (12)RFM95W-RESET (6)
GPIO 10 (14)RFM95W-DIO1 (15)
GPIO 11 (15)
GPIO 12 (16)LED 3
GPIO 13 (17)
GPIO 14 (19)LED 4
GPIO 15 (20)2.5mm jack Input 6
GPIO 16 (21)RFM95W-MISO (2)
GPIO 17 (22)LED 5
GPIO 18 (24)RFM95W-SCK (4)
GPIO 19 (25)RFM95W-MOSI (3)
GPIO 20 (26)LED 6
GPIO 21 (27)LED 2
GPIO 22 (29)LED 1
GPIO 26 (31)
GPIO 27 (32)
GPIO 28 (34)
ADC_REF (35)
RUN (30)
3v3_EN (37)
3v3(OUT) (36)RFM95W-3.3V (13)
VSYS (39)
VBUS (40)
GND (23)RFM95W-GND (10)

Dit resulteert in het volgende schema en PCB ontwerp:

Korte toelichting:

De meeste beetmelders beschikken over een 2.5mm jack-aansluiting voor het aansluiten van een hanger of swinger die tevens oplicht wanneer er een aanbeet is. De beetmelder wordt middels deze 2.5mm jack-aansluiting en een (kort) kabeltje aangesloten op de beetLora. Uit metingen van een aantal beetmelders bleek dat het uitgangsvermogen varieert tussen de 0 (geen aanbeet) en 9v (bij een aanbeet), dit blijkbaar afhankelijk van het voltage van de toegepaste batterij. Daarom tussen 1501-09 mono 2.5mm jack van beetLora een LF1117T spanningsregulator geplaatst die het voltage terugbrengt naar 3.3 volt. Voor stabiliteit zowel op de ingang als uitgang van de LF1117T een 10uF condensator geplaatst. De LED’s worden middels een 220Ohm weerstand op de GPIO’s van de Pico aangesloten. De momentary (reset) switch is op een GPIO poort en GND aangesloten.

Wil je een ook een verlichte swinger aan kunnen sluiten ? Sommige beetmelders beschikken over twee 2.5mm jacks, dus dan is het geen probleem om een verlichte swinger aan te sluiten. In één van onderstaande vervolgstappen realiseren we de kabeltjes tussen de beetmelder en beetLoRa, hierbij ook aandacht voor het maken van een splitter.

De Eagle en gerber files zijn te downloaden:

FileDownload link
BeetLoRa schemahttps://drive.google.com/file/d/1T8eFxZGCLleAGv6ZmdTSeCZOPB2ZCii_/view?usp=drive_link
BeetLoRa boardhttps://drive.google.com/file/d/1Fe0Gd5Kl0soogxy83ONOYnJbdarsgQ0T/view?usp=drive_link
BeetLoRa Gerber fileshttps://drive.google.com/file/d/1YbHBzWFXTmSLOfowQNfEWLfrg5VK5SuC/view?usp=drive_link

Stap 2. PCB’s besteld bij pbcgogo.com

De PCB’s besteld via de menuoptie “PCB Instant Quote”->”PCB Manufactoring Calculator” met de volgende instellingen:

In de volgende stap de Gerber files (gezipt) geuploaded. De gerber files worden automatisch gereviewed waarna je vervolgens de bestelling kunt afronden en betalen. Om de kosten laag te houden heb ik gekozen voor verzending via China Post. Dit is het resultaat:

<foto nog toevoegen>

Stap 3. Device toevoegen aan the Things Network (TTN)

Maak eerst een account aan op TTN, navigeer in je browser naar https://www.thethingsindustries.com/stack/plans/, en kies voor het “pricing plan” Discovery, en klik op “Get started for free”

De rest van de stappen wijzen voor zich. Log vervolgens in met je vers aangemaakte account via https://www.thethingsnetwork.org/login/ Klik nu rechts bovenin op je profiel, en kies voor “Console”

Het volgende scherm verschijnt:

Kies hier voor “Europe 1”, je wordt nogmaals gevraagd om in te loggen, daarna verschijnt het volgende scherm:

Voeg eerst een “Application” toe, klik links bovenin op “Applications”, het volgende scherm verschijnt:

Klik rechts bovenin op “+ Add application”, het volgende scherm verschijnt:

Toelichting op invulvelden:

VeldWaardeToelichting
Application IDbeetloraKies zelf een ID voor je applicatie, uitsluitend lowercase
Application namebeetLoRaKies zelf een naam voor je applicatie
DescriptionEen optionele omschrijving van je applicatie

Vul het formulier in en klik op “Create application”. De applicatie wordt aangemaakt en het volgende scherm verschijnt:

Voeg nu een device toe aan je applicatie. Het device is je Raspberry Pi Pico met RFM95W Lora module. Klik op “+ Register end device”, het volgende scherm verschijnt:

Kies voor de optie “Enter end device specifics manually”, en vul het formulier in.

Toelichting op invulvelden:

VeldWaardeToelichting
Frequency planEurope 868.1 MHzDe RFM95W module is geschikt voor het Europees 868.1 MHz netwerk
LoRaWAN versionLoRaWAN Specification 1.04De circuitpython library https://github.com/BNNorman/CircuitPython-LoRaWAN voor de RFM95W module ondersteund de LoRaWAN 1.0x versie, zie de README.md
Regional Parameters versionRP002 Regional Parameters 1.0.4Geen idee, dit werkt
JoinEUI00 00 00 00 00 00 00 00

Klik op “Confirm” en er volgen nog 3 tal invulvelden:

VeldWaardeToelichting
DevEUIKlik op “Generate” om een DevEUI te generen, en sla die op in een documentje
AppKeyLoRaWAN Specification 1.04Klik op “Generate” om een AppKey te generen, en sla die op in een documentje
End device IDbeetloraKies een naam voor je device, alleen lowercase

Klik de optie “View registered end device” aan, het ingevulde scherm ziet er dan zo uit:

Klik vervolgens op “Register end device”, en het device wordt aangemaakt. Het volgende scherm verschijnt:

Klik rechtsboven op het tandwieltje “Settings”, het volgende scherm verschijnt:

Scroll naar beneden tot het kopje “Network layer”, en klik op expand. Het volgende scherm verschijnt:

Klik achter NwkSKey op “Generate”, noteer in je documentje het Device address en de NwkSKey. Scroll vervolgens naar het kopje “Application layer” en klik op “Expand”, het volgende scherm verschijnt:

Klik achter “AppSKey” op “Generate” en neem de waarde van AppSKey over in je documentje.

Klik vervolgens op “Save changes”. Kies in het linker menu voor “Integrations” en daarbinnen voor “MQTT”, het volgende scherm verschijnt:

Klik op “Generate new API key” en noteer de waarden van “Public address”, “Username” en “Password” in je documentje.

Jou documentje met de settings bevat nu:

  • DevEUI, 16 bytes
  • AppKey, 32 bytes
  • Device address, 8 bytes
  • NwkSKey, 32 bytes
  • AppSKey, 32 bytes
  • Public address, eu1.cloud.thethings.network:1883
  • Username, beetlora@ttn
  • Password, 98 karakters

Sla dit documentje ergens op, je hebt deze keys nodig bij de configuratie in stappen 5 en <stap nog invullen>.

Je bent nu eerst klaar in TTN.

Stap 4. Circuitpython geflashed op Raspberry Pi Pico

Zie hiervoor de tutorial van Adafruit over het flashen van Circuitpython op een Raspberry Pi Pico: Installing CircuitPython | Getting Started with Raspberry Pi Pico and CircuitPython | Adafruit Learning System

Stap 5. BeetLora software installeren en configureren op de Raspberry Pi Pico

Download de source code van “beetLoRa” hier: <link nog toevoegen>, en unzip de bestanden op je laptop/desktop. Sluit de Raspberry Pi Pico met een USB kabel aan op je laptop/desktop, onthoud de drive letter waaraan je Raspberry Pi Pico wordt gekoppeld. Start een command prompt en installeer beetLoRa met het commando:

c:\install.bat <drive-letter van Circuitpy>

vervang <drive-letter van Circuitpy> door de drive-letter van je Raspberry Pi Pico, bijvoorbeeld F: Het commando wordt dan:

c:\install.bat F:

Open je favoriete editor (bijv. kladblok) en open de file “config.py”. Verander hierin minimaal de waarden van heightBin, DOM_Host, SensorIDX, wlan_id en wlan_pass naar de waarden van je eigen configuratie en apparaat en sla op. Hieronder een korte toelichting op de settings:

SettingDefault waardeToelichting

Open de opdrachtprompt door in je zoekbalk cmd.exe in toetsen. Ga naar de directory waarin je de files geunzipped hebt en installeer de bestanden op de Raspberry Pi Pico met behulp van:

install <com-poort>

verander <com-poort> in de com-poort waarop je de Raspberry Pi Pico hebt aangesloten, dus bijvoorbeeld als de Raspberry Pi Pico op com-poort 6 is aangesloten:

install com6

De software wordt nu naar je Raspberry Pi Pico gekopieerd en na reboot automatisch gestart.

Stap 5. PCB assembleren

Soldeer eerst headers op de Raspberry Pi Pico en RFM95W LoRa zender. Benodigd:

  • Raspberry Pi Pico
  • 2 x 20-pins male header 2.54mm pitch
  • RFM95W
  • 2 x 8-pins male header 2.0mm pitch

Plaats de headers op een breadboard, schuif de Raspberry Pi Pico erop en soldeer de headers vast. Door de 2mm pitch van de RFM95W is dezelfde truc niet mogelijk, maar soldeer hier ook de headers vast op de RFM95W.

Stap 6. beetLoRa app installeren op je telefoon

Open deze blog op je telefoon en scroll door naar deze stap. Download de Application Package (.apk) file hier: https://drive.google.com/file/d/1YIOnA13dMQP8tpTjqOzNCAg1NsNsBZjM/view?usp=drive_link

Het volgende scherm verschijnt:

Stap 7. Kabeltjes maken

Stap 8. Stap voor stap testen

Stap voor stap testen we de totale oplossing, hiervoor maken we een tijdelijke proefopstelling. Plaats een beetmelder op een bankstick of rodpod. Sluit de beetmelder middels een kabeltje die je in stap 7. hebt gemaakt aan op de beetLoRa.

Pak een rol visdraad, bevestig een 10 of 20 grams loodje aan de draad. Leg de draad over de beetmelder en zorg voor wat lichte weerstand op het afrollen van de draad. Door het loodje te laten zakken simuleer je een aanbeet.

Voorzie de beetLoRa van voeding door de Raspberry Pi middels een USB kabel aan te sluiten op een USB adapter of je laptop. Uiteraard kun je ook de LiPo accu aansluiten op de LiPo oplader aansluiting op de beetLoRa PCB.

Open de TTN console (zie ook stap 3.) en navigeer naar je beetlora device:

Klik op het tabblad “Live data”, het volgende scherm verschijnt:

Simuleer een aanbeet door het visdraad met het loodje over de beetmelder te laten zakken. Als je de beetLoRa goed geconfigureerd hebt verschijnt er nu een bericht in de TTN console:

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *