Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Trådløs Relestyring Long range


Anbefalte innlegg

11 minutter siden, ZoRaC skrev:

 

315 MHz er vel ikke til fri bruk i Norge?

 

Ja det er vel noen restriksjoner rundt dette. Har bare sett på de forskjellige typene på ebay. 

 

9 minutter siden, ZoRaC skrev:

 

Hva med noe på mobilnettet? NB-IoT?

eller LoRa-WAN?

 

Ja det er en mulighet, har sett det selges flere forskjellige gsm releer. 

Men har egentlig ikke behov for å gjøre dette for komplisert. 

Lenke til kommentar
Del på andre sider

Hei, trenger noen innspill til prosjektet mitt. 
Er ute etter å få tilbakemelding fra et 12v rele. Avstanden er ca 300 - 400  m. 
Har noen erfaring fra relekort fra ebay med antenne for 433 mhz eller 315 mhz?
Andre løsninger?
 
Mvh. Simon

Hei, jeg benytter noen relé fra Ontech på hytta. Så da at de også har et for lavspenning http:// https://www.ontechgsm.com/produkter/i-baten/. De selges på ClasOhlson. Merk abb på ca 200,-/år


Sent from my iPhone using Tapatalk
Lenke til kommentar
Del på andre sider

om du er komfortabel med Arduino, så finnes det da Xbee... de råeste modulene der kan sende signal i overkant av 10km :P

 

om du har stor nok antenne og rikelig med sendestyrke skal vel 433MHz gå an, men om sendere/mottakere fra ebay har det, er en annen sak

Lenke til kommentar
Del på andre sider

Hvis arduino, prøv rfm69 fra feks ali, evt tfm69hw med større effekt. Finnes en del om denne på nettet. Pass på å kjøpe 433Mhz varianten. Med en atmega 328 3,3v og en rfm69w i hver ende slipper du unna med 12-15 dollar pluss powersupply/batteri. Krever litt lodding.

Sent fra min EVA-L09 via Tapatalk

Lenke til kommentar
Del på andre sider

  • 3 uker senere...

Et LoRa kort fra BS France av typen LoRa32u4 til en LoRaGO dock som qateway og til MQTT på lokalnettet over WiFi Jeg kjører sjøl dette. De kommer med micro-USB for lasting av program og strømtilførsel om du ikke vil bruke batteri.

Programmeres i Arduino.

De kommer i 868MHz som er åpen frekvens i Norge.

  • Like 2
Lenke til kommentar
Del på andre sider

Jeg har i klar sikt fått 3.7 km under enkle tester med å ha den i dashbordet i bilen. Uten klar sikt har jeg klart 0.5-2km.

Begge punktene på bildene nedenfor har jeg sendt pakke og mottat. Fresnelsonen har jeg ikke stilt på og står til 0.6 i kalkulatoren

SmartSelect_20190208-082619_Gallery.jpg

SmartSelect_20190208-082655_Gallery.jpg

Endret av Holmis
  • Like 1
Lenke til kommentar
Del på andre sider

19 hours ago, Holmis said:

Et LoRa kort fra BS France av typen LoRa32u4 til en LoRaGO dock som qateway og til MQTT på lokalnettet over WiFi Jeg kjører sjøl dette. De kommer med micro-USB for lasting av program og strømtilførsel om du ikke vil bruke batteri.

Programmeres i Arduino.

De kommer i 868MHz som er åpen frekvens i Norge.

Veldig spennende! Fant LoRa32u4 hos Aliexpress og LoRaGO dock på eBay, er dette alt som trengs for å få LoRa opp og gå? I tillegg til sensorer altså?

Lenke til kommentar
Del på andre sider

Ja dette er det du trenger. Det er vært å merke seg at dette er en singel channel gw. Har også bestilt meg en https://www.google.com/amp/s/m.aliexpress.com/item/32875743018.html#ampf=undefined og håper at dette blir en bra alternativ til en strømgjerrig batteri løsning. Har ikke teste strømsparing på 32u4 enda. 

Til nå har jeg bare brukt antenne som følger med.

  • Like 1
Lenke til kommentar
Del på andre sider

  • 4 uker senere...
