Arduino Internet tid klienten (2 / 10 steg)

Steg 2: kod



Endast en ytterligare bibliotek måste installeras i mappen Arduino bibliotek. Det är tid biblioteket finns på http://www.pjrc.com/teensy/td_libs_Time.html

Du behöver mac-adressen från botten av din Ethernet Shield, men IP, Gateway och nätmask är alla erhållna throgh DHCP. Du behöver också tid serveradressen (se nästa steg)

Den kod som behöver laddas upp till din Arduino är följande:

exempelkod påbörjade på http://www.openreefs.com/ntpServer
ändrat av Steve Spence, http://arduinotronics.blogspot.com

#include < SPI.h >
#include < Ethernet.h >
#include < EthernetUdp.h >
#include < Time.h >

/ * *** Kort Ethernetinställningar *** * /
Ange detta till din Mac-adress Ethernet-kort
byte [mac] = {0x90, 0xA2, 0xDA, 0x00, 0x23, 0x36};

/ * *** NTP serverinställningar *** * /
/ * us.pool.ntp.org NTP-server
(Inställt på din tidsserver val) * /
IP-adress timeServer (216, 23, 247, 62);

/ * Anger detta till offset (i sekunder) till din lokala tid
Detta exempel är GMT - 4 * /
CONST long timeZoneOffset =-14400 L.

/ * Synkroniseras till NTP-server var 15 sekund för provning,
1 timme eller mer rimlig * /
unsigned int ntpSyncTime = 3600;

/ * ÄNDRA DESSA VARIABLER PÅ EGEN RISK * /
lokal port att lyssna till UDP-paket
unsigned int localPort = 8888;
NTP tidsstämpel är i de första 48 byte av meddelandet
CONST int NTP_PACKET_SIZE = 48.
Buffert för att hålla inkommande och utgående paket
byte packetBuffer [NTP_PACKET_SIZE];
En UDP-instans att låta oss skicka och ta emot paket över UDP
EthernetUDP Udp;
Håller reda på hur länge sedan vi uppdaterade NTP-server
osignerade långa ntpLastUpdate = 0;
Kolla senaste klocka (inte visas i produktion)
tid prevDisplay = 0;

void setup() {
Serial.BEGIN(9600);

Ethernet-shield och NTP setup
int jag = 0;
int DHCP = 0;
DHCP = Ethernet.begin(mac);
Försöka få DHCP-inställningar 30 gånger innan den ger upp
medan (DHCP == 0 & & jag < 30) {
Delay(1000);
DHCP = Ethernet.begin(mac);
i ++;
}
IF (!. DHCP) {
Serial.println ("DHCP misslyckades");
for(;;); //Infinite loop eftersom DHCP misslyckades
}
Serial.println ("DHCP-framgång");

Försöka få datum och tid
int trys = 0;
While(!getTimeAndDate() & & trys < 10) {
trys ++;
}
}

Ändrar inte denna funktion, det används av systemet
int getTimeAndDate() {
int flagga = 0;
UDP.BEGIN(localPort);
sendNTPpacket(timeServer);
Delay(1000);
om (Udp.parsePacket()) {
UDP.Read(packetBuffer,NTP_PACKET_SIZE); läsa in paket i bufferten
osignerade långa highWord, lowWord, epoken;
highWord = word (packetBuffer [40], packetBuffer[41]);
lowWord = word (packetBuffer [42], packetBuffer[43]);
epoken = highWord << 16 | lowWord;
epoken = epok - 2208988800 + timeZoneOffset;
Flagga = 1;
setTime(epoch);
ntpLastUpdate = now();
}
returnera flagg.
}

Ändrar inte denna funktion, det används av systemet
osignerade långa sendNTPpacket (IP-adress och adress)
{
MEMSET (packetBuffer, 0, NTP_PACKET_SIZE);
packetBuffer [0] = 0b11100011;
packetBuffer [1] = 0;
packetBuffer [2] = 6;
packetBuffer [3] = 0xEC;
packetBuffer [12] = 49.
packetBuffer [13] = 0x4E;
packetBuffer [14] = 49.
packetBuffer [15] = 52;
Udp.beginPacket (adress, 123);
UDP.write(packetBuffer,NTP_PACKET_SIZE);
Udp.endPacket();
}

Klockan visning av tid och datum (Basic)
void clockDisplay() {
Serial.Print(Hour());
printDigits(minute());
printDigits(second());
Serial.Print("");
Serial.Print(Day());
Serial.Print("");
Serial.Print(Month());
Serial.Print("");
Serial.Print(Year());
Serial.println();
}

Utility funktion för klockdisplay: utskrifter före kolon och ledande 0
void printDigits (int siffror) {
Serial.Print(":");
IF(digits < 10)
Serial.Print('0');
Serial.Print(digits);
}

Detta är där alla magiska händer...
void loop() {
Uppdatera tiden via NTP-server så ofta som den tid som du överst
om (nu ()-ntpLastUpdate > ntpSyncTime) {
int trys = 0;
While(!getTimeAndDate() & & trys < 10) {
trys ++;
}
IF(trys<10) {
Serial.println ("ntp server update framgång");
}
annat {
Serial.println ("ntp server uppdatera misslyckades");
}
}

Visa tid om det har ändrats av mer än en sekund.
om (now()! = prevDisplay) {
prevDisplay = now();
clockDisplay();
}
}

Se Steg
Relaterade Ämnen

Den Arduino Internet Gizmo

The Arduino Internet Gizmo är en USB, Arduino och RFID-enhet för webbsurfning. Gizmo fungerar genom att placera en RFID-tagg på gizmo. Gizmo läser RFID-etiketten och skickar asset tag-nummer via USB till ett program som körs på en PC. Programmet leta...

