Beiträge von AndrePi

    Hallo,

    ich möchte mit einen Raspberry PI Zero eine erweiterte Gewächshauussteuerung aufbauen.
    Hierbei möchte ich an einer Pumpe angetrieben von einem Elektromotor die Motordrehzahl überwachen.
    Ich habe nun schon einiges versucht komme jedoch zu keinem zufriedenstellenden Ergebnis.
    Dazu habe ich eine reflektierende Folie auf die Motorwelle geklebt und schon verschiedene Reflex-Lichtschranken ausprobiert. Jedoch immer mit dem gleichen Ergebnis, je nach Umgebungshelligkeit, bzw. Sonnenstand und Füllhöhe des Brunnenschachtes versagt immer mal wieder die korrekte Drehzahlerfasung. Dieses hat zur Folge, das die Punpe leer läuft und Luft ansaugt. Danach kann sie selber nicht mehr ansaugen.
    Die Überwachung soll dem Zeck dienen wenn im Falle das der Wasserstand zu niedrig wird, darüber festgestellt werden kann ob die Pumpe abgestellt werden muss.

    Meine Fragen dazu:
    - Welcher Typ Lichtschranke ist geeignet sowohl im dunklen, wie auch Mittags mit einem Sonnenstand fast direkt oberhalb der Pumpe korrekt zu funktionieren ?

    - Wie kann man diese Überwachung eigenständig innerhalb eines Hauptprogrammes umsetzen ( Thread ) oder ähnliche Methoden ?

    Primär benötige ich erst einmal eine elektronische Lösung für das Problem, um Drehzahländerungen an der Pumpenwelle sicher feststellen zu können.

    Danke

    Es könnte auch einfach daran liegen das der Wlan Kanal voll ist, also zuviele auf den selben Kanal senden.

    Aus diesem Grund würde ich immer eine Verkabelung vorziehen, da hat man diese Probleme nicht.

    Wie ich schon schriftlich ausführte:

    An diesem dazugehörigen Router sind in diesem Fall nur diese beiden Geräte angeschlossen / verbunden. Das ZERO, und ein Audiopalyer welcher direkt von dieser Freigabe lesen kann.

    Das habe ich schon in der Clientliste des Routers überprüft.

    Hallo,

    ich habe PiZero an welchen ich den OTG - USB-SWitch mit Netzwerkadapter angeschlossen habe.
    Auf dem Raspi Zero läuft eine Buster-Lite 32 Bit.
    Weiterhin habe ich eine Sambafreigabe gesetzt welcher an Port 0-1 des USB Hubs angeschlossenes Laufwerk ( USB-Stick oder USB-HDD) freigibt.

    Das funktioniert soweit ganz gut. Nun wollte ich das Netzwerkkabel zum WLAN-Router einsparen, und habe das ZERO ebenfalls über WLAN mit dem Router verbunden.
    Was bisher einwandfrei und ohne Wiedergaberuckler ( Audio Play ) funktionierte, ist nun ein schwer im Detail zu beschreibendes Problem.
    Mal wird ein MP Titel ohne jede Störung vollständig hintereinander weg abgespielt, dann treten immer wieder Tonaussetzer auf, die man weder an der Titellänge, noch der Dateigröße festmachen kann.

    An diesem dazugehörigen Router sind in diesem Fall nur diese beiden Geräte angeschlossen / verbunden. Das ZERO, und ein Audiopalyer welcher direkt von dieser Freigabe lesen kann. Es wird nicht aktiv vom Zero gestreamt !

    Was kann ich an der Konfiguration des Zeros ändern, oder anpassen, das dieser Wiedergabeunterbrechungen verschwinden ?

    Hallo,

    in dem man das Signal auf dem Transportweg umkehrt.

    Die Inverter könnte man sich sparen, wenn wie von keepfear geschrieben die Funktion des PIR via Jumpers invertiert wird, und die Auswertung zur Signalerfasssung auf fallende Flanke erfolgt.

    Das kostet zwar etwas mehr Strom, weil im unausgelösten Zustand der Pegel auf der Signal Leitung sich im HIGH bereich, also oberhalb von LOW bewegt, aber die Störfestigkeit steigt.

    Ich hatte entgegen deiner freien Interpretierung

    Du lieferst ja die Antwort gleich mit:

    gesagt das ich nicht über die Hardware, in diesem Falle über diesen PIR verfüge. Deswegen, alle andere Hardware ist vorhanden, und damit kann ich auch jedes andere reine LOW-HIGH Signal auf dem Transportweg invertieren. Was man dazu verwendet, wenn diese direkte Möglichkeit nicht funktionieren sollte bleibt jedem selber überlassen. Ob einfache CMOS Logikgatter, oder fertige Inverter-Bausteine, oder irgendwelche diskrete Schaltungen, bleibt jedem selber überlassen.

    Hallo,

    wenn ich so deinen Beitrag #32 lese und dazu die Anwort von keepfear und seinen wirklich guten Beitrag #35 betrachte, hast du wohl Angst das mögliche Störsignal in deiner sehr langen Zuleitung zum PIR, welcher das Schaltsignal zum weiterleitet, dir einen Stich durch die Rechnung machen.
    Warum kehrst du dann nicht das Signal um, und arbeitest invertiert ?

    Wenn man dazu nur betrachtet welchen Spannungsbereich die jeweiligen Pegel ausgehend von einer Betriebsspannung von 3,3 Volt, haben bevor diese in den ungültigen Bereich rutschen, und somit von der "Auswerteeinheit" verworfen werden, bietet es sich doch fast an, mit invertierten Pegeln zu arbeiten.

    Ich habe das nun mangels nicht vorhandener Hardware nicht nachprüfen können. Auch nicht, ob dieser gpiozero.MotionSensor() sich entsprechen diesen Änderungen durch geänderte Übergabeparamater dazu noch eigenet. Mit einem angepassten PullDown-Widerstand liessen sich aber deine Probleme, oder Befürchtungen mithilefe dieser Signalinvertierung alle umgehen.

    Hallo

    ich habe mal ein Frage zum I2C Bus beim PICO.
    Mir ist es nun schon wiederholt passiert, wenn ich mehrere I2C Geräte verwende, das es zu Funktionsstörungen kommt.
    Als Ursache habe ich ermitteln können das man den Bus mit unterschiedlichen Frequenzen betreiben kann, aber nicht alle I2c Geräte mit dieser Frequenz klarkommen, besonders wenn diese sehr hoch ist.

    Mir geht es jetzt nicht um die I2C Geräte im einzelnen, sondern rein um eine Programmierungsfrage.
    Normal wird der I2C-Bus für das Pico wie folgt definiert.

    Code
    import machine
    
    i2c = machine.I2C(0, sda = machine.Pin(0), scl = machine.Pin(1))

    Wenn man nun über den Objektinspektor aus der Variablendarstellung heraus dieses Objekt i2c betrachtet wird hier eine Frequenz freq = 399361 automatisch eingetragen oder definiert.
    Nun hatte ich schon wiederholt Probleme besonders mit NXP analogen wie auch 8 Bit digitalen Portexpandern, wenn diese Einstellung so bestand hat. Diese Arbeiten meinst nur zuverlässig wenn die Frequenz auf 100000 gestellt wird.

    Betreibt man nun auch noch ein Display auch mit an diesem I2CBus kommt es immer wieder zu OSSError Fehlern, wenn man diese Frequenz nicht schon von Beginn an auf diese 100000 herunter stellt. Aber dann ist auch ein sehr langsamer Bildaufbau die Folge.
    Kann man irgendwie irgendwie eine Abfrage oder ein Parameteränderung schreiben, damit man diesen I2C Bus wahlweise mit zwei unterschiedlichen Geschwindigkeiten betreiben kann, und wie frage man innerhalb einer solcher Treiber-LIB ab, mit welcher Frequenz gerade der Bus läuf t ?
    Kann man überhaupt während der Programmlaufzeit diese Frequenz ändern, oder anpassen?

    Danke

    Hallo,

    ich fange mal so an, wie es in der Hausaufgabe meiner Jüngsten beschrieben wurde.
    "Die Syrer verwendeten ein Seil mit 12 Knoten um einen rechten Winkel darstellen zu können.
    A) Beschreibe wie das Seil zwischen 3 Holzlatten verspannt werden muss ?
    B) gibt es noch andere Formen an Kombinaten der Knoten um ein rechtwinkliges Dreieck darzustellen ?
    C) Wie viele Möglichkeiten gibt es wenn man die Knotenanzahl bis auf 10.000 erhöht ?"

    Das diese Zusammenhänge auf dem Satz des Pythagoras beruhen ist eingentlich bekannt. Soweit auch nicht das Problem.

    Nun habe ich mir ein Programm geschrieben um die Anzahl der Möglichkeiten zu ermitteln.

    Klar stelle ich dir Frage hier, weil das Programm auf einem Raspberry laufen sollte, welche die Kid auch wegen Mathematica immer wieder nutzen.

    Wie kann man dieses Programm evt. noch beschleunigen, denn selbst auf einem Modell 4 mit 2GB ist dieses schon seit Stunden damit beschäftigt ?

    Hallo

    wie Verwendung eines MOSFETs als Schaltverstärker ist dir wohl noch nicht in den Sinn gekommen ?
    Viele Fragen hier im Forum beziehen sich auf immer wieder das gleiche Thema.
    Erst unlängst wurde wieder ein sehr heiße Diskussion geführt, wobei es doch solche schönen kleinen Fertigplatinchen gibt, wo man auf ein der seine Seite die Betriebsspannung anschließen kann, auf der anderen Seite das zu betreibende Leuchtmittel, und es hat sogar einen Eingang für das Raspberry Pi, oder den Arduino. Dabei ist es vollkommen egal ob das PWM Signal 3,3 Volt oder 5,0 Volt hat.

    Hallo @all

    ich habe mich weiter mit dem Vorschlag von __blackjack__ beschäftig. Nach vielen Versuschen habe ich es nun geschafft.

    Meine aktuelle Lösung dazu ist nun diese:

    Code
    import psutil
    
    interface = 'wlan0'
    ip_address = psutil.net_if_addrs()[interface][0].addresss


    Damit Danke an alle, die hier so viele Vorschläge gemacht haben.

    Hallo,

    unterliege ich einem Irrtum, das mit der Wortwahl:

    ich möchte den Wasserstand messen

    hier das erreichen einer bestimmten Füllhöhe gemeint ist ?
    Normal kann man doch keine Füllhöhe = Wasserstand über im Wasser befindliche Drähte messen ohne einen ADC zu verwenden und somit einen Rückschluss gewinnen, wieviel Wasser sich in diesem Vorratsbehälter befindet.

    Hallo,

    Du die IPv4-Adresse vom Interface

    Abgeänert auf wlan0 erhalze ich diese Ausgabe

    setze ich eine Variable davor
    IP = und deine lange Befehlsfole, dann hat die Variable IP den Inhalt von 0.
    Für eine Ausgabe auf einem sekundären eigenständigen Display nützt mir das wenig.

    Hallo

    Der hostname deines PI ist "raspberrypi".

    Ja

    Hast Du mehrere PIs im Subnetz deines Routers, mit dem default-hostname "raspberrypi"?

    3 + 7 ESP32 ( was wohl unrelevant ist )

    Welchen Router hast Du?

    Nur ein alter Digitus WLAN Router, nur für meine Bastelecke. WAN = DHCP IN von einer O2 Starterbox. Alle Geräte ( PC + RasPi + ESP32 ) erhalten ihre IP von dem Digitus WLAN-Router.

    Wird dem PI, die interne IPv4-Adresse per DHCP zugewiesen und wenn ja, teilt der dhcp-Client deines PIs, dem Router/DHCP-/DNS-Server den jetzigen hostname (d. h. z. Zt. "raspberrypi") mit?

    Ja nur IPv4 und in der Clientliste des Router werden nur MAC-Adressen und die dazugehörigen vergebenen IP Adressen angezeit.

    Hallo rpi444,

    und all die anderen.

    Danke kann ich nur sagen, doch es bringt mich kein Stück weiter. Es ist schön das ihr hier einen solchen umfangreichen Erfahrungsaustausch pflgt, nur
    Jetzt wieder auf die Ausgangsfrage zurück.
    Mit diener Antwort @#9 komme ich kein Stück weiter, als Rückgabe werte herhalte ich eine leere Tuple.

    Code
    ()

    Daher noch einmal die Frage zum Lösungsvorschlag aus @#6 mit "psutil.net_if_addrs()" hier erhalte ich einen DICT, der die Namenselemente 'Io', 'wlan0' und 'eth0' enthält. Diesen sind wieder functionen zugeordnet wo es einen Eintrag mit "address" gibt.
    Wie löse ich nun aus diesem DICT für das Interface "wlan0" die IP Adresse als String heraus ?

    Hallo __blackjack__

    Danke. Mit der vor dir gennanten Funktion bekomme ich ein DICT geliefert. Schön und gut. Ich habe wirlich noch keine Ahnung wie ich damit an die IP Adresse das WLAN Interfaces komme. Könntest du mir bitte auf die Sprünge helfen ?

    Wie darf ich deine ergänzende Antwort verstehen ? Dazu müsste man doch wissen, welcher Router mit welchen Zugangsdaten sich am jeweiligen Standort befinden ? Oder habe ich hier auch schon wieder eine falsche Vorstellung ?

    Hallo rpi444

    Danke für deine Ausführung.
    - mit der ersten Zeile deines Codes erhalte ich 127.0.0.1 aber keine IP Adresse des WLAN Interfaces.
    - die zweite Zeile funktionert soweit

    - die dritte Zeile liefert den Fehler

    Code
    sh: 1: dig: not found

    Mache ich ich jetzt etwas grundsätzlich verkehrt, oder muss ich noch irgendwelche Zusatzpakete installieren ?

    Danke

    Hallo,

    Ich möchte ein kleines Projekt umsetzen. Dazu benötige ich die Angaben folgender 3 Adressen.
    - eigene IP Adresse des Raspi,
    - IP Adresse des WLAN- AP = Router
    - externe IP Adresse, vom Internet Provider zugewiesen.

    Wie kann ich mit Python3 unter Bullseye dieser Adressen am einfachsten Ermitteln ?

    Danke

    Hallo,

    könnte man da nicht auch einen kleinen AVR unterbringen, welcher mit 2 Random Generatoren ein nicht periodische-moduliertes HF Signal erzeugt, und wie "Sputnik" einst verrückte Pieps Zeichen sendet. Dazu sollte doch eine kleine Drahtantenne und eine kleine Batterie für einige Stunden "Spionage-Meldungen" ausreichen ;)

    Hallo,

    Ja, wenn du die Arduino IDE schon kennst, dann kannst du das Programm mit den richtigen Einstellungen in der Boardverwaltung, sowie einigen kleinen Änderungen bezüglich der GPIO Zuweisungen fast eins zu eins in dieser Arduino IDE für das Pico kompilieren und nach dem Tastendruck auf die "bootsel" Taste des Picos über eine USB Verbindung auf dieses übertragen. Damit wid eine entsprechende Datei erzeugt, welche im Format der manuellen Übertragung auf den Boot Flash entspricht. Mit der Verwendung eines externen Tasters zwichen Pin Nr. 30 = Run und GND kann man das Pico neustarten. Somit wird das gerade übertragene Programm aus der Arduino IDE automatisch , wie bei jedem Neustart, Reboot automatisch ausgeführt.
    Die Verwendung von µPython ist nicht zwingend erforderlich, wenn man schon mit der Ardino IDE, und anderen Arduino unterstützten Boards gearbeitet hat.

    Hallo

    Ich möchte das Display spätestens aller 2 Sekunden aktualisieren.
    Dazu werden einmal die Laufzeit angezeigt, und zum anderen andere Meßwere. Darunter auch ein Counter der ein Hi-Low als Verhältnis eines Eingangssignales verarbeitet.
    Ich habe bisher noch keine Erklärung gefunden warum eine entzelne Messung mit

    Code
    time_pulse_us(self.input, 1, 1_000_000)

    beim Beginn der Anfrage unter gewissen Umständen erst einmal ein falsches Ergebnis liefert, obwohl der Signaleingang momentan noch von einem Funktionsgenerator gespeist wird.

    Code
    on_time = sum([time_pulse_us(self.input, 1, 1_000_000) for _ in range(counter + 2)][2:]) / counter

    Damit habe ich einen recht konstanten Wert erzielen können. Ich habe das ganze auch schon einzeln ablaufen lassen, also auf mehrere Zeilen aufgegliedert, um ermitteln zu können, wie viele Werte ich bei dieser Betrachtung abschneiden muss.
    Nun wird dieser Vorgang auch noch einmal mit dem Sprung auf Low = Status 0 wiederholt. Dazu schalte ich jeweils noch den Eingangspin von Pull_Down auf PulL_Up um, um das Zeitverhältnis Low to High und High to Low ermitteln zu können.

    Dazu hatte ich mir zu erst zwei Timer geschrieben, einer der das Display aktualisiert, und einen der diesen Meßzyklus startet. Das funktionierte überhaupt nicht. Wenn diese Abfrage noch lief und mit der Displayaktualisierung zeitlich zusammen gefallen ist, hatte ich nur fehlerhafte Meßwerte, egal wie klein ich den Counter gesetzt hatte. Mein Problem für die Endanwendung ist ich möchte das Verhältnis Low zu High in einem Frequenzbereich zwischen 35 Hz und 12 kHz ermitteln. Ein weiteres Problem, welches ich bisher auch noch nicht lösen konnte ist die Tatsache wie komme ich aus einer solchen Abfrage heraus, wenn das Signal aussetzt. Somit der Eingangspegel für eine Zeit X auf Low abfällt und bleibt.