Sa nakaraang tutorial, gumawa kami ng RTC na orasan gamit ang DS3231 at ESP32. Upang i-minimize ang mga kinakailangan sa hardware ay gagawin namin ang orasan sa Internet nang hindi gumagamit ng module na RTC. Mas tumpak ito kumpara sa orasan ng RTC. Ang ESP32 ay isang module na Wi-Fi at madaling maiugnay sa internet kaya gagamitin namin ang NTP (Network Time Protocol) at UDP (User Datagram Protocol) upang makuha ang Oras mula sa internet gamit ang Wi-Fi. Ang orasan sa Internet na ito ay maaaring maging lubhang kapaki-pakinabang habang nagtatayo ng mga IoT Project.
Ano ang NTP ??
Ang Network Time Protocol (NTP) ay isang networking protocol na ginagamit para sa pagsabay ng oras sa pagitan ng mga system a0nd Mga network ng data. Ang balangkas ng NTP ay nakasalalay sa mga server ng Oras ng Internet. Ang NTP ay may mga algorithm upang tiyak na ayusin ang oras ng araw. Ang mga NTP server ay may software na nagpapadala ng oras ng orasan ng araw sa mga computer ng kliyente gamit ang UDPport 123. Kaya dito sa proyektong ito, nakakakuha kami ng oras mula sa NTP server na gumagamit ng ESP32 at ipinapakita ito sa OLED display.
Mga Materyal na Kinakailangan:
- ESP32
- 128 * 64 OLED display
- Breadboard
- Mga wires na lalaki-babae
Diagram ng Circuit:
Dito, gumagamit kami ng SPI mode upang ikonekta ang aming 128 × 64 OLED display Module (SSD1306) sa ESP32. Kaya, gagamit ito ng 7 mga pin. Ang mga koneksyon sa ESP32 ay ibinibigay bilang:
- Ang CS (Chip select) na pin ng OLED -> PIN D5 ng ESP32
- DC pin ng OLED -> PIN D4 ng ESP32
- RES pin ng OLED -> PIN D2 ng ESP32
- SDA pin ng OLED -> PIN D23 ie MOSI ng ESP32
- SCK pin ng OLED -> PIN D18 ie SCK ng ESP32
- Vdd ng OLED -> Vcc ng ESP32
- GND ng OLED -> GND ng ESP32
Kailangan mo ng mga board file para sa iyong ESP32. Ang drop-in board manager ay drop down na menu ng Arduino IDE para sa ESP32 dev kit. Kung wala ito sundin ang mga hakbang na ibinigay sa link sa ibaba:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Maaari mo ring gamitin ang ESP12 para sa proyektong ito, alamin dito upang magamit ang ESP12.
Gagamitin namin ang Arduino IDE upang isulat ang aming programa tulad ng ipinaliwanag sa itaas na artikulo.
Paliwanag sa Code:
Ang kumpletong code para sa ESP32 Internet Clock ay ibinibigay sa pagtatapos ng artikulo. Narito ipinapaliwanag namin ang ilang mahahalagang bahagi ng code.
Kailangan namin ng maraming mga silid-aklatan upang magamit sa aming code na maaaring ma-download mula sa mga link sa ibaba:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. NTPClient:
5. WiFiUdp:
Kaya isinama namin ang lahat ng mga aklatan at tinukoy na variable para sa pagpasok ng pangalan at password ng Wi-Fi.
# isama
Dito ginagamit ang NTPClient.h library upang kumonekta sa time server. Tumatagal ito mula sa isang NTP server at panatilihin itong naka-sync. At ang Hhre WiFiUdp.h library ay ginagamit upang magpadala at tumanggap ng mga mensahe sa UDP. Ang UDP ay isang protokol na nagpapadala at tumatanggap ng maiikling mensahe mula sa aming system patungo sa NTP server.
Kaya upang makuha ang oras mula sa Internet, kailangan nating tukuyin ang tatlong mga variable sa aming programa para sa NTP.
NTP_OFFSET na kung saan ay ang time zone ng iyong bansa ie para sa India ito ay +5: 30 oras. Kaya't ito ay 19800 sa segundo.
NTP_INTERVAL na kung saan ay agwat ng oras na kinuha ng NTP upang mag-update ng oras. Ito ay 60-64 segundo.
Ang NTP_ADDRESS ay ang NTP server ng iyong bansa. Para sa India maaari mong gamitin ang " in.pool.ntp.org ".
#define NTP_OFFSET 19800 // Sa mga segundo # tukuyin ang NTP_INTERVAL 60 * 1000 // Sa miliseconds #define NTP_ADDRESS "1.asia.pool.ntp.org" WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
Sa setup Function, ipasimuno ang mga setting ng Wi-Fi upang kumonekta sa internet.
void setup () { display.begin (); Serial.begin (9600); Serial.println (); Serial.println (); Serial.print ("Kumokonekta sa"); Serial.println (ssid); WiFi.begin (ssid, password); habang (WiFi.status ()! = WL_CONNected) { pagkaantala (500); Serial.print ("."); } Serial.println (""); Serial.println ("Konektado ang WiFi."); Serial.println ("IP address:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
Pagkatapos ay simulan ang mga pagpapaandar sa pagpapakita upang ipakita ang oras sa OLED.
display.begin (SSD1306_SWITCHCAPVCC);
Sa pag-andar ng loop, gumamit kami ng timeClient.update (), ang pagpapaandar na ito ay tumatagal ng na-update na oras mula sa NTP sa anyo ng string at iniimbak ito sa formattedTime variable. Pagkatapos ay ipakita ito sa OLED gamit ang display.println () function.
void loop () { timeClient.update (); Naka-format na StringTime = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // itakda ang mga parameter na ito alinsunod sa iyong pangangailangan.. display.setCursor (0, 0); display.println (formattedTime);
Ang buong programa ay ibinibigay sa ibaba. Ngayon sa wakas programa ng ESP32 sa Arduino IDE at ang iyong Internet Clock ay handa nang magpakita ng oras.