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

Horloge LED matricielle NTP avec DS3231, BME280, BH1750 et ESP01

Composants et fournitures

Arduino Nano R3
× 1
Module périphérique intégré maximum DS3231MPMB1
Le moins cher sur Ebay, avec la résistance retirée pour empêcher la batterie d'exploser
× 1
Déploiement du capteur atmosphérique SparkFun - BME280
Le moins cher d'Ebay
× 1
Capteur de lumière BH1750
De Ebay
× 1
Max7219 32x8 LED Matrix
× 1
Condensateur 10 µF
× 2
Espressif ESP8266 ESP-01
Facultatif si vous souhaitez régler l'heure via NTP
× 1
LM3940IT3.3
Régulateur LDO 3.3v pour ESP01
× 1
SparkFun Level Shifter Board
Requis par ESP01
× 1

À propos de ce projet

C'est ce qui m'a amené à Arduino. Je suis tombé sur l'horloge à mots LED de Nick et j'ai pensé que je voulais le faire.

Depuis le téléchargement de son code, je l'ai modifié pour inclure des capteurs et des boutons supplémentaires ainsi que l'ajout d'un ESP01.

Le BH1750 est utilisé pour assombrir automatiquement l'écran, en fonction des conditions d'éclairage, et il peut éteindre l'écran la nuit. Le BME280 affiche la température, l'humidité et la pression. L'ESP01 est utilisé pour obtenir l'heure à partir de pool.ntp.org.

Les boutons supplémentaires sont là pour faciliter le réglage des paramètres. Vous pouvez régler les paramètres du capteur de lumière à l'aide des boutons, ainsi que modifier les polices et les paramètres NTP/DST/UTC.

Six nouvelles polices ont été ajoutées, j'ai fait les polices en utilisant :http://dotmatrixtool.com/.

J'ai apporté pas mal de changements à l'horloge de mots, elle a plus de mots maintenant et j'ai pas mal bougé vers PROGMEM pour économiser de la RAM.

Page du projet de Nick :https://123led.wordpress.com/mini-led-clock/

Mon code :https://github.com/Ratti3/miniclock

Le code est maintenant terminé, mis à part des bugs inconnus et un petit ajustement ici et là, je vais le défendre.

Vous devrez ajuster le code du capteur de lumière pour qu'il corresponde à vos conditions d'éclairage, je l'ai codé en plein soleil assis à côté d'une fenêtre.

Un ESP01 est utilisé pour obtenir l'heure via NTP, l'ESP01 est codé pour dormir (wifi désactivé) lorsqu'il n'est pas nécessaire, et est réveillé via série pour obtenir l'heure au format UNIX. Le nom SSID et le mot de passe sont transmis via le code Arduino pour plus de commodité.

Cette version a également des calculs DST/UTC et BST. Ces paramètres peuvent être ajustés ou désactivés via le menu.

Les paramètres sont enregistrés dans l'EEPROM, cela signifie que si vous éteignez puis rallumez vos modifications apportées via le menu sont enregistrées.

Voici les fichiers de code sur Github :

