Taula de continguts:

Distribuïdor automàtic de targetes: 7 passos
Distribuïdor automàtic de targetes: 7 passos

Vídeo: Distribuïdor automàtic de targetes: 7 passos

Vídeo: Distribuïdor automàtic de targetes: 7 passos
Vídeo: Берегись автомобиля (FullHD, комедия, реж. Эльдар Рязанов, 1966 г.) 2024, Desembre
Anonim
Distribuïdor automàtic de targetes
Distribuïdor automàtic de targetes

He triat un distribuïdor de targetes intel·ligents com a primer projecte perquè m’agrada jugar a un joc de cartes. El que més no m’agrada és repartir cartes. Cal recordar per cada joc quantes cartes rep cada persona. Això es confon quan es coneixen molts jocs de cartes. El meu projecte també ajudarà a les persones que tenen problemes amb la distribució de targetes com persones grans i persones que pateixen Parkinson.

Subministraments

  • 1 Raspberry Pi (he utilitzat un Raspberry Pi 4)
  • Targeta SD (es recomana 16 GB)
  • 1 tros de pa per a Raspberry Pi (peça en T)
  • 2 taulers de suport
  • 1 mòdul d'alimentació per taulers de pa, 5V i 3V3
  • 1 pantalla LCD
  • 1 Potenciòmetre
  • 1 MPU6050 (acceleròmetre i giroscopi)
  • 1 transistors NPN
  • 1 expansor d'E / S PCF8574N
  • 1 motor pas a pas
  • 1 placa de ruptura ULN2003 per controlar el motor pas a pas
  • 1 sensor d'ultrasons HC-SR04
  • 1 motors DC de 5V
  • 1 díodes
  • 6 resistències de 470 Ohm
  • 4 resistències de 10K Ohm
  • Cable elèctric per connectar-ho tot

Útil durant la realització de:

  • Soldador
  • Soldar
  • Dremel o serra de tallar (alguna cosa per tallar fusta i plàstic abdominal)

Programari:

  • Massilla
  • Banc de treball MySQL
  • Imatge de disc Win32
  • Editor de codi (recomano Visual Studio Code)
  • WinSCP
  • Imatge Raspbian

Pas 1: Preparació del Rasperry Pi

Primer hem de preparar el Raspberry Pi abans de fer qualsevol altra cosa. Com que tot funcionarà amb el Pi, de manera que aquesta és una de les peces més importants del distribuïdor de targetes.

Instal·lació:

Descarregueu la imatge de Raspbian des de

  1. Descarregueu el fitxer ZIP
  2. Extraieu el fitxer ZIP per trobar-lo fàcilment
  3. Obriu Win32 Disk Imager i seleccioneu la imatge extreta
  4. Seleccioneu la targeta SD al menú desplegable i feu clic a escriu
  5. Un cop fet el procés d'escriptura, podeu tancar el Win32 Disk Imager

Ara hem de fer algunes coses més abans de connectar-nos al Pi

  1. Aneu a la carpeta d’arrencada de la targeta SD
  2. Obriu el fitxer cmdline.txt
  3. Afegiu 'ip = 169.254.10.1' al final de la línia separat amb un espai
  4. Deseu i sortiu del fitxer
  5. Creeu al mateix directori un fitxer anomenat ssh i elimineu l'extensió (activarà ssh al primer arrencada per poder connectar-nos al Pi)
  6. Expulseu la targeta SD amb seguretat i poseu-la al Pi

Ara ens podem connectar al Pi:

  1. Agafeu un cable Ethernet i inseriu un extrem al Pi i l’altre extrem a l’ordinador
  2. Obre Massilla
  3. Introduïu 169.254.10.1 al camp Nom de l'amfitrió
  4. Assegureu-vos que SSH estigui seleccionat i que el port sigui 22
  5. Feu clic a obre
  6. Si rebeu un avís, podeu continuar i ignorar-lo
  7. El nom d’usuari és pi i la contrasenya és raspberry

Configuració i instal·lació de programari:

Obriu raspi-config amb l'ordre següent:

sudo raspi-config

Seleccioneu la 5a opció: Opcions d'interfície

Activeu SPI i I2C

