The basic idea was to create a temperature monitor based on DS18B20 sensors with support for remote access. I have used a kit called AVT-1705 which allows to read data from two DS18B20 sensors via RS485 protocol. As master controller I have used a Arduino WIFI MKR1010 board with MKR485 expansion board. Arduino board is responsible for triggering temperature measurement and reading data. Received data is parsed and send via secure way to Arduino Cloud.
Below there is schematic of AVT-1705 kit:
We have a Attiny23 MCU which is responsible for reading data from two DS18B20 sensors, and transferring this information via RS485. Each AVT-1705 could has own unique address, so we are able to connect multiple of these modules in parallel.
Module accept following command to start measurement:
Txx[0x0D], where xx is module address.
In response after around 1 second we receive following data:
T00= 12.2"C;T01= 12.2"C[0x0D]
[0x0D] it is "Enter" character in hex.
In my project module is powered from six 1.5 V batteries. Lines L_A, L_B and GND are connected to following pins of MKR 485 expansion board: Y, Z, ISO GND. MKR 485 is configured to work in half mode.
First step was to configure board to connect to Arduino Cloud via WIFI. Below are images with steps to configure board and information about sensors values.
In first steps we need to choose board type, provide board name and enable chipset for secure connection. After that we need to create a new project for temperature measurement. For this project we need to define to properties of fields which will hold data from two sensors. After that we need to go to source code where we could provide information about SSID/password. Now we are able to connect to Arduino Cloud.
Below there is diagram for application flow.
In main loop in every 10 seconds we are reading temperature from module and update these values in Arduino Cloud. I have used Arduino library for RS485 communication.
Below there is diagram with steps of getTemperature() method.
In first step we need to send 4 bytes of command to module to start temperature measurement: 0x54 0x30 0x30 0x0D. After around 1500 ms we are able to read answer with 24 bytes. Then we are able to parse from string with answer and get a values of temperatures for sensors. Answer have following form: T00= 12.3"C;T01= 23.4"C[0xOD].
Here are sources:
Here is video from soldering of AVT-1705 module:
Here is short video presentation: