This is an old revision of the document!


BuzzerTemp Notificări

  • Author: Andreea-Teodora NECULA
  • Email: andreea.necula2102@stud.acs.upb.ro
  • Master: AI

Introduction

Proiectul BuzzerTemp Notificări este o aplicație IoT construită în jurul plăcii ESP32. Aceasta are scopul de a monitoriza temperatura ambientală cu ajutorul senzorului analogic LM35. Atunci când temperatura depășește un prag prestabilit, sistemul:

  • declanșează o alertă sonoră folosind un buzzer pasiv
  • trimite o notificare către utilizator
  • vizualizare istoric în aplicația Android cu grafic

Hardware

Componente utilizate:

  • ESP32 DevKit v1 – placă de dezvoltare cu Wi-Fi și Bluetooth integrat
  • LM35 – senzor de temperatură analogic
  • Buzzer pasiv – emite semnale sonore de alertă
  • Breadboard – platformă de prototipare rapidă
Componentă ESP32 Pin (Etichetă pe placă) Descriere
LM35 – VCC 3.3V Alimentare senzor
LM35 – GND GND Masă comună
LM35 – OUT D33 Semnal analogic temperatură
Buzzer – (+) D26 Control semnal buzzer
Buzzer – (–) GND Masă

Methodology

Firebase Realtime Database

  • Trimitere și citire date ESP32 ↔ Firebase
  • Integrare cu aplicația Android

Code Snippets

Aplicatia are 2 ecrane: una pentru monitorizarea în timp real și una pentru vizualizarea istorică a temperaturilor sub formă de grafic.

// Citirea temperaturilor istorice din Firebase
database.child("istoric").addValueEventListener(object : ValueEventListener {
    override fun onDataChange(snapshot: DataSnapshot) {
        val list = mutableListOf<Float>()
        for (child in snapshot.children) {
            child.getValue(Float::class.java)?.let { list.add(it) }
        }
        temperatures = list
    }
    override fun onCancelled(error: DatabaseError) {}
})
// Afișarea graficului cu temperaturi
@Composable
fun LineChartComponent(temperatures: List<Float>) {
    AndroidView(
        factory = { context -> LineChart(context).apply {
            description.isEnabled = false
            legend.isEnabled = false
            xAxis.labelRotationAngle = -45f
        }},
        update = { chart ->
            val entries = temperatures.mapIndexed { i, v -> Entry(i.toFloat(), v) }
            val dataSet = LineDataSet(entries, "Temperaturi").apply {
                mode = LineDataSet.Mode.CUBIC_BEZIER
                circleRadius = 4f
                lineWidth = 2f
            }
            chart.data = LineData(dataSet)
            chart.invalidate()
        },
        modifier = Modifier
            .fillMaxWidth()
            .height(300.dp)
    )
}

Demo - steps

Pas1:

Pas2:
notiifacre_trimisa.jpeg
Pas3:

Pas4:

Full Demo

Challenges

References

iothings/proiecte/2025sric/buzzertemp.1748465049.txt.gz · Last modified: 2025/05/28 23:44 by andreea.necula2102
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0