Desactiveu les opcions següents a la tercera opció: Opcions d'arrencada:

  • Pantalla de benvinguda
  • Trieu cli per a l’inici i no per a l’escriptori

Configuració de Wifi:

El Wifi és útil per navegar fàcilment cap al lloc web. Assegureu-vos que tingueu a prop les vostres credencials de wifi.

Per configurar el wifi necessitem algunes coses:

Afegiu el vostre wifi mitjançant aquesta ordre i canvieu SSID i CONTRASENYA a la vostra informació:

sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf

Executeu aquesta ordre per tornar a configurar el vostre wifi:

sudo wpa_cli

Seleccioneu la interfície correcta:

interfície wlan0

Torneu a configurar la interfície:

reconfigurar

Comproveu si la reconfiguració ha estat correcta amb aquesta ordre:

ip a

Si veieu una adreça IP a la interfície wlan0, tot està configurat.

Actualització del sistema operatiu

Actualitzeu el sistema operatiu amb aquestes 2 ordres:

actualització sudo apt

sudo apt actualització completa

Configuració de MariaDB:

Instal·lació del servidor web Apache:

sudo apt install apache2 -y

Instal·lació del servidor MariaDB:

sudo apt install mariadb-server -y

Ara hem de reiniciar:

sudo reiniciar

Es recomana assegurar la instal·lació de MariaDB. Podeu fer-ho executant aquesta ordre:

sudo mysql_secure_installation

Primer se us demanarà la contrasenya de root actual, però la instal·lació predeterminada no en té cap, així que premeu Intro.

A continuació, se us demanarà si voleu establir una contrasenya root, escriviu y. Assegureu-vos que recordeu la contrasenya.

  • Introduïu y per eliminar usuaris anònims
  • Introduïu y per desactivar l'inici de sessió de root remotament
  • Introduïu y per eliminar les bases de dades de prova i accedir-hi
  • Introduïu y per tornar a carregar privileges

La vostra instal·lació de MariaDB hauria de ser segura.

Ara podem crear un usuari nou:

Introduïu l'intèrpret d'ordres mysql amb aquesta ordre:

sudo mysql

Creeu un usuari amb el nom d'usuari mysql i una contrasenya (your_password) les ordres següents:

creeu l'usuari mysql @ localhost identificat per "your_password";

concedeix tots els privilegis a *. * a mysql @ localhost;

PRIVILEGIS DE FLUSH;

Sortiu de l'intèrpret d'ordres mysql amb aquesta ordre:

sortida;

Paquets Python:

Python ja hauria d'estar instal·lat tret que trieu la versió Lite:

sudo apt instal·lar python3-pip

Necessitem una bona quantitat de paquets Python, podeu instal·lar-los tots amb l'ordre següent:

pip3 instal·la mysql-connector-python flask-socketio flask-cors gevent gevent-websocket

Ara hem de reiniciar una vegada més

sudo reiniciar

Pas 2: Configuració de Visual Studio Code i MySQL Workbench

Connexió al Pi amb MySQL Workbench:

Obriu MySQL Workbench

Feu una nova connexió al Pi amb la informació següent:

  • Nom de la connexió: Raspi
  • Mètode de connexió: TCP / IP estàndard sobre SSH
  • Nom d'amfitrió SSH: adreça IP del Pi

Podeu obtenir l'adreça IP amb aquesta ordre:

ip a

  • Nom d'usuari SSH: pi
  • Nom d’amfitrió MySQL: 127.0.0.1
  • Port del servidor MySQL: 3306
  • Nom d'usuari: mysql

Feu clic a D'acord i introduïu la contrasenya per a l'usuari pi i, a continuació, introduïu la contrasenya per a l'usuari mysql.

Configuració del codi de Visual Studio:

Obriu el codi Visual Studio

Instal·leu aquestes 2 extensions:

  • Remot: SSH
  • Remot - SSH: Edició de fitxers de configuració

Premeu Visual Studio Code F1 i escriviu ssh

Trieu SSH remot: afegiu un nou host SSH

Empleneu l'adreça IP ssh pi @

Al següent pas, premeu Intro

