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

Arduino OLED-temperatuurweergave met realtime klok

Componenten en benodigdheden

Arduino UNO
× 1
Adafruit DS3231 RTC
× 1
Digilent Pmod OLED
× 1
Texas Instruments LM35 temperatuursensor
× 1
Jumperdraden (algemeen)
× 1
Broodplank (algemeen)
× 1

Over dit project

We gaan een Arduino-weerklok maken die ons de tijd, datum en temperatuur zal vertellen. De LM35-sensor geeft ons de temperatuur, de DS3231 geeft ons de datum en de tijd door en we gebruiken de OLED om de temperatuur, datum en tijd weer te geven.

Vereiste componenten

De componenten die nodig zijn voor dit project zijn als volgt

  • Arduino
  • DS3231 (Real-time klokmodule)
  • OLED-scherm (hier werd een SSD1306 gebruikt)
  • SSD1306.pdf
  • Lm35
  • Draden aansluiten
  • Broodplank
lm35.pdf

Schakelschema

Verbind allereerst de OLED met de Arduino. De OLED werkt met de Arduino via de SPI- en I2C-communicatie, maar we hebben hem aangesloten via SPI-communicatie. De SPI-pinnen op de Arduino zijn pin 8, 9, 10, 11 en 13. De verbindingen van de OLED met de Arduino zijn als volgt:

  • Sluit CS van de OLED aan op pin 10 van de Arduino.
  • Sluit DC van de OLED aan op pin 9 van de Arduino.
  • Sluit RES van de OLED aan op pin 8 van de Arduino.
  • Sluit D1 van de OLED aan op pin 11 van de Arduino.
  • Sluit D0 van de OLED aan op pin 13 van de Arduino.
  • Sluit de VCC van de OLED aan op de 5V-pin van de Arduino.
  • Sluit GND van de OLED aan op GND-pin van de Arduino.

Verbind daarna de DS3231 module met de Arduino. De DS3231-module werkt met de Arduino via I2C-communicatie. De pinnen voor I2C-communicatie op de Arduino zijn SDA en SCL. Sluit de DS3231-module als volgt aan op de Arduino:

  • Sluit GND van de DS3231 aan op de GND-pin van de Arduino.
  • Sluit de VCC van de DS3231 aan op de 5V-pin van de Arduino.
  • Verbind SDA van de  OLED met A4 op de Arduino.
  • Sluit SCL op de OLED aan op de A5-pin op de Arduino.

Verbind uiteindelijk de LM35-sensor met de Arduino. Sluit de linker pin van LM35 aan op 5V op de Arduino, de middelste pin op A0 op de Arduino en de linker pin op aarde op de Arduino.

Je kunt een . vinden schema op volledige grootte hier

Code Uitleg

Allereerst hebben we de bibliotheken voor de DS3231-module en de OLED toegevoegd. De Adafruit-bibliotheek voor de OLED heeft meer functies in vergelijking met de andere bibliotheken die voor OLED's worden gebruikt.

#include #include  

Vervolgens hebben we de pinnen gedefinieerd waarop we de DS3231-module en de OLED hebben aangesloten. De DS3231-module werkt met de Arduino via de I2C-communicatie, dus we hebben de SDA- en SCL-pinnen van de Arduino gebruikt. De OLED werkt met de Arduino via SPI-communicatie. Daarom hebben we de pinnen 8, 9, 10, 11, 13 geïnitialiseerd die voor de SPI-communicatie zijn. Daarna hebben we de LM35-sensorpin en andere variabelen geïnitialiseerd.

DS3231 rtc(SDA, SCL); #define OLED_MOSI 11 #define OLED_CLK 13 #define OLED_DC 9 #define OLED_CS 10 #define OLED_RESET 8 Adafruit_SSD1306 display (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); const int sensor_pin =A0; vlottertemperatuur; zwevende uitvoer; 

In de setup-functie hebben we de LM35-sensorpin als invoer aangegeven omdat de Arduino de invoer van de sensor zal nemen. Daarna gaven we de opdracht aan DS3231 en OLED om te gaan communiceren met de Arduino.

pinMode(sensor_pin,INPUT);rtc.begin();display.begin(SSD1306_SWITCHCAPVCC); 

