Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

eDOT - Arduino-basierte Präzisionsuhr und Wetterstation

Komponenten und Verbrauchsmaterialien

Mikrochip-Technologie ATMEGA 328P-PU
× 1
MAXIM MAX7219
× 6
BOSCH BME280 - GY-BMEP Breakout-Board
× 1
Adafruit Luckylight 8x8 Punktmatrix-LED-Display - M1603095
× 6
DS3231
RTC-UHR
× 1
Arduino Nano R3
× 1
Arduino UNO
× 1
eDOTcore
× 1

Notwendige Werkzeuge und Maschinen

Flashforge-Träumer

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

eDOT

ist eine Arduino-basierte Präzisionsuhr und Wetterstation mit eingebautem IR-Fernbedienungsempfänger und automatischer Helligkeitsanpassung.

Das Gerät wurde so konzipiert, dass es leicht mit zusätzlicher Hardware wie WIFI-Modul oder anderem erweitert werden kann.

Dank seiner sechs 8x8-Punktmatrix-LED-Anzeigen können viele Arten von Informationen angezeigt werden, die entweder vom internen Sensor, benutzerdefinierten Scrolling-Nachrichten oder drahtlos aus dem Internet (RSS usw.) stammen

Es hat einen sehr geringen Stromverbrauch, ein einfaches und elegantes Design, das eine Glasfront und 3D-gedruckte Teile für die Karosserie kombiniert.

Das Projekt befindet sich derzeit in der Entwicklung und ich werde aktualisiert.

Laden Sie 3D-Teile auf Thingiverse herunter

Und siehe auch meinen Youtube-Kanal für weitere Projekte:

https://www.youtube.com/channel/UCbIomyFKzBiLHqEb2xv9GHQ

Stückliste

  • N.1 x 3D gedruckte linke Körperhälfte
  • N.1 x 3D gedruckte rechte Körperhälfte
  • N.1 x 3D gedruckte linke Abdeckung
  • N.1 x 3D gedruckte rechte Abdeckung
  • N.2 x 3D-gedruckter Fuß
  • N.12 x 3D-gedruckte Displayunterstützung
  • N.1 x Brüniertes Glas 240x75x5 (mm)
  • N.1 x Oranger Filter
  • N.6 x Adafruit 8x8 Punktmatrix-Display Typ Luckylight M1603095 (Weiß)
  • N.6 x MAX7219-Controller-Platine
  • N.1 x USB-Breakout-Board
  • N.1 x BME280 Breakout-Board
  • N.1 x DS3231-Chip
  • N.1 x IR-Empfänger Typ IRM-56384
  • N.1 x Fotowiderstand Typ LDR-07
  • N.1 x ATMEGA328PU (benutzerdefiniertes Arduino-Board)
  • N.6 x OMRON 12 mm taktile Taste

eDOTcore-Platine

Endlich habe ich die allerersten Prototypen der Steuerplatine für eDOT.

GEHE ZUR eDOTcore-Projektseite

Code

  • eDOT:Vielseitige Präzisions-Wetterstation und Uhr
