Ich habe mit meinem RPi5 und dem Wlan an einer Fritzbox auch Probleme mit dem speed. Das 2,4GHz tröpfelt nur und beim 5Ghz muss ich manchmal den RPi5 Standort ändern um wieder eine brauchbare Verbindung zu bekommen. Ich lebe damit und schiebe es auf den Activ-Cooler aus alu aufm dem RPi5
Posts by momefilo
-
-
Die einfachte Möglichkeit scheint mir ein Microcontroller in der Nähe des Sensors, welcher das i2c-Protokoll in eine serielle Verbindung oder andere "distanzfähige" Protokolle wandelt und dises übertragen wird? Der Controller kostet 5€
-
Ich habe mal mit diesem PWM-Geber [Anzeige] mehrere LED's geschalten. Vorwiedrestände und andere zusätzliche Bauteile habe ich nicht benutzen müssen für diese e-Schalter, sondern sie einfach nur als schalter in den Stromkreis gehangen und den PWM-Eingang des Schaltes direkt mit dem GPIO verbunden. Das Minuspotenzial der LED's muss nur das gleiche wie des RPi sein; was bein einfachen Schaltungen ja üblich ist
-
Ich hoffe hier keinen alten Hut entdeckt zu haben, aber von den pico_2 muss eine ganze Baureihe unbrauchbar sein
Auf Elektronik Kompendium habe ich das hier grad gelesen
-
Nein das ist von mir nicht getestet und dient dazu zu zeigen wie man so ein Skript ordentlicher schreibt. Welcher Namen da im Code steht ist mir letzendlich egal, ist dein Projekt und außer etwas Umstrukturierung ist von mir da keine Leistung erbracht worden.
Grüße
DennisAchso
trotzdem danke.
-
Danke Dennis89
Ich kann das jetzt nicht testen weil ich einen anderen versuchsaufbau habe, aber gehe davon aus das du es getan hast? Dann würd ich den Code gern unter deinem Namen oder Pseudo auf github laden, ändere das einfach im Code oben. Und die Requenz ist mit "400*1000" besser lesbar denke ich
-
achim 9876 Alle module sind in c geschrieben und die .h-Dateien gehören zu c. Für das i2c_slave modul habe ich eigentlich nur die Parameterübergabe an den Organalcode schreiben müssen und die initialisierung der GPIOs. Zusätlich musste ich nur die im pico-sdk vorhanden i2c-schreib/lese Funktionen mit einfachen "wrapper"-Funktionen dem Modul bereitstellen; der callback erwies sich als einfach. Die ganze Arbeit an dem Modul liegt beim Autor des c-i2c_slave: "Copyright (c) 2021 Valentin Milea" und "Copyright (c) 2023 Raspberry Pi (Trading) Ltd." so stehts auch im Quelltext.
Das bereitstellen von c- Usermodulen für MicroPython ist hauptsächlich, die von python übergeben Variablen mit Standartfünktionen in c-Variablen mit fester Größe zu wandeln und zurück. Mit dem ws2812-Modul habe ich Probleme mit dem Speicher wenn ich die Leseadresse dessen in c-Fuktionen verschiebe, geht die nach einer gewissen Zeit immer verloren so das ich nicht den vollen speed von c in dem Modul nutzen kann, um einfache move-Funktionen zu implementieren die den ganzen strip um eine led in "c-speed" verschieben. Das finde ich wirklich schade aber es ist viel schneller als NeoPixel doch kann nur einen Strip.
-
Inspiriert von diesem Forum habe ich drei allgemein nützliche Module für den rpi_pico auf MicroPython portiert und als firmware zum Download auf github bereit gestellt. Beispielanwendungen und der Quellcode sind dort ebenfalls zum Download
Das interessanteste ist wohl die i2c_slave Implementierung
Ein ws2812-Led Modul das nur einen Strip steuert, aber schneller
Ein buzzer Modul das drei Oktaven auf einem Passiv-Buzzer spieltsiehe readme.md und viel Spass beim testen
-
und nicht einer "Wellen aussendenden" Farblichtquelle - was den Sensor wiederum verwirren könnte...
Versuch macht klug!
BTW: Ein Stückchen weißen Joghurtbecher oder ein anderes vergleichbares, wie Milchglas wirkendes Material zwischen LED und Sensor dürfte da Wunder bewirken um eine Fläche halbwegs gleichmäßig einzufärben.
Butterbrotpapier
-
Hallo Bernd666 und achim 9876
Die Blockweise Lese/Schreib- Funktionen sind nun auch implementiert, und die Files auf github aktuallisiert. Es hat mir keine Ruhe gelassen -
Moin momefilo,
was mich interessiert ist, wird der Pico-W von dem RPi erkannt? Mit i2cdetect -y 1 ??
73 de Bernd
Ja genau so, wenn er initialisiert ist. Man kann auch deinitialisieren und mit anderer Adresse erneut intitialisieren
-
achim 9876
Das i2c_slave-Modul ist zu Benutzung fertig. Es bietet jeweil eine byte-weise und eine block-weise lese/schreib- Funktion. Für die Blockweisen habe ich aber noch keine python-Implementierung gefunden, weil die aufeinanderfolgende Speicheradressen erwarten -vermute ich.
Ich habe mit einem RPi als Master getestet und, oft wird das allererste Datenbyte flasch als 0xFF gelesen. Wenn ich einmal zuvor i2cdetect am Master aufrufe passiert das nicht.Hier ist die Firmware, für pico_w ist neben an eine und auch der Quelltext.
Hier folgt eine Demoanwendung. Vielleicht hat jemand lust zu testen und eine "Gescheite" zu erstellen, ich bin in python nahezu unbegabt
Python
Display More# momefilo i2c_slave_demo_adc.py # Das ist ein Demoprogramm für das i2c_slave-Modul (getestet auf pico_w) # Verbinde die pico-i2c-pins mit einem RPi und führe volgende Befehle aus # Mit i2cget -y 1 0x47 (0x00 bis 0x04) i 2 wird zuerst # das Highbyte und dann das Lowbyte der ADC(0) bis ADC(4) empfangen # Mit i2cset -y 1 0x47 0x05 0x01 wird die Onboard-led ein -und # mit i2cset -y 1 0x47 0x05 0x00 ausgeschaltet from machine import Pin, ADC import i2c_slave import time led = Pin("LED", Pin.OUT)# an pico ohne w anzupassen data = 0# Aktueller ADC-Wert receive = -1# led-Schaltung benoetigte Variable zur Trennung von Adress- und Datenbyte def set_led(val): if val == 0: led.off() else: led.on() def get_adc(val): global data print("ADC(", val, ")") data = ADC(val).read_u16() # Diese Funktion wird zur Initialisierung benötigt # und wird ausgeführt wenn der Master eine read/write-Nachricht an unsere Adresse sendet # Als handler sind "I2C_SLAVE_RECEIVE", "I2C_SLAVE_REQUEST" und "I2C_SLAVE_FINISH" moeglich def callback(i2c, handler): if handler == "I2C_SLAVE_RECEIVE": global receive global data rec = i2c_slave.readByte(i2c)# das erste Byte nach dem Adressbyte einlesen if (rec == 5 and receive == -1):# Das nächste Byte schaltet die led receive = rec elif receive == 5:# Das Byte welches die led schaltet set_led(rec) receive = -1 else:# Die ADC's werden gelesen get_adc(rec) if handler == "I2C_SLAVE_REQUEST":# Die Bytes werden gesendet i2c_slave.writeByte(i2c, ((data & 0xFF00) >> 8)) i2c_slave.writeByte(i2c, (data & 0x00FF)) if handler == "I2C_SLAVE_FINISH": pass # Die initialisierung des i2c_slave i2c_slave.init(0, 4, 5, 400*1000, 0x47, callback) #while True: # time.sleep(1)
Edit: Readme.md
-
Danke für die Hilfe, der Bug report wurde geschlossen weil er schon eine Lösung hat:
edit GIT_TAG develop to GIT_TAG master within pico-sdk/tools/Findpicotool.cmake
Jetzt kann ich wieder rumspielen und testen und proggen
-
Dazu müssen die im Link erwähnten Protokolle implementiert werden. Vielleicht sind sie gar schon von jemanden auf RPi implementiert. Ich hab die Hardware nicht, da ist es unsinnig mit zu machen.
-
Hast du noch einen anderen Rechner an dem du den pico per USB anschließen kannst? um auszuschließen das es ein Fehler des Dateimanagers oder PC's ist
-
Das liest sich wie ein Hardwaredefekt. Wenn du die SWD-Pins verlötet hast, kanst du die an GPIO24 und GPIO25 eines RPi anschließen und mit open-ocd eine .elf-Datei (Firmware) drauf schreiben und neben dem printf auch prozessorintern debugen, aber davon hab ich keine Ahnung.
-
Ich hab den Bug Report erstellt
build ports/rp2 fail on debian12 with: ERROR: Cannot plug gap greater than alignment - gap 254000, alignment 32 · Issue #17080 · micropython/micropythonPort, board and/or hardware rp2 MicroPython version Hallo@all i need Help please, i have an Error by Building ports/rp2 on RPi5 Bullseye and x86-64 debian12…github.com -
-
alfred_e1 da hast du ja Interessantes zu tun
-
Entschuldige bitte aber ich kann nicht anderst
Stecke Juristen und Informatiker in einen Sack, wenn du da feste draufhaust triffst du nie einen Falschen
Das ist ein Komglomerat aus eingebildeten die glauben mit Gesetzen Daten zur Realität zur verhelfen. Mit dieser Aussage berufe ich mich darauf, das die Daten im Netzt von Maschinen generiert sind und ein Rechtsanspruch auf diese immer an den Haaren herbeigezogen ist. Und eine bestimmte Interpretation der Daten immer unterstellt sein muss; auf diese Folge von Nullen und Einsen. Die spekulieren in Völlig freiem Raum den sie nach ihren Vorstellung formen wollen.Edit: Den Beitrag hab ich mr nicht angeschaut weil ich keine 10 Minuten einem Juristen bei seiner Argumentation zuhöhren kann. Ich glaube an nix und, es sind weinger die Strebsamen unter uns die Jura studieren