-
Die USART (ttyAMA0) muss frei sein, also z.B. nicht in der /etc/inittab mit getty belegt sein.
Konfigurieren auf z.B. 38400 Baud lässt sie sich so:
stty 38400 -F /dev/ttyAMA0
Text darüber schicken:
echo "darübergeschickter Text" >> /dev/ttyAMA0
Etwas empfangen z.B. per cat und in eine Datei schreiben
cat /dev/ttyAMA0 >> /tmp/empfang
Der Benutzer dazu muss in der Gruppe dialout sein.
adduser NAME dialout
Wichtig:
Die Pegel sind für 3,3V ausgelegt. Also empfangen von Daten eines 5V Senders per Spannungsteiler. Senden z.B. mittels 2 BC547B und ein paar Widerständen. Oder halt direkt einem Pegelwandler.
-
Hey,
danke für die Antwort :)
Das trifft sich ja gut. Das sollte mittels Shell_exec in PHP einfach zu realisieren sein.
Da ich eh ein Xbee an das Raspberry anschließen wollte, trifft sich das mit den 3,3V Pegel richtig gut.
Sprich für eine einfache Funkanbindung kann ich mir ne Checkbox in PHP macen und diese abfragen. Wenn sie dann aktiviert ist kann ich mittels Shellexec was über den UART ausgeben und das wird dann per Funk an einen anderen Controller gesendet der dann was schaltet.
Das sollte doch von der Idee her so funktionieren oder?
Und weißt du auch wie ich den UART in einem C-Programm verwenden kann?
Danke nochmals!
Edit:
Habs gerade ausprobiert. Ich habe mittels "adduser" root zu der Gruppe hinzugefügt, die Baudrate auf 38400 eingestellt und einen Text gesendet. Aber am Terminal erscheint nichts bzw. nur Zeichenschrott obwohl es auf 38400 steht. :(
Nochmals Edit:
Es lag an meinem Terminal. Als ich mein Pi rebootet habe, wurde bei dem Bootvorgang auch nur Zeichenschrott ausgegeben.
Irgendwie hat sich TeraTerm wohl verfahren und nachm reboot ging es.
-
Ein Webinterface mit zwei Checkboxen (test.php):
Code:
<html>
<head>
<title>Raspberry CheckBox Test</title>
</head>
<body>
<h1>Raspberry CheckBox Test</h1>
<?php
header("Cache-Control: no-cache, must-revalidate");
echo "User:".exec('whoami');
if ($_POST["chkbox"]==1){
$befehl="echo '1' >> /dev/ttyAMA0";
$dummy = shell-exec($befehl);
}
if ($_POST["chkbox"]==2){
$befehl="echo '2' >> /dev/ttyAMA0";
$dummy = shell-exec($befehl);
}
?>
<form method="post" action="test.php">
<input value="1" name="chkbox" type="checkbox"> <span> 1 Senden</span>
<input value="2" name="chkbox" type="checkbox"> <span> 2 Senden</span>
<input type="submit" value="Senden"> </form>
</div>
</body>
Allerdings wird der Webserver nicht als Root laufen, sodass der Webserveruser zur Gruppe Dialout hinzugefügt werden muss. Der aktuelle User wird dir auch gleich mit der Seite angezeigt.
Edit:
Mit C habe ich mich diesbezüglich bisher nicht befasst.