On 07/02/2019 at 17:49, Holmis said:

Et LoRa kort fra BS France av typen LoRa32u4 til en LoRaGO dock som qateway og til MQTT på lokalnettet over WiFi Jeg kjører sjøl dette. De kommer med micro-USB for lasting av program og strømtilførsel om du ikke vil bruke batteri.

Programmeres i Arduino.

De kommer i 868MHz som er åpen frekvens i Norge.

 

Dette. :)

Lenke til kommentar
Del på andre sider

På 6.3.2019 den 14.03, mk1 black limited skrev:

Da er det bestilt. Noen som er gode på Arduino? :) :D 

Si ifra når du får det, så kan jeg sende programmet jeg bruker så du har et utgangspunkt, samt hjelpe om det er noen spørsmål. Jeg er ikke veldig god, men får det til å funke :)

Endret av Holmis
  • Like 1
Lenke til kommentar
Del på andre sider

  • 4 måneder senere...
On 08/03/2019 at 13:35, Holmis said:

Si ifra når du får det, så kan jeg sende programmet jeg bruker så du har et utgangspunkt, samt hjelpe om det er noen spørsmål. Jeg er ikke veldig god, men får det til å funke :)

Har fått (for en stund siden), kan du sende programmet du bruker? Og gjerne en oppskrift hvis du har tid...:)

Lenke til kommentar
Del på andre sider

Hei, 

nedenfor ser du programmet jeg har kjørt på GW. Dette er overhodet ikke effektivisert mtp. sendetid eller batteribruk. Men er enkelt å feilsøke og lesbart med MQTT Explorer når du jobber med det.

Jeg har kun brukt det til å sende fra node og til GW, men skal fungere å sende begge veier, om du setter den i "lytte" modus når du ikke sender og dropper og bruke sleep funksjonen.

Si ifra om det er noe du trenger hjelp med. Jeg har ikke sett på dette på en stund, men kan sette opp en test eller prøve å hjelpe om det er noe :)

/*
   Receiver which receivers messages through a Hope RFM95 LoRa
   Module.
   It sends a feedback signal (checksum) to the receiver

   Copyright <2017> <Andreas Spiess>

  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
  to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
  and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  DEALINGS IN THE SOFTWARE.

   Based on the Example of the library
*/

#include <SPI.h>
#include <LoRa.h>


#define ESP8266  // comment if you want to use the sketch on a Arduino board
#define MQTT     // uncomment if you want to foreward the message via MQTT
//#define OLED        // comment if you do nto have a OLED display

const long freq = 868E6;
const int SF = 12;
const long bw = 125E3;


#ifdef OLED
#include "SSD1306.h"
SSD1306  display(0x3d, 4, 5);
#endif

#ifdef MQTT
#include <PubSubClient.h>
#include <ESP8266WiFi.h>
//#include <credentials.h>

#define TOPIC "LORA"
#endif

int counter, lastCounter;
char mySSID[] = "XXXXX";          // Putt inn wifi detaljer
char myPASSWORD[] = "XXXXX";
const char* server = "XXXXXXX";   // putt inn mqtt server
#ifdef MQTT
WiFiClient wifiClient;
PubSubClient client(wifiClient);
#endif

void setup() {
  Serial.begin(9600);
  Serial.println("LoRa Receiver");
#ifdef ESP8266
  LoRa.setPins(16, 17, 15); // set CS, reset, IRQ pin
#else
  LoRa.setPins(10, A0, 2); // set CS, reset, IRQ pin
#endif
#ifdef OLED
  display.init();
  display.flipScreenVertically();
  display.setFont(ArialMT_Plain_10);

  display.clear();
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.setFont(ArialMT_Plain_16);
  display.drawString(0, 10, "Mailbox");
  display.display();
#endif

  if (!LoRa.begin(freq)) {
    Serial.println("Starting LoRa failed!");

    while (1);
  }

  LoRa.setSpreadingFactor(SF);
  // LoRa.setSignalBandwidth(bw);
  Serial.println("LoRa Started");

#ifdef MQTT
  WiFi.begin(mySSID, myPASSWORD);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");

  client.setServer(server, 19377);
  client.setCallback(callback);

  if (client.connect("LORAgw", "User", "Passord")) {       // Putt brukernavn og pw på mqtt inn her
    client.publish(TOPIC"/STAT", "Mailbox live");
    // client.subscribe("inTopic");
  }
  Serial.println("MQTT Started");
#endif

  Serial.print("Frequency ");
  Serial.print(freq);
  Serial.print(" Bandwidth ");
  Serial.print(bw);
  Serial.print(" SF ");
  Serial.println(SF);
}

