Hallo zusammen.
kann mir jemand sagen ob ich das Arduino mit dem Hauseigenen Mac - Terminal bedienen kann?
im Windows währe es die Eingabeaufforderung.
VG Dominik
kann mir jemand sagen ob ich das Arduino mit dem Hauseigenen Mac - Terminal bedienen kann?
Die Frage ist natürlich was bedeutet "bedienen"?
Falls es bedeutet: Über eine serielle Schnittstelle Daten zum Arduino (von welchem Arduino reden wir eigentlich?) schicken, die dort ausgewertet werden, um bestimmte "Aktionen" auszuführen, dann lautet die Antwort: JA.
Das funktioniert prinzipiell sowohl unter Windows ("Eingabeaufforderung") als auch unter Mac oder Linux (beide "Terminal").
Ein eigenes "serielles Terminal-Programm" ist nicht unbedingt nötig, allerdings erleichtert es vieles.
Das Prinzip ist immer das gleiche.
Eine Ausgabe (z.B. echo "1") wird auf die "richtige" serielle Schnittstelle "umgeleitet", an der mein Arduino hängt. Das funktioniert bei Windows und Mac und Linux mit dem "Größer-Zeichen", also: >
Der "Namen" einer seriellen Schnittstelle ist je nach Betriebssystem unterschiedlich.
Auf einem Windows-Rechner könnte sie zum Beispiel so heißen: COM23
echo 1 > \\.\COM23
Auf einem Mac könnte sie so heißen: /dev/cu.usbmodem1451
echo "1" > /dev/cu.usbmodem1451
Auf einem Linux-Rechner z.B: /dev/ttyACM0
echo "1" > /dev/ttyACM0
Stolpersteine
1) Eine serielle Schnittstelle hat mehrere Parameter (z.B. Baudrate, Parität, Datenbits, Stoppbits, CTS-Handshaking, DSR-Handshaking, DTR-Signal, RTS-Signal). Wenn du auf Terminal-Ebene arbeitest musst du dich möglicherweise um all das selbst kümmern. Das kann eine gewisse Herausforderung sein. :)
Die Wahrscheinlichkeit, dass es auf Anhieb funktioniert ist möglicherweise gering. :)
Ein "Serielles Terminal-Programm" kümmert sich um diese Dinge, du brauchst dich "nur" mit dem übermittelten Inhalt beschäftigen.
2) Autoreset
Manche Arduinos (z.B. UNO und MEGA) führen einen Reset durch, wenn die serielle Schnittstelle geöffnet wird (aber z.B. Leonardo/Micro tun das nicht).
Wenn mit "Umleitung" gearbeitet wird, dann öffnet der PC die jeweilige serielle Schnittstelle, schickt gleich danach die Daten und schließt die serielle Schnittstelle sofort wieder.
Beim Öffnen der seriellen Schnittstelle macht der Arduino einen Reset. Eine "Bedienung" ist dadurch nur sehr eingeschränkt möglich, weil nach einem Reset ja "alles auf Anfang" steht.
Es gibt aber Wege das Auto-Reset zu verhindern, sowohl hardwareseitig am Arduino selbst (z.B. Elko zwischen Reset und GND oder die Brücke "Reset EN" trennen), als auch softwareseitig am PC (DTR off).
Du kannst aber auch einen Arduino verwenden, der kein Autoreset macht (z.B. Micro).
Ein "Serielles Terminal-Programm" hält die serielle Schnittstelle solange offen, wie du es möchtest. Ein Reset des Arduino kann (je nach Einstellungsmöglichkeiten des Terminal-Programmes) auch vermieden werden (DTR off).
Fazit:
Die Kommunikation mit einem Arduino über das "nackte" Terminal / die Eingabeaufforderung ist möglich, aber wenig komfortabel. Mit einem "seriellen Terminal-Programm" ist es recht einfach.
Frage: Was möchtest du eigentlich?
Übrigens: Mit so gut wie allen Programmier- und Scriptsprachen, die am PC laufen kann eine serielle Schnittstelle angesprochen werden. Das Betriebssystem spielt eigentlich keine Rolle.
Mac-Bordmittel zur seriellen Kommunikation via Terminal:
cu (für mehr Infos tippe im Terminal: man cu)
screen (für mehr Infos tippe im Terminal: man screen)
Terminalprogramme für den Mac siehe z.B.:
https://pbxbook.com/other/mac-ser.html (https://pbxbook.com/other/mac-ser.html)
Vielen dank für die Antworten. Ich habe ein script mit applescript geschrieben der sms über einen externen Anbieter über http api sendet, wenn bestimmte Ereignisse auf dem Rechner geschehen.
nun wollte ich dies unabhängig von der Internetverbindung machen.
Ich habe noch kein Aruduino gekauft.
Mit Applescript kann ich Terminal befehle ausführen.(Deswegen die Überlegung mit Terminal)
Wenn du mit AppleScript arbeitest, dann würde ich das über "Terminal" und "screen" lösen, da bekommst du eine sehr zuverlässige serielle Verbindung und du kannst auch die seriellen Daten, die vom Arduino kommen sehen und gegebenenfalls auswerten.
Ich bin kein AppleScript-Experte, aber mit folgendem AppleScript kannst du eine Verbindung zu z.B. einem Arduino UNO aufbauen und die L-LED am Arduino 5 mal ein- und ausschalten.
Den Namen der seriellen Schnittstelle des Arduinos musst du an deine Gegebenheiten anpassen!
-- AppleScript
-- Test: Send data to Arduino via serial
tell application "Terminal"
-- Connect to arduino serial (adjust usbmodem name to your needs!)
set resultTab to do script "screen /dev/cu.usbmodem1451 9600"
activate
-- Send test data
repeat 5 times
do script ("1") in window 1
delay 0.9
do script ("0") in window 1
delay 0.9
end repeat
-- Quit screen and disconnect from arduino serial
tell application "System Events"
keystroke "a" using {control down}
keystroke "k" using {control down}
keystroke "y"
end tell
end tell
Am Arduino könnte dieser Sketch laufen:
// Test: LED ueber Serial ein- und ausschalten.
// 1 schaltet ein 0 schaltet aus
int zaehler = 0;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available()) {
int inByte = Serial.read();
if (inByte == '0') {
digitalWrite(13, LOW);
Serial.println("off");
}
if (inByte == '1') {
zaehler++;
digitalWrite(13, HIGH);
Serial.print("on ");
Serial.println(zaehler);
}
}
}
super. Vielen dank uxomm! Du hast mir echt weitergeholfen.