Skip to main content

Humidity_temperature (DHT11) using CAN MCP2515

Deep interesting in CAN BUS and working in this area encourage me to make a project using CAN BUS as a medium connection between two MCU. Today, i am gonna to share DHT11 temp sensor as a transmitter and give a output to serial monitor as Receiver using MCP2515.

Interesting right?:)





Code:

Transmitter :


#include <SPI.h>          //Library for using SPI Communication
#include <mcp2515.h>      //Library for using CAN Communication
#include <DHT.h>          //Library for using DHT sensor

#define DHTPIN A0       //Define DHT 11 Pin Connected to Arduino
#define DHTTYPE DHT11 //DEFINE DHTTYPE

struct can_frame canMsg;
MCP2515 mcp2515(10);      //Set the pin number where SPI CS is connected (10 by default)

DHT dht(DHTPIN, DHTTYPE);     //initilize object dht for class DHT with DHT pin with STM32 and DHT type as DHT11

void setup()
{
  while (!Serial);
  Serial.begin(9600);
 
  SPI.begin();               //Begins SPI communication
  dht.begin();               //Begins to read temperature & humidity sensor value
 
  mcp2515.reset();
  mcp2515.setBitrate(CAN_500KBPS,MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
  mcp2515.setNormalMode();
}

void loop()
{
  int h = dht.readHumidity();       //Gets Humidity value
  int t = dht.readTemperature();    //Gets Temperature value

  canMsg.can_id  = 0x036;           //CAN id as 0x036
  canMsg.can_dlc = 8;               //CAN data length as 8
  canMsg.data[0] = h;               //Update humidity value in [0]
  canMsg.data[1] = t;               //Update temperature value in [1]
  canMsg.data[2] = 0x00;            //Rest all with 0
  canMsg.data[3] = 0x00;
  canMsg.data[4] = 0x00;
  canMsg.data[5] = 0x00;
  canMsg.data[6] = 0x00;
  canMsg.data[7] = 0x00;
  mcp2515.sendMessage(&canMsg);     //Sends the CAN message
  delay(1000);
}


Reciever:

#include <SPI.h>              //Library for using SPI Communication

#include <mcp2515.h>          //Library for using CAN Communication

struct can_frame canMsg;
MCP2515 mcp2515(10);                 // SPI CS Pin 10

void setup() {

  SPI.begin();                       //Begins SPI communication
  Serial.begin(9600);                //Begins Serial Communication at 9600 baudrate
 
  mcp2515.reset();                         
  mcp2515.setBitrate(CAN_500KBPS,MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
  mcp2515.setNormalMode();                  //Sets CAN at normal mode
}

void loop()
{
  if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) // To receive data (Poll Read)
  {
     int x = canMsg.data[0];        
     int y = canMsg.data[1];
    
    Serial.print("Data from ID: 0x");
    Serial.print(canMsg.can_id, HEX);
    Serial.print(" ");
    Serial.print("DLC : ");
    Serial.print(canMsg.can_dlc);
    Serial.print(" ");
    Serial.print("DATA : ");
    Serial.print(canMsg.data[0]);
    Serial.print(" ");
    Serial.print(canMsg.data[1]);
    Serial.print(" ");
    Serial.print(canMsg.data[2]);
    Serial.print(" ");
    Serial.print(canMsg.data[3]);
    Serial.print(" ");
    Serial.print(canMsg.data[4]);
    Serial.print(" ");
    Serial.print(canMsg.data[5]);
    Serial.print(" ");
    Serial.print(canMsg.data[6]);
    Serial.print(" ");
    Serial.print(canMsg.data[7]);
    Serial.print("\n");
   
    Serial.print("Current humidity = ");   
    Serial.print(x);
    Serial.print("%  ");
    Serial.print("temperature = ");
    Serial.print(y);
    Serial.println("C  ");


    }
}

Output:


Comments

Popular posts from this blog

Arduino Interfacing With LCD(16x02) Without Potentiometer

All, today i gonna to share how Arduino connected to LCD(16x02). LCD 16x02 means 16 character in 2 rows. Connection between LCD and UNO Code: #include <LiquidCrystal.h> int Contrast=75;  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   void setup()  {     analogWrite(6,Contrast);      lcd.begin(16, 2);   }      void loop()  {      lcd.setCursor(0, 0);      lcd.print("ITS WORK");        lcd.setCursor(0, 1);      lcd.print("WELL DONE");  }

L298N motor with Ultrasonic Sensor using Can Bus MCP2515

Today, I will share the project where we use 2x Arduino where each Arduino act as Transmitter to measure a distance using Ultrasonic sensor and Receiver controlling L98N motor driver. Ultrasonic Sesnor L298N Motor Driver            Two output Motor Driver with Enable pin for both Motor. Requirement: 1. 2x Arduino 2. 2x MCP2515 CAN module 3. L298N Motor Driver 4. Ultrasonic Sensor 5. 12V battery 6. Download NewPing, SPI and mcp2515 into Arduino. Instruction: 1. Connect Arduino Nano to Ultrasonic sensor. 2. Connect Arduino Nano to MCP2515(1) through SPI connection. 3. Connect MCP2515(1) with MCP2515(2) using CAN-H and CAN-L wire. 4. Connect MCP2515(2) to Arduino Uno through SPI connection. 5. Connect Arduino Uno with Motor L298N. Code: Transmitter: #include <NewPing.h> #include <SPI.h>          //Library for using SPI Communication ...

black box airplane concept vs error memory in car

IS MY CAR HAVE A BLACK BOX? The Black Box usually we heard when there have a crash in airplane. Do we know that in other things also have similar concept to black box function? Let me thinks..Hmm..Actually this is part of my job as failure analysis engineer. I have to analyze each byte or each line of error memory(together with development team when required:)..) to know what is the problem with our unit specifically and impact to user while driving? Its quite interesting task because from here we can justify what is the problem.  Our question now Is it similar concept to Black Box is airplane? I can said Yes and No:). Let have a look what is concept of Black Box in airplane. Concept Of Black Box According to wiki, black box is a box which contain electronic recording device placed in aircraft for the purpose on analysis and investigation if there have an accident.  There are two different flight recorder devices:  1. The  flight data recorder  ( FDR ) preserves...