Picobrightness

Angelegt Freitag 02 Juni 2023

So messe ich die Helligkeit mit einem Raspberry Pi Pico w und Helligkeitssensor. Der Signalausgang des Helligkeitswiderstands ist am Pin GP28 angeschlossen. Die Spannungsversorgung holt sich der Sensor vom Pico (3.3V, GND). Die Software ist selbstjustierend geschrieben und liefert Werte zwischen 0 und 100 %. 0% stellt den niedrigsten gemessenen Helligkeitswert dar und 100% den Höchsten.

' Helligkeitsmessung
Option explicit

SetPin gp28,ain

Dim minbrightness As float = 0.07333
Dim maxbrightness As float = 3.25278
Dim hell As Integer

Function bright()
  Static h As float = 0.0
  Static n As integer = 0
  n = Min(5, n+1)
  h = h + (Pin(gp28)-h)/n
  If h > maxbrightness Then maxbrightness = h
  If h < minbrightness Then minbrightness = h
  bright = h
End Function

Function scale(brightness)
  Local range As float = 0.0

  range = maxbrightness - minbrightness
  If range <> 0 Then
	scale = 100 - Int((brightness - minbrightness) / (range / 100))
  Else
	scale = 100
  EndIf
End Function

Do
  WatchDog 60000
  hell = scale(bright())
  Print "Helligkeit: ";hell;" %"
  On ERROR SKIP 3
  WEB MQTT CONNECT "192.168.178.54",1883,"anon","anon"
  WEB MQTT PUBLISH "brightness",Str$(hell)
  WEB MQTT CLOSE
  Print
  Pause 1000
Loop



IoT MQTT panel Pro


Damit sich der Pico zuverlässig und automatisch mit dem wireless LAN verbindet sollte zusätlich eine Library definiert sein:

Sub DoConnect
	Do While MM.Info(TCPIP STATUS) <> 3
		If Timer > 6000 Then CPU restart
	Loop
End Sub

DoConnect

Als Firmware sollte WebMiteV5.07.08b2 oder später verwendet werden, da sich in früheren Versionen ein MQTT Speicherleck befand.