Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

eDOT - Horloge de précision et station météo basée sur Arduino

Composants et fournitures

Microchip Technology ATMEGA 328P-PU
× 1
MAXIM MAX7219
× 6
BOSCH BME280 - Carte de dérivation GY-BMEP
× 1
Écran LED à matrice de points 8x8 Adafruit Luckylight - M1603095
× 6
DS3231
HORLOGE RTC
× 1
Arduino Nano R3
× 1
Arduino UNO
× 1
eDOTcore
× 1

Outils et machines nécessaires

Flashforge Dreamer

Applications et services en ligne

Arduino IDE

À propos de ce projet

eDOT

est une horloge de précision et une station météo basée sur Arduino avec un récepteur à distance IR intégré et un réglage automatique de la luminosité.

L'appareil a été conçu pour être facilement étendu avec du matériel supplémentaire comme un module WIFI ou autre.

Grâce à ses six écrans LED matriciels 8x8, il peut être utilisé pour afficher de nombreux types d'informations provenant soit du capteur interne, des messages de défilement personnalisés ou sans fil d'Internet (RSS, etc.)

Il a une très faible consommation d'énergie, un design simple et élégant qui combine une face avant en verre et des pièces imprimées en 3D pour le corps.

Le projet est actuellement en cours de développement et je serai mis à jour.

Télécharger des pièces 3D sur Thingiverse

Et voir aussi ma chaîne Youtube pour plus de projets :

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

B.O.M.

  • N.1 x demi-corps gauche imprimé en 3D
  • N.1 x demi-corps droit imprimé en 3D
  • N.1 x couverture gauche imprimée en 3D
  • N.1 x couverture droite imprimée en 3D
  • N.2 x pied imprimé en 3D
  • Prise en charge de l'affichage imprimé N.12 x 3D
  • N.1 x Verre bruni 240x75x5 (mm)
  • N.1 x filtre orange
  • N.6 x Adafruit 8x8 type d'affichage à matrice de points Luckylight M1603095 (Blanc)
  • Carte contrôleur N.6 x MAX7219
  • N.1 x carte de dérivation USB
  • Panneau de dérivation N.1 x BME280
  • Puce N.1 x DS3231
  • N.1 x récepteur IR type IRM-56384
  • N.1 x photorésistance type LDR-07
  • N.1 x ATMEGA328PU (carte personnalisée Arduino)
  • Bouton tactile N.6 x OMRON 12mm

PCB eDOTcore

Enfin, j'ai les tout premiers prototypes de la carte de contrôle pour eDOT.

ALLER À la page du projet eDOTcore

Code

  • eDOT :station météorologique de précision polyvalente et horloge
