Wie der Arduino funktioniert und welche Modelle es gibt, habe ich bereits in einem vorherigen Artikel beschrieben. Nun gibt es massig Artikel über den Arduino an sich, aber nur wenige in Verbindung mit dem Raspberry Pi, jedoch bietet diese Kombination sehr viele Möglichkeiten.
Da ich mehr über den Arduino in Verbindung mit dem Raspberry Pi zeigen möchte, fange ich an, indem ich die direkte Kommunikation beider zeige.
Du brauchst nichts weiteres als einen Raspberry Pi, ein USB Kabel und einen Arduino (z.B. Uno oder Nano).
Vorbereitung
Damit der Arduino später mit dem Raspberry Pi kommunizieren kann, muss erst einmal entsprechender Code darauf geladen werden. Am einfachsten ist dies über den PC/Mac. Wie dies geht, habe ich bereits hier gezeigt.
1 2 3 4 5 6 7 8 9 10 11 |
void setup(){ Serial.begin(9600); } void loop(){ if (Serial.available()) { byte nr = Serial.read(); Serial.print("Folgender char wurde empfangen: "); Serial.println(nr, DEC); } } |
Das ist nur ein kleines Beispiel, wie du die Serial-Komponente benutzt. Natürlich kannst du auch auf die Eingaben reagieren, indem du Funktionen startest, I/O setzt oder ausliest, etc.
Inbetriebnahme am Raspberry Pi
Am Pi werden zusätzliche Bibliotheken benötigt, diese installieren wir zuerst:
sudo apt-get install minicom python-serial
Du solltest den Arduino vom Pi trennen, falls du ihn verbunden hattest, da wir den Port Namen herausfinden müssen. Dazu führst du folgendes zwei mal aus: Einmal ohne und einmal mit Arduino über USB verbunden.
ls /dev/tty*
Du wirst feststellen, dass am Ende der Liste ein neuer Name hinzugefügt wurde (bei mir ist das /dev/ttyUSB0
). Mittels diesem Namen kannst du den Arduino über die serielle Schnittstelle ansprechen. Da die Bibliothek für serielle Verbindungen unter Python installiert wurde, können wir ganz einfach darüber zugreifen.
Dazu erstellen wir eine neue Datei
sudo nano serialTest.py
mit folgendem Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import serial import time s = serial.Serial('/dev/ttyAMA0', 9600) # Namen ggf. anpassen s.open() time.sleep(5) # der Arduino resettet nach einer Seriellen Verbindung, daher muss kurz gewartet werden s.write("test") try: while True: response = s.readline() print(response) except KeyboardInterrupt: s.close() |
Und ausführen:
sudo python serialTest.py
Die Ausgabe sieht dann folgendermaßen aus (mit STRG + C kannst du es stoppen):
pi@raspberrypi ~ $ sudo python serialTest.py Folgender char wurde empfangen: 116 Folgender char wurde empfangen: 101 Folgender char wurde empfangen: 115 Folgender char wurde empfangen: 116
Die Ausgabe der eingelesenen Zeichen findet im ASCII Format statt (DEC für dezimal, HEX für den Hexadezimal Code). Du kannst natürlich auch das Zeichen direkt ausgeben bzw. darauf reagieren.
Was bringt mir das?
Zum einen bietet der Arduino, abhängig vom Modell, verschiedene Features, die nützlich sein können. Außerdem hat der Arduino auch viele digitale und analoge I/O Pins, die ganz einfach gesteuert werden können. Er könnte also als GPIO Expander verwendet werden, der sehr viel einfacher zu steuern ist. Außerdem kann man mit Arduino Bibliotheken/Programme einfach kommunizieren, falls man diese nicht auf dem Pi zum Laufen bringen möchte.
51 Kommentare
Leider überdeckt die Werbung an der rechten Seite die Hälfte des Artikels, so das es keinen Spaß macht ihn zu lesen. (Mac OSX, Safari)
Welche Auflösung hast du denn? Kannst du die Seite neu laden, einen Screenshot machen und mir schicken? Die Sidebar sollte nämlich eigentlich auf der linken Seite angezeigt werden.
ja bei mir auch
1440×900.
dein Projekt ist echt klasse.. genau sowas habe ich gesucht habe schon mit dem raspberry versucht aber es leider nicht hinbekommen. Jetzt habe ich mir auch einen arduino zulegt und wollte gleich mal dein Projekt in die tat umsetzten nur leider komme ich bei dem Punkt mit dem Arduino nicht weiter. Habe diesen ber usb-angschlossen. Vllt kannst du mir weiterhelfen.
Wo genau kommst du nicht weiter? Bekommst du Fehlermeldungen etc.? Bitte beschreibe dein Problem etwas genauer 🙂
Hej Felix
Ich habe da auch ein Problem
Bekomme folgende Auswertung der TTY*
pi@vaexthus1:~ $ ls /dev/tty*
/dev/tty /dev/tty19 /dev/tty3 /dev/tty40 /dev/tty51 /dev/tty62
/dev/tty0 /dev/tty2 /dev/tty30 /dev/tty41 /dev/tty52 /dev/tty63
/dev/tty1 /dev/tty20 /dev/tty31 /dev/tty42 /dev/tty53 /dev/tty7
/dev/tty10 /dev/tty21 /dev/tty32 /dev/tty43 /dev/tty54 /dev/tty8
/dev/tty11 /dev/tty22 /dev/tty33 /dev/tty44 /dev/tty55 /dev/tty9
/dev/tty12 /dev/tty23 /dev/tty34 /dev/tty45 /dev/tty56 /dev/ttyAMA0
/dev/tty13 /dev/tty24 /dev/tty35 /dev/tty46 /dev/tty57 /dev/ttyprintk
/dev/tty14 /dev/tty25 /dev/tty36 /dev/tty47 /dev/tty58
/dev/tty15 /dev/tty26 /dev/tty37 /dev/tty48 /dev/tty59
/dev/tty16 /dev/tty27 /dev/tty38 /dev/tty49 /dev/tty6
/dev/tty17 /dev/tty28 /dev/tty39 /dev/tty5 /dev/tty60
/dev/tty18 /dev/tty29 /dev/tty4 /dev/tty50 /dev/tty61
pi@vaexthus1:~ $ ls /dev/tty*
/dev/tty /dev/tty19 /dev/tty3 /dev/tty40 /dev/tty51 /dev/tty62
/dev/tty0 /dev/tty2 /dev/tty30 /dev/tty41 /dev/tty52 /dev/tty63
/dev/tty1 /dev/tty20 /dev/tty31 /dev/tty42 /dev/tty53 /dev/tty7
/dev/tty10 /dev/tty21 /dev/tty32 /dev/tty43 /dev/tty54 /dev/tty8
/dev/tty11 /dev/tty22 /dev/tty33 /dev/tty44 /dev/tty55 /dev/tty9
/dev/tty12 /dev/tty23 /dev/tty34 /dev/tty45 /dev/tty56 /dev/ttyACM0
/dev/tty13 /dev/tty24 /dev/tty35 /dev/tty46 /dev/tty57 /dev/ttyAMA0
/dev/tty14 /dev/tty25 /dev/tty36 /dev/tty47 /dev/tty58 /dev/ttyprintk
/dev/tty15 /dev/tty26 /dev/tty37 /dev/tty48 /dev/tty59
/dev/tty16 /dev/tty27 /dev/tty38 /dev/tty49 /dev/tty6
/dev/tty17 /dev/tty28 /dev/tty39 /dev/tty5 /dev/tty60
/dev/tty18 /dev/tty29 /dev/tty4 /dev/tty50 /dev/tty61
Wenn ich nun dev/ttyACM0 einsetze oder die 62 oder 63 als Änderung vor und nach Anschluss des Arduino (UNO) bekomme ich die Fehlermeldung :
pi@vaexthus1:~ $ sudo python serialTest.py
Traceback (most recent call last):
File „serialTest.py“, line 5, in
s.open()
File „/usr/lib/python2.7/dist-packages/serial/serialposix.py“, line 271, in open
raise SerialException(„Port is already open.“)
serial.serialutil.SerialException: Port is already open.
Hast Du eine Idee ?
Danke
LG
Jörg
Moin
Die Schleife läuft jetzt anscheinend mit der Änderung die weiter unten vorgeschalgen wurde.
Allerdings bekomme ich keinerlei Werte.
Gruss aus Schweden Jörg
Ich bin bei dem selben Projekt, allerdings kommt bei nur in minicom etwas an (ich lasse den arduino 3 x 4 Werte ausgeben also 1 2 3 4 . 5 6 7 8 . 9 10 11 12 mit je 1 Sekunde Abstand) in minicom kommt meist nur 5 6 7 8 an selten nur die anderen beiden. im Python kommt mit ttyusb0 nichts an (usb Verbindung) . wo liegt der fehler?
Wie lang ist denn dein USB Kabel? Bei USB Druckern darf das Kabel nicht zu lang sein weil sonst Datenverluste auftreten.
Hey, toller Artikel.
Aber habe folgendes Problem:
Wenn ich mit ls /dev/tty* die verfügbaren Ergebnisse mir anschaue, und dabei zwei listings mit Arduino und ohne Arduino durchführe, kommt kein Ergebnis hinzu.
Bin dementsprechend auch nicht in der Lage etwas rumzuprobieren mit Ardu und RPi, weil mir schon der Serielle Port fehlt, den ich in der .py Datei angeben muss.
Woran könnte das liegen? Gibt es einen Standardport?
Am Arduino liegt es nicht, denn ich habe jetzt drei verschiedene angeschlossen, und jeweils ls ausgeführt. Bei keinem kam ein Ergebnis hinzu.
Hoffe du kannst mir helfen 🙂
Liebe Grüße
Sind deine Pakete alle auf dem aktuellen Stand?
rpi-update ist immer mit vorsicht zu geniessen (beta system)
Hallo,
ich hab das alles gemacht nur kommt dann diese Fehlermeldung:
File „serialTest.py“, line 13
except.KeyboardInterrupt:
^
SyntaxError: invalid syntax
Hoffe du könntest mir da helfen.
Ok ich hab den Fehler gefunden.
Eine weitere Frage:
Wenn ich serialTest.py ausführe dann komm nur einer Meldung, dass der Port offen ist machen tut er aber nichts.
Bitte Hilfe.
Mit welcher Version von Jessie hast du das gemacht?
Ich habe die Version vom September 2016 genommen, soweit ich mich erinnere. Allerdings sollte das keinen Unterschied machen, solange die Pakete installiert sind.
LG, Felix
Ich habe jetzt sowohl auf dem Raspberry Pi 2 und dem Raspberry Pi 3 die Version vom März 2016 genommen und jedes mal kommt der gleiche Fehler:
„Traceback (most recent call last):
File „serialTest.py“, line 5, in
s.open()
File „/usr/lib/python2.7/dist-packages/serial/serialposix.py“, line 271, in open
raise SerialException(„Port is already open.“)
serial.serialutil.SerialException: Port is already open.“
Ich hab schon alle ausprobiert und weiß so langsam nicht mehr weiter.
Hast du noch einen Tip für mich?
Oder kennst du schon eine Möglichkeit in den neueren Versionen von Jessie SPI zu aktivieren und ein MFRC-522 RFID Lese/Schreibgerät anzuschließen?
Vielen Dank im vorraus
Lass dir doch mal alle seriellen Ports anzeigen: http://stackoverflow.com/questions/19670110/error-opening-python-serial-port
So ich hab’s geschafft!!!
Das Tutorial war ein guter Tipp.
Man muss nur statt „open()“ „isOpen()“ einfügen und es funktioniert.
Vielen Dank für die schnelle Hilfe!!!
Diese Website hat mir schon oft sehr gut geholfen und auch der Support ist super.
Es ma´g zwar ein Stück weit die Euphorie aus mir sprechen, aber diese Website ist mit eine der besten über den Raspberry im Netz. Vielen Dank!!!
Vielen Dank für das Lob 🙂
Dem Lob schliesse ich mich gerne an
Hey,
hab mich auch etwas damit beschäftigt.
man muss gar nichts angeben, weil der Port (s. Fehlermeldung) ja bereits geöffnet ist. Das geschieht automatisch beim Herstellen der seriellen Verbindung.
Wenn ich isOpen() eingebe, frage ich nur ab, ob er auch tatsächlich geöffnet ist. Das ist nicht nötig. (Stört aber auch nicht…)
Wenn ich irgendwo den Port mit s.close() schließe, dann sollte ich ihn vor erneutem Verwenden wieder mit s.open() öffnen.
Ist aber meist nicht nötig, da der Port erst am Ende des Programms geschlossen wird und am Anfang ja erst die serielle Verbindung hergestellt werden muss.
Hallo!
Vorab: Eine echt hilfreiche Website ist das hier, danke!
Meine Frage: Bei mir hat alles super geklappt. Ich ermittle mit dem Arduino die Temperatur und schicke sie dann an meinen Pi. Bis hier hin funktioniert alles.
Allerdings möchte ich die angefragten Informationen (Temperatur) ja nur einmal erhalten. Anfangs wurde sie mir noch ununterbrochen geschickt mit einer kleinen Verzögerung von dem delay() im Programm. Das konnte ich durch Serial.end beim Arduino abstellen. Dadurch stellt der die serielle Kommunikation vorerst komplett ein, was aber nicht weiter schlimm sein sollte, da der Arduino bei erneuter Abfrage über die serielle Schnittstelle ja einen Reset macht und dadurch die serielle Kommunikation wieder aufnimmt.
Das Problem liegt beim Pi, da dieser weiterhin darauf wartet, Daten über die Schnittstelle zu empfangen.
Meine Frage ist also: wie bringe ich dem Pi bei, nach dem Empfangen und Anzeigen der Temperatur die serielle Kommunikation wieder einzustellen?
Ich habe bereits versucht, nach dem Befehl print(response) in Zeile 12 ein s.close() einzubauen, da gab es aber nur Fehlermeldungen.
Danke und Viele Grüße
Eigentlich sollte
s.close()
die Verbindung schließen, siehe Dokumentation.LG, Felix
Hey, erstmal vielen Dank für die gute und ausführliche Anleitung! 🙂 Ich habe bei mir leider ein Problem. Wenn ich die Datei in der Arduino IDE ausgebe, bzw. mir dort im Serial Monitor anzeigen lasse funktioniert alles. Wenn ich das ganze aber über Python versuche im Terminal ausgeben zu lassen, dann kommt entweder gar nichts an, oder direkt eine Fehlermeldung: „…/dist-packages/serial/serialposix.py“, line 475, in write n = os.write(self.fd, d) TypeError: ’str‘ does not support the buffer interface“
Ich probiere schon seit einigen Stunden hin und her, aber habe bisher keinerlei Ausgabe auf meiner Raspberry hinbekommen.
Hast du vielleicht einen Rat?
Liebe Grüße
Hi,
Ich hatte das selbe Problem. unter Python3. Mit Pytho2 funktioniert es.
Vielleicht ist die eingestellte baudrate zur Kommunikation zum Arduino falsch?!!
Hallo Felix..
Gibt es auch ne Möglichkeit die beiden über die GPIO Pins am Raspi & den communication Pins am Arduino (quasi ohne USB) miteinander reden zu lassen?
Ja, du könntest z.B. bitweise Daten schicken. Kann ich aber nicht empfehlen, da es genau deshalb ja serielle bzw. andere Übertragungsarten gibt, bei denen Fehlererkennung usw. auch schon dabei ist. Als möglich ja, aber praktisch ist es nicht.
Hallo @Felix,
zunächst einmal ein herzliches Dankeschön für diesen Beitrag.
Was ich vielleicht noch anmerken möchte, die Kommunikation über den USB-Port ist zwar für den Anfang ganz nett, wenn der Arduino nicht weit entfernt ist vom Pi, aber wenn man „richtig“ loslegen will, sollte man besser direkt auf den seriellen Port (UART) wechseln.
Anmerkung:
Bei der Kommunikation via UART zwischen Pi und einigen Arduinos sollte man berücksichtigen, dass da ggf. noch ein Pegelwandler (5Volt/3.3Volt) nötig ist.
Die ersten Gehversuche mittels USB sind aber für das Verständnis der Kommunikation bestimmt nicht verkehr.
Gruß
…
Klar, UART wäre eine alternative. Und falls der Arduino noch weiter weg ist: Funkkommunikation zwischen Raspberry Pi’s und Arduinos (2.4 GHz)
Ja und wäre nicht ein weiterer Vorteil der UART/GPIO Nutzung, dass in der Arduino IDE der serielle Monitor weiter zum Debugging genutzt werden kann?
Hallo zusammen. Was mir noch nicht ganz klar ist:
wenn ich den Arduino Nano über USB mit dem RPi verbinde, sind dann die UART Pins weiterhin verfügbar? Mit anderen Worten : Sind das zwei voneinander unabhängige Ports?
Danke
Hi, hast du einen Tip für ein funktionierendes USB Kabel? Muss das irgendwie gekreuzt sein? Danke!
Hallo Felix und hallo an alle
wenn ich solch Projekte lese, macht mich das neugierig. 🙂 Danke schon mal dafür!
Ich habe zwar keine Ahnung von Arduino oder Rasparry, aber wer nicht wagt, der nicht gewinnt. Bin wohl eher nen Windowsnormalo mit knappen VBA Kenntnissen.
Egal, ich habe mir die nötigen Geraete besorgt und das ausprobiert.
Raspberry Pi 3 und Arduino Mega2560
In der Form wie oben beschrieben, haengt sich bei mir das Terminal auf, wenn ich die serialTest.py starte.
Ich habe dann eine Nacht durch weiter Beitraege im Internet gesucht und ein „Timeout“ gefunden. So bekomme ich jetzt eine „Antwort“. Sieht so aus…
s = serial.Serial(‚/dev/ttyACM0‘, 9600, timeout=0.5)
„s.Open()“ hatte ich wegen Fehlermeldung auskommentiert. Habe jetzt in den Antworten hier, was von „s.isOpen()“ gelesen und es funktioniert bei mir auch ohne Fehler.
Leider kommen aber die Antworten nicht immer komplett an. Sicher muss ich da eine Pause einfuegen… irgendwo.
Ich sende ein Zeichen „A“ bei mir… und das Ergebnis sollte dann so aussehen
“1;0;1;1“ und den Zustand von buttonPin1 bis 4 zurückgeben. Sieht so aus…
Aber mal kommt nix und mal nur „1;0“ oder „1;0;1;;“ oder was anderes unvollständiges.
Hast du eine Idee, wo ich pausieren muss oder sonst in einer weise auf das Ergebnis warten kann? Und was mir auch ganz lieb wäre, ist die abfrage über PHP. Dann könnte ich vom Browser aus abfragen.
Gruß Max
PS: arbeitet noch jemand an einem solchen Projekt und ist auch so hilflos?
Erstmal: Vielen Dank für das Tutorial, so wie es aussieht ist das Thema sehr gefragt 🙂
@Max64:
Ich habe genau das gleiche Problem wie du. Ich bekomme keine vollständige Übertragung zustande, nur Bruchstücke…
Ich wäre auch äußerst dankbar, wenn einer helfen könnte 🙂
Grüße
Hey,
ich möchte mit der seriellen Schnittstelle Dezimale Daten schicken allerdings diese nicht umrechnen.
irgend ein Tipp wie ich das hinbekomme?
Danke
Hallo Felix,
ich habe einen Pi auf dem OpenHAB2 läuft. Daran hängt ein Arduino Nano (via USB) der einen RGB-Strip schaltet (MOSFET N-Chanel Schaltung). Auf dem Pi habe ich eine Python Script über den der Arduino angesprochen wird um die RGB-Werte zu ändern oder ein Fadinglauf zu starten. In OpenHAB habe ich das mittels Rules gelöst.
Das Problem ist nun das bei jeder Lichtänderung eine neue Serialverbindung aufgebaut wird. Dadurch kommt es zu einer erheblichen Zeitverzögerung, die mich stört. Wenn ich den Arduino an mein Notebook anschließe und zB via Putty eine Serialverbindung herstelle und dann die Steuerbefehle absetze habe ich keine Zeitverzögerung.
Die Lösung wäre also eine dauerhafte Serialverbindung zwischen Pi und Arduino. Hast du einen Tipp für mich wie sich das realisieren lässt?
Es sollen noch weitere Arduinos hinzukommen die über einen USB-Hub mit dem Pi verbunden werden sollen. Ist auch eine dauerhafte Serialverbindung zu allen Arduinos möglich?
VG David
Etwas unkonventionell, aber ich das könntest du mal ausprobieren: In einem dauerhaft laufenden Thread lässt du die serielle Verbindung bestehen. In dem Thread prüfst du alle X ms, ob ein bestimmter Wert gesetzt wurde (z.B. eine Datei, etc) und ließt diesen ggf. aus. Das Ergebnis wird dann an den Arduino übertragen.
Hallo Felix,
mein RPi kommuniziert zwar mit dem Arduino („Blink“ funktioniert), aber bei serialTest.py hängt sich der RPi auf. Wenn ich mit Strg+C abbreche, kommt folgende Meldung:
Traceback (most recent call last):
File „serialTest.py“, line 8, in
s.write(„test“)
File „/usr/lib/python2.7/dist-packages/serial/serialposix.py“, line 542, in write
abort, ready, _ = select.select([self.pipe_abort_write_r], [self.fd], [], None)
KeyboardInterrupt
Hast Du eine Idee, woran das liegen könnte?
Naja, die Fehlermeldung besagt nur, dass auf die Verbindung gewartet und dabei abgebrochen wurde.
Danke für Deine schnelle Antwort. Leider bringt mich das nicht wirklich weiter 🙁
Da aber die Kommunikation zwischen dem RPi und dem Arduino scheinbar funktioniert, werde ich zwar noch ein wenig mit serialTest.py rumwursteln, wenn es denn aber nich klappen sollte, ist es auch egal.
MfG
UweB
Falls jemand eine Fehlermeldung bekommt:
TypeError: unicode strings are not supported, please encode to bytes:
Dann müsst ihr den Aufruf der Write-Methode anpassen:
s.write(„test“.encode())
Ist es z.B. auch möglich mit Python neue Scripte auf den Arduino zu spielen? Bzw. fertige Scripte auf dem Arduino auszutauschen? Ich möchte quasi eine Art Python Server haben, der dann je nach Ereigniss andere Scripte auf dem Arduino laufen lässt ohne das der Server neugestartet werden muss.
Sollte eigentlich möglich sein, aber ich hätte mir das anders vorgestellt.
Ich würde auf den Arduino ein umfangreiches Script mit mehreren While-Schleifen schreiben. Dann mit einer Variable steuern, in welcher Schleife er sich aufhalten soll.
Sprich, du überträgst über die serielle Schnittstelle einen Wert (1). Dann wird nur die entsprechende Schleife aufgerufen. Willst du das Script „ändern“, dann überträgst du einen neuen wert (z.B. 2), dann läuft die zweite Schleife.
Jede Schleife müsste dann einem eigenen Script entsprechen. Du kannst die dann zwar nicht on the fly ändern, aber im Normalfall weiß mann ja, was man so haben will.
Falls du die Eingangssequenz nochmal ablaufen lassen willst, kannst du in diesem Fall einfach einen Neustart am Arduino durchführen. Dann musst du halt den Wert der Schleife entweder nochmal abfragen oder vorher im eprom speichern.
hallo felix,
ich muß mich meinen vor-rednern anschließen, tolle seite, tolle tips !
ABER : wird es irgendwann auch mal ein tutorial hier geben, wo man ein paar sensoren die du hier vorgestellt hast, mit einem UNO oder ARDUINO via ESP8266 kommunizieren, und dieses (vielleicht) als grafik auf dem raspi aufbereitet wird ? nur ein vorschlag wie ich es meine :
RASPI macht z.b. webserver für die kleine „wetterstation“…diese kann man dann „intern“ abfragen (raspi hat z.b. die 192.186.1.100)….und der DHT22 oder BME280 schubst die daten via ESP8266 zum raspi ? könnte man da z.b. auch den raspi über die fritzbox oder speedport ansprechen ?
es gibt 1000 probleme…fangen wir an .-)
Die Tutorials sind klasse. Lese ich immer wieder gerne und probiere auch viel aus.
Mein aktuelles Projekt: RFID-RC522 auf dem RasPi (3B, aktuelles Raspbian) zum Laufen zu bringen. Die alten Tools (SPI-Py) und Tipps funktionieren nicht mehr. Die Foren sind voll davon.
Zwischenlösung: Mein RFID-Leser mit Karte und Tag funktioniert am Arduino. Also will den Code (wird im Serial Monitor der IDE angezeigt) am RasPi weiter verarbeiten.
Aber schön wäre auch der direkte Anschluss an die SPI-Schnittstelle des RasPi. Irgendeine Idee?
Wie kann ich verschiedene Zahlen übertragen und danach auch nicht unterscheiden von wo das geschickt wurde also wenn ich am Arduino zwei HC SR04 Anschließe und diese unterschiedliche werte ausgeben und ich diese in Python weiterverarbeiten möchte??
die agressive Werbung vermiest das interessante Tutorial.
NEIN ICH WILL KEINE HAUTCREME KAUFEN
Auch hier wie immer ein Klasse Tutorial. Ich habe es nun hinbekommen, dass der Pi die Daten von den am Arduino angeschlossenen DHT11 Sensoren empfängt und die Werte in eine Text Datei schreibt.
Nun würde ich gernen noch ein Programm schreiben, welches ein Relais am Arduino ein und ausschaltet. Also quasi ein Ein.py und ein Aus.py Aber welchen Befehl muss ich an den Arduino senden damit dieser das Relais schaltet? digitalWrite(relais1pin, HIGH oder LOW) funktionieren nicht. Direkt im Sketch des Arduino funktioniert der Befehl und das Relais schaltet:
digitalWrite(relais1pin,HIGH);
delay(3000);
digitalWrite(relais1pin,LOW);
Serial.print(digitalWrite…) habe ich auch ausprobiert und dazu noch über ne Stunde google bemüht aber wahrscheinlich das Falsche gesucht, denn ich habe keine passende Antwort gefunden.