La connexió es fa ara amb el Pi. Podeu connectar-vos al Pi prement F1 i seleccionant connectar a l’amfitrió remot.

Introduïu la contrasenya perquè el Visual Studio Code tingui accés al Pi.

Una cosa més: instal·leu l'extensió Python a la màquina remota perquè pugueu executar i depurar codi fàcilment.

Pas 3: diagrama Fritzing

Diagrama Fritzing
Diagrama Fritzing
Diagrama Fritzing
Diagrama Fritzing
Diagrama Fritzing
Diagrama Fritzing

En aquest pas explicaré el circuit.

Els esquemes anteriors estan fets amb Fritzing.

Motor de corrent continu:

Connecteu GPIO 18 a la base del col·lector, el pin central d’un transistor npn. Connecteu la terra del motor al col·lector des del transistor i la potència del motor a 5V. Connecteu la terra del transistor a la línia de terra. Connecteu el diode a la barrera sobre el motor perquè impedeixi que el corrent flueixi directament al transistor.

Motor pas a pas:

Connecteu el motor pas a pas a la placa de control. Al tauler de control hi ha pins d'un costat per connectar 5V i terra. Els altres pins són pins de control. Aquests passadors controlen els imants a l'interior del motor perquè pugui girar. Connecteu aquests pins a GPIO 12, 16, 20 i 21 al Raspberry Pi.

HC-SR04 per ultrasons:

Aquest sensor pot mesurar distàncies fins a uns 4,5 metres mitjançant el so.

Connecteu el pin VCC al 5V, el pin del disparador a GPIO 25, el pin eco amb una resistència de 470 Ohm a GPIO 24 i la terra amb una resistència de 470 Ohm a terra.

MPU6050:

Connecteu el pin VCC a 3V3, terra a terra, scl a scl del Pi i sda a sda al Pi. Per a aquest sensor faig servir I2C per controlar-lo. Podeu llegir-ne més informació aquí. Aquí teniu una explicació bàsica: el Pi és el mestre i el MPU6050 és l’esclau. A través de la línia scl, el Pi controla els temps i la línia sda s'utilitza per enviar dades del mestre a l'esclau o de l'esclau al mestre. Només el mestre pot iniciar la transferència de dades.

La resistència de la llum depenia:

Per obtenir lectures correctes del LDR, faig servir un xip MCP3008. Això assegura que les lectures del ldr siguin estables i correctes convertides de senyals analògiques a digitals.

Connecteu 3V3 a un costat del ldr amb una resistència de 10K Ohm. Entre el ldr i la resistència connecteu un cable al canal 0 del MCP3008. A continuació, connecteu l’altre costat del ldr a terra.

Pantalla LCD:

Podeu utilitzar la pantalla LCD sense un PCF8574, però com que els pins GPIO del Pi són limitats, faig servir un PCF8574 per desar alguns pins GPIO. També podeu utilitzar un registre de torns, però prefereixo un PCF8574. Podeu controlar el PCF8574 amb el protocol SMbus, però he escrit la meva pròpia classe per controlar-lo. El potenciòmetre controla el contrast.

Pins de pantalla LCD:

  • VSS a terra
  • VDD a 5V
  • V0 al pin variable del potenciòmetre
  • RS a GPIO 13
  • R / W a terra perquè només escric a la pantalla i no llegeixo
  • E a GPIO 19
  • DB0 a P0 del PCF
  • DB1 a P1
  • DB2 a P2
  • DB3 a P3
  • DB4 a P4
  • DB5 a P5
  • DB6 a P6
  • DB7 a P7
  • LED + a 5V
  • LED a terra

PCF8574 pins:

  • A0 a terra
  • A1 a terra
  • A2 a terra
  • Terra a terra
  • VCC a 5V
  • SDA a GPIO 27
  • SCL a GPIO 22 amb resistència de 330 Ohm

És possible que no tingueu LED + i LED- en funció del tipus de pantalla que tingueu. LED + i LED- són per a la llum de fons.

Connecteu el costat positiu del potenciòmetre a 5V i el terra a terra.

Assegureu-vos que utilitzeu resistències pull-up.

Pas 4: Codi a Github

Podeu trobar tot el codi necessari al meu Github.