De onderstaande regels worden becommentarieerd in de code, maar als u de DS3231-module voor de eerste keer gebruikt en u wilt de dag, datum en tijd instellen, verwijder dan de opmerkingen over deze regels en stel deze in.

 //rtc.setDOW(WOENSDAG); // Stel de weekdag in op ZONDAG //rtc.setTime (19, 02, 0); // Stel de tijd in op 12:00:00 (24-uurs formaat) //rtc.setDate (7, 12, 2017); // Zet de datum op 6 juni 2017 

Daarna hebben we de "weerklok" gedurende 5 seconden op de OLED afgedrukt.

 display.clearDisplay(); display.setTextColor(WIT); display.setTextSize(2); display.setCursor(0,0); display.print(" Weer "); display.setCursor(0,17); display.print(" Klok "); weergave.weergave(); vertraging (5000); 

In de lusfunctie lezen we uit de LM35 en berekenden we de temperatuur. Dan krijgen we de tijd en datum en printen deze op de OLED.

 uitgang =analogRead(sensor_pin); temp =(uitvoer*500)/1023; display.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); display.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); 

Volledige Arduino-code

#include #include DS3231 rtc(SDA, SCL);#define OLED_MOSI 11#define OLED_CLK 13#define OLED_DC 9#define OLED_CS 10#define OLED_RESET 8Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK_LED_CSETDC, OLED_CSETDC, ORESET);const int sensor_pin =A0;float temp; vlotteruitgang; ongeldige setup () { pinMode (sensor_pin, INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW (WOENSDAG); // Stel de weekdag in op ZONDAG //rtc.setTime (19, 02, 0); // Stel de tijd in op 12:00:00 (24-uurs formaat) //rtc.setDate (7, 12, 2017); // Stel de datum in op 6 juni 2017 display.clearDisplay(); display.setTextColor(WIT); display.setTextSize(2); display.setCursor(0,0); display.print(" Weer "); display.setCursor(0,17); display.print(" Klok "); weergave.weergave(); delay(5000);}void loop(){ output =analogRead(sensor_pin); temp =(uitvoer*500)/1023; display.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); display.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); display.setTextSize(1); display.setCursor(20,25); display.print("Temp:"); display.print(temp); display.print("C"); weergave.weergave(); vertraging(1000);} 

Code

  • Codefragment #4
  • Codefragment #5
  • Codefragment #6
Codefragment #4Platte tekst
 display.clearDisplay(); display.setTextColor(WIT); display.setTextSize(2); display.setCursor(0,0); display.print(" Weer "); display.setCursor(0,17); display.print(" Klok "); weergave.weergave(); vertraging (5000);
Codefragment #5Platte tekst
 uitgang =analoog lezen (sensor_pin); temp =(uitvoer*500)/1023; display.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); display.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr());
Codefragment #6Platte tekst
#include #include DS3231 rtc(SDA, SCL);#define OLED_MOSI 11#define OLED_CLK 13#define OLED_DC 9#define OLED_CS 10#define OLED_RESET 8Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_CETDC, OLED_t_); sensor_pin =A0;vlottertemperatuur; vlotteruitgang; ongeldige setup () { pinMode (sensor_pin, INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW (WOENSDAG); // Stel de weekdag in op ZONDAG //rtc.setTime (19, 02, 0); // Stel de tijd in op 12:00:00 (24-uurs formaat) //rtc.setDate (7, 12, 2017); // Stel de datum in op 6 juni 2017 display.clearDisplay(); display.setTextColor(WIT); display.setTextSize(2); display.setCursor(0,0); display.print(" Weer "); display.setCursor(0,17); display.print(" Klok "); weergave.weergave(); delay(5000);}void loop(){ output =analogRead(sensor_pin); temp =(uitvoer*500)/1023; display.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); display.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); display.setTextSize(1); display.setCursor(20,25); display.print("Temp:"); display.print(temp); display.print("C"); weergave.weergave(); vertraging(1000);}

Schema's


Productieproces

  1. Een effect besturen met echte sensoren
  2. DIY eenvoudigste IV9 Numitron-klok met Arduino
  3. Arduino klok met islamitische gebedstijden
  4. Arduino Pong Game - OLED-scherm
  5. Word Clock met minutenresolutie van tijd in woorden
  6. Hoofdklok
  7. Arduino Temp. Monitor en realtimeklok met 3.2-weergave
  8. Berlijnse klok
  9. Spelen met Nextion Display
  10. TM1637 digitale klok met tijdinstelling en alarmfunctie
  11. Eenvoudige wekker met DS1302 RTC