Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

LED Matrix NTP-klok met DS3231, BME280, BH1750 &ESP01

Componenten en benodigdheden

Arduino Nano R3
× 1
Maxim Integrated DS3231MPMB1 Peripheral Module
De goedkope op Ebay, met de weerstand verwijderd om te voorkomen dat de batterij ontploft
× 1
SparkFun Atmosferische Sensor Breakout - BME280
De goedkope van Ebay
× 1
BH1750-lichtsensor
Van Ebay
× 1
Max7219 32x8 LED-matrix
× 1
Condensator 10 µF
× 2
Espressief ESP8266 ESP-01
Optioneel als u de tijd wilt instellen via NTP
× 1
LM3940IT3.3
3.3v LDO-regelaar voor ESP01
× 1
SparkFun Level Shifter Board
Vereist door ESP01
× 1

Over dit project

Dit is wat me in Arduino's heeft gebracht. Ik kwam Nick's LED Word Clock tegen en dacht dat ik die wilde maken.

Sinds ik zijn code heb gedownload, heb ik deze aangepast met extra sensoren en knoppen en een ESP01 toegevoegd.

De BH1750 wordt gebruikt om het scherm automatisch te dimmen, afhankelijk van de lichtomstandigheden, en kan het scherm 's nachts uitschakelen. De BME280 geeft de temperatuur, luchtvochtigheid en druk weer. De ESP01 wordt gebruikt om de tijd van pool.ntp.org te krijgen.

De extra knoppen zijn er om instellingen gemakkelijk aan te passen. U kunt de instellingen van de lichtsensor aanpassen met de knoppen, evenals lettertypen en NTP/DST/UTC-instellingen wijzigen.

Er zijn zes nieuwe fonts toegevoegd, ik heb de fonts gemaakt met:http://dotmatrixtool.com/.

Ik heb nogal wat wijzigingen aangebracht in de wordclock, deze heeft nu meer woorden en ik ben nogal wat naar PROGMEM verplaatst om RAM te besparen.

Nick's projectpagina:https://123led.wordpress.com/mini-led-clock/

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

De code is nu compleet, afgezien van onbekende bugs en hier en daar een tweak, zal ik er een pleidooi voor houden.

U moet de code van de lichtsensor aanpassen aan uw lichtomstandigheden. Ik heb dit gecodeerd tijdens fel zonlicht terwijl ik naast een raam zat.

Een ESP01 wordt gebruikt om tijd te krijgen via NTP, de ESP01 is gecodeerd om te slapen (wifi uit) wanneer niet nodig, en wordt via serieel gewekt om de tijd in UNIX-formaat te krijgen. De SSID-naam en het wachtwoord worden voor het gemak doorgegeven via de Arduino-code.

Deze versie heeft ook DST/UTC- en BST-berekeningen. Deze instellingen kunnen via het menu worden aangepast of uitgeschakeld.

Instellingen worden opgeslagen in EEPROM, dit betekent dat als u het apparaat uit- en weer inschakelt, uw wijzigingen die via het menu zijn gemaakt, worden opgeslagen.

Dit zijn de codebestanden op Github:

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

Wanneer de ESP01 draait, zal de Arduino Serial dit laten zien:

Arduino:NTP-verzoek verzonden naar ESP01ESP01:NTP-verzoek ontvangen van Arduino [poging 1 van 3]Verbinding maken met SSID:TheInternets....connectedSSID:TheInternets, IP-adres:192.168.0.135Signaalsterkte (RSSI):-42 dBmNTP-pakket verzenden naar:195.195.221.100 [poging 1]NTP-pakket verzenden naar:195.195.221.100 [poging 2]UNIX1562848457WiFi uitschakelen....ok 

Meer foto's en instructies volgen...

Alles bij elkaar:

Bedrading:

DS3231, BH1750 en BME280:SCL PINS =A5 SDA PINS =A4 VCC =3.3vLED Matrix:CLK =D11 CS =D10 DIN =D12 VCC =5vSchakelaars:D2 - Menu D3 - Datum / + D4 - Temp / - D5 - WeergaveoptiesESP01 - Optioneel D7 - TX-pin van ESP01 D6 - RX-pin van ESP01 

Dit zijn de globale variabelen die u kunt wijzigen:

