Sisällysluettelo:

Avainsortti: 6 vaihetta
Avainsortti: 6 vaihetta

Video: Avainsortti: 6 vaihetta

Video: Avainsortti: 6 vaihetta
Video: Как спрятать данные в ячейках Excel? 2024, Marraskuu
Anonim
Avainsortti
Avainsortti
Avainsortti
Avainsortti

Opiskelen tällä hetkellä NMCT: tä Howestissa. Viimeistä lukukautta varten meidän oli tehtävä projekti. Joten tein avainsortin.

Mitä se tekee?

Meillä on paljon auton avaimia kotona ja ne kaikki näyttävät samalta. Joten tein avainsortin tämän ongelman ratkaisemiseksi.

Sen on skannattava avain RFID: n kautta ja annettava sille paikka laatikossa. Jos skannaan saman avaimen uudelleen, se näyttää hänen aiemmin määrittämänsä paikan. Siellä on myös painike, joka näyttää viimeksi pestyn auton.

Tämä toimii myös Raspberry Pi: llä, jolla on myös mahdollisuus lisätä verkkosivu Flaskin kautta.

Sivulla minun pitäisi voida katsoa kaikki avaimet, lisätä nimi avaimeen ja poistaa avain.

Vaihe 1: Vaihe 1: Mitä tarvitsen?

Vaihe 1: Mitä tarvitsen?
Vaihe 1: Mitä tarvitsen?
Vaihe 1: Mitä tarvitsen?
Vaihe 1: Mitä tarvitsen?

Aloitin tekemällä luettelon komponenteista, jotka minun on saatava toimimaan.

Komponentit:

  • Vadelma pi
  • 2 x vuororekisteri (74hc595)
  • 3 x painiketta
  • 9 x vihreää lediä
  • RFID -skanneri (MFRC522)
  • 12 x vastus 220 ohmia

Sitten laitoin kaiken tämän fritzing -kaavioon.

Kun tämä oli tehty, onnistuin tosielämässä.

Vaihe 2: Vaihe 2: Tietokannan kaavion luominen

Vaihe 2: Tee tietokantakaavio
Vaihe 2: Tee tietokantakaavio

Tietojeni tallentamiseksi minun piti luoda tietokanta, joka voisi toimia Pi -laitteellani.

Tein sen Mysqlissä.

Pöytäauto:

  • Auton tunnus
  • käyttäjätunnus
  • Merkki (automerkki)
  • Tyyppi
  • Viimeksi pesty
  • Avain
  • RFID_ID

Vaihe 3: Vaihe 3: Koodaus

Vaihe 3: Koodaus
Vaihe 3: Koodaus

Kun kaikki tämä oli valmis, voisin aloittaa koodauksen.

Aloitin tekemällä anturini koodin Python 3.5: ssa.

Voit ladata koodin napsauttamalla tätä.

Käytä linkkiä projektin kloonaamiseen.

Vaihe 4: Vaihe 4: Al -koodin asettaminen Raspberry Pi: lle

Pakettien asentaminen

Asensin ensin kaikki paketit, joita tarvitsin tämän toimimiseksi.

me@my-rpi: ~ $ sudo apt päivitys

me@my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Virtuaalinen ympäristö

me@my-rpi: ~ $ python3 -m pip install-upgrade pip setuptools wheel virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 me@my-rpi: ~/project1 $ python3 -m venv --systeemi- sivusto-paketit env me@my-rpi: ~/project1 $ source env/bin/aktivoi (env) me@my-rpi: ~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Lataa projekti Pi -laitteellesi pycharmin avulla

Avaa Pycharm ja siirry kohtaan VCS> Tuo Versionhallinnasta> Github ja kloonaa github -tiedostoni.

Laita käyttöönottoasetukset juuri tekemääsi hakemistoon. (/koti/minä/projekti1). Paina hae!

Siirry tulkin asetuksiin ja valitse juuri tekemäsi virtuaalinen ympäristö. (/home/me/project1/fi/bin/pyhon)

Tarkista, onko polun kartoitus oikein.

Nyt voit ladata koodin hakemistoosi Pycharmin avulla.

Tietokanta

