Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:iot:examples:smartventilator [2018/05/04 07:34] rim.puksen:iot:examples:smartventilator [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
 ====== Smart ventilator example ====== ====== Smart ventilator example ======
-Coming soon+This example shows how to make a temperature sensor controlled ventilator. You will need 2 controller modules. One 
 +with DHT shield attached and the other with relay shield. 
 + 
 +{{:en:iot:examples:20200610_212520.jpg?300|IoT controllers with DHT and relay shields}} 
 + 
 +Once the code has been uploaded, the DHT controller will publish the temperature and humidity values to "temp" and "hum" every 2 seconds. The relay module subscribes to topics "temp" and "conf". The relay controller will switch the relay if the temperature rises above the set limit (default:28 degrees). To change the set limit, send a new value to the "conf" topic. (For example: "25.5"
 + 
 + 
 +The following is the code for the controller with relay module. 
 +Required libraries: 
 +<code>lib_deps = ITTIoT</code> 
 +<code c> 
 +// Includes global variables and librarys that the relay uses 
 +#include <Arduino.h> 
 +#include <ittiot.h> 
 + 
 +#define WIFI_NAME "name" 
 +#define WIFI_PASSWORD "password" 
 + 
 +// Change it according to the real name of the red IoT module where 
 +// temperature & humidity shield is connected 
 +#define DHT_TOPIC "ESP30" 
 + 
 +#define RELAY_PIN 5 // The relay has been connected to pin 5 
 +float t; //for holding the received temperature float value 
 +float tempLimit = 28; //the temperature limit on what the relay will switch 
 + 
 +// Message received 
 +void iot_received(String topic, String msg) 
 +
 +  t=msg.toFloat(); // Converts received temperature value into a real number 
 + 
 +  // Check if topic contains configuration data (change the temperature limit value) 
 +  if(topic == (DHT_TOPIC"/conf")) 
 +  { 
 +    //re-configures the temperature limit 
 +    tempLimit=t; 
 +  } 
 + 
 +  // Check if topic contains temperature data 
 +  if(topic == (DHT_TOPIC"/temp")) 
 +  { 
 +    // Relay switching according to the temperature limit value 
 +    if(t >= tempLimit) 
 +    { 
 +      digitalWrite(RELAY_PIN, HIGH); 
 +    } 
 +    else 
 +    { 
 +      digitalWrite(RELAY_PIN, LOW); 
 +    } 
 +  } 
 +
 + 
 +// Function started after the connection to the server is established. 
 +void iot_connected() 
 +
 +  // Send message to serial port to show that connection is established 
 +  Serial.println("MQTT connected callback"); 
 +  // Subscribe to get temperature and temperature configuration messages 
 +  iot.subscribe(DHT_TOPIC"/temp"); 
 +  iot.subscribe(DHT_TOPIC"/conf"); 
 +  // Send message to MQTT server to show that connection is established 
 +  iot.log("Ventilator example!"); 
 +
 + 
 +void setup() 
 +
 +  // Initialize serial port and send message 
 +  Serial.begin(115200); // setting up serial connection parameter 
 +  Serial.println("Booting"); 
 + 
 +  //iot.setConfig("wname", WIFI_NAME); 
 +  //iot.setConfig("wpass", WIFI_PASSWORD); 
 +  iot.printConfig(); // print IoT json config to serial 
 +  iot.setup(); // Initialize IoT library 
 + 
 +  pinMode(RELAY_PIN, OUTPUT); // The relay pin is defined as output type 
 +
 + 
 +void loop() 
 +
 +  iot.handle(); // IoT behind the plan work, it should be periodically called 
 +  delay(20); // Wait 0.2 second 
 +
 + 
 +</code> 
 + 
 +The following is the program code for the controller with DHT module. 
 +Required libraries: 
 +<code>lib_deps = ITTIoT, DHT sensor library, Adafruit Unified Sensor</code> 
 +<fc #ff0000>After programming, if NAN appears instead of readings, the USB cable should be disconnected and reconnected!</fc> 
 +<code c> 
 +// Includes global variables and librarys that the DHT uses 
 +#include <Arduino.h> 
 +#include <ittiot.h> 
 +#include <Ticker.h> 
 +#include <DHT.h> 
 + 
 +#define WIFI_NAME "name" 
 +#define WIFI_PASSWORD "password" 
 + 
 +#define DHTPIN D3     // Pin where DHT shield is connected. Change this to D4 if the shield has no legs removed. 
 +#define DHTTYPE DHT22   // DHT 22  (AM2302) 
 + 
 +// Create an object for DHT sensor 
 +DHT dht(DHTPIN, DHTTYPE); 
 + 
 +// Create an object for Ticker library 
 +Ticker timeTicker; 
 + 
 +bool sendDataFlag; 
 + 
 +// Ticker library callback, which will occur 0.5 second interval. 
 +void sendData() 
 +
 +  sendDataFlag=true; 
 +
 + 
 +// Function started after the connection to the server is established. 
 +void iot_connected() 
 +
 +  // Send message to serial port to show that connection is established 
 +  Serial.println("MQTT connected callback"); 
 +  // Send message to MQTT server to show that connection is established 
 +  iot.log("IoT DHT example!"); 
 +
 + 
 +void setup() 
 +
 +  // Initialize serial port and send message 
 +  Serial.begin(115200); // setting up serial connection parameter 
 +  Serial.println("Booting"); 
 + 
 +  //iot.setConfig("wname", WIFI_NAME); 
 +  //iot.setConfig("wpass", WIFI_PASSWORD); 
 +  iot.printConfig(); // print IoT json config to serial 
 +  iot.setup(); // Initialize IoT library 
 + 
 +  // Initialize DHT library 
 +  dht.begin(); 
 + 
 +  // Initialize Ticker interval and callback 
 +  timeTicker.attach(1, sendData); 
 +
 + 
 +void loop() 
 +
 +  iot.handle(); // IoT behind the plan work, it should be periodically called 
 + 
 +  if(sendDataFlag) 
 +  { 
 +    sendDataFlag = false; 
 +    // Read humidity and temperature 
 +    float h = dht.readHumidity(); 
 +    float t = dht.readTemperature(); 
 + 
 +    // Create a buffer to store strings to being sent later 
 +    char buf[10]; 
 + 
 +    // Convert temperature value messages to strings and send to the MQTT server 
 +    String(t).toCharArray(buf,10); 
 +    iot.publishMsg("temp",buf); 
 + 
 +    // Convert humidity value messages to strings and send to the MQTT server 
 +    String(h).toCharArray(buf,10); 
 +    iot.publishMsg("hum",buf); 
 +  } 
 +
 + 
 +</code> 
en/iot/examples/smartventilator.1525419293.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0