Close

4. Assembling the Transmitter

A project log for Environmental Toolkit for an Ecological Area

LoRaWAN IoT system with the Arduino MKR WAN 1300, that help my community to monitor the air quality and water of our ecological area

Guillermo Perez GuillenGuillermo Perez Guillen 07/26/2022 at 19:300 Comments

In the figure below I show the lid of the box to make the marks for the drill holes.

Now below we see how this piece was after drilling.

Once the holes are large enough, then it's time to attach the connectors.

In the figure below I show you the pieces that I print on the 3D printer. These pieces are used to fix the Arduino MKR WAN 1300 board and the LCD display.

In the image below you can see how to assemble the 16x2 LCD display that comes in the kit.

Then we fix the Arduino MKR WAN 1300 board, the 16x2 LCD display, the DS18B20 sensor and the antenna.

The transmitter would look like the figure below.

As a power supply I used a generic 5V Portable Charger Power Bank 16800 mAh. In addition to providing more accurate voltages, this device gave me better results since it has a power button, a voltage regulator and detects when a device is connected or not.

I also recommend using a heavy-duty USB to make a good connection

SCHEMATIC DIAGRAM

After adding the 16x2 display, the wiring diagram of the receiver is as shown below.

CODE

All the information needed to install the library you can get in this link: Grove-LCD RGB Backlight Library from Github

After making these changes, the transmitter code is shown below: 

LoRaSender_v2.ino

// AUTHOR: GUILLERMO PEREZ GUILLEN

#include <SPI.h>
#include <LoRa.h>
#include <OneWire.h> // DS1B20->               
#include <DallasTemperature.h>
#include <Wire.h> // LCD->
#include "rgb_lcd.h"
rgb_lcd lcd;
const int colorR = 173;
const int colorG = 255;
const int colorB = 47;

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire); 

int counter = 0;

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.setRGB(colorR, colorG, colorB);
  // Print a message to the LCD.
  lcd.print("ECOLOGY!");  
  lcd.setCursor(0, 1); // LCD 
  lcd.print("LoRa Sender");
  if (!LoRa.begin(915E6)) {
  lcd.setCursor(0, 1); // LCD 
  lcd.print("Starting LoRa failed!");    
    while (1);
  }
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures();   //The command to read the temperature is sent
  int temp= sensors.getTempCByIndex(0); //The temperature is obtained in ยบC
  lcd.clear();
  lcd.setCursor(0, 0); // LCD 
  lcd.print("Packet:");    
  lcd.setCursor(8, 0); // LCD 
  lcd.print(counter);
  lcd.setCursor(0, 1); // LCD 
  lcd.print("Temp:");    
  lcd.setCursor(8, 1); // LCD 
  lcd.print(temp);
  // send packet
  LoRa.beginPacket();
  LoRa.print(temp);
  LoRa.endPacket();
  counter++;
  delay(4000);
}

Discussions