NEWS
Rpi2 GPIO Zuordnung fehlerhaft?
-
Moin,
ich habe versucht mit dem RPI2 (Version 0.2.1) Adapter die GPIOs zu steuern.
Dabei ist mir aufgefallen, dass die Zuordnung der Pins den Physikalischen Pins entspricht (siehe Anhang).
Allerdings hätte ich erwartet, das RPi2 GPIO 27 auch geht. Gibt aber eine Fehlermeldung (wie bei den Anderen, nicht funktionierenden Pins auch):
rpi2.0 2016-11-08 09:58:56.158 error Cannot setup port 27 as output: Error: EINVAL: invalid argument, write
Kann das jemand bestätigen.
Ich habe mir den Status der Ausgänge mit wiringPi anzeigen lassen.
Gruß,
Mark
UPDATE:
Ich habe jetzt ein wenig gestöbert und die ./iobroker-data/files/rpi2.admin/index.html angepasst:
var allowedGPIOs = [ 3,5,7,8,10,11,12,13,15,16,18,19,21,22,23,24,26,29,31,32,33,35,36,37,38,40 ];
damit lassen sich alle Pins beim Raspberry ansteuern. Die Pins 27 & 28 sind allerdings belegt.
Ich meine mich zu erinnern, dass das "normal" ist.
Gruß,
-
Ok, bin heute mit einer Testinstallation auf 'nem Raspi 2 B+ wieder drauf gestoßen:
Bluefox verwendet diese GPIO-Beschreibung: https://github.com/ioBroker/iobroker.rp … 3_gpio.png
Leider ist diese falsch da sie nicht die GPIO-Numerierung verwendet sondern die BCM-Numerierung!
Die Numerierungen kriegt man am Raspi mit
gpio readall
.Hier das vom 2B+ (gleich mir Raspi3):
+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 0 | IN | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 1 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | OUT | 1 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
Wie man dort sieht sind die GPIO-Nummern mit den BCM-Nummern ident.
Nun hat Blufox einen bug in seiner Initialisierung: Das Interface verwendet als default wiringpi-Nummern und nicht BCM.
if (anyEnabled) { try { gpio = require('rpi-gpio'); } catch (e) { gpio = null; console.error('cannot use GPIO: ' + e); } }
Das muß auf:
if (anyEnabled) { try { gpio = require('rpi-gpio'); gpio.setMode(gpio.MODE_BCM); } catch (e) { gpio = null; console.error('cannot use GPIO: ' + e); } }
geändert werden, dann funkt rpi2 bei mir auf 2B+ und auf rpi3 und die Dokumentation vom Adapter stimmt mit dem zusammen was er tut.
Ohne diese Änderung wird z.B bei GPIO18 (laut Beschreibung physikalischer Pin#12) gar nichts angesprochen weil wPi18/GPIO.18 nicht existiert, sehr wohl aber BCM18 was aber wPi1/GPIO.1 ist.
Ein Kommentar in der Adapter-Beschreibung dass die Numerierung BCM (= BroadComm pins am chip) ist wäre angebracht.
Ohne meine Änderung oben müsste index.html und die Beschreibung umgebaut werden und diese Pin-Numerierung verwendet werden: http://pi4j.com/pins/model-3b-rev1.html
Hoffe dass ich etwas zur Klärung beitragen konnte.
p.s.: Wozu ich gpio's verwende? Um die billigsten Bewegungsmelder zu bauen! https://www.amazon.de/Foxnovo-HC-SR501- … B00PRFPY72 können direkt angeschlossen werden und funktionieren super!
p.s.s.: Der Adapter meldet bei jedem Durchlauf (jede Minute) Zwei wifi-Fehler (wie error No Value found for wifi_send/wifi_received) . Das kommt natürlich dann wenn der wifi_adapter beim Pi3 abgeschaltet oder bei den anderen Pi's keiner angesteckt ist. Sollte geprüft werden ob ein wlan-Netz existiert und wenn nicht dann diese Abfrage unterdrückt werden.
-
Danke für deine Anmerkungen. Probiere die Version von GIT.
-
Ja, super, funktioniert jetzt auf Raspi 2B+ und 3B. Kannst vielleicht auch auflisten bei den getesteten im Readme!
-
OK. Danke. Habe ich veröffentlicht.
-
Hallo !
Ich habe den DHT22 und wollte ihn am Port 4 betreiben. Nun bin ich auf der Suche nach einer Beschreibung hier auf http://www.iobroker.de.
Und ich finde nichts.
Wo kann ich den Adapter für meinen Raspi3 finden und gibt es ein Blockly-Script o.ä.?
Schöne Grüße
Thomas
-
Hallo Thomas,
zur Doku für den RPI2-Adapter kommst du im Moment über das Fragezeichen im Admin - Reiter Adapter ganz rechts:
http://www.iobroker.net/?page_id=5379&l … stallieren
Dieses Fragezeichen fürhrt nach:
https://github.com/ioBroker/ioBroker.rp … /README.md
Gruß
Rainer
PS die offizielle Seite ist iobroker.net
-
Moin Rainer,
das hatte ich versucht und habe eine 404er Seite bekommen.
Dazu kommt noch, dass in der Readme nicht steht, wie man den Adapter installiert. Hast Du Dir das mal angesehen?
muss ich den wirklich per npm starten? Geht das nicht über die Adapterliste?
Gruß
Thomas
-
das hatte ich versucht und habe eine 404er Seite bekommen. `
Was hast du denn für eine Version? (js-controller (siehe host) und admin.)Hintergrund:
Es gab mal einen Adapter der hieß iobroker.rpi. Statt dessen gibt es jetzt einen Adapter der heisst iobroker.rpi2
Solltest du noch den rpi in deiner Adapterliste haben ist dieser (und damit deine gesamte Installation) total veraltet!
beim rpi2 klappt der Link über das Fragezeichen (zumindest bei mir)
Und grundsätzlich lassen sich ALLE Adapter über die Weboberfläche des admin installieren.
Wobei um es korrekt auszudrücken die Erstellung einer Instanz gemeint ist.
Gruß
Rainer
-
Hallo Rainer,
Also hier habe ich den RPI-Adapter installiert und sehe unter Instancen: RPI2.0
Dort habe ich die GPIO Einstellungen gefunden. endlich…
Jetzt habe ich den Port 4 auf IN gesetzt. Weil ich dort den DHT22 eingebunden habe. Wie kann ich die Temperatur bekommen?
Schöne Grüße
Thomas
-
Hallo !
hier stehe ich nun etwas auf dem Schlauch. Wie kann ich einen DHT22 einbinden ?
Muss ich vorweg etwas installieren ? reicht es den GPIO Adapter zu installieren?
und : vor allen wie mache ich das wirklich praktisch ?
Gruß
Thomas
-
Jetzt habe ich den Port 4 auf IN gesetzt. Weil ich dort den DHT22 eingebunden habe. Wie kann ich die Temperatur bekommen? `
Der DHT22 hat eine serielle Schnittstelle. Die kann man nicht mit dem RPi2-Adapter auswerten.Es gibt ein NPM-Modul https://www.npmjs.com/package/dht-sensor, das man in die Konfiguration des JS-Adapters einbinden kann.
-
okay,
aber wie genau?
-
aber wie genau? `
-
Javascript-Adapter installieren
-
in der Konfiguration der JS-Instanz hinter "Zusätzliche NPM-Module" eintragen: dht-sensor
-
im Editor-Fenster des JS-Adapters ein neues Skript anlegen (http://www.iobroker.net/?page_id=6818&lang=de#Bedienung)
-
Folgendes Skript per copy & paste in das Editor-Fenster kopieren
var ordner = 'Klima'; var dht = require('dht-sensor'); var bcm = 4; // BCM GPIO var sensor = 22; // DHT22 // Datenpunkte erzeugen createState(ordner + '.rel_Feuchte', 0, { type: 'number', desc: 'relative Luftfeuchte', read: true, write: true, min: 0, max: 100, unit: '%' }); createState(ordner + '.Temperatur', 0, { type: 'number', desc: 'Temperatur', read: true, write: true, min: -30, max: 50, unit: '°C' }); // Werte jede Minute abfragen schedule('* * * * *', function() { var values = dht.read(sensor, bcm); if(values) { setState(ordner + '.rel_Feuchte', values.humidity); setState(ordner + '.Temperatur', values.temperature); } });
-
Datenpunktname (ordner) anpassen
-
Skript starten
-
-
@paul53 said in Rpi2 GPIO Zuordnung fehlerhaft?:
dht-sensor
Hi ich hoffe Du kannst mir auch helfen, vor allem nach so langer Zeit. xD
Ich habe Dein Script wie beschrieben benutzt, der Status bleibt bei gelb. Jedoch erhalte ich keine Daten in VIS.
Auch versuchte ich diverse andere Möglichkeiten meinen DHT22 Sensor über den ioBroker auszulesen. Alles ist gescheitert.
Gruß
Marcel
-
@DasDing1988 sagte:
Jedoch erhalte ich keine Daten
Kommen Fehlermeldungen im Log ?
Das NPM-Modul dht-sensor ist unter Zusätzliche NPM-Module in der Konfiguration der Javascript-Instanz eingetragen ?
Die Datenpunkte javascript.0.Klima.Temperatur und javascript.0.Klima.rel_Feuchte sind erzeugt worden (Ordner "Objekte") ?