This is an old revision of the document!
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:
Componente utilizate:
| 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ă |
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)
)
}