eDOT :station météorologique de précision polyvalente et horlogeArduino
// eDOT :Station météo et horloge de précision polyvalente//HISTOIRE// 11/12/2105 Ajout de coefficients d'étalonnage de mesure// 09/06/2016 Ajout de la luminosité de l'affichage automatique// 06/09/2016 Ajout du planificateur de tâches// 08/07/2016 Ajout de l'écran de démarrage eDOT#include #include #include #include #include #include #include #include "RTClib.h"#include Adafruit_BME280 bme ; // I2CRTC_DS3231 rtc;int pinCS =10; // Attachez CS à cette broche, DIN à MOSI et CLK à SCK (cf 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 tempf[8];float hum;float humavg;char humf[8]; float press;float pressavg;char pressf[8];int screen =0; // écran initiallong précédentLEDMillis =0; // pour l'affichage LED updatelong LEDInterval =5000; // délai entre les écrans int screenMax =5; // nombre maximum de screenbool screenChanged =true; // état de l'écranfloat lightsens;float screenBrt =0;float lightsensavg;Average avetemp(60); //Moyenne pour la température (80 échantillons)Moyenne avehum(60); //Moyenne pour l'humidité (80 échantillons)Average avepress(60); //Moyenne pour la pression (80 échantillons)Average avelightsens(40); //Moyenne pour la pression (80 échantillons)//Coefficients d'étalonnagefloat 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;//correction du capteur de luminositéfloat brt_o =-4;float brt_s =1.35;Schedular Task1;Schedular Task2;void setup() { Task1.start(); Task2.start(); Fil.begin(); // Démarrer I2C bme.begin (0x76); matrice.setIntensity(screenBrt); // Utilisez une valeur entre 0 et 15 pour la luminosité// Ajustez selon vos propres besoins// matrix.setPosition(0, 0, 0); // Le premier affichage est à <0, 0>// matrix.setPosition(1, 1, 0); // Le deuxième affichage est à <1, 0> matrix.setRotation(0, 1); // Ajuster l'orientation de l'affichage matrix.setRotation(1, 1); // Ajuster l'orientation de l'affichage matrix.setRotation(2, 1); // Ajuster l'orientation de l'affichage matrix.setRotation(3, 1); // Ajuster l'orientation de l'affichage matrix.setRotation(4, 1); // Ajuster l'orientation de l'affichage matrix.setRotation(5, 1); // Ajuster l'orientation de l'affichage matrix.setRotation(6, 1); // Ajuster l'orientation de l'affichage matrix.setRotation(7, 1); // Ajuster l'orientation de l'affichage/* matrix.setRotation(8, 1); // Ajuster l'orientation de l'affichage matrix.setRotation(9, 1); // Ajuster l'orientation de l'affichage*/ rtc.begin();// matrix.setRotation(3, 2); // Même prise pour le dernier affichage// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));// rtc.adjust(DateTime(2016, 02, 28, 16, 44, 0)); //Serial.begin(9600);//eDOT SPLASHSCREEN matrice.fillScreen(0); matrice.écrire(); matrice.setCursor(12,0) ; matrice.print("eDOT"); for(screenBrt =0; screenBrt <=15; screenBrt++){delay (25); matrice.setIntensity(screenBrt); // Utilise une valeur entre 0 et 15 pour la luminosité matrix.write(); }retard(250); for(screenBrt =15; screenBrt>=0; screenBrt--){delay(50); matrice.setIntensity(screenBrt); // Utilise une valeur entre 0 et 15 pour la luminosité matrix.write(); }retard(500); matrice.fillScreen(0); matrix.write();delay(1000);}void loop() { Task1.check(acq1,500); Task2.check(acq2,20);} void acq1(){// ACQUISITION DE DONNÉES ET MOYENNE temp =bme.readTemperature(); avetemp.push(temp); tempavg =avetemp.mean(); hum =bme.readHumidity(); avehum.push(hum); humavg =avehum.mean(); appuyez sur =bme.readPressure(); avepress.push(press); pressmoy =avepress.mean(); DateHeure maintenant =rtc.now(); outSec =now.second(); outMin =now.minute(); outHour =now.hour(); outday =now.day(); outmonth =now.month(); outyear =now.year() - 2000 ; dow =now.dayOfTheWeek(); } void acq2(){ lightsens =analogRead(A3) ; avelightsens.push(lightsens); lightsensavg =avelightsens.mean(); screenBrt =contrainte(((lightsensavg /1023 * 15 ) * brt_s + brt_o), 0 , 15); matrice.setIntensity(screenBrt); // LINÉARISATION DES DONNÉES temp_lin =tempavg * temp_s + temp_o; hum_lin =humavg * hum_s + hum_o; press_lin =pressavg * press_s + press_o; courant long non signéLEDMillis =millis(); //Série.println(screenBrt); if(currentLEDMillis - previousLEDMillis> LEDInterval) // enregistre la dernière fois que vous avez modifié l'affichage { previousLEDMillis =currentLEDMillis; écran++; si (écran> écranMax) écran =0 ; // réinitialiser à l'écran initial une fois le cycle terminé screenChanged =true; }// if (screenChanged) // mise à jour de la mesure lors du changement d'écran// {// screenChanged =false; // réinitialiser pour la prochaine itérationswitch(screen){case TEMPERATURE:dtostrf(temp_lin,4, 2, tempf); // format à cinq chiffres avec deux décimales matrix.setCursor(6,0); matrice.setTextSize(1); matrice.setTextColor(255); matrice.print(tempf); // affiche la matrice de température actuelle.drawRect(37,0,2,2,255); // dessine le symbole de la matrice.setCursor(40,0); matrice.print("C"); matrice.écrire(); // écrit les données actuelles pour afficher matrix.fillScreen(0); // clear displaybreak;case HUMIDITY:dtostrf(hum_lin,4, 2, humf); // format à cinq chiffres avec deux décimales matrix.setCursor(6,0); matrice.setTextSize(1); matrice.setTextColor(255); matrice.print(humf); // affiche la température actuelle matrix.setCursor(37,0) ; matrice.print("%"); matrice.écrire(); // écrit les données actuelles pour afficher matrix.fillScreen(0); // clear displaybreak; case PRESSURE:dtostrf(press_lin,6, 0, pressf); // format à cinq chiffres avec deux décimales matrix.setCursor(0,0); matrice.setTextSize(1); matrice.setTextColor(255); matrice.print(pressf); // affiche la température actuelle matrix.setCursor(37,0) ; matrice.print("Pa"); matrice.écrire(); // écrit les données actuelles pour afficher matrix.fillScreen(0); // effacer displaybreak; case TIME:// dtostrf(press_lin,6, 0, pressf); // format à cinq chiffres avec deux décimales matrix.setCursor(0,0); matrice.setTextSize(1); matrice.setTextColor(255); if (outHour <10){ matrix.print("0"); } matrice.print(outHour,0) ; // affiche les heures courantes matrix.print(":"); if (outMin <10){ matrix.print("0"); } matrice.print(outMin,0) ; // affiche la matrice des minutes en cours.print(":"); if (outSec <10){ matrix.print("0"); } matrice.print(outSec,0) ; // affiche les secondes actuelles matrix.write(); // écrit les données actuelles pour afficher matrix.fillScreen(0); // effacer displaybreak; case DATE:// dtostrf(press_lin,6, 0, pressf); // format à cinq chiffres avec deux décimales matrix.setCursor(0,0); matrice.setTextSize(1); matrice.setTextColor(255); if (outday <10){ matrix.print("0"); } matrix.print(outday,0) ; // affiche les heures courantes matrix.print("/"); if (outmonth <10){ matrix.print("0"); } matrix.print(outmonth,0) ; // affiche les minutes en cours matrix.print("/"); matrice.print(outyear,0) ; // affiche les secondes actuelles matrix.write(); // écrit les données actuelles pour afficher matrix.fillScreen(0); // effacer displaybreak; case DAY:// dtostrf(press_lin,6, 0, pressf); // format à cinq chiffres avec deux décimales matrix.setCursor(15,0); matrice.setTextSize(1); matrice.setTextColor(255); matrix.print(daysOfTheWeek[dow]); matrice.écrire(); // écrit les données actuelles pour afficher matrix.fillScreen(0); // effacer le saut d'affichage ; } }

Processus de fabrication

  1. Station météo basée sur Raspberry Pi
  2. Station météo Raspberry Pi 2
  3. Weather Station V 2.0
  4. horloge de vision Arduino pov
  5. horloge maîtresse
  6. Arduino Temp. Moniteur et horloge en temps réel avec affichage 3.2
  7. Station météo portable Arduino (AWS) à 10 $
  8. Automates cellulaires basés sur Arduino et OLED
  9. Station météo ThingSpeak Arduino