top of page

Week 18 - Technical Report + Demo

Hello!

After 18 weeks, here is our final product review for our module Engineering & Design!

 

Background

In a village in Yogyakarta Indonesia, there are a group of housewives that grow mushroom for a side income. Some housewives grow their mushrooms in a hut away from their home while others grow it on a shelf behind their house.

For our project, we will be implementing our project in the mushroom hut also known as a kubong. Here is a picture of how it looks like!

The oyster mushroom is one of the species of mushroom that the housewives grow.

High relative humidity of about 85-95%, temperature of 27 to 32 Degree Celsius, dark environment as well as moist environment are parameters that mushrooms need to grow well.

Currently, the housewives go to the kubong every morning to harvest the mushrooms as well as spray water in the hut to make the environment moist and humid for the mushrooms to grow.

The housewives also go in the afternoon to spray water if they feel that it is too hot and it is not humid enough for the mushrooms.

The housewives also possess mobile phones with basic functions such as messaging.

 

Problem/Project Statement

So our group’s project statement is how can we optimize the mushroom growth for the housewives in Indonesia.

In this blog post, the team will be elaborating on our project idea for our module review.

 

Needs

What the housewives need is that their mushrooms grow well and healthy so that they can sell them.

To do so, the team has decided to create a notification system which notifies the housewives when the environment is not optimal for their mushrooms and have them rectify the situation.

 

User Requirement/Experience

The system that the team implements should be easy and understandable for the housewives.

It should also be affordable and require low-maintenance this is because the housewives grow mushrooms as a side income only and would prefer to spend more time and effort on cultivating rice.

 

Notification System

The team will be using BOSCH’s XDK sensor which will sense the parameters of light, pressure, humidity and temperature.

To store and upload the data, the team will connect the XDK to the Arduino which is also connected to an ethernet shield to provide internet access. The data will be transmitted serially from the XDK to the Arduino whereby the data will be uploaded to Google Excel Spreadsheet so that anyone with the access can view the data in real time.

This data collected can then be analysed to determine patterns of the optimal and not optimal range of the mushroom environment.

The LCD screen will display the temperature and humidity readings.

In addition, when the temperature and humidity are not in the range of 27 to 32 degree celsius and 85-95% respectively, a SMS will be sent to the housewives who will then head down to the kubong to splash water or turn on the water pump.

For our module, we created an application using MIT app inventor 2 whereby the user can view the temperature and humidity readings on their android device.

If the readings are not in range, an in-app pop up text will appear and the user can turn on the pump by tapping on the button. However, the team will reconsider automating the pump for the housewives as it is costly to do.

A powerbank will be used to supply power for our project.

 

Function Analysis

This is how the team’s notification system would look like.

 

Items needed for electrical components

  1. XDK Sensor

  1. Arduino UNO

  1. Ethernet Shield

  1. HuaWei E5151 3G Mobile WiFi Modem

  1. 9V Water Pump

  1. Bluetooth Module

  1. LCD Screen

  1. DHT11 sensor

9. Arduino Mega

10. Power Bank

 

Circuit Diagram

This is how the team connected the electrical components:

Bluetooth, DHT sensor, LCD screen and Ethernet Shield

Bluetooth, DHT sensor and Water Pump Inserts picture here

 

Arduino Code

for uploading data to Google Excel Spreadsheet:

#include <SPI.h> #include <Ethernet.h> #include <LiquidCrystal.h> #include <SoftwareSerial.h> #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 int bluetoothRx = 5 ; int bluetoothTx = 6; int motorPin = 9;

DHT dht(DHTPIN, DHTTYPE); LiquidCrystal lcd(A0, A1, A2, A3, A4, A5); SoftwareSerial bluetooth (bluetoothTx, bluetoothRx);

const char WEBSITE[] = "api.pushingbox.com"; //pushingbox API server const String devid = "vE9193EEC58BF222"; //device ID from Pushingbox

//------------------------------------------------------------------------------- byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0x8A, 0xCD }; //Setting MAC Address char server[] = "api.pushingbox.com"; //pushingbox API server IPAddress ip(164, 78, 250, 168); //Arduino IP address. Only used when DHCP is turned off.

EthernetClient client; //define 'client' as object String data; //GET query with data float suhu; //suhu (bahasa Indonesia) means temperature boolean koneksi = false; float humidityData ; float celData ; float fehrData ; float hicData ; float hifData ;

//------------------------------------------------------------------------------ void setup() { Serial.begin(9600); bluetooth.begin (9600) ; dht.begin(); lcd.begin(16, 2); lcd.print("Loading..."); if (Ethernet.begin(mac) == 0) { Ethernet.begin(mac, ip); } pinMode(motorPin, OUTPUT); }

