RS485 Kommunikation Raspi <-> Arduino V2

  • Durch eine Idee den Arduino mit Raspberry Pi über RS485 miteinander sprechen zu lassen, bin ich auf den folgenden Thread gestossen:
    https://www.forum-raspberrypi.de/Thread-arduino…n-raspi-arduino
    Deshalb nahm ich mir vor Ihr Projekt 1:1 nach zu bauen. Dies ging auch mit der Hilfe von Dreamshader sehr gut und zügig von statten.
    Hier möchte ich euch einmal von vorne bis hinten eine Anleitung geben, wie Ihr ebenfalls zum Erfolg kommt.


    1. Einkaufsliste

    Die ebay Links dienen lediglich als Beispiel. Ihr könnt die Sachen Selbstverständlich woanders kaufen.

    Spoiler anzeigen


    1x Raspberry Pi (Ich habe mit dem ersten Modell gearbeitet)
    1x Arduino (Ich habe mit Uno gearbeitet)
    1x RC522 Mifare Leser  

    1x Max485 Modul

    1x USB auf RS485 Converter 

    1x Breadboard mit 400 Kontakten

    1x Stromversorgung Modul 5V, 3V

    1x Pegel Wandler / Level Shifter 5V, 3,3V

    Widerstände: 2x 330 Ohm, 1x 150 Ohm

    Bunte Kabel :-) 

    Preislich seid ihr da ohne Arduino und Raspberry bei ~ 22€
    1-2 Monate Wartezeit muss man für die Ware aus China schon in Anspruch nehmen.


    2. Verdrahtung
    Arduino Verdrahtung:

    rs485-pi-arduino_stecgiu5i.jpg

    unvollständiges Fritzing Datei. Leider fehlt mir der Level Shifter. Download
    3. Raspberry Pi

    Um überhaupt anfangen zu können, benötigt ihr Raspbian für den Raspberry.
    Dazu bitte eins der 1000 Anleitungen aus dem Internet zu Rate ziehen.
    Weiter benötigt man eine SSH Verbindung. Ich habe mit dem SmarTTy Client
    gearbeitet, da dieser Code vervollständigung bietet und meine Verbindungen
    sichert. Download SmarTTy 
    Ist die Verbindung hergestellt, könnt ihr die Code Zeilen
    abarbeiten. Ich hoffe ich habe nichts ausgelassen.

    Zeilen, die mit # anfangen, sind Kommentare

    Um nun auf die MySql Datenbank zu zugreifen, benutze ich Workbench, welches man hier herunterladen kann. https://dev.mysql.com/downloads/workbench/
    folgende Konfiguration habe ich dann vorgenommen:
    configuration_1lwud1.jpg
    configuration_292uze.jpg
    configuration_3ciunq.jpg


    In Workbench habe ich dann folgende SQL Scripte ausgeführt, damit die Datenbank und die Tabellen erstellt werden:


    4. Arduino
    Folgendes Packet herunter laden:
    Download
    die libraries aus dem Ordner müssen hierhin kopiert werden:
    C:\Users\Euer Benutzername\Documents\Arduino\libraries
    und das Sketch aus dem "RS485RFID Sketch" Ordner ausgeführt und auf das Arduino übertragen werden.
    falls sich am Sketch etwas ändern sollte, bekommt ihr hier die aktuellste Version:
    https://github.com/dreamshader/Ar…RS485RFID_JUMPY

    5. Abschluss und Test
    Sind alle Schritte abgearbeitet, so kann man sich mit dem SSH Client auf den Raspberry verbindungen
    und das Programm mit "sudo ./RaspiRFIDModbusV5 " starten.
    Wenn man nun mit der Karte über den Leser streicht, sollte im SSH Client folgendes zu sehen sein:
    03-12-_2016_23-30-59m9uyp.jpg


    Joa... alle Credits gehen an dieser Stelle an Dreamshader und JumpY für die tolle Arbeit!
    Die dritte Version dieses Projektes soll so sein, dass der Raspberry den Arduinos pollt. Dazu soll
    noch zusätzlich eine Adressierung der Einheiten über Dip-Schalter erfolgen.
    Happy evening und hoffentlich bis bald

    Einmal editiert, zuletzt von Kingside (4. Dezember 2016 um 22:42)

  • Spoiler anzeigen


    Zeilen, die mit # anfangen, sind Kommentare

    Code
    [...]
    #xrdp installieren
    sudo apt-get purge realvnc-vnc-server && sudo apt-get install xrdp && sudo reboot
    [...]

    Da solltest du wie ich finde dazu schreiben dass das...
    1) nur erforderlich ist wenn jemand eine Desktop Oberfläche installiert hat (LXDE / PIXEL usw) denn wenn jemand über SSH auf den Pi connected wird davon kein Paket benötigt.
    2) normalerweise kein reboot erforderlich ist. Linux rebootet man nicht ständig wie es vllt mit Windows üblich ist :fies:

    Das einzige "sudo" wird vor der letzten Zeile benötigt, alle anderen kann man getrost weg lassen; vom laden des Archives über das entpacken bis hin zum kompilieren findet im Benutzerverzeichnis von "pi" statt und benötigt keine root Berechtigungen.

    Code
    [...]
    sudo nano /etc/mysql/my.cnf
    comment out this line: 
    "bind-address = 127.0.0.1" 
    to "#bind-address = 127.0.0.1"  
    -> Ctr + X -> "Y" -> Enter

    Das ist so nicht wirklich gut. Es sollte in jedem Fall eine "bind-address" Einstellung vorhanden sein. In dem Fall möchtet ihr vermutlich das auch Verbindungen von ausserhalb funktionieren?
    Dann sollte es so eingestellt werden: bind-address = 0.0.0.0
    Das bewirkt dass das Programm auf jeder verfügbaren Adresse lauscht, also LAN oder auch WLAN.
    Diese Einstellung hat wohlgemerkt nichts mit Beschränkungen zu tun, denn sowas regelt man über die Zugriffsrechte des jeweiligen MySQL-Benutzers.

    Wenn man aber eh nicht vor hat von anderen IP's aus auf den MySQL zuzugreifen kann man "bind-address = 127.0.0.1" ruhig so belassen.

    Code
    [...]
    #check 
    find /usr/ -name 'mysql.h'

    Wenn du nichts mit dem "find" Befehl anstellst oder näheres beschreibst ist das eigentlich Zeitverschwendung. Wenns beim vorherigen apt-get install Befehl keinen Fehler gab wirds auch die Header Datei für mysql geben.

    Code
    [...]
    #install RaspiSource from Dreamshader
    cd ../
    cd ../

    Zum einen reicht " cd .. " zum andern kann man das doppelte auch abkürzen: cd ../..

    Code
    [...]
    #install arduPi
    Raspberry 1:
    wget http://www.cooking-hacks.com/media/cooking/images/documentation/raspberry_arduino_shield/raspberrypi.zip && unzip raspberrypi.zip && cd cooking/arduPi && chmod +x install_arduPi && ./install_arduPi && rm install_arduPi && cd ../..
    Raspberry 2&3:
    wget http://www.cooking-hacks.com/media/cooking/images/documentation/raspberry_arduino_shield/raspberrypi2.zip && unzip raspberrypi2.zip && cd cooking/arduPi && chmod +x install_arduPi && ./install_arduPi && rm install_arduPi && cd ../..

    Man brauch das install_arduPi Script nicht vorher ausführbar machen, einfach direkt "bash" übergeben ;)

    Bevor sich jemand wundert:
    In dem Zip Archive ist ein Verzeichnis bcm2835-1.46 ... zwar ist im Pi2 ein BCM2836 und im Pi3 ein BCM2837 verbaut ... aber im späteren Verlauf der Entwicklung dieser Lib wurde Support für alle nachfolgenden Pi Versionen nachgerüstet ohne das Verzeichnis umzubenennen. Aktuell wäre allerdings bcm2835-1.51 => http://www.airspayce.com/mikem/bcm2835/
    Ob die aktuelle Lib auch mit ArduPi funktioniert weiß ich zwar nicht, wär aber ein Versuch wert :)

    BTW: https://www.cooking-hacks.com/documentation/…on-bridge#step3

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!