Project Autus - Automated Plant Chamber

Dependencies:   TextLCD mbed

Fork of keypad_test by Plamen Totev

Autus

This is the codebase accompanying the project Autus.

Autus is an automated growth chamber for plants.

Features

Control Humidity inside chamber wrt to external humidity. Control Temperature inside chamber. ( Peltier Heaters/Coolers ) Water and shower plants. Control soil humidity. Monitor water tanks level (Load Cell) /media/uploads/umairaftab/frdm_-_new_page1.png

Code Base Features

Fixed timing and CRC for DHT-11 Sensor. Fixed OneWire bug for ds18b20

Cyclic Executive Scheduler with Priority. Async IPC framework for PC App over bluetooth

Fake RTC systick, I was having some trouble with the on board rtc.

/media/uploads/umairaftab/download.png

Committer:
umairaftab
Date:
Mon Apr 14 19:18:14 2014 +0000
Revision:
57:7ab93ed49b70
Parent:
11:f9ffd5ab7e94
Cosmetic Changes, Menus added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
umairaftab 7:1d691f81d455 1 #include "mbed.h"
umairaftab 7:1d691f81d455 2 #include "soilmoisture.h"
umairaftab 7:1d691f81d455 3 /*https://mbed.org/users/chris/notebook/Getting-best-ADC-performance*/
umairaftab 7:1d691f81d455 4 static const int MAX_DATAPOINTS=500;
umairaftab 11:f9ffd5ab7e94 5 static const float MAX_ADC_VALUE=65535;
umairaftab 7:1d691f81d455 6
umairaftab 7:1d691f81d455 7 unsigned short current_soil_humid1=0;
umairaftab 7:1d691f81d455 8 unsigned short current_soil_humid2=0;
umairaftab 7:1d691f81d455 9
umairaftab 7:1d691f81d455 10 unsigned int current_soil_humid1_int=0;
umairaftab 7:1d691f81d455 11 unsigned int current_soil_humid2_int=0;
umairaftab 7:1d691f81d455 12
umairaftab 11:f9ffd5ab7e94 13 unsigned short CMA_soil1=0;
umairaftab 11:f9ffd5ab7e94 14 unsigned short CMA_soil2=0;
umairaftab 7:1d691f81d455 15
umairaftab 7:1d691f81d455 16 float soil1_humid=0;
umairaftab 7:1d691f81d455 17 float soil2_humid=0;
umairaftab 7:1d691f81d455 18
umairaftab 7:1d691f81d455 19 void read_soil_humidity(){
umairaftab 7:1d691f81d455 20
umairaftab 7:1d691f81d455 21 int count =0;
umairaftab 7:1d691f81d455 22 while(count<MAX_DATAPOINTS){
umairaftab 7:1d691f81d455 23
umairaftab 7:1d691f81d455 24 current_soil_humid1 = soil_sense1.read_u16();
umairaftab 7:1d691f81d455 25 current_soil_humid2 = soil_sense2.read_u16();
umairaftab 7:1d691f81d455 26
umairaftab 7:1d691f81d455 27 //convert from short to int
umairaftab 11:f9ffd5ab7e94 28 //current_soil_humid1_int = (unsigned int)current_soil_humid1;
umairaftab 11:f9ffd5ab7e94 29 //current_soil_humid2_int = (unsigned int)current_soil_humid2;
umairaftab 7:1d691f81d455 30
umairaftab 11:f9ffd5ab7e94 31 CMA_soil1 = (current_soil_humid1 + (count*CMA_soil1))/(count+1);
umairaftab 11:f9ffd5ab7e94 32 CMA_soil2 = (current_soil_humid2 + (count*CMA_soil2))/(count+1);
umairaftab 7:1d691f81d455 33
umairaftab 7:1d691f81d455 34 wait_ms(5);
umairaftab 7:1d691f81d455 35 count++;
umairaftab 7:1d691f81d455 36 }
umairaftab 7:1d691f81d455 37
umairaftab 7:1d691f81d455 38 }
umairaftab 7:1d691f81d455 39
umairaftab 7:1d691f81d455 40 void calc_soil_humid_values(){
umairaftab 11:f9ffd5ab7e94 41 printf("%d \n\r",CMA_soil1);
umairaftab 11:f9ffd5ab7e94 42 soil1_humid = (float)CMA_soil1/MAX_ADC_VALUE;
umairaftab 11:f9ffd5ab7e94 43 soil2_humid = (float)CMA_soil2/MAX_ADC_VALUE;
umairaftab 11:f9ffd5ab7e94 44 printf("%4.2f \n\r",soil1_humid);
umairaftab 7:1d691f81d455 45 }