Tarkista, onko tietokanta käynnissä. Sinun pitäisi saada jotain tällaista:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB -tietokantapalvelin Ladattu: ladattu (/lib/systemd/system/mariadb.service; käytössä; valmistajan esiasetus: käytössä) Aktiivinen: aktiivinen (käynnissä) su 2018-06-03 09:41:18 CEST; 1 päivä 4 tuntia sitten Pää PID: 781 (mysqld) Tila: "Otetaan SQL -pyyntösi nyt…" Tehtävät: 28 (raja: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld

Kesäkuu 09 09:41:13 my-rpi systemd [1]: Käynnistetään MariaDB-tietokantapalvelin… kesäkuu 03 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Huomautus] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) kesäkuu 03 09:41:18 my-rpi systemd [1]: Käynnisti MariaDB-tietokantapalvelimen.

minä@my -rpi: ~ $ ss -lt | grep mysql KUUNTELE 0 80127.0.0.1:mysql *: *

Luo käyttäjiä ja lisää tietokanta

minä@my-rpi: ~ $ sudo mariadb

Kun olet tietokannassa, tee tämä.

LUO KÄYTTÄJÄ 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; LUO KÄYTTÄJÄ 'project1-sensor'@'localhost' TUNNISTAA 'sensorpassword';

CREATE DATABASE -projekti1;

MYÖNNÄ KAIKKI ERIKOISUUDET PROJEKTIIN1. GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; Huuhteluoikeudet;

CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) MOOTTORI = InnoDB DEFAULT CHARSET = utf8

LUO TAULUKKO `auto` (` idCar` int (11) NOT NULL AUTO_INCREMENT, `idUser` int (11) NOT NULL,` Brand` varchar (45) DEFAULT NULL, `Type` varchar (45) DEFAULT NULL,` LastWashed` päivämäärän oletusarvo NULL, "RFID_Number" varchar (15) DEFAULT NULL, "Key" varchar (5) DEFAULT NULL, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`) `CONSTRAIN ULKOPAINIKE ("idUser") REFERENCES "user" ("idUser") POISTA EI TOIMIA PÄIVITTÄMISESSÄ EI TOIMIA) MOOTTORI = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Yhdistä tietokanta Pycharmiin

Napsauta tietokannan välilehteä oikealla puolella. Jos välilehti ei ole auki, toimi seuraavasti: Näytä> Työkalu Windows> Tietokanta.

Napsauta Lisää yhteys. Valitse Tietolähde> MySQL (Jos painikkeen latausohjain on käytettävissä, paina sitä.)

Siirry kohtaan SSH/SSL ja tarkista SSH. Täytä Raspberry pi -tietosi (isäntä/käyttäjä/salasana). Portin pitäisi olla 22, äläkä unohda tarkistaa salasanan muistamista.

Palaa takaisin kenraaliin. Isännän tulee olla localhost ja tietokannan tulee olla project1. Täytä tunnistetiedot osoitteesta project1-admin fi testaa yhteys.

Jos yhteys on kunnossa, siirry välilehdelle Kaaviot ja varmista, että projekti1 on valittu.

Tarkista, onko tietokanta oikein

me@my-rpi: ~ $ echo 'näytä taulukot;' | mysql project1 -t -u project1-admin -pAnna salasana: + --------------------------- + | Taulukot_hankkeessa1 | + ---------------------------+ | anturi | | käyttäjät | +---------------------------+

Asetustiedostot

Hakemistosta conf löydät 4 tiedostoa. Sinun pitäisi vaihtaa käyttäjätunnukset käyttäjänimeksi.

Systemd

Aloittaaksesi kaiken sinun tulee suorittaa nämä komennot.

me@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/

me@my-rpi: ~/project1 $ sudo systemctl daemon-lataa minut uudelleen@my-rpi: ~/project1 $ sudo systemctl aloita projekti1-* minä@my-rpi: ~/project1 $ sudo systemctl status project1-* ● project1- flask.service-uWSGI-ilmentymä palvelemaan project1-web-käyttöliittymää Ladattu: ladattu (/etc/systemd/system/project1-flask.service; pois käytöstä; toimittajan esiasetus: käytössä) Aktiivinen: aktiivinen (käynnissä) ma 2018-06-04 13: 14:56 CEST; 1 s sitten Pää PID: 6618 (uwsgi) Tehtävät: 6 (raja: 4915) CGroup: /system.slice/project1-flask.service ├─6618/usr/bin/uwsgi --ini/home/me/project1/conf/ uwsgi-flask.ini ├─6620/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621/usr/bin/uwsgi --ini/home/me/project1/ conf/uwsgi-flask.ini ├─6622/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623/usr/bin/uwsgi --ini/home/me/ project1/conf/uwsgi-flask.ini └─6624/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini

Kesäkuu 04 13:14:56 my-rpi uwsgi [6618]: kartoitettu 383928 tavua (374 kt) 5 ytimelle Kesäkuu 04 13:14:56 my-rpi uwsgi [6618]: *** Toimintatila: preforking ***

● project1-sensor.service-Project 1 -anturipalvelu Ladattu: ladattu (/etc/systemd/system/project1-sensor.service; pois käytöstä; toimittajan esiasetus: käytössä) Aktiivinen: aktiivinen (käynnissä) ma 2018-06-04 13: 16:49 CEST; 5 s sitten Pää PID: 6826 (python) Tehtävät: 1 (raja: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

Kesäkuu 04 13:16:49 my-rpi systemd [1]: Aloitti Project 1 -anturipalvelun. Kesäkuu 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: tallennettu anturiprosessi_luku = b'217 / n 'tietokantaan kesäkuu 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Anturin prosessi_luku = b'218 / n 'tallennettu tietokantaan

nginx

minä@my-rpi: ~/project1 $ ls -l/etc/nginx/sites-*

/etc/nginx/sites-available: yhteensä 4 -rw-r-r-- 1 juurijuuri 2416 12. heinäkuuta 2017 oletus

/etc/nginx/sites-enabled: yhteensä 0 lrwxrwxrwx 1 juurijuuri 34.1. 18 13:25 oletus->/etc/nginx/sites-available/default

Jos haluat tehdä kaiken oletuksena, suorita nämä komennot.

me@my-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1me@my-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/default me@my- rpi: ~/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1 me@my-rpi: ~/project1 $ sudo systemctl käynnistä nginx.service

Automaattinen käynnistys

Varmista, että kaikki käynnistyy automaattisesti.

Mene conf -hakemistoon ja suorita nämä viimeiset komennot ja olet valmis!

me@my-rpi: ~/project1 $ sudo systemctl ota käyttöön projekti1-*

Jos käynnistät Pi uudelleen, sen pitäisi käynnistyä automaattisesti.

Vaihe 5: Vaihe 5: Kotelon tekeminen

Vaihe 5: Asunnon tekeminen
Vaihe 5: Asunnon tekeminen
Vaihe 5: Asunnon tekeminen
Vaihe 5: Asunnon tekeminen
Vaihe 5: Asunnon tekeminen
Vaihe 5: Asunnon tekeminen
Vaihe 5: Asunnon tekeminen
Vaihe 5: Asunnon tekeminen

Kierrätys

Asuntooni käytin vanhaa kaappia, jonka äitini heitti pois.

pohja

Sahoin 4 lankkua (34 cm x 26 cm). (joten se on kuutio 34 x 34 x 26).

Pohjaan lisäsin ohuen puukappaleen.

Hallitus ledien kanssa

Keskelle olen laittanut 2 pientä puupalaa kummallekin puolelle, molemmat 9 cm: n päässä ylhäältä. Tämä pitää hallituksen, jossa ledit istuvat.

LED -lauta on pieni levy (32 cm x 32 cm).

Porasin 9 reikää, jotta ledit tulisivat ulos.

jako

Tein jaon samasta materiaalista kuin pohja ja lauta led -valolla.

4 kappaletta, joissa on viilto 10,3 cm (9 cm x 31 cm). Nyt voin laittaa ne yhteen.

Painikkeet ja RFID -lukija

Tein pohjaan reiän laittaakseni RFID -lukijani ja painikkeet sisään. RFID: tä varten laitoin ohuen palan sen eteen, jotta se näyttäisi puhtaammalta.

Vaihe 6: Vaihe 6: Laita kaikki koteloon

Tämä riippuu siitä, miten haluat tehdä sen. Itse käytin paljon kaapeleita ilman juottamista, koska haluan pystyä käyttämään Raspberry Pi -laitteeni uudelleen.

Liimasin ledit paikalleen ja teipasin RFID -lukijan ja leipälevyt koteloon.

Ja näin teet avainsortin!

Suositeltava: