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:
Fri Apr 11 11:05:02 2014 +0000
Revision:
8:2d462919519e
Parent:
7:1d691f81d455
Child:
9:43c339533f7f
RTC ADDED, STARTUP FUNCTIONS ADDED ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
umairaftab 8:2d462919519e 1
umairaftab 8:2d462919519e 2 //QUICK REFS:
umairaftab 8:2d462919519e 3 // TICKER is using timer 1 for buzzer.
umairaftab 8:2d462919519e 4
umairaftab 1:9ef26efedcea 5 #include "mbed.h"
umairaftab 3:087ce66714c0 6
umairaftab 1:9ef26efedcea 7 #include "keypad.h"
umairaftab 1:9ef26efedcea 8 #include "buzz.h"
umairaftab 7:1d691f81d455 9
umairaftab 7:1d691f81d455 10 #include "pindefs.h" //led pin definitions
umairaftab 3:087ce66714c0 11 #include "led_lights.h"
umairaftab 7:1d691f81d455 12
umairaftab 3:087ce66714c0 13 #include "peltier.h"
umairaftab 7:1d691f81d455 14 #include "peltier_pindefs.h"
umairaftab 7:1d691f81d455 15
umairaftab 7:1d691f81d455 16 #include "pumps.h"
umairaftab 7:1d691f81d455 17 #include "pumps_pindefs.h"
umairaftab 7:1d691f81d455 18
umairaftab 7:1d691f81d455 19 #include "airhumidity.h"
umairaftab 7:1d691f81d455 20 #include "soilmoisture.h"
umairaftab 7:1d691f81d455 21 #include "soilmoisture_pindefs.h"
umairaftab 8:2d462919519e 22
umairaftab 7:1d691f81d455 23 #include "ui.h"
umairaftab 7:1d691f81d455 24 #include "ui_pindefs.h"
umairaftab 7:1d691f81d455 25 #include "TextLCD.h"
umairaftab 7:1d691f81d455 26
umairaftab 8:2d462919519e 27 #include "rtcimp.h"
umairaftab 8:2d462919519e 28
umairaftab 8:2d462919519e 29 //SERIAL
umairaftab 8:2d462919519e 30 Serial bluetooth(PTA2, PTA1); // tx, rx
umairaftab 8:2d462919519e 31 Serial printer(PTC4,PTC3); // tx, rx
umairaftab 8:2d462919519e 32 //TICKERS
umairaftab 1:9ef26efedcea 33 Ticker timer1ms;
umairaftab 8:2d462919519e 34 Ticker clock_mine;
umairaftab 8:2d462919519e 35 //FLAGS
umairaftab 8:2d462919519e 36 bool startup_flag=true;
umairaftab 8:2d462919519e 37 bool watered_plants = false;
umairaftab 8:2d462919519e 38
umairaftab 8:2d462919519e 39 //SETPOINTS
umairaftab 8:2d462919519e 40 float setpoint_air_humidity = 30.00 ;
umairaftab 8:2d462919519e 41 float setpoint_soil_humid1 = 0.3 ;
umairaftab 8:2d462919519e 42 float setpoint_soil_humid2 = 0.3 ;
umairaftab 8:2d462919519e 43
umairaftab 8:2d462919519e 44 //WINDOWING
umairaftab 8:2d462919519e 45 float window_f = 2 ;
umairaftab 8:2d462919519e 46 int window_i =2 ;
umairaftab 8:2d462919519e 47
umairaftab 8:2d462919519e 48 //GLOBAL VARS
umairaftab 8:2d462919519e 49 float current_water_level = 0;
umairaftab 8:2d462919519e 50
umairaftab 8:2d462919519e 51 //SAFETY LIMITS
umairaftab 8:2d462919519e 52 const float max_peltier_temp = 68 ; //CELCIUS
umairaftab 8:2d462919519e 53
umairaftab 8:2d462919519e 54 //**************************FUNCTION TO READ SENSORS **********************************************
umairaftab 8:2d462919519e 55 void read_sensors(){
umairaftab 8:2d462919519e 56
umairaftab 8:2d462919519e 57 //Read values for AIR
umairaftab 8:2d462919519e 58
umairaftab 8:2d462919519e 59 //OUTSIDE
umairaftab 8:2d462919519e 60 outside_humidity = get_air_humid_outside();
umairaftab 8:2d462919519e 61 outside_temp = get_air_temp_outside(temp_unit);
umairaftab 8:2d462919519e 62 outside_dewpoint = get_air_dewpoint_outside();
umairaftab 8:2d462919519e 63
umairaftab 8:2d462919519e 64 //INSIDE
umairaftab 8:2d462919519e 65 inside_humidity = get_air_humid_inside();
umairaftab 8:2d462919519e 66 inside_temp = get_air_temp_inside(temp_unit);
umairaftab 8:2d462919519e 67 inside_dewpoint = get_air_dewpoint_inside();
umairaftab 8:2d462919519e 68
umairaftab 8:2d462919519e 69 //Read value for soil
umairaftab 8:2d462919519e 70 read_soil_humidity();
umairaftab 8:2d462919519e 71 calc_soil_humid_values(); //values in soil1_humid and soil2_humid perecentages
umairaftab 8:2d462919519e 72
umairaftab 8:2d462919519e 73 }
umairaftab 8:2d462919519e 74
umairaftab 8:2d462919519e 75 //****************************Functions that perform tasks**************************************
umairaftab 8:2d462919519e 76 void waterplants(){
umairaftab 8:2d462919519e 77
umairaftab 8:2d462919519e 78
umairaftab 8:2d462919519e 79
umairaftab 8:2d462919519e 80
umairaftab 8:2d462919519e 81 }
umairaftab 8:2d462919519e 82 //***************************PLACEHOLDER FUNCTION TO DISABLE EVERYTHING **********************
umairaftab 8:2d462919519e 83 void disable_everything(){
umairaftab 8:2d462919519e 84
umairaftab 8:2d462919519e 85 //Disable peltier,vac,fans,pumps.
umairaftab 8:2d462919519e 86
umairaftab 8:2d462919519e 87 }
umairaftab 8:2d462919519e 88
umairaftab 8:2d462919519e 89
umairaftab 8:2d462919519e 90 //*********************************************************************************************
umairaftab 8:2d462919519e 91 //* *
umairaftab 8:2d462919519e 92 //* *
umairaftab 8:2d462919519e 93 //* *
umairaftab 8:2d462919519e 94 //* *
umairaftab 8:2d462919519e 95 //* MAIN ROUTINE *
umairaftab 8:2d462919519e 96 //* *
umairaftab 8:2d462919519e 97 //* DO NOT MODIFY WITHOUT TELLING UMAIR *
umairaftab 8:2d462919519e 98 //* *
umairaftab 8:2d462919519e 99 //* *
umairaftab 8:2d462919519e 100 //*********************************************************************************************
umairaftab 1:9ef26efedcea 101
umairaftab 1:9ef26efedcea 102 int main(void)
umairaftab 1:9ef26efedcea 103 {
umairaftab 8:2d462919519e 104
umairaftab 8:2d462919519e 105 //call function that disables everything.
umairaftab 8:2d462919519e 106 disable_everything();
umairaftab 8:2d462919519e 107
umairaftab 8:2d462919519e 108
umairaftab 8:2d462919519e 109 //FOR BUZZER
umairaftab 1:9ef26efedcea 110 timer1ms.attach(&timer1, 0.001); //interrupt attached function(timer) with interval (1 ms)
umairaftab 8:2d462919519e 111 //FOR INTERNAL CLOCK
umairaftab 8:2d462919519e 112 clock_mine.attach(&sec_inc, 1.0);
umairaftab 8:2d462919519e 113 char keypad_value;
umairaftab 8:2d462919519e 114
umairaftab 8:2d462919519e 115 //call LCD boot
umairaftab 8:2d462919519e 116 ui_startup();
umairaftab 8:2d462919519e 117
umairaftab 8:2d462919519e 118 //SET TIME
umairaftab 8:2d462919519e 119 rtcimp_settime(6,0);
umairaftab 8:2d462919519e 120 //call function that reads values
umairaftab 8:2d462919519e 121 read_sensors();
umairaftab 8:2d462919519e 122
umairaftab 8:2d462919519e 123 //call function that performs functions.
umairaftab 8:2d462919519e 124
umairaftab 8:2d462919519e 125
umairaftab 8:2d462919519e 126 startup_flag = false ;
umairaftab 1:9ef26efedcea 127 while(1) {
umairaftab 8:2d462919519e 128
umairaftab 8:2d462919519e 129 wait(1.5);
umairaftab 8:2d462919519e 130 keypad_value = Keypad();
umairaftab 1:9ef26efedcea 131
umairaftab 8:2d462919519e 132 }//WHILE END
umairaftab 8:2d462919519e 133
umairaftab 8:2d462919519e 134
umairaftab 8:2d462919519e 135 }
umairaftab 8:2d462919519e 136
umairaftab 8:2d462919519e 137