Arduino Internet kontrollerad skrivbordslampa

detta är ett litet projekt jag gjorde för att styra min skrivbordslampa över internet.Steg 1: Vad du behöverEn linux-webbserver med PHP, en arduino, ett relä och några andra komponenter.Steg 2: Ladda upp din kod till arduinoLadda upp följande kod til...

Arduino Real tid väckarklocka med temperatur och LED belysning. Fjärrstyrda

Arduino klocka, med batteribackup (realtidsklocka), tid, datum, Alarm, temperatur, LCD utgång, IR-fjärr ingång, viloläge, LED-belysning (10 X) röd och blå multi-mode.Steg 1: Steg 1: delar listaArduino klocka, med batteribackup (realtidsklocka), tid,...

Arduino Internet kontrollerad ledde

HejI detta projekt som jag kommer att kontrollera ledde 's tråg en webbsidor. Du kan öppna din webbläsare och kontrollera de lysdioder.Koden som anges när laddat upp och ansluten till internet skapar det en webbserver i nätverket och du helt enkelt a...

Arduino Internet (utan Wifi sköld)

i detta instructable jag ska visa dig hur du ansluter din arduino till internet, det finns många sätt att göra detta. Man använda en Ethernet shield men dess fast och inte mycket närgångna att använda, på andra är wifi det kan vara det bästa sättet a...

Ett enkelt sätt att kontrollera din Arduino stift från internet. (Ingen portforwarding)

Kontroll Arduino pins från internet, utan att använda komplexa port port forwarding inställningar i brandväggen.Så länge Arduino är ansluten till ditt nätverk och har en giltig IP-adress du kommer att kunna ändra denPIN status på och av.Steg 1: Vad d...

Arduino tid fontän

Detta är fontänen arduino powered tid jag har gjort. den använder en pump från den lokala diy butiken och lysdioder därifrån till hinken var en freebee från vissa växter....

IPhone kontrollerade Internet PC robot använder arduino

Arduino Internet PC robot kontrollerad med iphone SPY Webcam robot på laptop hjul med handläggningsspråket + arduino... Programvara - av Francisco Dias...

World Wide WiDo Web eluttag! Den ultimata Arduino IoT DIY

WWWWiDo är ett eluttag tillgängligt från alla enheter med en webbläsare som kan fjärrstyra en ansluten enhet, och är uppgraderingsbar till kontroll och automatisering med sensorer och ställdon. Detta system är ett alternativ till de gemensamma tjänst...

Arduino-kontrollerade strömförsörjning

För ett tag sedan jag kom över och blev inspirerad att göra något av mitt eget, som kan kallas en förbättrad variant av maewert's enhet. Jag, dock har skrivit program för Arduino och klienten så att du kan lämna ut befalla som "scheduler -d 15/7 - t...

Bitars banka steg för steg: Arduino kontroll av WS2811, WS2812 och WS2812B RGB lysdioder

Disclaimer: under det senaste året, några olika bibliotek har skrivits för att kontrollera dessa allestädes närvarande RGB lysdioder av Karl beslutsfattare från Adafruit, PJRC och FastSPI projektet. Biblioteken fungerar mycket bra, och vi bör försöka...

Arduino billig hög kvalitetstid / smartphone sprängkapseln (eller kontrollerade kopplingsur): 2016 super noob vänligt sätt!

Detta instructable är avsedd för alla som vill lära sig att göra en ordentlig tid eller smartphone kontrollerade detonator. Jag personligen använt detta för att skjuta min pyro på nyår på exakt midnatt. Jag kommer att gå igenom alla steg i att göra d...

Hacka en Arduino ISP Shield för AtTiny45 / AtTiny85

Detta är hur till hacka en Evil Mad forskare Lab Arduino Internet-sköld så att du kan använda Arduino miljö för att programmera några fiffiga lilla mikrokontroller.Arduino är en stor liten utvecklingsmiljö för att skapa elektroniska projekt http://ww...

Enkel Internet Gizmo

jag publicerade nyligen en instructable kallas den "Arduino Internet Gizmo" som kombinerar en RFID-kortläsaren, en Arduino och en massa lysdioder och andra komponenter för att skapa en enhet som använder RFID-kort för att Visa favorit webbsidor...

Hemautomation med Arduino... Och JavaScript!

I detta instructable (mitt första som faktiskt), jag hjälper dig att göra automatisering i hemmet med Arduino, ja, inte så ny... Men vi kommer även JavaScript, med Node.js och en awesome bibliotek att interagera med Arduino heter johnny-fem (Ja, som...

Internet enheter för hemautomation

Detta instructable visar principerna innebär att göra enheter att styra hemautomation via internet. Vi kommer att bygga en enhet (eller flera av dem), som prata med varandra över internet för att styra lampor, motorer för gardiner/persienner, makt ut...

Arduino ljud utgång

Skapa ljud- eller analoga spänningar med en Arduino. Detta Instructable visar dig hur du ställer in en riktigt grundläggande digital till analog omvandlare så du kan börja generera analoga vågor av alla former och storlekar från några digitala stifte...

Spara data för temperatur och luftfuktighet på MySQL med Arduino Uno och Wifly

Hej killar, jag gör detta instructable för de människor som gillade elektroniken och den botaniska, med detta du har data om temperatura och fuktigheten av din orchard och registrera detta i en data bas MySQL.För denna proyect du behöver några kunska...

Transfiguration rörelse: Färg

Lite av införandetMin dotter och jag är "Kristi rörelse" ett av lagen på Americas största beslutsfattare. Vi har eliminerats från att visa men hade planerat att dela vårt arbete här ändå. Om du är intresserad kan du se vår pitch till domare.Dett...