void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    // received a packet
    String message = "";
    while (LoRa.available()) {
      message = message + ((char)LoRa.read());
    }
    String rssi = "\"RSSI\":\"" + String(LoRa.packetRssi()) + "\"";
    String jsonString = message;
    jsonString.replace("xxx", rssi);

    int ii = jsonString.indexOf("Count", 1);
    String count = jsonString.substring(ii + 8, ii + 11);
    counter = count.toInt();
    if (counter - lastCounter == 0) Serial.println("Repetition");
    lastCounter = counter;


    sendAck(message);
    String value1 = jsonString.substring(8, 11);  // Vcc or heighth
    String value2 = jsonString.substring(23, 26); //counter
#ifdef OLED
    display.clear();
    display.setTextAlignment(TEXT_ALIGN_RIGHT);
    displayText(40, 0, value1, 3);
    display.setTextAlignment(TEXT_ALIGN_RIGHT);
    displayText(120, 0, String(LoRa.packetRssi()), 3);
    display.setTextAlignment(TEXT_ALIGN_CENTER);
    displayText(60, 35, count, 3);
    display.display();
#endif

#ifdef MQTT
    if (!client.connected()) {
      reconnect();
    }
    client.publish(TOPIC"/MESSAGE", jsonString.c_str());
#endif
  }
#ifdef MQTT
  client.loop();
#endif
}

#ifdef MQTT
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("Mailbox")) {
      Serial.println("connected");
      // Once connected, publish an announcement...
      client.publish(TOPIC"/STAT", "I am live again");
      // ... and resubscribe
      //  client.subscribe("inTopic");
    } else {
      Serial.print("failed, rc = ");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}
#endif
void sendAck(String message) {
  int check = 0;
  for (int i = 0; i < message.length(); i++) {
    check += message[i];
  }
  // Serial.print("/// ");
  LoRa.beginPacket();
  LoRa.print(String(check));
  LoRa.endPacket();
  Serial.print(message);
  Serial.print(" ");
  Serial.print("Ack Sent: ");
  Serial.println(check);
}

#ifdef OLED
void displayText(int x, int y, String tex, byte font ) {
  switch (font) {
    case 1:
      display.setFont(ArialMT_Plain_10);
      break;
    case 2:
      display.setFont(ArialMT_Plain_16);
      break;
    case 3:
      display.setFont(ArialMT_Plain_24);
      break;
    default:
      display.setFont(ArialMT_Plain_16);
      break;
  }
  display.drawString(x, y, tex);
}
#endif

Her er programmet jeg har kjørt på LoRa kortet:

#include <SPI.h>
#include <LoRa.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LowPower.h>

#define VBATPIN A9

const long freq = 868E6;
const int SF = 12;
const long bw = 125E3;
long zeroAltitude;

int counter = 1, messageLostCounter = 0;

void setup() {
    Serial.begin(115200);
    delay(3000);

    // Debug message
    Serial.println("Starting...");
  // put your setup code here, to run once:
  LoRa.setPins(8, 4, 7); // set CS, reset, IRQ pin
  Serial.println("HEI HEI");
  if (!LoRa.begin(freq)) {
  while (1);
  }
  LoRa.setSpreadingFactor(SF);
}

