- Ano ang RTC ??
- Pag-alam tungkol sa OLED Ipinapakita:
- Kinakailangan na Materyal:
- Diagram ng Circuit:
- Paliwanag sa Code:
Sa tutorial na ito, malalaman natin ang tungkol sa Real Time Clock (RTC) at ang pakikialam nito sa pagpapakita ng ESP32 at OLED.
Gagamitin namin ang module ng DS3231 RTC upang subaybayan ang tamang oras at ipakita ito sa SPI OLED sa pamamagitan ng paggamit ng ESP32 bilang aming microcontroller. Ang ESP32 ay higit pa sa isang microcontroller. Mayroon itong Wi-Fi at Bluetooth chip sa loob nito at 39 GPIO pin. Sinusuportahan nito ang lahat ng mga protocol sa komunikasyon tulad ng SPI, I2C, UART, atbp. Kung bago ka sa ESP32 pagkatapos ay dumaan muna sa aming Pagsisimula sa tutorial sa ESP32.
Ano ang RTC ??
Ang DS3231 ay isang RTC (Real Time Clock) na module. Ginagamit ito upang mapanatili ang petsa at oras para sa karamihan ng mga proyekto sa Elektronika. Ang module na ito ay may sariling coin cell power supply na ginagamit kung saan pinapanatili nito ang petsa at oras kahit na ang pangunahing lakas ay tinanggal o ang MCU ay dumaan sa isang hard reset. Kaya't sa sandaling itinakda namin ang petsa at oras sa modyul na ito ay susubaybayan ito palagi. Mayroong maraming uri ng mga RTC IC na magagamit tulad ng DS1307, DS3231 atbp.
Ginamit namin dati ang DS3231 RTC kasama ang Arduino sa mga ibaba na proyekto:
- Awtomatikong Pagpapakain ng Alagang Hayop gamit ang Arduino
- Arduino Data Logger
Tandaan: Kapag ginagamit ang modyul na ito sa kauna-unahang pagkakataon kailangan mong itakda ang petsa at oras. Maaari mo ring gamitin ang RTC IC DS1307, dati naming ginamit ang DS1307 kasama ang Arduino.
Pag-alam tungkol sa OLED Ipinapakita:
Ang terminong OLED ay nangangahulugang " Organic Light emitting diode" gumagamit ito ng parehong teknolohiya na ginagamit sa karamihan ng aming mga telebisyon ngunit may mas kaunting mga pixel kumpara sa mga ito. Tunay na masaya na magkaroon ng mga cool na naghahanap ng mga module ng pagpapakita dahil gagawin nitong cool ang aming mga proyekto. Saklaw namin ang isang buong Artikulo tungkol sa mga pagpapakita ng OLED at mga uri nito dito.
Gumagamit kami ng isang display na Monochrome 7-pin SSD1306 0.96 ”OLED. Ang dahilan para sa pagpili ng display na ito ay maaari itong gumana sa tatlong magkakaibang mga Protocol ng komunikasyon tulad ng SPI 3 Wire mode, SPI apat na wire mode at IIC mode. Saklaw ng tutorial na ito kung paano gamitin ang module sa SPI 4-wire mode dahil ito ang pinakamabilis na mode ng komunikasyon at ang isang default.
Ang mga pin at ang mga pag-andar nito ay ipinaliwanag sa talahanayan sa ibaba.
Numero ng Pin |
Pangalan ng Pin |
Ibang pangalan |
Paggamit |
1 |
Gnd |
Lupa |
Ground pin ng modyul |
2 |
Vdd |
Vcc, 5V |
Power pin (3-5V matitiis) |
3 |
SCK |
D0, SCL, CLK |
Gumagawa bilang pin ng orasan. Ginamit para sa parehong I2C at SPI |
4 |
SDA |
D1, MOSI |
Data pin ng modyul. Ginamit para sa parehong IIC at SPI |
5 |
RES |
RST, I-reset |
I-reset ang module (kapaki-pakinabang sa panahon ng SPI) |
6 |
DC |
A0 |
Data Command pin. Ginamit para sa SPI protocol |
7 |
CS |
Piliin ang Chip |
Kapaki-pakinabang kapag higit sa isang module ang ginamit sa ilalim ng SPI protocol |
Sa tutorial na ito ay simpleng pagpapatakbo namin ang module sa 4-Wire SPI mode, iiwan namin ang natitira para sa ilang iba pang tutorial.
Ang pamayanan ng Arduino ay nagbigay sa amin ng maraming mga Aklatan na maaaring direktang magamit upang gawin itong mas simple. Sinubukan ko ang ilang mga silid-aklatan at nalaman na ang Adafruit_SSD1306 Library ay napakadaling gamitin at may kaunting mga graphic na pagpipilian kung gayon gagamitin namin ang pareho sa tutorial na ito. Ngunit, kung ang iyong proyekto ay may memorya / bilis ng pagpilit subukang gamitin ang U8g Library dahil mas mabilis itong gumagana at mas mababa ang memorya ng programa.
Nag-interfaced din kami ng OLED sa Raspberry pi at kay Arduino.
Kinakailangan na Materyal:
- ESP32
- Modulong DS3231 RTC
- 7 pin 128 × 64 OLED display Module (SSD1306)
- Mga wires na lalaki-babae
- Breadboard
Diagram ng Circuit:
Ang diagram ng circuit upang ikonekta ang RTC3231 sa board ng ESP ay ibinibigay sa ibaba:
Ang RTC DS3231 IC ay gumagamit ng I2C mode ng komunikasyon. Mayroon itong mga SCL, SDA, Vcc at GND na lalabas dito. Ang koneksyon ng module ng RTC na may ESP32 ay ibinibigay sa ibaba:
- SCL ng RTC -> SCL ng ESP32 ie Pin D22
- SDA ng RTC -> SDA ng ESP32 ie Pin D21
- GND ng RTC -> GND ng ESP32
- Vcc ng RTC -> Vcc ng ESP32
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. Suriin ang drop-down menu ng manager ng board 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.
Paliwanag sa Code:
Ang kumpletong code para sa ESP32 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. RTClib:
Kaya isinama namin ang lahat ng mga aklatan
# isama
Pagkatapos tukuyin ang lahat ng mga pin ng OLED. Hindi mo kailangang tukuyin ang mga pin para sa module ng RTC dahil ang mga pin na ito ay natukoy na sa WIRE library.
#define OLED_MOSI 23 #define OLED_CLK 18 #define OLED_DC 4 #define OLED_CS 5 #define OLED_RESET 2 Adafruit_SSD1306 display (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Sa pag- andar ng pag- setup , tatawag kami ng isang function rtc.adjust (DateTime (__ DATE__, __TIME__)) na magtatakda ng oras ayon sa oras ng aming PC.
void setup () { Serial.begin (9600); kung (! rtc.begin ()) { Serial.println ("Hindi mahanap ang RTC"); habang (1); } rtc.adjust (DateTime (__ DATE__, __TIME__));
Pagkatapos nito ay tumatawag kami sa mga pagpapaandar sa display upang ipakita sa OLED.
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (PUTI); //display.startscroll Right(0x00, 0x0F); // Maaari mong i-uncment ang linyang ito upang i-scroll ang iyong teksto sa oled display.setTextSize (2); display.setCursor (0,5); display.print ("Clock"); // Ipapakita nito ang Clock sa OLED sa loob ng 3 segundo na display.display (); pagkaantala (3000); }
Pagkatapos sa wakas sa pagpapaandar ng loop , maiimbak namin ang aming oras sa DateTime na paunang natukoy na variable at ipakita ang oras gamit ang mga pagpapaandar sa display tulad ng setTextSize, setCursor, atbp Itakda ang mga ito ayon sa iyong pangangailangan at gamitin ang display.println na function upang maipakita sa OLED.
void loop () { DateTime now = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (now.second (), DEC);
Kaya ito kung paano mo maipapakita ang oras sa OLED gamit ang ESP32 at alam mong kilala ang ESP sa mga kakayahan nitong IoT, kaya maaari mo itong magamit upang mai-publish ang oras sa internet. Sa susunod na artikulo ipapakita namin sa iyo upang ipakita ang Oras ng Internet sa ESP nang hindi gumagamit ng anumang RTC Module.