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 Breadboard mit 400 Kontakten
1x Stromversorgung Modul 5V, 3V
1x Pegel Wandler / Level Shifter 5V, 3,3V
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:
Pin # 2 (Yellow)-> IRQ des RFID-Lesers
Pin # 3 (Brown) -> RE und DE des RS485-Adapters
Pin # 5 (Yellow)-> Signal zu Raspberry #GIO18
Pin # 7 (Yellow)-> RO des RS485-Adapters
Pin # 8 (Orange)-> DI des RS485-Adapters
Pin # 9 (Grey) -> RST des RFID-Lesers
Pin #10 (White) -> SDA des RFID-Lesers
Pin #11 (Rosa) -> MOSI des RFID-Lesers
Pin #12 (Lila) -> MISO des RFID-Lesers
Pin #13 (Green) -> SCK des RFID-Lesers
Alles anzeigen
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
#alles updaten und upgraden
sudo apt-get update && sudp apt-get upgrade
#xrdp installieren
sudo apt-get purge realvnc-vnc-server && sudo apt-get install xrdp && sudo reboot
#create Folder
sudo mkdir RS485_MODBUS
#go to Folder
cd RS485_MODBUS
#download libmodbus
sudo wget http://libmodbus.org/releases/libmodbus-3.1.4.tar.gz
#unpack libmodbus
sudo tar xvf libmodbus-3.1.4.tar.gz
#go to Folder libmodbus
cd libmodbus-3.1.4
#Execute configure script
sudo ./configure
#create library
sudo make
#install library
sudo make install
#check ch341-uart converter now attached to line.Is the Value ... "ttyUSB01" ? If yes leave the raspi source. Else change it:
dmesg
#download and install mysql.Set Passwort: raspberry
sudo apt-get install mysql-server mysql-client php5-mysql
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
#download libmysqlclient
apt-get install libmysqlclient-dev
#check
find /usr/ -name 'mysql.h'
#install RaspiSource from Dreamshader
cd ../
cd ../
sudo wget https://raw.githubusercontent.com/dreamshader/Raspberry_PI/master/RS485_MODBUS/RaspiRFIDModbusV5.c
#execute RaspiRFIDModbusV5 "ctr + c" exit
sudo ./RaspiRFIDModbusV5
#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 ../..
Alles anzeigen
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:
In Workbench habe ich dann folgende SQL Scripte ausgeführt, damit die Datenbank und die Tabellen erstellt werden:
CREATE DATABASE rfid
CREATE TABLE IF NOT EXISTS `tags` (
`uid` text CHARACTER SET utf8,
`flag1` int(11) NOT NULL,
`flag2` int(11) NOT NULL,
KEY `uid` (`uid`(20))
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `access_log` (
`uid` text CHARACTER SET utf8,
`gpio` int(11) NOT NULL,
`access` int(11) NOT NULL,
`date` timestamp DEFAULT NOW()
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Eure Karten ID
INSERT INTO `tags` (`uid`, `flag1`, `flag2`) VALUES
('105dd2a0000000000000', 0, 0),
('d5389028000000000000', 1, 1);
Alles anzeigen
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:
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