Translate

ESP32 Monitoring Suhu Interface DMD P10 sensor DS18B20

ESP32 Monitoring Suhu Interface DMD P10 sensor DS18B20
 

         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat dengan menggunakan Esp32 dengan penampil dmd p10. alat ini menggunakan sensor Ds18B20 sehingga bisa mengukur suhu ruangan. untuk lebih jelasnya berikut adalah koding dan skemanya.
 
 
1. Skema
 

 
2. Program ESP32
 
 /*
GND – GND
OE – D23
A – D19
B – D21
CLK – D18
LAT – D2
DR – D23
VCC – VP
GND – EN
*/

#include <DMD32.h>  //--> DMD32 by Qudor-Engineer (KHUDHUR ALFARHAN) : https://github.com/Qudor-Engineer/DMD32
#include "fonts/SystemFont5x7.h"
#include "fonts/Arial_black_16.h"
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 13
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);

int suhu;
int suhux;
unsigned long prevTimeDMD = 0;

// Timer setup.
// create a hardware timer  of ESP32.
hw_timer_t * timer = NULL;

char lineBuff[20];
char lineBuffx[20];

//________________________________________________________________________________IRAM_ATTR triggerScan()
//  Interrupt handler for Timer1 (TimerOne) driven DMD refresh scanning,
//  this gets called at the period set in Timer1.initialize();
void IRAM_ATTR triggerScan() {
  dmd.scanDisplayBySPI();
}
//________________________________________________________________________________

//________________________________________________________________________________VOID SETUP()
void setup() {
  // put your setup code here, to run once:
  
  Serial.begin(115200);
  sensors.begin();
  Serial.println();
  delay(500);
 
  Serial.println();
  Serial.println("return the clock speed of the CPU.");
  // return the clock speed of the CPU.
  uint8_t cpuClock = ESP.getCpuFreqMHz();
  delay(500);

  Serial.println();
  Serial.println("Timer Begin");
  // Use 1st timer of 4.
  // devide cpu clock speed on its speed value by MHz to get 1us for each signal  of the timer.
  timer = timerBegin(0, cpuClock, true);
  delay(500);

  Serial.println();
  Serial.println("Attach triggerScan function to our timer.");
  // Attach triggerScan function to our timer.
  timerAttachInterrupt(timer, &triggerScan, true);
  delay(500);

  Serial.println();
  Serial.println("Set alarm to call triggerScan function.");
  // Set alarm to call triggerScan function.
  // Repeat the alarm (third parameter).
  timerAlarmWrite(timer, 300, true);
  delay(500);

  Serial.println();
  Serial.println("Start an alarm.");
  // Start an alarm.
  timerAlarmEnable(timer);
  delay(500);
  
  dmd.clearScreen(true);
  
  delay(1000);
}

void loop() {

  sensors.requestTemperatures();
  suhu = sensors.getTempCByIndex(0);
             
  sprintf(lineBuff, "SUHU   ");
  sprintf(lineBuffx, "T:%d  ", suhu);

  dmd.selectFont(SystemFont5x7);
  dmd.drawString( 0,  0, lineBuff, strlen(lineBuff), GRAPHICS_NORMAL);  
  dmd.drawString( 0,  8, lineBuffx, strlen(lineBuffx), GRAPHICS_NORMAL);   

  delay(100);
}
 
 
3. VIDEO HASILNYA
 

 

No comments:

Post a Comment