Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
medibox [2019/07/01 13:23] – [Schrittmotoren] student | medibox [2023/07/03 10:16] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Medibox ====== | ||
+ | {{ : | ||
+ | auf dem Bild fehlen die Anbauteile aus dem 3D-Drucker | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Einführung: | ||
+ | |||
+ | |||
+ | In diesem Projekt soll die Möglichkeit geschaffen werden automatisiert Medikamente zu stellen. Diese sollen nicht mehr zeitaufwändig pro Tag in verschiedene Behälter gefüllt werden müssen sondern nur noch in die Fächer des Medikamentendosierer " | ||
+ | |||
+ | Im Rahmen des Projektes ist es möglich drei Medikamente in die Fächer der " | ||
+ | |||
+ | Verwendete Komponenten: | ||
+ | |||
+ | * Raspberry Pi 3 Model B | ||
+ | * 3x Schrittmotor ULN2003 mit Driver Board 28BYJ-48 | ||
+ | * 5mm Kupplungen (Verbindung Schrittmotoren Anbauteile/ | ||
+ | * 5mm Gewindestange | ||
+ | * Anbauteile 3D-Drucker | ||
+ | |||
+ | |||
+ | |||
+ | ====== Projektaufbau: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | ---------------------------------- | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | ====== Konfiguration: | ||
+ | |||
+ | Im Projekt verwendete Pakete: | ||
+ | * apache2 | ||
+ | * mysql | ||
+ | * mysql.connector | ||
+ | * php5 | ||
+ | * python | ||
+ | * python3 | ||
+ | * time | ||
+ | * schedule | ||
+ | * sys | ||
+ | * RPi.GPIO as GPIO | ||
+ | * subprocess | ||
+ | |||
+ | ===== Apache ===== | ||
+ | |||
+ | **Einrichtung des Webserver Apache:** | ||
+ | |||
+ | Pakete auf neusten Standen bringen | ||
+ | |||
+ | **Command: | ||
+ | |||
+ | Donwload und installation apache 2 | ||
+ | |||
+ | **Command: | ||
+ | |||
+ | **Ausführen: | ||
+ | |||
+ | ===== PHP 7 ====== | ||
+ | Download und Installation | ||
+ | |||
+ | **Command: apt-get install php7.0** | ||
+ | |||
+ | Nach einem Neustart ist PHP 7 einsatzbereit | ||
+ | |||
+ | ====== MySQL ====== | ||
+ | |||
+ | MySQL Pakete mit allen Abhängigkeiten installieren | ||
+ | |||
+ | **Command: sudo apt-get install mysql-server php5-mysql mysql-client** | ||
+ | |||
+ | Im nächsten Schritt Passwort vergeben und Bestätigen und anschließend neustarten | ||
+ | |||
+ | ====== Phpmyadmin ====== | ||
+ | |||
+ | Der Webserver benötigt keine Verwaltung, aber zum Anzeigen und Testen der Datensätze ist Phpmyadmin sehr hilfreich. | ||
+ | |||
+ | Download und Installation der angegebenen Pakete | ||
+ | |||
+ | **Command: sudo apt-get install php5-mysql libapache2-mod-auth-mysql phpmyadmin** | ||
+ | |||
+ | Im weiteren Verlauf muss diese mehrfach bestätigt werden und ein Passwort gesetzt werden. | ||
+ | |||
+ | Anschließend muss Apache mit Phpmyadmin noch verknüpft werden: | ||
+ | *Dazu muss die Datei (/ | ||
+ | |||
+ | **Command: sudo vi / | ||
+ | |||
+ | Am Ende der Datei wird folgenden eingefügt ** extension=mysql.so** | ||
+ | |||
+ | Phpmyadmin ist nun unter: **http:// | ||
+ | |||
+ | Nun können Dateien ins Verzeichnis **/ | ||
+ | |||
+ | **LINK** | ||
+ | **https:// | ||
+ | |||
+ | |||
+ | ====== Weboberfläche /& html ====== | ||
+ | |||
+ | Nach der o.g. Einrichtung des Webservers können html-Dateien unter dem Pfad: /// | ||
+ | |||
+ | Die Weboberfläche ist html basiert. Die durch den Nutzer eingegebenen Werte werden an ein PHP-Skript (POST) übergeben Benutzereingaben übergeben und ausgeführt. | ||
+ | |||
+ | Hier werden u.a. feste Werte vergeben, um " | ||
+ | <file html medi.html> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <option value=" | ||
+ | <option value=" | ||
+ | <option value=" | ||
+ | </ | ||
+ | </ | ||
+ | ====== Python ====== | ||
+ | |||
+ | Beispielcode: | ||
+ | Prüfung, ob das Fach zum Medikament 1 leer ist, wenn Bedingung erfüllt ist werden die Funktionen ausgeführt u.a. E-Mail an Nutzer, Zurückstellen der Motoren ins Ausgangsposition und Abbruch des Skripts. | ||
+ | |||
+ | <file python medibox.py> | ||
+ | #pruefen ob das Medikament 1 voll ist | ||
+ | def fach1voll(): | ||
+ | cursor = connection.cursor() | ||
+ | cursor.execute(" | ||
+ | resultvoll = cursor.fetchall() | ||
+ | cursor.close() | ||
+ | for data in resultvoll: | ||
+ | if data[0]== 1 and data[1]> | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | # | ||
+ | | ||
+ | | ||
+ | | ||
+ | elif data[0]== 2 and data[1]> | ||
+ | </ | ||
+ | Abfrage aus Datenbank, wie viele Medikamente ausgegeben wurden und entsprechend wird der Motor in die andere Richtung zurückgedreht | ||
+ | <file python medibox.py> | ||
+ | def zurueckstellen1(): | ||
+ | cursor = connection.cursor() | ||
+ | cursor.execute(" | ||
+ | result4 = cursor.fetchall() | ||
+ | cursor.close() | ||
+ | for data in result4: | ||
+ | if data[0]==2: | ||
+ | RIGHT_1(100) | ||
+ | elif data[0]==3: | ||
+ | RIGHT_1(200) | ||
+ | [...] | ||
+ | elif data[0]==10: | ||
+ | RIGHT_1(900) | ||
+ | elif data[0]==11: | ||
+ | RIGHT_1(1000) | ||
+ | elif data[0]==12: | ||
+ | RIGHT_1(1100) | ||
+ | </ | ||
+ | |||
+ | |||
+ | Das Module " | ||
+ | <file python medibox.py> | ||
+ | #verwendete Zeitsteuerung | ||
+ | schedule.every(4).seconds.do(morgens3) | ||
+ | # | ||
+ | schedule.every().day.at(" | ||
+ | |||
+ | </ | ||
+ | Funktion um zu schauen, ob für das erste Medikament eine Ausgabe erfolgen muss, außerdem die Prüfung wie viel Stück ausgegeben werden müssen. | ||
+ | <file python medibox.py> | ||
+ | def morgens1(): | ||
+ | for data in result: | ||
+ | if data[1]== 1 and data[2]== 1: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | print (" | ||
+ | elif data[1]== 2 and data[2]== 1: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | print (" | ||
+ | elif data[1]== 3 and data[2]== 1: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | print (" | ||
+ | else: | ||
+ | print (" | ||
+ | schedule.every(4).seconds.do(morgens1) | ||
+ | </ | ||
+ | ===== Probleme ====== | ||
+ | |||
+ | Das größte Problem war die Installation von dem Webserver Apache und der Integration von PHP. Trotz guter Anleitung hat dies viele Anläufe gebraucht um das System zu etablieren. | ||
+ | |||
+ | Nach erfolgreicher Integration gab es das Problem, dass das in der Installation vergebene Passwort für den MySql User nicht funktionierte. Nach langer Internetrecherche gab es einen Lösungsweg zum Zurücksetzen des Passworts: | ||
+ | |||
+ | [[www.sysadminslife.com/ | ||
+ | ]] |