Code sur Github [https://github.com/Ratti3/miniclock] :Arduino LEDClock32x8.ino ProgmemData.hArduino ESP-01_NTP.ino LEDClock32x8_ESP01-NTP.ino ProgmemData.h 

Lorsque l'ESP01 est en cours d'exécution, l'Arduino Serial affichera ceci :

Arduino :demande NTP envoyée à ESP01ESP01 :demande NTP reçue d'Arduino [tentative 1 sur 3]Connexion au SSID :TheInternets....connectedSSID :TheInternets, adresse IP :192.168.0.135Force du signal (RSSI) :-42 dBmEnvoi du paquet NTP à :195.195.221.100 [tentative 1]Envoi du paquet NTP à :195.195.221.100 [tentative 2]UNIX1562848457Désactivation du WiFi....ok 

Plus de photos et instructions à venir...

En résumé :

Câblage :

DS3231, BH1750 et BME280 :SCL PINS =A5 SDA PINS =A4 VCC =3.3vLED Matrix :CLK =D11 CS =D10 DIN =D12 VCC =5vSwitches :D2 - Menu D3 - Date / + D4 - Temp / - D5 - Options d'affichageESP01 - En option D7 - Broche TX de l'ESP01 D6 - Broche RX de l'ESP01 

Voici les variables globales que vous pouvez modifier :

// Variables globales (valeurs par défaut modifiables), les nombres entre crochets [] sont l'emplacement de stockage EEPROM pour cette valeur// Paramètres d'horloge// [200] Intensité/luminosité par défaut (0-15), peut être réglé via menubyte intensité =2 ; // [201] Mode d'horloge par défaut. Par défaut =0 (basic_mode) byte clock_mode =0 ; // [206] Définir le mode aléatoire - change le type d'affichage toutes les quelques heures. Par défaut =0 (désactivé) bool random_mode =0 ; // [207] Définir le mode aléatoire de la police - change la police toutes les quelques heures. 1 =police aléatoire onbool random_font_mode =0; // [208] Définit 12 ou 24 heures. 0 =24 heures. 1 =12 hourbool ampm =0 ; // Paramètres d'éclairage// [202] Mode d'affichage par défaut activé/désactivé, utilisé par le capteur de lumière. 0 =normal, 1 =toujours activé, 2 - toujours désactivé, 3 - 5 =défini par hour_off_1,2,3byte display_mode =5 ; // [209] Paramètre d'intensité lumineuse automatique par défautbool auto_intensity =1; // Ces trois définissent l'heure du capteur de lumière peut éteindre l'affichage s'il est suffisamment sombre, le format est de 24 heures, la routine pour // ceci vérifie entre 8.00 et l'une de ces valeursbyte hour_off_1 =21; octet hour_off_2 =22 ; byte hour_off_3 =23;// Paramètres de police - ceux-ci sont définis via le menu de configuration Police, voir la routine set_font_case() pour toutes les valeurs par défaut:// [203] Horloge par défaut grande police stylebyte font_style =2; // [204] Réglage par défaut du décalage de grande police d'horloge font_offset =1; // [205] Horloge par défaut grandes colonnes de polices Adjustmentbyte font_cols =6; // Paramètres DST NTP et UTC// [210] Activer la fonction DST, 1 =activer, 0 =disablebool dst_mode =1 ; // [211] Activer la fonction NTP, 1 =activer, 0 =disablebool ntp_mode =1; // Nombre de secondes pour ajuster la valeur NTP avant d'appliquer à DS3231, prend quelques centaines de millisecondes pour traiter l'octet de données ESP01 ntp_adjust =1; // [213] Ajustement du décalage UTC, hoursint8_t utc_offset =0; // L'heure de synchronisation quotidienne NTP/DST doit être laissée à 2 heures du matin si vous utilisez le mode DST ntp_dst_hour =2; // Nombre de fois où réessayer la requête NTP 1 =35 secondes (ish) au total, valeurs 1 - 9byte ntp_max_retry =3; // Utilisé pour calculer quand quitter ntp() lorsqu'il ne reçoit pas de données, valeur en secondes, il est multiplié par ntp_max_retrybyte ntp_timeout =45; // Constantes globales - SSID et mot de passe pour le WiFi, transmis à ESP01 via SoftwareSerial// La longueur combinée du SSID et du mot de passe ne peut pas dépasser 72 caractères// La longueur de votre nom SSID, par exemple SSID =MyWifi, ssid_len =6const byte ssid_len =8 ; // Votre nom SSID, par exemple MyWificonst char ssid[] ="YourSSID" ; // La longueur de votre mot de passe SSID, par exemple password =password, pass_len =8const byte pass_len =12; // Votre mot de passe SSID, par exemple passwordconst char pass[] ="YourPassword" ;  

Code

Github de Ratti3
https://github.com/Ratti3/miniclock

Schémas

Il n'y avait pas de BH1750, il se connecte de la même manière que le BME280

Processus de fabrication

  1. Horloge Arduino avec heures de prière islamique
  2. Arduino avec Bluetooth pour contrôler une LED !
  3. Horloge POV LED de style analogique
  4. Lampe matricielle LED à colle chaude
  5. Contrôlez votre LED avec Cortana
  6. Horloge à bascule Arduino à matrice LED unique
  7. Contrôler une matrice LED avec Arduino Uno
  8. Une horloge bon marché et précise basée sur le GPS
  9. Réveil simple avec DS1302 RTC