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) ) }