Skip to content

Akuna Cube Design

Akuna Cube Electronics

1. Electronic components and tools

Electronic Components

Component Origin Price ($) Quantity Subtotal ($)
CONN HEADER SMD 4POS 2.54MM Digikey $0.93 10 $9.30
CONN RCPT 4POS 0.1 TIN SMD Digikey $0.70 10 $7.00
6W, 2.54MM PTH SOCKET, SIL, SMT Digikey $0.93 5 $4.65
5W, 2.54MM PTH SOCKET, SIL, SMT, Digikey $0.86 7 $6.02
2W, 2.54MM PTH SOCKET, SIL, SMT Digikey $0.49 6 $2.94
RELAY AKUNATEK $4.00 3 $12.00
Seed studio XIAO ESP32C3 DIGIKEY $5.80 1 $5.80
DHT11 sensor DIGIKEY $19.00 1 $19.00
Raspberry Pi 4 modelB DIGIKEY $153.85 1 $153.85
Screen module Alibaba $130.00 1 $130.00

Tools

2. Electronics Design

For the electronic design of our AKUNA CUBE modules, we used two software packages: kicad and eagle. For more details, please refer to Week 6 (Electronic design).

Here’s a picture of our various electronic circuits.

3. Electronic Production

PCB

Jean-Nicaise AKAFFOU

Jean-Nicaise AKAFFOU

Tools

4. Electronic Wiring

Jean-Nicaise AKAFFOU

Jean-Nicaise AKAFFOU

Jean-Nicaise AKAFFOU

Jean-Nicaise AKAFFOU

Jean-Nicaise AKAFFOU

Jean-Nicaise AKAFFOU

5. Electronic test

Akuna Cube Mecanic

1. 3D design

  • design on solidworks

  • assembly on solidworks

  • STL fil generating

2. 3D Printing

  • prusa slicer
  • print component box

  • After 3D printing

3. Assembling

  • aKUNA CUBE MECHANICAL ASSEMBLY

  • CUBE PRESENTION PLATFORM

FOR THE PRESENTATION OF MY PRODUCT I MADE A ROTATING PRESENTATION PLATFORM

  • MODELING REMAINS THE SAME AS FOR PACKAGING

After printing and cuttind we move to assembly.

  • AKUNA CUBE MECHANICAL FILES

PRESENTATIONSUPORT FILES

CUBE FILES

Akuna Cube Packaging

1. presentation

Since our AKUNA CUBE data collar system is designed to be installed in extreme conditions, we have designed a cube-shaped packaging to protect it and make it more resistant. You’ll find below the results of the design of this packaging, which we created using SolidWorks software. For more details, please refer to Week 3 (Computer controlled cutting).

2. Procedure

  • 2D Design on solidWorks

  • 3D Design on SolidWorks

  • assembly on solidWorks

  • DXF files Saving

3. Production

  • Inkscape

  • laserCutting

  • ON MACHINE

  • during
  • 4 Heros

4. Files

Akuna Cube Interface

To design the human-machine interface for our final project, we used several solutions, including :

1. Oled interface

As our data collection cube is equipped with an oled screen, we chose to display sensor values and action status directly on the oled screen.

Here’s an example:

Here we have a cube equipped with a soil moisture sensor and a relay.

As shown below, we have the value of the humidity sensor on the OLED screen.

To program the cube, we used the Arduino IDE.

Here’s the program.

Akuna_cube_1.ino
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <WiFi.h>
#include <PubSubClient.h>

#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);    //Low spped I2C

const char* ssid = "Akuna_learning_cube150";
const char* password = "50706309790";

// Add your MQTT Broker IP address, example:
const char* mqtt_server = "192.168.1.53";

unsigned long previousMillis = 0;   // Stores last time temperature was published
const long interval = 3000;        // Interval at which to publish sensor readings


#define sensor_sols D0

int sensor_val; 

WiFiClient espClient;
PubSubClient client(espClient);


void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Create a random client ID
    String clientId = "XIAO_ESP32_225";
    clientId += String(random(0xffff), HEX);
    // Attempt to connect
    if (client.connect("XIAO225","akuna","akuna")) {
      Serial.println("connected");
      client.subscribe("XIAO225");
     } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}


void setup(void) {
  Serial.begin(115200);
  pinMode(sensor_sols,INPUT);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
//  client.setCallback(callback);
  u8g2.begin();
  }

void loop(void) {
      if (!client.connected()) {
    reconnect();
  }
  client.loop();

  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    // Save the last time a new reading was published
    previousMillis = currentMillis;
    int sensorValue = analogRead(sensor_sols);
    Serial.println(sensorValue);
    sensor_val = map(sensorValue, 0, 4095, 100, 0);
    client.publish("Akuna_cube_1/sensor_sols",String(sensor_val).c_str());

  }  

  u8g2.clearBuffer();                   // clear the internal memory
  u8g2.setFont(u8g2_font_ncenB08_tr);   // choose a suitable font
  u8g2.drawStr(12,15,"AKUNA CUBE V0.1");    // write something to the internal memory
  u8g2.drawStr(18,26,"I am data logger ");
  u8g2.drawStr(10,40,"Soil humidity(%):");
  u8g2.drawStr(0,55,String(sensor_val).c_str());

  u8g2.sendBuffer();                    
}

2. Screen interface

Since our system is equipped with several Akuna cubes that collect data and control actuators, we decided to develop a human-machine interface to display all the sensor values of each AKUNA CUBE and control all the actuators.

To create this HMI we proceeded as follows:

  • We chose to use a Raspberry pi with a touch screen as shown below.

  • Once the case was mounted on the screen, we connected it to a WiFi router to enable it to communicate with the other modules via WiFi.

Here’s the final result of the HMI.

HERO video

3. Mobile phone Interface

Since the graphical interface we’ve developed using the Node Red solution is a web page hosted on a web server installed on the Raspberry pi we’ve chosen, all we have to do is enter the URL address corresponding to the web page in a browser to access it.

To access the HMI with a smarphone, we followed the procedure below:

  • we connected to our system’s wifi network.

  • we opened the google chrome browser on our smartphone.

  • we entered the URL address of our HMI page: 192.168.1.3:1880/ui

  • here’s the interface displayed on our smartphone

Akuna Cube System integration

I changed the design a bit because I made a modification to my circuit.

!

!

!

solidWorks Files

I put my electrovane and my flowmeter in a box so I could hang it up.

solidWorks Files

  • Electrovane and dembimeter connection

## Akuna Cube Table

  • Akuna Cube Assembly


Last update: September 4, 2023