void loop() {

//lcd.setCursor(0, 1); //lcd.print(celData); //Wait between measurements longer then normal to slow donwn //google sheet populate, as We dont want to exceed free service quota //delay(1000); //10 seconds, (sampling rate vs. service call quota)

if (bluetooth.available() >= 0) { status = bluetooth.read(); }

if ( status == 1 ) // if 'H' was received { digitalWrite(motorPin, LOW); // turn ON the LED Serial.println("on"); //digitalWrite(led, HIGH); // turn ON the LED }

else if ( status == 0 ) { digitalWrite(motorPin, HIGH); // otherwise turn it OFF Serial.println("off"); //digitalWrite(led, LOW); // turn ON the LED }

humidityData = dht.readHumidity(); celData = dht.readTemperature(); fehrData = dht.readTemperature(true);

hicData = dht.computeHeatIndex(celData, humidityData, false); hifData = dht.computeHeatIndex(fehrData, humidityData);

bluetooth.print(celData); bluetooth.print("|"); bluetooth.print(humidityData); bluetooth.print("|"); lcd.setCursor(0, 0); lcd.print("Temp(C) " );

lcd.setCursor(11, 0); lcd.print(celData);

lcd.setCursor(0, 1); lcd.print("R.Humid(%)");

lcd.setCursor(11, 1 ); lcd.print(humidityData);

if (client.connect(WEBSITE, 80)) { sendData(); koneksi = true; //connected = true } while (koneksi) { if (client.available()) { char c = client.read(); //Serial.print(c); } if (!client.connected()) { client.stop(); koneksi = false; data = ""; //data reset

} } delay(5000); } void sendData() { client.print("GET /pushingbox?devid=" + devid + "&humidityData=" + (String) humidityData + "&celData=" + (String) celData + "&fehrData=" + (String) fehrData + "&hicData=" + (String) hicData + "&hifData=" + (String) hifData );

client.println(" HTTP/1.1"); client.print("Host: "); client.println(WEBSITE); client.println("User-Agent: ESP8266/1.0"); client.println("Connection: close"); client.println(); }

for activating pump:

#include <SoftwareSerial.h> #include <dht.h> dht DHT; #define DHT11_PIN 6

SoftwareSerial btSerial(10, 11); // RX(from TX Bluetooth), TX(from RX Bluetooth)

int motorPin = 8; int status = 0;

void setup() { // Open serial communications and wait for port to open: Serial.begin(9600);

// set the data rate for the SoftwareSerial port btSerial.begin(9600);

pinMode(motorPin, OUTPUT); }

void loop() { // run over and over

int chk = DHT.read11(DHT11_PIN); if (btSerial.available() > 0) { status = btSerial.read(); }

if ( status == '1' ) // if 'H' was received { digitalWrite(motorPin, HIGH); // turn ON the LED //digitalWrite(led, HIGH); // turn ON the LED }

else if ( status == '0' ) { digitalWrite(motorPin, LOW); // otherwise turn it OFF //digitalWrite(led, LOW); // turn ON the LED }

if (DHT.temperature > 0) { //Serial.print("Temperature = "); btSerial.print(DHT.temperature, 1); btSerial.print("|"); }

else if (DHT.humidity > 0) { //Serial.print("Humidity = "); btSerial.print(DHT.humidity, 1); btSerial.println("|"); delay(1000); } }

 

MIT App Inventor for activating pump

 

Video of our electrical components

Display of parameters on LCD Screen as well as Uploading of Data to Google Excel Spreadsheet

Android application with pump

 

Initial Idea

Initially, the team’s idea was to mount the electrical components into a box which would be hung onto the wall of the mushroom hut.

However, after the skype call, we were given more information on the structure of the mushroom hut.

The kubong was made out of Bamboo and wood. When it rains, the walls get wet and the roof leaks as such, our idea of mounting our project onto the wall was not feasible and the team changed our idea to placing the sensor on the ground instead.

 

Design

The team had to consider using materials that could be easily obtained and found in Indonesia. As such, we reduced the usage of 3D printed materials as well as laser cutting machines.

Our final mechanical design was inspired by the shape of a real mushroom.

The team created its own greenhouse with a water sprinkler system to create an artificial environment. This greenhouse is made to be similar as the kubong in Indonesia.

Here we have our concept design for our finalised mechanical design.

The 'stem' of the housing consists of a PVC pipe which houses an inner mounting board, which mounts the other electronics such as Arduino, battery pack, etc.

The XDK sensor is mounted on top of the pipe's endcap to sense the surrounding environment. It is splashproof protected to a certain extent by a 'bowl' covering above it.

 

Specifications

Weight of Design = around 2.5kg

Dimensions = 350mm x 350mm x 700mm

 

Items used for Mechanical Design

1. PVC Pipes

2. Acrylic

3. Aluminium Extrusion

4. ABS (Acrylonitrile Butadiene Styrene)

 

Final Solution

This is how our final project looks like! Doesn't it look like a mushroom? ^^

Mesh was added to prevent insects from entering the mushroom head whereby our electronics are kept.

 

Final Implementation

Mentioned above is our project for our module review.

There will be improvements and slight changes of our project for our final implementation at Indonesia!

This is to suit the housewives needs as well as the environment in Indonesia.

 

Conclusion

That marks the end of our Engineering & Design module!

However, it is not the end.

The team will be working on the project more after our exams and get ready for the final implementation in Indonesia!

Till then!

 


Featured Posts
Recent Posts
Archive
Search By Tags
No tags yet.
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page