Vorlesung dauerte fast 2 Stunden, daher ist es wahrscheinlich besser, sie direkt auf Youtube zu sehen. In der Beschreibung des Videos befindet sich ein Inhaltsverzeichnis. Dem Video folgt ein Textprotokoll in Kurzform (speziell für Habr).
Viel Spaß beim Betrachten oder Lesen. :) :)
Beschreibung des Problems und Konzept der Lösung
Beginnen wir mit den Anfangsdaten. Wir haben einen normalen Scanner (in meinem Fall Canon CanoScan LiDE 120), der an den USB-Anschluss des Computers angeschlossen wird und in den Computer scannen kann. Hier erscheint beispielsweise ein zweiter Computer, und bei der allgemeinen Notwendigkeit des Scannens ist es unpraktisch, den Scanner jedes Mal zwischen Computern zu wechseln. Was zu tun ist? Ja, jetzt gibt es Netzwerk-MFPs, aber aus irgendeinem Grund ist dies für uns keine Option.
Um das Problem zu lösen, müssen wir im Wesentlichen einen separaten Ort für den Scanner einrichten, ein Netzwerklaufwerk organisieren, alle Computer in unserem Heimnetzwerk daran anschließen und dem Scanner das Scannen auf demselben Netzwerklaufwerk beibringen. Der Benutzer, der gerade scannt, befindet sich in der Nähe des Scanners, drückt die Tasten und wechselt die gescannten Blätter. Er muss nicht jedes Mal zum Computer laufen, um einen Befehl zum Scannen zu erteilen. Wenn dann alles, was benötigt wird, gescannt wird, geht er zu seinem Computer, kopiert oder überträgt die gescannten Dateien vom Netzlaufwerk auf sich selbst und arbeitet weiter mit ihnen.
Also wählen wir einen Ort, an dem der Scanner platziert werden soll, wir bringen ein Kabel vom Router unseres lokalen Netzwerks dazu (WiFi ist ebenfalls möglich, aber wir lassen dies optional), wir schließen eine Steckdose für die 220-V-Stromversorgung an - und wie geht es weiter?
Theoretisch muss der Scanner an einen Computer angeschlossen sein. Der Kauf und die Installation eines separaten Computers für diese Zwecke ist jedoch teuer und nicht gerechtfertigt. Nun, er wird eine Tastatur und eine Maus mit einem Monitor brauchen, sie brauchen auch Platz. Gleichzeitig haben wir nichts Besonderes, wir scannen hauptsächlich ein Format (A4). Schauen wir uns also etwas Tragbareres an.
In unserem Projekt verwenden wir einen Einplatinencomputer Raspberry Pi 2 Model B. Obwohl er nicht neu und nicht sehr leistungsstark ist, reicht seine Leistung für die Aufgabe aus, er verbraucht nicht wirklich Energie. GPIO wird sich als nützlich erweisen.
Für diejenigen, die sofort alles auf der Basis des vorhandenen Scanners wiederholen möchten, empfehle ich, zuerst die SANE-Projektwebsite aufzurufenGehen Sie zur Liste der unterstützten Geräte und stellen Sie sicher, dass das jeweilige Scannermodell vom Projekt angemessen unterstützt wird. Andernfalls können Anstrengungen und möglicherweise Geld in die Leitung fliegen. Darüber hinaus kann es sich lohnen, eine Maschine (virtuell oder real) mit Debian 10 (genauer gesagt der aktuellen Version zum Zeitpunkt der Überprüfung der Version, aus der die Raspberry Pi Foundation das Betriebssystem erstellt hat) zu organisieren und sofort zu arbeiten und die Arbeit mit dem Dienstprogramm scanimage zu überprüfen. Wenn alles normal ist, funktioniert es wahrscheinlich bei Himbeeren.
Hilfs notwendig
Für die Stromversorgung der Himbeere und des Scanners verwende ich im Demo-Projekt ein normales Zwei-Ampere-MicroUSB-Ladegerät. Aber wenn die Himbeeren rund um die Uhr arbeiten sollen, empfehle ich nicht, sie zu verwenden. Dies ist nicht ihre Aufgabe, und es ist keine Tatsache, dass eine bestimmte Aufladung nicht fehlschlägt, wenn sie im 24/7-Modus lange Zeit keinen so kleinen Strom liefert. Es ist besser, kein Geld zu sparen und entweder ein proprietäres Netzteil zu nehmen oder ein anderes für solche Arbeiten geeignetes anzupassen.
Ich empfehle außerdem nicht, den Scanner mit einem langen USB-Kabel oder einem beliebigen Ursprung anzuschließen. Dies ist aus mehr als sechs Monaten Betriebserfahrung; Eine Überraschung kann im ungünstigsten Moment eintreten.
Was den "Festplatten" -Speicher betrifft - wie Sie wissen, werden in Himbeeren microSD-Karten verwendet. Das zehnte Raspberry Pi OS passt auf eine 4-Gig-Karte. Aber wir werden dort immer noch anständige installierbare Software sowie einen Netzwerkordner für Scans haben. Wir konzentrieren uns also auf mindestens 8; 16 werden im Projekt verwendet. Für die erste Aufzeichnung des Betriebssystemabbilds benötigen Sie außerdem einen Computer mit einem Kartenleser, an den die Karte angeschlossen werden kann. Ich habe einen Adapter für einen im Laptop eingebauten SD-Kartenleser verwendet.
Wir brauchen auch einen Körper. Es gibt viele Möglichkeiten. In der gezeigten Variante habe ich einen nicht originalen Fall mit erhöhter Dicke verwendet; Dies ermöglichte es, ein Schema aus zwei Tasten und einer vom Projekt bereitgestellten LED auf der oberen Abdeckung anzubringen (dazu später mehr), und die Höhe des Gehäuses reichte für Tasten und für eine Himbeere sowie für BLS-Anschlüsse zum Anschließen an die GPIO-Pins. Dieser Körper besteht aus Plexiglas. So sieht es mit der zusammengebauten Schaltung aus, aber ohne Himbeere:
Jetzt verwende ich diesen Fall zum Debuggen und Demonstrieren, und in der Kampfversion wird die Himbeere zusammen mit dem Netzteil in einer speziellen Schalttafel angebracht und gleichzeitig für eine andere Aufgabe verwendet, und die Schaltung wird montiert in einem separaten kleinen Gehäuse, das über ein vieradriges flaches Telefonkabel mit der Himbeere verbunden ist.
Ein weiteres Problem bei Himbeeren ist das Erhitzen des Kerns. Wenn Sie rund um die Uhr arbeiten möchten, kleben wir einen kleinen Heizkörper mit einer geeigneten Wärmeleitung.
Speicherkarte vorbereiten
Beginnen wir mit der Vorbereitung der Speicherkarte. Kürzlich hat die Raspberry Pi Foundation Raspbian nicht nur in Raspberry Pi OS umbenannt, sondern auch ein Programm namens Raspberry Pi Imager für Windows, MacOS und Ubuntu veröffentlicht. Laden Sie dieses Programm herunter, installieren Sie es auf Ihrem Computer und führen Sie es aus.
Lassen Sie uns zunächst im Programmfenster Choose OS auswählen. Es gibt viele Möglichkeiten. Standardmäßig wird Raspberry Pi OS (32-Bit) angeboten, aber es ist mit einem Desktop, und für zwei ist der Desktop so lala. Daher gehen wir zu Raspberry Pi OS (andere) und wählen dort die Lite-Option aus. Wir brauchen kaum etwas anderes als die Kommandozeile. Dann legen wir eine Speicherkarte ein und schreiben ein Bild darauf. Dieser Vorgang wird im Video um 00:12:15 Uhr gezeigt .
Ersteinrichtung
Sie können die Speicherkarte in die Himbeere legen und zu ihrer Einstellung gehen. Dazu müssen wir neben Strom, einem Netzwerk mit dem Internet und einem Scanner eine USB-Tastatur und einen Monitor mit einem HDMI-Kabel verbinden (für die vierte Generation von Himbeeren gibt es MicroHDMI). Wir schließen zuletzt die Stromversorgung an. Und denken Sie an die Sicherheit beim Arbeiten mit offenen leitfähigen Teilen, insbesondere wenn die Himbeere nicht im Fall ist und die Stromversorgung hinsichtlich des elektrischen Kontakts mit 220 V fraglich ist.
Einschalten, booten, mit dem Standard-Pi-Login und dem Himbeer-Passwort anmelden. Der Einrichtungsprozess im Video beginnt um 00:18:43 .
Stellen Sie zunächst sicher, dass Sie das sudo apt-Update und das sudo apt-Upgrade ausarbeiten. Zum Zeitpunkt der Aufnahme des Videos bot das Repository an, 30 Pakete zu aktualisieren, obwohl ich das Image der Speicherkarte kurz vor der Ersteinrichtung aufgenommen hatte. Anscheinend wird es nicht jedes Mal gesammelt, wenn das Repository aktualisiert wird.
Auf Wunsch lösen wir außerdem das Problem der Quadrate in der Konsole anstelle der russischen Buchstaben. Wir rufen sudo dpkg auf, konfigurieren das Konsolen-Setup neu und gehen die Menüs durch. Wir setzen (oder lassen) folgende Parameter:
- Auf der Konsole zu verwendende Codierung - UTF-8
- Zu unterstützender Zeichensatz - Erraten Sie den optimalen Zeichensatz
- Schriftgröße - 8x16
Zum ersten Mal starten wir neu. Wir tun dies regelmäßig per Sudo-Neustart. Melden Sie sich erneut an, führen Sie sudo raspi-config aus und fahren Sie mit der anfänglichen Einstellung der Parameter fort. Wir erledigen darin folgende Aufgaben:
- ( : System options — Password )
- SSH (Interface options — SSH)
- (Localisation options — Locale; en_GB.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8, )
- (Localisation options — Timezone; , )
- (Advanced options — Expand filesystem).
Wählen Sie danach Fertig stellen. Das Programm bietet einen Neustart an, was wir auch tun.
Dann melden wir uns erneut an (bereits mit einem neuen Passwort), gehen zu sudo raspi-config, wählen Lokalisierungsoptionen und dann Tastatur. Das Tastatur-Setup-Programm schreibt bereits auf Russisch.
Im Tastaturmodell wählen wir standardmäßig "Normaler PC mit 105 Tasten (Int.)". Wählen Sie
im Layout zuerst "Andere", dann "Russisch" und dann die Option (nur "Russisch" oder besser für die vorhandene Tastatur geeignet).
Wählen Sie als Nächstes die Methode zum Wechseln von Layouts und anderen verschiedenen Tasten aus, wenn Sie möchten. Alles wird schnell genug wechseln. Es verbleibt im Hauptmenü von raspi-config, um zu Fertig stellen zu gelangen. Wir werden nicht wieder zu diesem Dienstprogramm zurückkehren.
Installieren und Konfigurieren zusätzlicher Software, die vom Projekt verwendet wird
Wir machen sudo apt installieren wiringpi samba sane. Ich habe mc zu dieser Liste (und zur Vorlesung) hinzugefügt und gezeigt, wie man mit ihm arbeitet, aber dies ist eine rein persönliche Präferenz, die ich niemandem auferlege.
Stellen Sie dann (vorzugsweise in den meisten Fällen) die permanente IP-Adresse auf die Malinka ein. Ich denke, es ist besser, dies auf einem Router zu tun, aber wenn dies nicht möglich ist, können Sie statische Netzwerkeinstellungen festlegen, indem Sie /etc/dhcpcd.conf nach dem Kommentar Beispiel statische IP-Konfiguration bearbeiten. Das dhcpcd-Paket ist im Lieferumfang des Raspberry Pi-Betriebssystems enthalten. Sie müssen es nicht installieren.
Die nächste Aufgabe besteht darin, ein Verzeichnis zum Speichern von Scandateien zu erstellen. Ich habe diesen Fall ausgewählt und das Verzeichnis / var / scanned erstellt. Für dieses Verzeichnis müssen solche Berechtigungen festgelegt werden, damit Samba damit arbeiten kann.
Jetzt konfigurieren wir natürlich Samba. Wir gehen zu /etc/samba/smb.conf und registrieren die globalen Einstellungen und den Abschnitt mit den Daten der neuen Netzwerkressource und dem Pfad zu dem dort erstellten Verzeichnis. Das Video zeigt es um 00:41:51 . Aber natürlich können die Besonderheiten des Netzwerks gewisse Unterschiede zu den dort angegebenen Einstellungen aufweisen.
Nach der Konfiguration wird dringend empfohlen, die Himbeere neu zu starten und das Netzlaufwerk vom Computer aus zu überprüfen. Von dort aus benötigen Sie in den meisten Fällen vollen Zugriff auf die Dateien im Verzeichnis.
Vor dem Übergang zu Handarbeiten und Programmierung haben wir noch zwei Aufgaben: Wir müssen uns für das Eisenteil entscheiden und zunächst die Parameter für das Scanprogramm ermitteln.
Beginnen wir mit dem Eisenteil. Führen Sie dazu gpio readall aus. Malinka zeigt die Nummerierung der Pins am GPIO-Anschluss in den physischen Spalten und ihren Zweck in den Spalten Name an. Für die Schaltung benötigen wir drei GPIO-Ports und ein gemeinsames Kabel (in der Spalte Name heißt es 0 V; es gibt viele davon am Anschluss, aber wir brauchen nicht so viel, wählen Sie einfach einen davon aus). Wir schreiben ihre Namen und Nummern auf den Stecker. Für mich selbst habe ich GPIO.1 an Pin 12, GPIO.2 an Pin 13 und GPIO.3 an Pin 15 gewählt. Ich werde das gemeinsame Kabel mit Pin 9 verbinden.
Entscheiden wir uns nun für den Scanner, den wir bereits an USB angeschlossen haben. Sudo sane-find-scanner. Wenn der Scanner mit diesem Dienstprogramm nicht sichtbar ist, liegt möglicherweise ein Problem mit dem Scanner, der Himbeere, dem Kabel oder der Stromversorgung vor. Dies muss separat behandelt werden. Führen Sie nun sudo scanimage –help | aus weniger und sehen Sie die Optionen für unser Gerät erlaubt. Für mich selbst werde ich die Optionen l, t, x, y, Auflösung und Format aufschreiben. Diese Optionen werden in der Befehlszeile des Scanprogramms angezeigt.
Damit ist die Ersteinrichtung der Himbeere abgeschlossen. Vor dem Zusammenbau der Schaltung muss die Himbeere ausgeschaltet werden. Wenn sich jemand nicht erinnert, geschieht dies jetzt mit dem Befehl sudo shutdown –h. Nach einer Weile verschwindet das Bild auf dem Bildschirm und alle LEDs an der Himbeere erlöschen mit Ausnahme der Power-LED. Dies bedeutet, dass das System nicht mehr funktioniert. Sie können den Strom abschalten und mit dem Basteln beginnen.
GPIO in Himbeeren ist nur digital (dh zweistufig 0 und 1) und kann in drei Modi arbeiten: nur ein Eingang (der Modus wird aufgerufen), ein Eingang mit einem Pull-up-Widerstand mit einem Widerstand von 50-65 Kilo Ohm (aufgerufen) und ein Ausgang (aufgerufen). Wir werden die letzten beiden Modi verwenden.
Wie ich bereits geschrieben habe, müssen wir zwei Tasten über GPIO (nennen wir sie "Start" und "Stop") und eine LED verbinden. Um den Strom zu begrenzen, müssen Sie natürlich einen Begrenzungswiderstand in Reihe schalten. Ich habe einen Ausgangswiderstand mit einem Nennwert von 2,2 Kiloohm und einer Verlustleistung von 0,25 W gewählt. das ist normalerweise genug. Das Anschlussdiagramm sieht wie folgt aus:
Denken Sie bei Verwendung des Aufwärtsmodus daran, dass beim Drücken der Taste der Wert 0 vom GPIO-Eingang gelesen wird und beim Loslassen - 1. Beide Tasten sind normalerweise ohne Fixierung geöffnet.
Ich werde hier nicht auf die Details der Hinrichtung eingehen, zumal ich zuvor ein Foto des fertigen Falles gezeigt habe, auf dem bereits alles war. Aus Sicherheitsgründen würde ich nur empfehlen, Knöpfe zu wählen, deren Außenteile vollständig aus Kunststoff bestehen, um nicht mit freiliegenden leitenden Teilen hervorzustehen. Ich habe die GPIO-Pins mit einpoligen BLS-Anschlüssen verbunden, ähnlich wie in Computergehäusen. Für diese Demo habe ich einfach ein paar Drähte aus Arduino-Projekten mit geeigneten Anschlüssen genommen, vier mehrfarbige ausgewählt, unnötige Enden abgebissen, gereinigt und bis ins Detail gelötet. Eine andere Möglichkeit ist die Verwendung eines 40-poligen Double-In-Line-Flachkabelsteckers oder sogar eines Teils eines alten IDE-Kabels von Festplatten oder CD-Laufwerken, falls jemand etwas anderes hat. Diese Option eignet sich übrigens auch für Fälle mit Standardhöhe.Sie haben einen Steckplatz für eine solche Schleife zur Ausgabe nach außen.
Nun, und ich erinnere mich auch, dass ich unter der Tatsache gelitten habe, dass auf den Himbeer-Boards (auf jeden Fall 2 Modell B und 3 Modell B) die Nummerierung der Pins des GPIO-Steckers nicht angegeben ist. Ich werde es jetzt reparieren; Diese beiden Modelle unterscheiden sich in dieser Hinsicht nicht.
Implementierung des Software-Teils
Der Softwareteil ist implementiert (tadam!) In Form von zwei Bash-Skripten - einer Konfiguration und einem Arbeitsskript. Eine ausführliche Erläuterung des Flussdiagramms und der Implementierung finden Sie im Video um 01:08:30 Uhr . Ich halte es nicht für sinnvoll, hier auf Details einzugehen. Quellcodes von Skripten kann heruntergeladen werden hier und in aller Ruhe untersucht.
Der Start des Hauptarbeitsskripts wird zum Starten in /etc/rc.local geschrieben. Das einzige - ich musste zuerst die Änderung des Arbeitsverzeichnisses in das Verzeichnis mit Skripten registrieren. Aber hier gibt es nichts Schreckliches, es beeinträchtigt nicht die weitere Arbeit. Vergessen Sie natürlich nicht, das Symbol & nach dem Startbefehl hinzuzufügen, da sonst Probleme beim Laden des Systems auftreten.
Nun, dann blieb es eigentlich nur, um den tatsächlichen Scanvorgang sowie die SSH-Verbindungen und das Optimieren der Parameter zu zeigen - so wie es bei mir war. Sie können es im Video um 01:41:04 sehen .
Irgendwie ist es passiert. In der Kampfversion wird von den Unterschieden nur das Scannen an einen separaten NAS gesendet, sodass die Skripte geringfügig geändert werden. Ich denke, Scans können sogar irgendwo mit einem Bot an den Messenger gesendet werden. Es besteht nur der Wunsch, die entsprechende API zu verstehen und so etwas bei Curl zu tun. Es gibt viele Möglichkeiten. Viel Glück bei der Umsetzung. :) :)