Projecte de carpeta 1:

Aquesta carpeta conté tot el codi del dorsal. A la carpeta Klasses hi ha totes les classes per controlar el maquinari.

Els repositoris de carpetes contenen 2 fitxers: Database.py i DataRepository.py. Database.py manté la connexió a la base de dades i gestiona les consultes. DataRepository.py conté totes les consultes necessàries per al lloc.

App.py és el fitxer principal del dorsal. Aquest fitxer s'inicia automàticament quan arrenca el Pi.

Config.py conté alguns paràmetres per connectar-se a la base de dades. Assegureu-vos que empleneu aquests fitxers amb la vostra pròpia informació.

Podeu col·locar aquesta carpeta a qualsevol lloc del directori inicial.

Carpeta html:

Aquesta carpeta conté tots els fitxers del lloc, el frontend.

  • La carpeta conté els fitxers per al disseny del lloc.
  • Fonts conté els tipus de lletra utilitzats al lloc.
  • L'escriptura conté tots els fitxers Javascript per dinamitzar el lloc

Aquesta carpeta ha de ser a la carpeta / var / www / html

Podeu copiar un fitxer o carpeta amb aquesta ordre:

sudo mv / path / to / current / directory / path / to / destination / directory

Per navegar al lloc, escriviu al vostre navegador l'adreça IP que es mostra a la pantalla LCD.

Pas 5: estructura normalitzada de la base de dades

Estructura de base de dades normalitzada
Estructura de base de dades normalitzada

En aquest pas, importarem la base de dades.

  1. Connecteu-vos al vostre Raspberry Pi amb MySQL Workbench
  2. Feu clic a Servidor -> Importació de dades
  3. Seleccioneu Importa fitxer autònom
  4. A la carpeta Database-export from Github hi ha un fitxer sql anomenat dump_project1.sql
  5. Cerqueu aquest fitxer i feu clic a Inicia la importació

Això és. Ara, el Pi pot accedir a la base de dades si disposa de la informació correcta.

Pas 6: Funda per al distribuïdor de targetes

Funda per al distribuïdor de targetes
Funda per al distribuïdor de targetes
Funda per al distribuïdor de targetes
Funda per al distribuïdor de targetes
Funda per al distribuïdor de targetes
Funda per al distribuïdor de targetes

En aquest pas explicaré què he utilitzat per al cas i com he muntat tot.

Per al cas he utilitzat 2 caixes ABS:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Els forats que vaig fer a les caixes

Un forat per a la pantalla LCD, 3 forats per als cables d'alimentació, un per als cables del motor pas a pas, el motor de CC i el sensor d'ultrasons.

A la caixa més petita vaig fer un forat per als cables dels components i un forat per passar les cartes. A la part superior he fet el forat més gran perquè pugueu col·locar cartes al dispositiu.

Vaig muntar el motor de corrent continu amb un suport i una cinta de doble cara. Vaig fer un tauler de fusta per posar les cartes amb un forat perquè la roda disparés una carta.

He triat el plàstic ABS perquè és lleuger, de manera que el motor pas a pas el pot girar fàcilment. La fusta pot ser molt pesada i el motor pas a pas pot tenir problemes amb això. Per tallar els forats he utilitzat un trepant amb broques dissenyades per a metall i un Dremel. Tallar els forats més grans requeria molta més feina i seria millor una serra de plantilla.

Pas 7: Programa com a servei

És realment útil que el codi comenci després d’iniciar el Pi. Per a això farem un servei.

Creeu un fitxer nou anomenat smartcard.service amb l'ordre següent:

sudo nano /etc/systemd/system/smartcard.service

Això ha d’entrar al fitxer:

[Unitat]

Descripció = Backend de targeta intel·ligent After = network.target [Servei] ExecStart = / usr / bin / python3 -u app.py WorkingDirectory = / home / pi / project1 StandardOutput = hereta StandardError = hereta Reinicia = sempre Usuari = pi [Instal·la] WantedBy = objectiu multi-usuari WorkingDirectory és el camí cap a la carpeta on es troba el programa

Ara tens la teva pròpia targeta intel·ligent!

Recomanat: