1 / 4
Arduino Giga Development Platform — zdjęcie 1
1 / 4

Arduino Giga Development Platform

Zamów wydruk tego modelu

Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.

Zapisane na tym urządzeniu.

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

Ocena
0 / 5
Polubienia
5
Pobrania
31
Wydruki
0
Wyświetlenia
218
Oceny
0

Aktualizacja u źródła:

Informacje o modelu

Źródło
Printables
Kategoria
Other Gadgets
Licencja
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 

Tagi