Skip to content

10. Open Source Hardware

Getting closer and closer to the end of the assigments, this week we have learned how by working in group we have achieved improvements in our area of work, we have reconsidered what we needed to promote and that is what we have done, since we are lucky to have a large amount of resources and creating machines in our center.

Process and Workflow

In order to carry out this week's assignment, we needed to distribute the tasks and organize ourselves very well, so the work could be fluid and five minds that think and work in different ways found a union and harmony. Of course we have received the support of our instructors in the BDC to be able to carry out the complex task.


This week has been full of great benchmarks and references, but we have mainly relied on three to make the workflow easier and more concrete.

One of the products already on the market that was a reference was the Domingo while intended for tempe it's modular, minimalist amd DIY style build was interesting to start from.

This video was influential in understanding how humidity should move through the chamber and general architectures of grow spaces for mushrooms such as tube shelfs.


At the BDC, as you may have intuited, we have decided to build an incubator since we have realized the need for a space for the regulated creation of the last week mycelium. For this, it is explained below what an incubator is and what is needed to create it.

An incubator is a device whose common function is to create an environment with adequate humidity and temperature for the growth or reproduction of living beings. The main types of incubators are those used in neonatology, those used in microbiology (what is our case) and those intended for the reproduction of oviparous species.

As an important point for the creation of our machine, we have used an humidity controller, the model is called XM-18SD, thanks to this we have been able to control the temperature and humidity that we want and need inside our incubator to be able to control and investigate the growth of mycelium.

The new generation intelligent humidity incubator controller is a control system of fully intelligent microcomputer designed and developed for the incubation industry and applies the latest microelectronic technology and new type components. Applied microcomputer chips to have strong anti-interference and high stable performance; The temperature sensor applies the high precision sensor for high temperature collection accuracy and wide range of temperature; applies high-performance, high-precision humidity sensor to ensure effectively stability and reliability. It has the user-firnedly four-screen design to display, including two screens showing the temperature aand humidity of the incubator and two other screens showing the egg turning times and incubation days by pressing the keys and displaying the preset temperature and humidity by pressing the keys.



We wanted to do our own programming to learn and know more about Arduino and how to control the sensor as we want.

  • The first thing has been to find the name of our sensor to look at for in the library of Arduino.
  • Our sensor is DHT11
  • We will use the sensor and a pull-up resistor of 5 Kω.
  • The 3 pins of the PCB version of the DHT11 are:

  • GND: grounding

  • DATA: data transmission
  • VCC: Power

  • Once we know the sensor and its functions we will take action with the code!

  • If we had to program the DHT11 temperature and humidity sensor from scratch, it would be frankly complicated. However, the bookstores around Arduino make our lives much easier)
  • In this case we will use the one provided by Adafruit.
  • Once the search is done we need to connect the circuit on the protoboard.
  • We install the library
  • Copy the code and then edit it to our medium.
#include "DHT.h"
#define DHTPIN 10    // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)


int var= 0;

void setup() {
  Serial.println(F("DHTxx test!"));


void loop() {
  // Wait a few seconds between measurements.

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(false);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));

   if(h<=70) { 

     var = 2;

     var = 3;

     var = 4;

switch (var) {
  case 1:
    //do something when var equals 1
    Serial.print(F("Humidity: "));
    Serial.print(F("%  Temperature: "));
    Serial.print(F("°C "));

    Serial.println( "Start humidifier");
  case 2:

    Serial.print(F("Humidity: "));
    Serial.print(F("%  Temperature: "));
    Serial.print(F("°C "));

    Serial.println( "Stop Humidifier");
    //do something when var equals 2
  case 3:
    Serial.print(F("Humidity: "));
    Serial.print(F("%  Temperature: "));
    Serial.print(F("°C "));

    Serial.println( "stop heating");
    //do something when var equals 2

 case 4: 
    Serial.print(F("Humidity: "));
    Serial.print(F("%  Temperature: "));
    Serial.print(F("°C "));

    Serial.println( "start heating");
    //do something when var equals 2

    // if nothing else matches, do the default
    // default is optional
  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("%  Temperature: "));
  Serial.print(F("°C "));
  Serial.print(F("°F  Heat index: "));
  Serial.print(F("°C "));

See the reaction below:

For our incubator we are going to opt for a controller already programmed so that facilitates our work, but in the same through a circuit with a temperature and humidity sensor with Arduino. For the mycelium to grow and develop optimally, it needs humidity between 70% and 90% and a temperature between 15Cº and 24Cº.

Step by step


  • HUMIDITY Sensor:

  • We place the RED cable to + 5V (POWER)

  • We place the BLACK cable to the GROUND.
  • We place the YELLOW cable to the H.
  • TEMPERATURE Sensor: We place one of the cables to +5V (POWER) and the other to T.


  • ON/OFF Switch: We place 2 cables in L (Load) and N (Neutral, negative).
  • HEAT: We put two wires in TEMP CONTROL.
  • HUMIDITY: We put two wires. One to COM and the other to HUMIDITY CONTROL.
  • FAN: We put two wires. One to COM and the otherone to EXCESS TEMP.

Tools: This has been the best video I have found which has helped me understand how to assemble the electronic part

Design Process

Finally we saw the real posibility to build an incubator, where we have mainly used two different materials:

  • WOOD for the external part and the material that BDC proporcionate to us. It is an insulating material and prevents natural light from entering. The total measure is 250cmx125cm.
  • PVC for the internal part. We are gonna be able to control better the hygiene and maintenance of the space, which is the most important for the mycelium to grow.
  • XM-18SD sensor, necessary next to the control temperature and humidity cable.

For the design of the incubator we have decided to divide the box into two parts, the upper part is for the XM-18SD sensor, which we will control the humidity and temperature of the lower level, for this reason some rails have been created to pass from one level to another, this is gonna protect the sensor and acting on the mycelium.

Inside the incubator, it has been thought to use a total of 3 shelves, which can be modified based on the user's needs; we added +10cm to the base of the incubator, for store the shelves that we dont need in that moment.

The ventilation system has been located on the lower left side and on the upper right side, so humidity travels avenly throughout the space and doesnt condence in a single area. On the other hand, inside the incubator we have housed a humidifier, which will make our ventilation work inside the incubator in an optimal and correct way.

In the back of the incubator we placed the heat plate, for this we have opened a hole to be able to connect to the electricity for the operation of the machine.

Here you can see the design in 3D.

Before cutting the pieces of the incubator, we broke it down piece by piece in Rhino, so later we could use Aspire to send the pieces to cut with CNC machine.



Once we have assembled the walls it is important to clarify that we have had to make a series of changes in the design, so that the entire wiring system goes down the walls we have drilled the walls.

To lower the wiring from the upper floor to the lower one, on the one hand we have made some rails to connect the humidifier, the heating plate and the load of the XM-18SD, that is the plug. On the other hand, we have made a hole in the surface of the floor that divides our incubator to lower both the temperature and humidity sensors.

How to use

Instructions for use

User Manual

Make it yourself!


Files can all be found here

Last update: 2023-01-13