// Globale variabelen (wijzigbare standaardwaarden), getallen tussen [] haakjes zijn de EEPROM-opslaglocatie voor die waarde// Klokinstellingen// [200] Standaardintensiteit/helderheid (0-15), kan worden ingesteld via menubyte intensiteit =2;// [201] Standaard klokmodus. Standaard =0 (basic_mode)byte clock_mode =0; // [206] Definieer willekeurige modus - verandert het weergavetype om de paar uur. Standaard =0 (uit)bool random_mode =0; // [207] Definieer de willekeurige modus van het lettertype - verander het lettertype om de paar uur. 1 =willekeurig lettertype onbool random_font_mode =0; // [208] Definieer 12 of 24 uur tijd. 0 =24 uur. 1 =12 uurbool ampère =0; // Lichtinstellingen// [202] Standaard display aan/uit-modus, gebruikt door lichtsensor. 0 =normaal, 1 =altijd aan, 2 - altijd uit, 3 - 5 =gedefinieerd door hour_off_1,2,3byte display_mode =5; // [209] Standaard instelling voor automatische lichtintensiteit bool auto_intensity =1; // Deze drie bepalen de uurlichtsensor kan het display uitschakelen als het donker genoeg is, het formaat is 24 uur, de routine voor// dit controleert tussen 8.00 en een van deze waardenbyte hour_off_1 =21; byte hour_off_2 =22; byte hour_off_3 =23;// Font instellingen - deze worden ingesteld via het setup Font menu, zie set_font_case() routine voor alle standaard waarden:// [203] Standaard klok large font stylebyte font_style =2; // [204] Standaard klok groot lettertype offset aanpassing byte font_offset =1; // [205] Standaard klok grote lettertypekolommen aanpassingbyte font_cols =6; // DST NTP- en UTC-instellingen// [210] DST-functie inschakelen, 1 =inschakelen, 0 =uitschakelen dst_mode =1; // [211] NTP-functie inschakelen, 1 =inschakelen, 0 =uitschakelen ntp_mode =1; // Aantal seconden om de NTP-waarde aan te passen voordat het wordt toegepast op DS3231, duurt een paar honderd milliseconden om de ESP01-databyte ntp_adjust =1 te verwerken; // [213] UTC-offset-aanpassing, hoursint8_t utc_offset =0; // Het uur dat de dagelijkse NTP/DST-synchronisatie plaatsvindt, moet om 2 uur 's nachts worden verlaten als DST-modusbyte ntp_dst_hour =2 wordt gebruikt; // Aantal keren dat NTP-verzoek opnieuw moet worden geprobeerd 1 =35 seconden (ish) in totaal, waarden 1 - 9 byte ntp_max_retry =3; // Wordt gebruikt om te berekenen wanneer ntp() moet worden afgesloten wanneer het geen gegevens ontvangt, waarde in seconden, het wordt vermenigvuldigd met ntp_max_retrybyte ntp_timeout =45; // Globale constanten - SSID en wachtwoord voor wifi, doorgegeven aan ESP01 via SoftwareSerial// De gecombineerde SSID en wachtwoordlengte mag niet langer zijn dan 72 tekens// De lengte van uw SSID-naam, bijv. SSID =MyWifi, ssid_len =6const byte ssid_len =8; // Uw SSID-naam, bijv. MyWificonst char ssid[] ="YourSSID"; // De lengte van uw SSID-wachtwoord, bijvoorbeeld wachtwoord =wachtwoord, pass_len =8const byte pass_len =12; // Uw SSID-wachtwoord, bijv. passwordconst char pass[] ="YourPassword";  

Code

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

Schema's

Er was geen BH1750, deze sluit op dezelfde manier aan als BME280

Productieproces

  1. Arduino klok met islamitische gebedstijden
  2. Arduino met Bluetooth om een ​​LED te bedienen!
  3. Analoge stijl LED POV-klok
  4. Hot Glue LED Matrix Lamp
  5. Bedien uw led met Cortana
  6. Enkele LED Matrix Arduino Flip Clock
  7. Een LED-matrix besturen met Arduino Uno
  8. Een goedkope en nauwkeurige klok op basis van GPS
  9. Arduino Bluetooth-gestuurde matrix met scrollende tekst
  10. MAX72XX LED-matrixweergave asteroïden-game
  11. Eenvoudige wekker met DS1302 RTC