Docházkový systém s Raspberry Pi Zero W

Od posledního příspěvku jsem zvládl vyrobit dalšího potomka a čas na projekty se tím výrazně krátí. I přesto bych se s vámi dnes rád podělil o milý projekt, který jsem dělal pro jednu lokální firmu. Jedná se o docházkový systém založený na RPi zero W.

Co to umí – očividně evidovat příchody a odchody. Automatická synchronizace docházky na server přes curl, synchronizace záznamů zaměstnanců / „pozdravů“ do docházky přes wget. Dále to umí pípat, mluvit a pořizovat fotky.

Vše obsluhuje skript (moje pythoní prvotina), který běží v systemd jako služba. V daném skriptu jsou dvě vlákna. Jedno obsluhuje čtečku s kamerou a druhé display a tlačítka. (Mám tam spousty volání do shellu – chtěl jsem si ulehčit život)

Funguje to tak, že si zaměstnanec navolí příchod, nebo odchod. Následně přiloží RFID čip. Pří načtení čipu se udělá fotka (pro zpětnou kontrolu, zda pípal povolaný člověk) a na display se zobrazí jeho jméno. Ve screenu se pustí synchronizace se serverem, kam se nahraje foto a odeslaný záznam. V případě nedostupného serveru se data uchovávají na RPi a jsou jednou za čas usypávána přes cron. Po volání sync je přehrán přes hlasovou syntézu pozdrav. Použitý zesilovač má jeden pin MUTE – mimo zdravení je vypnutý (v repráčkách občas porůznu nelibě chrastilo).

Většinu dat co zapisuji/čtu držím v /dev/shm, abych zbytečně nezatěžoval kartu.

Materiál

RPi Zero W – https://rpishop.cz/raspberry-pi-zero/647-raspberry-pi-zero-w-4053199547425.html
40 pin header – https://rpishop.cz/headery/667-raspberry-pi-zero-male-header-220-pinu.html
16×2 LCD s I2C řadičem – https://rpishop.cz/displeje/1428-16×2-lcd-i2c-displej-modry.html
RPi kamera – https://rpishop.cz/kamery/22-originalni-kamera-pro-raspberry-pi-camera-board-5mb-rev-13.html
kabel pro kameru – https://rpishop.cz/krabicky-doplnky/695-raspberry-pi-zero-kamera-kabel-15cm.html
RFID čtečka – https://rpishop.cz/senzory/1327-rfid-ctecka-rc522.html
2x mikrospínač – https://rpishop.cz/tlacitka-spinace/1320-mikrospinac-cerna.html
2x tlačítko – https://rpishop.cz/makerbuino/1201-475-makerbuino-barevne-tlacitko.html#/62-barva-cerna
aktivní bzučák – https://rpishop.cz/bzucaky/1324-aktivni-bzucak.html (měl jsem bez desky zapojení jsem si udělal toto – https://startingelectronics.org/tutorials/arduino/modules/active-buzzer/arduino-active-buzzer-circuit.png)
3W zesilovač – https://www.aliexpress.com/item/32750718067.html?spm=a2g0s.9042311.0.0.27424c4daPubDe
repro – ze starého ntb – co dům dal
USB zvukovka – https://rpishop.cz/zvukove-karty/114-usb-hq-zvukova-karta-axago-ada-17-mini.html
USB redukce – https://rpishop.cz/redukce/668-raspberry-pi-zero-usb-adapter.html
kus ustřiženého kabelu s 3,5 jack ze sluchátek
2x 220 ohm rezistor pro připojení tlačítek
2k2 ohm rezistor pro 16x2LCD I2C driver na redukci jasu
propojovací kabely – https://rpishop.cz/propojky/108-88-wire-jumpers-male-to-female-10-pcs.html#/54-delka-20_cm
napájecí zdroj – https://rpishop.cz/zdroje/167-esp-2a5v-napajeci-zdroj-vyvod-5521.html
female konektor pro připojení zdroje (použil jsem opět co dům dal) – https://rpishop.cz/2034-55-x-21mm-dc-napajeci-zasuvka.html
smršťovací bužírky – https://rpishop.cz/sady-soucastek/2053-smrstovaci-buzirky-cerne-ruzne-prumery-ruzne-delky.html
šroubky, vruty – co dům dal

Popravdě většina věcí lze sehnat výrazně levněji na aliexpressu, ale byl jsem líný se s výčtem součástek přepisovat.

 

Nářadí

frézka
tavná pistole
mikropájka
krimplovací kleště
šroubovák
3D tiskárna

 

Podklady pro 3D tisk

https://3dwarehouse.sketchup.com/model/05773d9c-b109-42e0-af10-be5888409f38/Dochazka-box
https://3dwarehouse.sketchup.com/model/691efc80-b17d-42ec-b74f-b6ccf98393be/Dochazka-lid
https://3dwarehouse.sketchup.com/model/b1ce1bca-370d-4938-8533-44c13b29d8f5/Dochazka-button-holders

Instalace

sudo apt update
sudo apt upgrade
sudo apt install festival festival-czech screen

program (rozbalit do /home/pi/)
https://hwlab.cz/wp-content/uploads/2020/02/dochazka.tar.gz

nastavení (/etc/systemd/system/dochazka.service)
https://hwlab.cz/wp-content/uploads/2020/02/dochazka.service

sudo systemctl enable dochazka.service
sudo systemctl start dochazka.service

/etc/crontab
https://hwlab.cz/wp-content/uploads/2020/02/crontab

/etc/rc.local
https://hwlab.cz/wp-content/uploads/2020/02/rc.local

 

Webserver

Zdrojáky na webserveru (bez komentářů – jen dotaz pro výpis stávajícího měsíce je takové harakiri, že ho ani nedoporučuji hlouběji analyzovat :)) Ve finále šlo o to udělat co nejjednodušší interface, se základní správou.

https://hwlab.cz/wp-content/uploads/2020/02/web.tar.gz – po rozbalení je nutné nakonfigurovat soubor config.inc.php

Databáze – je nutné naimportovat tyto dvě tabulky:

CREATE TABLE IF NOT EXISTS `attendance` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tag` varchar(200) COLLATE utf8_czech_ci NOT NULL,
  `t` int(11) NOT NULL,
  `inout` varchar(200) COLLATE utf8_czech_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=10 ;

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(200) COLLATE utf8_czech_ci NOT NULL,
  `surname` varchar(200) COLLATE utf8_czech_ci NOT NULL,
  `greeting` varchar(200) COLLATE utf8_czech_ci NOT NULL,
  `bye` varchar(200) COLLATE utf8_czech_ci NOT NULL,
  `tag` varchar(200) COLLATE utf8_czech_ci NOT NULL,
  `lastchange` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=14 ;

 

Finální produkt

 

 

Pár obrázků z backendu:
1, login

2, přehled uživatelů

3, detail uživatele s rozklinutým obrázkem z daného času (i s objednatelem 🙂 )

schéma zapojení

třeba časem 🙂

Přílohy

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *