1 / 4
Arduino Giga Development Platform — image 1
1 / 4

Arduino Giga Development Platform

Order a print of this model

We calculate the final price from your selected file. You review and accept it before payment.

Saved on this device.

This is an Arduino Development platform, the possibilities are endless. Let the work begin.

Rating
0 / 5
Likes
5
Downloads
31
Makes
0
Views
218
Reviews
0

Updated at source:

Model information

License
Creative Commons — Attribution — Noncommercial

The Model is printed on a creality Ender v1 in white Pla, infill should be 40-50%. with support.

 

Components:

Arduino Giga R1 Wifi

Arduino Giga Display

Arduino Giga Camera. UC-A67

Micro SD Pmod Module

Rgb Module Digital 18x14mm

Wifi Antenna 40x14mm

Mini Breadboards 35*47*8,5 mm

4x m3 Heat insert   D 4.5mm 

4x m3 8mm

6x m2 8mm

CODE:

#include <WiFi.h>

#include <SdFat.h>

#include <SPI.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_BME680.h>

#include "Arduino_GigaDisplay_GFX.h"


 

// Pins

const int SD_CS = 10;

const int LED_R = 4;  // Rød RGB PWM pin

const int LED_G = 3;  // Grøn RGB PWM pin

const int LED_B = 6;  // Blå RGB PWM pin

SdFat sd;

Adafruit_BME680 bme;

GigaDisplay_GFX tft;


 

// WiFi credentials (kan erstattes med konfigurationsfil)

const char* ssid = "";

const char* password = "";


 

// SPI-konfiguration

SdSpiConfig spiConfig(SD_CS, SHARED_SPI, SD_SCK_MHZ(25), &SPI1);


 

// Farver til displayet

#define COLOR_BLACK 0x0000

#define COLOR_WHITE 0xFFFF

#define COLOR_GREEN 0x07E0

#define COLOR_RED   0xF800

#define COLOR_BLUE  0x001F


 

// Global tilstand

bool sdInitialized = true;

bool bmeInitialized = true;


 

// Millis tidsmarkører og intervaller

unsigned long displayMillis = 0;

const long displayInterval = 4000; // Skift fra opstart til data efter 4 sekunder


 

unsigned long sensorMillis = 0;

const long sensorInterval = 60000; // Sensoropdatering hvert minut


 

unsigned long errorCheckMillis = 0;

const long errorCheckInterval = 30000; // Fejltjek hvert 30. sekund


 

bool showStartup = true; // Flag for opstartsvisning



 

// RGB LED kontrolfunktion

void RGB_color(int red, int green, int blue) {

  analogWrite(LED_R, red);

  analogWrite(LED_G, green);

  analogWrite(LED_B, blue);

}


 

// Fejl-håndteringsfunktion

void handleError(const char* message) {

  tft.setTextColor(COLOR_RED);

  tft.println(message);

  Serial.println(message);

  RGB_color(0, 255, 0); // Rød for fejl

  if (sdInitialized) {

    File errorFile = sd.open("Error_Log.txt", FILE_WRITE);

    if (errorFile) {

      errorFile.println(message);

      errorFile.close();

    }

  }

  delay(5000);

}


 

// Forsøg at genoprette WiFi

void reconnectWiFi() {

  tft.fillScreen(COLOR_BLACK);

  tft.setTextColor(COLOR_WHITE);

  tft.println("Forsøger at genoprette WiFi...");

  Serial.println("Genopretter WiFi...");

  RGB_color(0, 0, 255); // Blå for opstart


 

  int attempts = 0;

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED && attempts < 10) {

    delay(500);

    Serial.print(".");

    attempts++;

  }


 

  if (WiFi.status() != WL_CONNECTED) {

    handleError("WiFi-forbindelse mislykkedes.");

  } else {

    tft.fillScreen(COLOR_BLACK);

    tft.setTextColor(COLOR_GREEN);

    tft.println("WiFi-forbindelse genoprettet!");

    Serial.println("WiFi-forbindelse genoprettet.");

    RGB_color(255, 0, 0); // Grøn for succes

  }

}


 

// Kontroller SD-kortstatus

void checkSDCard() {

  if (!sdInitialized && sd.begin(spiConfig)) {

    tft.fillScreen(COLOR_BLACK);

    tft.setTextColor(COLOR_GREEN);

    tft.println("SD-kort genoprettet!");

    Serial.println("SD-kort genoprettet.");

    RGB_color(255, 0, 0); // Grøn for succes

    sdInitialized = true;

  } else if (!sdInitialized) {

    handleError("SD-kort stadig utilgængeligt!");

  }

}


 

// Kontroller BME680-status

void checkBME680() {

  if (!bmeInitialized && bme.begin()) {

    tft.fillScreen(COLOR_BLACK);

    tft.setTextColor(COLOR_GREEN);

    tft.println("BME680 genoprettet!");

    Serial.println("BME680 genoprettet.");

    RGB_color(255, 0, 0); // Grøn for succes

    bmeInitialized = true;

  } else if (!bmeInitialized) {

    handleError("BME680 stadig utilgængelig!");

  }

}


 

// Vis systemstatus på displayet

void displayStatus() {

  tft.fillScreen(COLOR_BLACK);

  tft.setTextColor(COLOR_WHITE);

  tft.setCursor(0, 0);

  tft.println("System Status:");


 

  tft.print("WiFi: ");

  if (WiFi.status() == WL_CONNECTED) {

    tft.println("Tilsluttet");

    tft.print("Signal: ");

    tft.println(WiFi.RSSI());

  } else {

    tft.println("Ikke tilsluttet");

  }


 

  tft.print("SD-kort: ");

  tft.println(sdInitialized ? "OK" : "Fejl");


 

  tft.print("BME680: ");

  tft.println(bmeInitialized ? "OK" : "Fejl");

}


 

// Initialisering af WiFi

void initWiFi() {

  tft.println("Forbinder til WiFi...");

  WiFi.begin(ssid, password);

  int attempts = 0;

  while (WiFi.status() != WL_CONNECTED && attempts < 20) {

    delay(500);

    Serial.print(".");

    attempts++;

  }

  if (WiFi.status() != WL_CONNECTED) {

    handleError("WiFi-forbindelse mislykkedes.");

  } else {

    tft.setTextColor(COLOR_GREEN);

    tft.println("WiFi tilsluttet!");

    Serial.print("IP-adresse: ");

    Serial.println(WiFi.localIP());

    RGB_color(255, 0, 0); // Grøn for succes

  }

}


 

// Initialisering af SD-kort

void initSDCard() {

  tft.println("Initialiserer SD-kort...");

  if (!sd.begin(spiConfig)) {

    handleError("SD-kort initialisering mislykkedes.");

    sdInitialized = false;

  } else {

    tft.setTextColor(COLOR_GREEN);

    tft.println("SD-kort OK!");

    Serial.println("SD-kort initialiseret.");

    RGB_color(255, 0, 0); // Grøn for succes

  }

}


 

// Initialisering af BME680

void initBME680() {

  tft.println("Initialiserer BME680...");

  if (!bme.begin()) {

    handleError("BME680 initialisering mislykkedes.");

    bmeInitialized = false;

  } else {

    bme.setTemperatureOversampling(BME680_OS_8X);

    bme.setHumidityOversampling(BME680_OS_2X);

    bme.setPressureOversampling(BME680_OS_4X);

    bme.setGasHeater(320, 150); // 320°C i 150 ms

    tft.setTextColor(COLOR_GREEN);

    tft.println("BME680 OK!");

    Serial.println("BME680 initialiseret.");

  }

}


 

// Gem sensor-data til SD-kort

void saveSensorDataToSD() {

  if (sdInitialized) {

    File dataFile = sd.open("sensor_data.txt", FILE_WRITE);

    if (dataFile) {

      dataFile.print("Temp: ");

      dataFile.print(bme.temperature);

      dataFile.print(" C, Fugt: ");

      dataFile.print(bme.humidity);

      dataFile.print(" %, Tryk: ");

      dataFile.print(bme.pressure / 100.0);

      dataFile.print(" hPa, Gas: ");

      dataFile.print(bme.gas_resistance / 1000.0);

      dataFile.println(" kOhm");

      dataFile.close();

      Serial.println("Data gemt på SD-kort.");

    } else {

      handleError("Kunne ikke skrive til SD-kortet.");

      sdInitialized = false;

    }

  }

}


 

// Display sensor-data

void displaySensorData() {

  tft.fillScreen(COLOR_BLACK);

  tft.setTextColor(COLOR_WHITE);

  tft.setTextSize(2);

  tft.setCursor(10, 10);

  tft.println("BME680 Data:");


 

  tft.setCursor(10, 40);

  tft.print("Temp: ");

  tft.print(bme.temperature);

  tft.println(" C");


 

  tft.setCursor(10, 70);

  tft.print("Fugt: ");

  tft.print(bme.humidity);

  tft.println(" %");


 

  tft.setCursor(10, 100);

  tft.print("Tryk: ");

  tft.print(bme.pressure / 100.0);

  tft.println(" hPa");


 

  tft.setCursor(10, 130);

  tft.print("Gas: ");

  tft.print(bme.gas_resistance / 1000.0);

  tft.println(" kOhm");

}


 

void setup() {

  Serial.begin(9600);

  while (!Serial) { ; }


 

  tft.begin();

  tft.setRotation(1);

  tft.fillScreen(COLOR_BLACK);

  tft.setTextSize(2);

  tft.setTextColor(COLOR_WHITE);

  tft.setCursor(0, 0);

  tft.println("Starter system...");

  delay(2000);


 

  pinMode(LED_R, OUTPUT);

  pinMode(LED_G, OUTPUT);

  pinMode(LED_B, OUTPUT);

  RGB_color(0, 0, 255); // Blå for opstart


 

  // Start tidsmarkører

  displayMillis = millis();

  sensorMillis = millis();

  errorCheckMillis = millis();


 

  initWiFi();

  initSDCard();

  initBME680();


 

// Udfør første måling ved opstart

  if (bmeInitialized && bme.performReading()) {

    displaySensorData();

    saveSensorDataToSD();

  }


 

  if (sdInitialized && bmeInitialized) {

    RGB_color(255, 0, 0); // Grøn for succes

  }

}


 

void loop() {

  unsigned long currentMillis = millis();


 

  // Skift fra opstartsvisning til datavisning efter 4 sekunder

  if (showStartup && currentMillis - displayMillis >= displayInterval) {

    showStartup = false;  // Slå opstartsvisning fra

    tft.fillScreen(COLOR_BLACK); // Ryd skærmen

    displaySensorData();  // Vis sensordata første gang

  }


 

  // Udfør sensormåling og gemning hvert minut

  if (currentMillis - sensorMillis >= sensorInterval) {

    sensorMillis = currentMillis;


 

    if (bmeInitialized && bme.performReading()) {

      displaySensorData();

      saveSensorDataToSD();

    }

  }


 

  // Udfør fejltjek hvert 30. sekund

  if (currentMillis - errorCheckMillis >= errorCheckInterval) {

    errorCheckMillis = currentMillis;


 

    if (WiFi.status() != WL_CONNECTED) {

      reconnectWiFi();

    }

    checkSDCard();

    checkBME680();

  }

}

 

 

 

 

 

Arduino Giga Development Platform © 2024 by Oscar Skovbo Steinmuller is licensed under Creative Commons Attribution-NonCommercial 4.0 International 

Tags