Table of Contents
- Project Introduction
- Getting Started
- Communication Between Two MKR WAN 1300
- LoRaWAN System Range Testing
- Assembling and Adding LCD Display to the Transmitter
- Assembling and Adding LCD Display to the Receiver
- LoRaWAN´s Field Test with a DS18B20 Sensor
- Adding Multiple Sensors: DS18B20, DHT22 and MQ-135
- Modifying Receiver Code for Multiple Sensors
- LoRaWAN´s Field Test with Multiple Sensors
- Connecting LoRaWAN to an IoT Provider through the Arduino NANO 33 IoT
- LoRaWAN and IoT Connection with a DS18B20 Sensor
- Testing LoRaWAN and IoT Connection with a DS18B20 Sensor
- LoRaWAN and IoT Connection with Multiple Sensors
- Testing LoRaWAN and IoT Connection with Multiple Sensors
- Project Report Updated
**********************************************************************************************************************
Assembling and Adding LCD Display to the Receiver
Assembling the receiver
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 the assembly of the Arduino MKR WAN 1300 board.
And now in the image below you can see the assembly of the 20x4 LCD display.
After fixing the Arduino MKR WAN 1300 board, the 20x4 display, the antenna and the battery; the receiving device looks like the one shown in the figure below.
As a power supply I used Anker PowerCore II 6700. 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
After several attempts to find a library that works well with the Arduino MKR WAN 1300 board, I finally found this one that worked very well for me: LiquidCrystal_I2C
After making these changes, the receiver code is shown below:
LoRaReceiver_v2.ino
// AUTHOR: GUILLERMO PEREZ GUILLEN #include <SPI.h> #include <LoRa.h> #include <Wire.h> // Library for I2C communication #include <LiquidCrystal_I2C.h> // Library for LCD LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 20, 4); // Change to (0x27,16,2) for 16x2 LCD. char cadena[30]; //We create an array that will store the characters that we will write in the PC console. We assign a limit of characters, in this case 30 byte posicion=0; //Variable to change the position of the characters in the array int valor; //Integer Variable void setup() { lcd.init(); // Initiate the LCD: lcd.backlight(); pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); Serial.println("LoRa Receiver"); if (!LoRa.begin(915E6)) { Serial.println("Starting LoRa failed!"); while (1); } } void loop() { // try to parse packet int packetSize = LoRa.parsePacket(); if (packetSize) { memset(cadena, 0,sizeof(cadena));//memset deletes the contents of the array "cadena" from position 0 to the end sizeof // received a packet Serial.print("Received packet... "); // read packet while (LoRa.available()) { char dedos= (char)LoRa.read(); Serial.print(dedos); cadena[posicion]=dedos;//Read a character from the string "cadena" from "posicion", then read the next character with "posicion++" posicion++; } valor=atoi(cadena);//Convert the string to integers Serial.println(); Serial.print(" temp="); Serial.print(valor); posicion=0; // print RSSI of packet int dedal = LoRa.packetRssi(); Serial.print(" with RSSI: "); Serial.println(dedal); lcd.clear(); lcd.setCursor(0, 0); // Set the cursor on the first column and first row. lcd.print("Temp:"); lcd.setCursor(6, 0); lcd.print(valor); lcd.setCursor(0, 2); // Set the cursor on the first column and second row. lcd.print("RSSI:"); lcd.setCursor(5, 2); //Set the cursor on the fifth column and the second row (counting starts at 0!). lcd.print(dedal); digitalWrite(LED_BUILTIN, HIGH); delay(2000); digitalWrite(LED_BUILTIN, LOW); } }
Download section:
- You can get the code from this post below::
assembling_and_adding_lcd_display_to_the_receiver.zip
- Below I attach the STL files used in this section.