Implement initial firmware version of envisens
This commit is contained in:
		
							parent
							
								
									5900a8384e
								
							
						
					
					
						commit
						1df37cb910
					
				
							
								
								
									
										62
									
								
								envisens/atmega_fw/atmega_fw.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								envisens/atmega_fw/atmega_fw.ino
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					/* Macrocell environmental sensor project EnviSens
 | 
				
			||||||
 | 
					 *  
 | 
				
			||||||
 | 
					 *  This firmware provides features to use an ATMEGA µC as an environmental sensor provider.
 | 
				
			||||||
 | 
					 *  Currently supported sensors:
 | 
				
			||||||
 | 
					 *   - digital pin D2: DHT22 temperature and humidity sensor 
 | 
				
			||||||
 | 
					 *   - analog  pin A0: MQ135 gas and air quality sensor
 | 
				
			||||||
 | 
					 *  
 | 
				
			||||||
 | 
					 *  (C) 2019 Macrocell - Environmental Sensing Solutions (MESS)
 | 
				
			||||||
 | 
					 *   proudly presented by Macrocell - FPGA Innovators
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					#include "DHT.h"
 | 
				
			||||||
 | 
					#include "configuration.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MQ135_PIN A0
 | 
				
			||||||
 | 
					#define DHT_PIN 2     // Digital pin connected to the DHT sensor
 | 
				
			||||||
 | 
					#define DHT_TYPE DHT22   // DHT 22  (AM2302), AM2321
 | 
				
			||||||
 | 
					DHT dht(DHT_PIN, DHT_TYPE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int sensorValue;
 | 
				
			||||||
 | 
					long last_sample = 0;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					void setup() {
 | 
				
			||||||
 | 
					  Serial.begin(SERIAL_BAUDRATE); 
 | 
				
			||||||
 | 
					  pinMode(MQ135_PIN, INPUT);
 | 
				
			||||||
 | 
					  pinMode(LED_BUILTIN, OUTPUT); 
 | 
				
			||||||
 | 
					  digitalWrite(LED_BUILTIN, LOW);
 | 
				
			||||||
 | 
					  dht.begin();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void loop() {
 | 
				
			||||||
 | 
					  long now = millis();
 | 
				
			||||||
 | 
					  if (now - last_sample > OPERATION_PERIOD / 2) {
 | 
				
			||||||
 | 
					    if (OPERATION_BLINK_EN) {digitalWrite(LED_BUILTIN, LOW);}
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (now - last_sample > OPERATION_PERIOD) {
 | 
				
			||||||
 | 
					    last_sample = now;
 | 
				
			||||||
 | 
					    if (OPERATION_BLINK_EN) {digitalWrite(LED_BUILTIN, HIGH);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    float h = dht.readHumidity();
 | 
				
			||||||
 | 
					    float t = dht.readTemperature();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    if (isnan(h) || isnan(t)) {
 | 
				
			||||||
 | 
					      Serial.println(F("Failed to read from DHT sensor!"));
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      float hi = dht.computeHeatIndex(t, h, false);
 | 
				
			||||||
 | 
					      Serial.print(F("Humidity: "));
 | 
				
			||||||
 | 
					      Serial.print(h);
 | 
				
			||||||
 | 
					      Serial.print(F("%  Temperature: "));
 | 
				
			||||||
 | 
					      Serial.print(t);
 | 
				
			||||||
 | 
					      Serial.print(F("°C  Heat index: "));
 | 
				
			||||||
 | 
					      Serial.print(hi);
 | 
				
			||||||
 | 
					      Serial.println(F("°C "));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    sensorValue = analogRead(MQ135_PIN); 
 | 
				
			||||||
 | 
					    Serial.print("AirQuality=");
 | 
				
			||||||
 | 
					    Serial.print(sensorValue, DEC);
 | 
				
			||||||
 | 
					    Serial.println(" PPM");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										11
									
								
								envisens/atmega_fw/configuration.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								envisens/atmega_fw/configuration.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					/* Macrocell environmental sensor project EnviSens
 | 
				
			||||||
 | 
					 *  
 | 
				
			||||||
 | 
					 * This header provides the necessary configurations for the ATMEGA firmware.
 | 
				
			||||||
 | 
					 *  
 | 
				
			||||||
 | 
					 *  (C) 2019 Macrocell - Environmental sensing solutions
 | 
				
			||||||
 | 
					 *   proudly presented by Macrocell - FPGA Innovators
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SERIAL_BAUDRATE 115200
 | 
				
			||||||
 | 
					#define OPERATION_BLINK_EN true // blink continuously if in correct operation
 | 
				
			||||||
 | 
					#define OPERATION_PERIOD 2000 // sensor reading period in milliseconds 
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user