eDOT:Vielseitige Präzisionswetterstation und UhrArduino
// eDOT:Vielseitige Präzisionswetterstation und Uhr//HISTORY// 12.11.2105 Messkalibrierungskoeffizienten hinzugefügt// 06.09.2016 Automatische Displayhelligkeit hinzugefügt// 06.09.2016 Aufgabenplaner hinzugefügt// 08.07.2016 eDOT-Splashscreen hinzugefügt#include #include #include #include #include #include  #include #include "RTClib.h"#include Adafruit_BME280 bme; // I2CRTC_DS3231 rtc;int pinCS =10; // CS an diesen Pin anhängen, DIN an MOSI und CLK an SCK (vgl. http://arduino.cc/en/Reference/SPI )int numberOfHorizontalDisplays =7;int numberOfVerticalDisplays =1;Max72xxPanel matrix =Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);#define TEMPERATURE 0#define HUMIDITY 1#define PRESSURE 2#define TIME 3#define DAY 4#define DATE 5float temp;float tempavg;char temp[8];float hum;float humavg;char humf[8]; float press;float pressavg;char pressf[8];int screen =0; // anfänglicher Screenlong previousLEDMillis =0; // für LED-Anzeige updatelong LEDInterval =5000; // Verzögerung zwischen Bildschirmen int screenMax =5; // maximale Anzahl von screenbool screenChanged =true; // Bildschirmstatusfloat lightens;float screenBrt =0;float lightensavg;Average avetemp(60); //Durchschnitt für die Temperatur (80 Samples)Average avehum (60); // Durchschnitt für Luftfeuchtigkeit (80 Proben) Durchschnitt  avepress (60); //Durchschnitt für Druck (80 Samples)Average avelightsens (40); //Durchschnitt für Druck (80 Proben) // Kalibrierkoeffizientenfloat temp_o =-1.70;float temp_s =1.0;float temp_lin;float hum_o =2.45;float hum_s =1.0;float hum_lin;float press_o =0.0;float press_s =1.0;float press_lin;//Helligkeitssensor-Korrekturfloat brt_o =-4;float brt_s =1.35;Geplanter Task1;Geplanter Task2;void setup() { Task1.start(); Task2.start(); Wire.begin(); // I2C starten bme.begin (0x76); matrix.setIntensity(screenBrt); // Verwenden Sie einen Wert zwischen 0 und 15 für die Helligkeit // Anpassen an Ihre eigenen Bedürfnisse // matrix.setPosition(0, 0, 0); // Die erste Anzeige ist bei <0, 0>// matrix.setPosition(1, 1, 0); // Die zweite Anzeige ist bei <1, 0> matrix.setRotation(0, 1); // Anzeigeausrichtung anpassen matrix.setRotation(1, 1); // Anzeigeausrichtung anpassen matrix.setRotation(2, 1); // Anzeigeausrichtung anpassen matrix.setRotation(3, 1); // Anzeigeausrichtung anpassen matrix.setRotation(4, 1); // Anzeigeausrichtung anpassen matrix.setRotation(5, 1); // Anzeigeausrichtung anpassen matrix.setRotation(6, 1); // Anzeigeausrichtung anpassen matrix.setRotation(7, 1); // Anzeigeausrichtung anpassen/* matrix.setRotation(8, 1); // Anzeigeausrichtung anpassen matrix.setRotation(9, 1); // Anzeigeausrichtung anpassen*/ rtc.begin();// matrix.setRotation(3, 2); // Das gleiche gilt für die letzte Anzeige // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));// rtc.adjust(DateTime(2016, 02, 28, 16, 44, 0)); //Serial.begin(9600); //eDOT SPLASHSCREEN matrix.fillScreen(0); matrix.write(); matrix.setCursor(12,0); matrix.print("eDOT"); for(screenBrt =0; screenBrt <=15; screenBrt++){delay(25); matrix.setIntensity(screenBrt); // Verwenden Sie einen Wert zwischen 0 und 15 für die Helligkeit matrix.write(); } Verzögerung (250); for(screenBrt =15; screenBrt>=0; screenBrt--){delay (50); matrix.setIntensity(screenBrt); // Verwenden Sie einen Wert zwischen 0 und 15 für die Helligkeit matrix.write(); } Verzögerung (500); matrix.fillScreen(0); matrix.write();delay(1000);}void loop() { Task1.check(acq1,500); Task2.check(acq2,20);} void acq1(){// DATENERFASSUNG UND MITTELWERTUNG temp =bme.readTemperature(); avetemp.push(temp); tempavg =avetemp.mean(); hum =bme.readHumidity(); avehum.push(brummen); humavg =avehum.mean(); press =bme.readPressure(); avepress.push(drücken); pressavg =avepress.mean(); DateTime now =rtc.now(); outSec =now.second(); outMin =jetzt.Minute(); outHour =now.hour(); outday =now.day(); outmonth =now.month(); outyear =now.year() - 2000; dow =now.dayOfTheWeek(); aufrechtzuerhalten. Void acq2 () {lightsens =analogRead (A3); avelightsens.push (Lichtsensor); lightensavg =avelightsens.mean(); screenBrt =Constraint(((lightsensavg /1023 * 15 ) * brt_s + brt_o), 0 , 15); matrix.setIntensity(screenBrt); // DATENLINEARISIERUNG temp_lin =tempavg * temp_s + temp_o; hum_lin =humavg * hum_s + hum_o; press_lin =pressavg * press_s + press_o; unsigned long currentLEDMillis =millis(); //Seriell.println (screenBrt); if(currentLEDMillis - previousLEDMillis> LEDInterval) // Speichern Sie das letzte Mal, als Sie die Anzeige geändert haben { previousLEDMillis =currentLEDMillis; Bildschirm++; if (Bildschirm> BildschirmMax) Bildschirm =0; // Zurücksetzen auf den Anfangsbildschirm, sobald der Zyklus abgeschlossen ist screenChanged =true; } // if (screenChanged) // Messung bei Bildschirmwechsel aktualisieren // {// screenChanged =false; // Zurücksetzen für die nächste Iterationswitch(screen){case TEMPERATURE:dtostrf(temp_lin,4, 2, tempf); // auf fünf Stellen mit zwei Dezimalstellen formatieren matrix.setCursor(6,0); matrix.setTextSize(1); matrix.setTextColor(255); matrix.print (tempf); // aktuelle Temperatur ausgeben matrix.drawRect(37,0,2,2,255); // Notensymbol zeichnen matrix.setCursor(40,0); matrix.print("C"); matrix.write(); // Schreibe die aktuellen Daten in die Anzeige matrix.fillScreen (0); // Displaybreak löschen;case HUMIDITY:dtostrf(hum_lin,4, 2, humf); // auf fünf Stellen mit zwei Dezimalstellen formatieren matrix.setCursor(6,0); matrix.setTextSize(1); matrix.setTextColor(255); matrix.print (humf); // aktuelle Temperatur ausgeben matrix.setCursor (37,0); matrix.print("%"); matrix.write(); // Schreibe die aktuellen Daten in die Anzeige matrix.fillScreen (0); // Displaybreak löschen;case DRUCK:dtostrf(press_lin,6, 0, pressf); // auf fünf Stellen mit zwei Dezimalstellen formatieren matrix.setCursor(0,0); matrix.setTextSize(1); matrix.setTextColor(255); matrix.print(pressf); // aktuelle Temperatur ausgeben matrix.setCursor (37,0); matrix.print("Pa"); matrix.write(); // Schreibe die aktuellen Daten in die Anzeige matrix.fillScreen (0); // Displaybreak löschen;case TIME:// dtostrf(press_lin,6, 0, pressf); // auf fünf Stellen mit zwei Dezimalstellen formatieren matrix.setCursor(0,0); matrix.setTextSize(1); matrix.setTextColor(255); if (outHour <10) {matrix.print("0"); } matrix.print(outHour,0); // aktuelle Stunden ausgeben matrix.print(":"); if (outMin <10) {matrix.print("0"); } Matrix.print(outMin,0); // aktuelle Minuten ausgeben matrix.print(":"); if (outSec <10) {matrix.print("0"); } Matrix.print (outSec, 0); // aktuelle Sekunden ausgeben matrix.write(); // Schreibe die aktuellen Daten in die Anzeige matrix.fillScreen (0); // clear displaybreak;case DATE:// dtostrf(press_lin,6, 0, pressf); // auf fünf Stellen mit zwei Dezimalstellen formatieren matrix.setCursor(0,0); matrix.setTextSize(1); matrix.setTextColor(255); if (outday <10) {matrix.print("0"); } matrix.print(outday,0); // aktuelle Stunden ausgeben matrix.print("/"); if (outmonth <10) {matrix.print("0"); } matrix.print (outmonth, 0); // aktuelle Minuten ausgeben matrix.print("/"); matrix.print (outyear,0); // aktuelle Sekunden ausgeben matrix.write(); // Schreibe die aktuellen Daten in die Anzeige matrix.fillScreen (0); // Displaybreak löschen;case DAY:// dtostrf(press_lin,6, 0, pressf); // auf fünf Stellen mit zwei Dezimalstellen formatieren matrix.setCursor(15,0); matrix.setTextSize(1); matrix.setTextColor(255); matrix.print (daysOfTheWeek[dow]); matrix.write(); // Schreibe die aktuellen Daten in die Anzeige matrix.fillScreen (0); // Displaybreak löschen; } }

Herstellungsprozess

  1. Wetterstation basierend auf Raspberry Pi
  2. Raspberry Pi 2 Wetterstation
  3. Wetterstation V 2.0
  4. Arduino-Pov-Vision-Uhr
  5. Hauptuhr
  6. Arduino-Temp. Monitor und Echtzeituhr mit 3.2 Display
  7. $10 Portable Arduino Wetterstation (AWS)
  8. Arduino- und OLED-basierte zelluläre Automaten
  9. ThingSpeak Arduino Wetterstation
  10. Anwesenheitssystem basierend auf Arduino und Google Spreadsheet