void loop() {
  // put your main code here, to run repeatedly:
  char message[90];
  int Vcc = readVcc()*100;
  int Temp = readTempDS18B20()*10;
  sprintf(message, "{\"Vcc\":\"%3d\",\"Count\":\"%03d\",\"Lost\":\"%03d\",\"Temp\":\"%3d\", xxx}", Vcc, counter, messageLostCounter,Temp);

  sendMessage(message);
  int nackCounter = 0;
  while (!receiveAck(message) && nackCounter <= 5) {
    LoRa.sleep();
    delay(10);
    sendMessage(message);
    nackCounter++;
  }
  if (nackCounter >= 5) {
    messageLostCounter++;
    delay(10);
  } 
  counter++;
  LoRa.sleep();
  // 10min og 40 sek = 60x10+40 = 640 s
  // 640 s / 8 s = 80
  unsigned int sleepCounter;
  for (sleepCounter = 80 ; sleepCounter > 0; sleepCounter--)
  {
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);  
  }
  delay(100);
}

void sendMessage(String message) {
  LoRa.beginPacket();
  LoRa.print(message);
  LoRa.endPacket();
}

bool receiveAck(String message) {
  String ack;
  bool stat = false;
  unsigned long entry = millis();
  while (stat == false && millis() - entry < 2000) {
    if (LoRa.parsePacket()) {
      ack = "";
      while (LoRa.available()) {
        ack = ack + ((char)LoRa.read());
      }
      int check = 0;
      for (int i = 0; i < message.length(); i++) {
        check += message[i];
      }
      if (ack.toInt() == check) {
        stat = true;
      }
    }
  }
  return stat;
}

float readTempDS18B20() { 

  OneWire oneWire(10);
  DallasTemperature sensors(&oneWire);
  DeviceAddress thermometer;

  sensors.begin();
  sensors.getAddress(thermometer, 0);
  sensors.setResolution(thermometer, 12);
  sensors.requestTemperatures();
  float temp = sensors.getTempC(thermometer);
  Serial.println(temp);
  return temp;
}

float readVcc() {
  long result;
  float measuredvbat = analogRead(VBATPIN);
  measuredvbat *= 2;    // we divided by 2, so multiply back
  measuredvbat *= 3.3;  // Multiply by 3.3V, our reference voltage
  measuredvbat /= 1024; // convert to voltage
  result = measuredvbat;
  Serial.println(result);
  return measuredvbat;
}

 

  • Like 2
Lenke til kommentar
Del på andre sider

Takk! :D Første problem, får ikke kompilert hverken den ene eller den andre. får hhv.:

 

Quote

exit status 1

Error compiling for board NodeMCU 1.0 (ESP-12E Module).

 

...og

Quote

exit status 1

Error compiling for board Adafruit Feather HUZZAH ESP8266.

 

Totalt n00b på Arduino så jeg har prøvd å gjette litt uten hell. Hvilke boards skal jeg velge for de to kortene, og hvilke libraries bruker du sammen med koden?

Lenke til kommentar
Del på andre sider

Success!!!

 

LoRa Receiver
LoRa Started
...........
MQTT Started
Frequency 868000000 Bandwidth 125000 SF 12
{"Vcc":"424","Count":"001","Lost":"000","Temp":"-1270", xxx} Ack Sent: 3911

Takk! Nå trenger jeg bare en DS18B20...:)

 

Sånn forøvrig: Kan man kjøpe en hvilken som helst LoRa-sensor og få denne inn i gatewayen?

Lenke til kommentar
Del på andre sider

Ja, i utgangspunktet. Men da må du bruke et annet program i GW. Programmet i node ute og GW må stemme overens så de snakker samme "språk". GW støtter også bare 1 kanal omgangen, ferdige sensorer veksler gjerne mellom 8 kanaler. 

 

Du skal få inn data uten temperatur sensor også. Telleren og RSSI, samt spenningen skal overføres via MQTT. Spenningen er ikke helt korrekt, om du googler dette så er det et problem på disse kortene. 

Lenke til kommentar
Del på andre sider

15 hours ago, Holmis said:

Ja, i utgangspunktet. Men da må du bruke et annet program i GW. Programmet i node ute og GW må stemme overens så de snakker samme "språk". GW støtter også bare 1 kanal omgangen, ferdige sensorer veksler gjerne mellom 8 kanaler. 

Vet du om source til annet program som kan brukes i GW som er litt mer generisk og kan brukes med ferdige sensorer (også)? LoRa-sensorer er ukjent grunn for min del, så jeg vet ikke om de kan låses til gitt kanaler f.eks.?

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.