Connecting CAN BUS shield to the TTN UNO to send data to the TTN Gateway

Dear all,
I’m new in Arduino and Lora technology. I want to send data from a CAN BUS shield (I have the CAN BUS shield V2.0 from Seeed, CAN-BUS Shield V2 from DFROBOT and CAN BUS shield from SparkFun) to the TTN Gateway. I´’m using two shields: one acting as a slave, connected to Arduino Leonardo and sending data to the master (receiver) which is connected to the TTN Uno.
Now the next step is to send the received data by the TTN Uno to the TTN Gateway. I really don’t know how to integrate the code which is receiving data from the slave with the one sending data from the ttn uno to the ttn gateway.
Here’s the master’s receiver code on the ttn uno:

// demo: CAN-BUS Shield, receive data with check mode
// send data coming to fast, such as less than 10ms, you can use this way
// loovee, 2014-6-13
#include <SPI.h>
#include “mcp_can.h”
// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 9;
MCP_CAN CAN(SPI_CS_PIN); // Set CS pin
void setup()
{
Serial.begin(115200);
while (CAN_OK != CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k
{
Serial.println(“CAN BUS Shield init fail”);
Serial.println(" Init CAN BUS Shield again");
delay(100);
}
Serial.println(“CAN BUS Shield init ok!”);
}
void loop()
{
unsigned char len = 0;
unsigned char buf[8];
if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf
unsigned long canId = CAN.getCanId();
Serial.println("-----------------------------");
Serial.print(“Get data from ID: 0x”);
Serial.println(canId, HEX);
for(int i = 0; i<len; i++) // print the data
{
Serial.print(buf[i], HEX);
Serial.print("\t");
}
Serial.println();
}
}

Can anyone help me with it please? Thank you so much!

baudrate = 500k ??
what data you want to transmit, how much and how fast.

see
Limitations: data rate, packet size, 30 seconds uplink and 10 messages downlink per day Fair Access Policy

Dear BoRRoZ,
Thanks for your response.
That’s an example from CAN-BUS shield library for receive_check. So I want to send the received data to the ttn gateway via ttn uno.

Here’s an example of the data that I want to send which is not a lot. and it doesn’t have to be so fast.
image

Thank you so much!

It is hard to understand the specifications from a screenshot.
It’s 8 bytes? 8 integers? 8 longs?
Once per hour? per day? per minute?

1 Like

Dear UdLoRa,

Thanks for the reply.

It’s 8 bytes and I want to send it once per 5 minutes.

Thank you so much!

About to do something similar. But with OpenTherm. I think the same will apply to my planned hardware setup.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.