Sisukord:
- 1. samm: kontseptsiooni ja prototüüpide tõestamine
- Samm: materjalid ja tööriistad
- Samm: esipaneel - LCD -ekraan
- Samm: esipaneel - oleku LED -id
- Samm: esipaneel - nupud
- 6. samm: toitepistik
- Samm: kõik kokku panemine
- 8. samm: vaikne konfigureerimine
- 9. samm: tarkvara juurutamine
- 10. samm: kasutusjuhend
- 11. samm: vabastamine
- 12. samm: KKK
Video: Lihtne Kickeri oleku- ja reserveerimissüsteem koos lõdva integreerimisega: 12 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Ettevõttes, kus ma töötan, on kicker -laud. Ettevõte asub paljudel korrustel ja mõnel töötajal kulub laua juurde jõudmiseks kuni 3 minutit ja … mõistmaks, et laud on juba hõivatud.
Seetõttu tekkis idee luua omamoodi lihtne olekuülekande- ja broneerimissüsteem, mis töötab reaalajas.
Ettevõte kasutab Slacki suhtlusvahendit, kus igal töötajal on konto. Meil on isegi #kicker kanal ainult aruteludeks … kickerist. Kanalit saab kasutada omamoodi "sisenemispunktina" broneerimiseks ja teavitamiseks praeguse tabeli olekust.
Nagu tavaliselt, on sellise süsteemi käsitlemiseks palju kontseptsioone. Kuid üldiselt ilmnes neis kõigis üks põhireegel: süsteemi kasutamine peab olema lihtne ja ilma liigsete toiminguteta.
Seade ja teenus pole kleebislaua külge kinnitatud ja neid saab kasutada mis tahes "ühise ressursi" jaoks (nt pingpongilaud, konsool jne …), mis vajab mingisugust oleku levitamise ja broneerimise lahendust.
Niisiis, alustame…
1. samm: kontseptsiooni ja prototüüpide tõestamine
Laias laastus oli idee ehitada seade, mis asetatakse kicker -laua kõrvale järgides neid nõudeid:
-
mõned näitajad tabeli praeguse oleku kohta - kui seisate selle kõrval, peaksite teadma, et see on tasuta või reserveeritud ja keegi tuleb 3 minuti pärast mängima. Foorid sobivad ideaalselt ideega:
- roheline tuli - tasuta mängida,
- kollane tuli - reserveeritud,
- punane tuli - hõivatud.
-
nupp (id) Saate klõpsata enne ja pärast mängu, et kõik teised saaksid teavet praeguse tabeli oleku kohta. Ühe lülitusnupu asemel otsustasin kasutada kahte eraldatud nuppu:
- punane nupp - hõivake laud, alustage mängu (pärast broneerimist või ajutist).
- roheline nupp - vabastamistabel.
- mõni kuva, mis sisaldab üksikasjalikumat teavet selle kohta, mis toimub - broneeringu ajalõpp, korduv tabeli olek, mänguaeg jne …
Broneeringu all pean silmas ainult järgmise 3 minuti broneeringut. Süsteem ei ole konstrueeritud nii, et kasutaja saaks laua õigel ajal reserveerida (nt 14:00). See ei tööta nagu reserveerimine nt. restoranides, kuid ainult mõne minuti pärast.
LAN -ühenduse puudumise tõttu on ainus võimalus kasutada WLAN -i - see on igal juhul parim valik. Süsteemi aju peab Slacki kanalilt käskluste saatmiseks ja vastuvõtmiseks kasutama Slack API -d. Kõigepealt proovisin kasutada NodeMCU -d. Mul oli võimalik saada ja vastu võtta sõnumeid Slacki ja sealt, kuid HTTPS -i kasutamise ja ka Slacki "tervitussõnumi" suuruse (~ 300 kB) tõttu kaotas NodeMCU ühenduse ja/või sai mõne imeliku erandi, mida ma ei suutnud lahendada Interneti kaudu kaevamise teel.
Seega otsustasin kasutada midagi võimsamat: Raspberry Pi 3 (WiFi -ga Zero W polnud sel ajal veel välja antud). RPi omamisega saaksin rakenduse keele C -lt Java -le vahetada, kuna see on minu jaoks mugavam - seega oli see eelis. Täna saate kasutada midagi võimsamat kui NodeMCU ja vähem võimsat kui RPi. Vaarika null ehk?
Pärast esimese prototüübi ehitamist leivalauale koos mõne hullumeelse juhtmestikuga, palju visandamist ja prototüüpimist, tundus süsteem, et see võib töötada.
Kõigi nende ideede ja PoC -ga töötades hakkasin esipaneelil kavandama ülaltoodud esemete erinevaid paigutusi, nii et need oleksid kõige informatiivsemad ja mugavamad kasutada. Saate vaadata mõnda muud ettepanekut, võib -olla mõni sobib teile paremini. Viimane oli minu valitud.
Samm: materjalid ja tööriistad
Materjalid, mida kasutasin:
- Kast
- Raspberry Pi, microSD -kaart, mikro -USB toiteallikas
- Rohelised ja punased arkaadinupud
- 16x2 LCD ekraan
- LEDid - kasutasin RGB -d, kuid saate kasutada õiget värvi
- Meeste ja naiste ja naiste ja naiste leivaplaadi hüppajakaablid
- Micro USB liides
- Mini leivaplaat lihtsalt mõne juhtme ühendamiseks
- Lühike mikro -USB -kaabel, mis töötab RPi toiteks kasti sees hüppajana
Tööriistad, mida kasutasin:
- Terav nuga (nt utiliit vaiba lõikamiseks)
- Pöörlev tööriist
- Kuum liimipüstol
- Jootmisjaam
- Tangid, diagonaaltangid/külglõikurid
- Kruvikeeraja
- Fail
- Mina
Tööriistad, mida tõenäoliselt vajate:
Kõik ülaltoodud, kuid "mina" asemel peaks see olema: "sina":)
Samm: esipaneel - LCD -ekraan
LCD -ekraani auk oli lihtne. Lihtsalt ristkülik, mis sobib minu LCD -ekraanile. Pärast terava noaga lõikamist mõistsin, et karbi plast on üsna kõva. Niisiis kasutasin akna lõikamiseks ja servade poleerimiseks puurimisvahendit.
Samm: esipaneel - oleku LED -id
LED -augud on samuti lihtsad. Võtsin puidu jaoks lihtsalt suure puuri ja siis poleerisin servad puurimisvahendiga. Suured valgusdioodid sobivad ideaalselt tihedalt. Ma ei jootnud veel ühtegi takisti LED -ide juurde - jätsin selle kokkupanekuks.
Samm: esipaneel - nupud
Nende kahe suure nupu suurim probleem oli nende ühtlane paigutamine õigete vahedega. Lõikasin augud lihtsalt oma puurimisseadme abil, kuna saaksin läbimõõtu järk -järgult suurendada, nii et nupud oleksid tihedalt kinni.
6. samm: toitepistik
Väike auk mikro -USB toite jaoks oli väga delikaatne töö. Tahtsin, et auk oleks võimalikult sobiv, nii et veetsin siin palju aega poleerimiseks. Aga lõpptulemusega jäin rahule.
Seejärel lõikasin lühikese mini -USB -kaabli, mis asetati kasti. Üks külg on ühendatud RPi -ga ja teiselt poolt joodeti kõik kaablid mikro -USB -liidesesse vastavalt USB -pistikutele.
Seejärel liimisin väikese trükkplaadi kuumalt liimiga otse kasti külge (seda on näha fotol kokkupanekuetapil).
Samm: kõik kokku panemine
Esmalt jootsin 3,3V voltide jaoks LED -idele nende värvi (pinge) järgi sobivad takistid. Punase jaoks kasutasin 100Ω, kollase jaoks kaks takisti 82 ja 100 (roheline ja punane sõlm) ja rohelise jaoks 100Ω. LED -kalkulaatori jaoks saate kasutada ühte veebitakistit. Kuid palun uurige ise vastavalt heledusele ja täpsele värvitoonile, mida soovite saavutada.
Kollase LED -i jalad joodeti kokku, nii et LED -i saab RPi abil juhtida vaid ühe tihvtiga.
Selle pinout diagrammi järgi:
LED -sõlmed olid ühendatud:
- Roheline LED - GPIO1 RPI -l
- Kollane LED (mõlemad jalad) RPIO -le GPIO2
- Punane LED kuni GPIO0 RPi -l
Ühendasin LCD, kasutades RP2 tihvtide I2C tihvte
- LCD SDA kuni GPIO8 RPi -l
- LCD SCL kuni GPIO9 RPi -l
- LCD PWR kuni 5V RPi juures
- LCD GND kuni GND RPi -l
Lisakaitseks liimiti LCD kupli külge.
Ühendasin väikese leivalauaga 3.3V ja GND, et saaksin neid nuppude jaoks kasutada.
Roheline nupp ühendati 3.3V mini leivalaua kaudu ja GPIO5 -ga RPi kaudu.
Punane nupp ühendati 3.3V mini leivalaua kaudu ja GPIO4 -ga RPi kaudu.
Nii et alati, kui nuppu vajutate, on RPi tihvt kõrgel tasemel.
Mini bradboard töötab suurepäraselt, nii et jätsin kõik juhtmed PCB -le jootmise vahele. Selle asemel katsin lihtsalt mini leivalaua kuuma liimiga, et kaablid maha ei kukuks.
Samuti liimisin karbi külge kuumalt RPi katte, nii et see ei hakka seestpoolt kõikuma.
Keerasin esipaneeli kogu kraamiga sisse.
Seejärel trükkisin, lõikasin ja kleepisin valgusfooride ja nuppude kõrvale lihtsaid silte.
8. samm: vaikne konfigureerimine
Looge oma meeskond saidil Slack.com või kasutage seda, mis teil on ja teil on vähemalt administraatori õigused.
Looge teenuses Slack teenuse Slack integreerimiseks kanal (või jätke kanal loomata, kui soovite juba olemasolevat kanalit kasutada).
Lisage oma meeskonnale sissetulevate Webhookide integreerimine. Valige kanal ja kopeerige veebihaakimise URL.
Lisage oma meeskonnale robotite integreerimine. Valige oma robotile mõni nimi ja kopeerige bot -i API -märk.
Teie kohandatud integratsioonide haldamise leht peaks välja nägema nagu pildil.
Peate kutsuma roboti oma kanali liikmeks. Seda saate teha juba kanali loomise ajal.
Kui soovite teenust hiljem kohandada, kontrollige palun Slack API -d.
9. samm: tarkvara juurutamine
Kasutasin Raspbiani oma RPi operatsioonisüsteemina, järgides seda õpetust. Palun andesta mulle, ma jätan selle seletamise vahele, kuna see on paljudes kohtades juba dokumenteeritud ja protsess on lihtne. Loodan, et olete piisavalt osav ja kogenud, et RPi iseseisvalt seadistada. Ärge unustage oma Raspberry Pi seadistada WiFi -ühendust;)
Nagu prototüüpimise osas mainitud, kasutasin kogu süsteemi aju rakendamiseks Java -d. Kood on saadaval GitHubis -
Java teegid, mida kasutasin:
- pi4j - Java -i Raspberry Pi kasutamiseks
- Springboot kui rakendusplaat
- allbegray/slack-api kui Slack integratsioon
Peate muutma konfiguratsioonifaili kaustas src/resources/config.properties. Slack API kasutamiseks peate konfigureerima 3 kirjet:
- channelName - kanali nimi, kuhu soovite postitada oleku muutusi ja saada käske.
- slackBotToken - teie Slacki meeskonna integratsioonides konfigureeritud roboti märk, mida kasutatakse sõnumite postitamiseks ülalmainitud kanalile. Pange tähele, et peate Slack Boti lisama kanali liikmeks.
- webhookUrl - URL, mille saate Slack Team'i kohandatud integratsioonidest.
Projekt on Mavenized, nii et selle ehitamiseks sisestage lihtsalt (vajate vähemalt Java 8 ja Maveni installimist):
mvn puhas pakett
Ja sihtmärgi väsimusest leiate Springbooted JAR -faili. Teenuse käivitamiseks toimige järgmiselt.
sudo java -jar kicker-reserveerimine-teenus-0.3.0.jar
Panin sellele reale skripti.sh ja lisasin selle automaatseks käivitamiseks. Nii et alati, kui toide on sisse lülitatud, käivitub teenus automaatselt.
LCD -ekraanile on vaja ühte erilist selgitust.
Proovisin erinevaid lähenemisviise/teeke, et juhtida RPi kaudu I2C -ga LCD -d, kuid ma lihtsalt ei suutnud. Mõne LCD -ekraan ei töötanud korralikult, mõne jaoks aga prügi.
Aga üks asi töötas väga kenasti just karbist välja. Leidsin utiliidi käsurea tööriista, mida saate kasutada LCD juhtimiseks. Nii otsustasin seda tööriista lihtsalt Java -st kasutada. See töötab niimoodi, et iga kord, kui tahan midagi LCD -ekraanil kuvada, kutsutakse (koos ettevalmistatud parameetritega) tavaline Linuxi protsess (lcdi2c).
Peate tööriista alla laadima ja paigutama selle teenuse JAR kõrvale
Selle tööriista kasutamine on omamoodi häkkimine ja rumal lahendus, kuid ma järgin inseneriteaduse esimest reeglit:
Kui see on rumal, aga töötab, pole see rumal
10. samm: kasutusjuhend
Saate kontrollida kicker -tabeli praegust olekut loodud Slack -kanalil, sisestades käsu "status" (või mõne aja pärast "st") või otse kontrollides seadme valgusfoore.
Kui soovite lihtsalt mängida - vajutage punast nuppu. Slacki kanalile saadetakse teade, milles on teave, et kicker -tabel on hõivatud. Kui olete mängimise lõpetanud - vajutage rohelist nuppu. Slacki kanalile saadetakse sõnum, milles on teave, et kicker -lauda saab tasuta mängida.
Samuti muutuvad valgusfoorid ja LCD -ekraanil kuvatakse üksikasjalikku teavet.
Igaks juhuks, kui unustate laua vabastada pärast mängimise lõpetamist, on aeg määratud 20 minutile. Kui mängite endiselt ja vajate rohkem aega, vajutage uuesti punast nuppu ja mängu pikendatakse 5 minuti võrra (rakendage ainult siis, kui enne aegumist on jäänud vähem kui 5 minutit). Taasesituse ajalõpp kuvatakse LCD -ekraanil.
Kicker tabeli reserveerimiseks kirjutage Slacki kanalile sõnum „reserve” (või lihtsalt: „res”).
Kollane valgusfoor lülitub sisse, teavitades teisi lööjalaua lähedal olevaid inimesi, et see on reserveeritud, ja varsti tuleb keegi mängima.
Broneeringu ajalõpp on seatud 3 minutile. Pärast seda lülitab kicker tabel oma oleku vabaks mängimiseks.
Vajadusel saate broneeringu tühistada, kirjutades Slacki kanalile „Tühista”.
Süsteemil on ka muid väiksemaid funktsioone, näiteks:
- Pärast broneerimist külmutatakse nupud 5 sekundiks. Seda selleks, et olukordi ära hoida, et keegi samal ajal ja mõni millisekund hiljem vajutab punast nuppu, arvates, et tema on laua taga, kuid teadmata, et keegi reserveeris laua vaid milisekundit varem.
- Mis tahes nupu vajutamine külmutab mõlemad pooleks sekundiks. Seda selleks, et vältida hullumeelseid nupuvajutusi, nii et Slacki kanalit ei saadetaks nii palju rämpsposti.
- Slacki tasuta versioon võimaldab kogu meeskonnale salvestada 10 000 sõnumit. Mõne sõnumi säilitamiseks kustutab teenus reserveerimise/olekusüsteemiga seotud vanad sõnumid) ja säilitab neist ainult viimased 6. Miks 6? Sest enamasti on 2 staatusstsenaariumi: "Reserved-Occupied-Free" ja "Occupied-Free". Seega saab süsteem salvestada vähemalt 2 täielikult hõivatud seanssi. Kõigi süsteemisõnumite puhastamiseks tippige käsk "clean" (või "clear").
11. samm: vabastamine
Seni (selle juhendi avaldamise hetkeni) töötab süsteem 2,5+ kuud ja seda kasutab rohkem kui 30 inimest. Kicker tabeli oleku värskendamise tõttu teame alati, millal see on vaba või hõivatud, nii et me ei kaota enam aega edasi -tagasi. Ühendus ja teenus on väga stabiilsed, nii et saame sellele loota.
Siiamaani on kõik korras…
12. samm: KKK
Miks on aeg reserveeritud 3 minutile?
Maksimaalne broneerimisaeg on 3 minutit, võtke see vastu nii, nagu teile koodis meeldib. Üldjuhul juhtub seda harva, kui möödub 3 minutit ja broneering aegub. Enamikul juhtudel tuleb keegi lõpuks kohale ja istub laua taha.
Miks on mängimise ajalõpp seatud 20 minutile?
Olenevalt mängijatest on keskmine mänguaeg ~ 10 minutit. Kui teil on vaja kauem mängida, vajutage uuesti punast nuppu, kui on jäänud vähem kui 5 minutit ja ajalõpp pikeneb tagasi 5 minutini. See ajalõpp on seatud juhuks, kui keegi unustab tabeli vabastada.
Miks pole seadmel broneeringu kinnitamiseks PIN -koodi; sisselogimist ja paroole pole?
Põhiidee oli hoida-see-lihtne-loll. Vastasel juhul, kui broneerimine, mängu alustamine ja lõpetamine vajavad liiga palju pingutusi, ei taha keegi seda kasutada.
Miks näeb seade nii tööstuslikult kole välja?
Kuna mul polnud laserlõikurit, CNC -d, 3D -printerit, väljamõeldud värvilist siltide tegijat jne. Teil on selle üle täiustamine ja kaunimaks muutmine väga hea meel.
Miks mitte lihtsalt rakendada mõni äpp ja kleepida sama funktsionaalsusega odav tahvelarvuti seinale?
Rakendused, rakendused kõikjal. Inimestele meeldib asjadega füüsiliselt suhelda ja mitte ainult lameekraanidele koputada.
Soovitan:
Mobiiliga juhitav Bluetooth -auto -- Lihtne -- Lihtne -- Hc-05 -- Mootorikilp: 10 sammu (koos piltidega)
Mobiiliga juhitav Bluetooth -auto || Lihtne || Lihtne || Hc-05 || Motor Shield: … Palun TELLI minu YouTube'i kanalile ………. See on Bluetooth-juhitav auto, mis kasutas mobiiliga suhtlemiseks Bluetooth-moodulit HC-05. Saame autot juhtida mobiiltelefoniga Bluetoothi kaudu. Auto liikumise juhtimiseks on olemas rakendus
Patareitoitega ukseandur koos koduautomaatika integreerimisega, WiFi ja ESP-NOW: 5 sammu (koos piltidega)
Patareitoitega ukseandur koos koduautomaatika integreerimisega, WiFi ja ESP-NOW Olen näinud veel mõningaid toredaid andureid ja häiresüsteeme, kuid tahtsin selle ise teha. Minu eesmärgid: andur, mis tuvastab doo ja teatab sellest
Wifi juhitav 12v LED -riba, kasutades Raspberry Pi koos Taskeri, Ifttti integreerimisega: 15 sammu (piltidega)
Wifi juhitav 12v LED -riba, kasutades Raspberry Pi koos Taskeri, Ifttti integreerimisega: Selles projektis näitan teile, kuidas juhtida lihtsat 12v analoog -led -riba wifi kaudu vaarika pi abil. Selle projekti jaoks vajate: 1x Raspberry Pi (I kasutan Raspberry Pi 1 mudelit B+) 1x RGB 12v Le
DIY MusiLED, muusika sünkroonitud LED-id ühe klõpsuga Windowsi ja Linuxi rakendusega (32-bitine ja 64-bitine). Lihtne taastada, lihtne kasutada, lihtne teisaldada: 3 sammu
DIY MusiLED, muusika sünkroonitud LED-id ühe klõpsuga Windowsi ja Linuxi rakendusega (32-bitine ja 64-bitine). Lihtne taastada, lihtne kasutada, lihtne teisaldada .: See projekt aitab teil ühendada 18 LED-i (6 punast + 6 sinist + 6 kollast) oma Arduino plaadiga ja analüüsida arvuti helikaardi reaalajasignaale ning edastada need valgusdioodid, mis neid löögiefektide järgi süttivad (Snare, High Hat, Kick)
Vannitoa oleku märgutuled ja automaatne lüliti: 4 sammu (piltidega)
Vannitoa oleku indikaatortuled ja automaatne lüliti: see projekt kasutab indikaatorlampide juhtimiseks läheduslüliteid ja releesid. Tuled annavad edasi kahe vannitoa täituvuse. Probleem: kahte ühe kasutaja vannituba - ühiselamu stiilis majas - jagavad mitu inimest, kuid