Satura rādītājs:
- 1. solis: koncepcijas un prototipu pierādījums
- 2. darbība: materiāli un instrumenti
- 3. solis: priekšējais panelis - LCD ekrāns
- 4. darbība. Priekšējais panelis - statusa gaismas diodes
- 5. darbība. Priekšējais panelis - pogas
- 6. darbība: strāvas savienotājs
- 7. solis: visu salieciet kopā
- 8. darbība: nesteidzīga konfigurācija
- 9. solis: programmatūras ieviešana
- 10. solis: lietošanas instrukcija
- 11. solis: atbrīvošana
- 12. darbība: bieži uzdotie jautājumi
Video: Vienkārša Kicker statusa un rezervācijas sistēma ar lēnu integrāciju: 12 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Uzņēmumā, kurā es strādāju, ir kicker galds. Uzņēmums aizņem daudzus stāvus, un dažiem darbiniekiem ir nepieciešamas līdz 3 minūtēm, lai nokļūtu pie galda un… lai saprastu, ka galds jau ir aizņemts.
Tāpēc radās ideja izveidot vienkāršu apraides un rezervēšanas sistēmu, kas darbojas reālā laikā.
Uzņēmums izmanto Slack saziņas rīku, kur katram darbiniekam ir konts. Mums ir pat #kicker kanāls tikai diskusijām par… kicker. Kanālu varētu izmantot kā sava veida "ieejas punktu" rezervēšanai un informēt par pašreizējās tabulas statusu.
Kā parasti, ir daudz koncepciju, kā rīkoties ar šādu sistēmu. Bet kopumā visos tajos parādījās viens pamatnoteikums: tam ir jābūt vienkārši lietojamam un bez pārmērīgām darbībām, kas jāveic, strādājot ar sistēmu.
Ierīce un pakalpojums nav piestiprināti pie kicker galda un tos var izmantot jebkuram "kopīgam resursam" (piemēram, galda tenisa galdam, konsolei utt.), Kam nepieciešams sava veida statusa izplatīšanas un rezervēšanas risinājums.
Tātad, sāksim…
1. solis: koncepcijas un prototipu pierādījums
Aptuveni ideja bija izveidot ierīci, kas tiks novietota blakus kicker galdam, ievērojot šīs prasības:
-
daži rādītāji par pašreizējo galda statusu - ja jūs stāvat blakus, jums vajadzētu zināt, ka tas ir bezmaksas vai rezervēts, un pēc 3 minūtēm kāds ieradīsies spēlēt. Luksofori lieliski atbilst idejai:
- zaļā gaisma - brīvi spēlēt,
- dzeltena gaisma - rezervēta,
- sarkanā gaisma - aizņemta.
-
poga (-as) Jūs varat noklikšķināt pirms un pēc spēles, lai visi pārējie tiktu informēti par pašreizējo galda stāvokli. 1 pārslēgšanas pogas vietā es nolēmu izmantot 2 atsevišķas pogas:
- sarkanā poga - aizņem galdu, sāc spēli (pēc rezervācijas vai ad hoc).
- zaļā poga - atbrīvošanas tabula.
- daži displeji ar detalizētāku informāciju par to, kas notiek - rezervācijas taimauts, atkārtots galda statuss, spēles laika taimauts utt.
Ar rezervāciju es domāju tikai rezervāciju nākamajām 3 minūtēm. Sistēma nav veidota tā, lai lietotājs varētu rezervēt galdu precīzā laikā (piemēram, 14:00). Tas nedarbojas kā rezervācija, piem. restorānos, bet tikai dažām minūtēm.
Tā kā trūkst LAN savienojuma, vienīgā iespēja ir izmantot WLAN - tas jebkurā gadījumā ir labākais risinājums. Sistēmas smadzenēm ir jāizmanto Slack API, lai nosūtītu un saņemtu komandas no Slack kanāla. Vispirms es mēģināju izmantot NodeMCU. Es varēju saņemt un saņemt ziņojumus uz un no Slack, bet HTTPS lietojuma un arī Slack "sveiciena ziņojuma" izmēra (~ 300 KB) dēļ NodeMCU zaudēja savienojumu un/vai ieguva kādu dīvainu izņēmumu, kuru nevarēju atrisināt, meklējot internetā.
Tāpēc es nolēmu izmantot kaut ko jaudīgāku: Raspberry Pi 3 (Zero W ar WiFi tajā laikā vēl nebija izlaists). Izmantojot RPi, es varētu mainīt ieviešanas valodu no C uz Java, jo tā man ir ērtāk - tāpēc tā bija priekšrocība. Šodien jūs varat izmantot kaut ko jaudīgāku par NodeMCU un mazāk jaudīgu nekā RPi. Varbūt Raspberry Zero?
Pēc pirmā prototipa uzbūvēšanas uz maizes dēļa ar kādu traku elektroinstalāciju, daudzām skicēm un prototipu veidošanu, sistēma izskatījās, ka tā var darboties.
Ņemot visas šīs idejas un strādājot ar PoC, es sāku plānot dažādas iepriekš minēto priekšmetu izvietojuma konfigurācijas priekšējā panelī, lai tās būtu visinformatīvākās un ērtākās lietošanā. Jūs varat pārbaudīt dažus citus priekšlikumus, varbūt daži jums labāk atbilst. Pēdējais bija manis izvēlētais.
2. darbība: materiāli un instrumenti
Materiāli, kurus izmantoju:
- Kastīte
- Raspberry Pi, microSD karte, mikro USB barošanas avots
- Zaļās un sarkanās arkādes pogas
- 16x2 LCD ekrāns
- LED - es izmantoju RGB, bet jūs varat izmantot pareizo krāsu
- Kabeļi no vīrieša līdz sievietei un no sievietes līdz sievietei
- Mikro USB interfeiss
- Mini maizes dēlis tikai dažu vadu pievienošanai
- Īss mikro USB kabelis, kas darbojas kā džemperis kastes iekšpusē, lai barotu RPi
Manis izmantotie rīki:
- Asu nazi (piemēram, lielo nazi paklāja griešanai)
- Rotācijas instruments
- Karstās līmes pistole
- Lodēšanas stacija
- Knaibles, diagonālās knaibles/sānu griezēji
- Skrūvgriezis
- Fails
- Es
Rīki, kas jums, iespējams, ir nepieciešami:
Viss iepriekš minētais, bet "es" vietā tam vajadzētu būt: "tu":)
3. solis: priekšējais panelis - LCD ekrāns
LCD ekrāna caurums bija vienkāršs. Tikai taisnstūris, kas iederas manā LCD ekrānā. Mēģinot to sagriezt ar asu nazi, es sapratu, ka kastes plastmasa ir diezgan cieta. Tāpēc es izmantoju urbšanas rīku loga griešanai un malu pulēšanai.
4. darbība. Priekšējais panelis - statusa gaismas diodes
LED caurumi ir arī vienkārši. Es tikko paņēmu lielu urbi kokam un pēc tam noslīpēju malas ar urbšanas instrumentu. Lielās gaismas diodes bija cieši pieguļošas. Gaismas diodēm es vēl nelodēju nekādus rezistorus - atstāju to montāžas procesam.
5. darbība. Priekšējais panelis - pogas
Lielākā problēma ar šīm divām lielajām pogām bija to vienmērīga novietošana ar atbilstošu atstarpi. Es izgriezu caurumus, tikai izmantojot savu urbšanas rīku, jo es varētu pakāpeniski palielināt diametru, lai pogas būtu cieši pieguļošas.
6. darbība: strāvas savienotājs
Neliels caurums mikro USB barošanai bija ļoti delikāts darbs. Es gribēju, lai caurums būtu pēc iespējas piemērotāks, tāpēc šeit pavadīju daudz laika pulēšanai. Bet es biju apmierināts ar gala rezultātu.
Tad es nogriezu īsu mini USB kabeli, kas tika ievietots kastē. Vienā pusē tas ir pievienots RPi, un, no otras puses, visi kabeļi tika pielodēti pie mikro USB saskarnes saskaņā ar USB pinouts.
Tad es karsti pielīmēju mazo PCB tieši pie kastes (to var redzēt uz fotoattēla montāžas posmā).
7. solis: visu salieciet kopā
Vispirms es lodēju gaismas diodēm atbilstošus rezistorus atbilstoši to krāsai (spriegumam) 3,3 V voltam. Es izmantoju 100Ω sarkanajam, divus rezistorus 82 un 100 dzeltenam (zaļš un sarkans mezgls) un 100Ω zaļam. LED kalkulatoram varat izmantot vienu no tiešsaistes rezistoriem. Bet, lūdzu, veiciet dažus pētījumus atbilstoši spilgtumam un precīzam krāsu toņam, ko vēlaties sasniegt.
Dzeltenās gaismas diodes kājas bija pielodētas kopā, tāpēc pašu LED var kontrolēt tikai ar vienu tapu uz RPi.
Saskaņā ar šo pinout diagrammu:
Tika pievienoti LED mezgli:
- Zaļa gaismas diode - GPIO1 uz RPI
- Dzeltena gaismas diode (abas kājas) uz GPIO2 uz RPi
- Sarkana gaismas diode līdz GPIO0 uz RPi
Es pievienoju LCD, izmantojot I2C tapas uz RPi tapām
- LCD SDA uz GPIO8 uz RPi
- LCD SCL uz GPIO9 uz RPi
- LCD PWR līdz 5V uz RPi
- LCD GND uz GND uz RPi
LCD tika papildus pielīmēts pie kastes.
Es pievienoju 3.3V un GND pie mazā maizes dēļa, lai varētu tos izmantot pogām.
Zaļā poga tika savienota ar 3.3V caur mini maizes dēli un ar GPIO5 uz RPi.
Sarkanā poga tika pievienota 3.3V caur mini maizes dēli un GPIO4 uz RPi.
Tātad ikreiz, kad nospiežat pogu, uz RPi tapas ir augsts stāvoklis.
Mini bradboard darbojas lieliski, tāpēc es izlaidu visu vadu lodēšanu PCB. Tā vietā es vienkārši pārklāju mini maizes dēli ar karstu līmi, lai kabeļi nenokristu.
Es arī karsti pielīmēju RPi pārsegu pie kastes, lai tas iekšā nesvārstītos.
Es pieskrūvēju priekšējo paneli ar visām lietām iekšā.
Tad es blakus luksoforiem un pogām izdrukāju, izgriezu un pielīmēju vienkāršas etiķetes.
8. darbība: nesteidzīga konfigurācija
Izveidojiet savu komandu vietnē Slack.com vai izmantojiet to, kas jums ir, un jums ir vismaz administratora tiesības.
Programmā Slack izveidojiet kanālu pakalpojuma Slack integrācijai (vai izlaidiet kanāla izveidi, ja vēlaties izmantot jau esošo kanālu).
Pievienojiet savai komandai ienākošo Webhooks integrāciju. Atlasiet kanālu un nokopējiet tīmekļa aizķeres URL.
Pievienojiet Bots integrāciju savai komandai. Izvēlieties savam robotam nosaukumu un nokopējiet bot API marķieri.
Jūsu pielāgoto integrāciju pārvaldības lapai vajadzētu izskatīties kā attēlā.
Jums ir jāuzaicina robots kā sava kanāla dalībnieks. To var izdarīt jau kanāla izveides laikā.
Ja vēlāk vēlaties pielāgot pakalpojumu, lūdzu, pārbaudiet Slack API.
9. solis: programmatūras ieviešana
Es izmantoju Raspbian kā operētājsistēmu savam RPi, sekojot šai apmācībai. Lūdzu, piedodiet, es izlaidīšu tā skaidrošanu, jo tas jau ir dokumentēts daudzās vietās un process ir vienkāršs. Es ceru, ka esat pietiekami prasmīgs un pieredzējis, lai varētu patstāvīgi iestatīt RPi. Lūdzu, neaizmirstiet savā Raspberry Pi konfigurēt WiFi piekļuvi;)
Kā minēts prototipēšanas sadaļā, es izmantoju Java, lai ieviestu visas sistēmas smadzenes. Kods ir pieejams vietnē GitHub -
Izmantotās Java bibliotēkas:
- pi4j - izmantot Raspberry Pi no Java
- Springboot kā lietojumprogrammu platrorm
- allbegray/slack-api kā Slack integrācija
Jums ir jārediģē konfigurācijas fails src/resources/config.properties. Ir 3 ieraksti, kas jākonfigurē, lai izmantotu Slack API:
- channelName - kanāla nosaukums, kurā vēlaties publicēt statusa izmaiņas un saņemt komandas.
- slackBotToken - robota marķieris, kas konfigurēts jūsu Slack komandas integrācijās un tiks izmantots ziņojumu ievietošanai iepriekš minētajā kanālā. Lūdzu, ņemiet vērā, ka kanāla dalībniekam jāpievieno Slack Bot.
- webhookUrl - URL, ko varat iegūt no Slack Team pielāgotajām integrācijām.
Projekts ir Mavenized, lai to izveidotu, vienkārši ierakstiet (jums ir jāinstalē vismaz Java 8 un Maven):
mvn tīrs iepakojums
Un mērķa nogurumā varat atrast Springbooted JAR failu. Lai sāktu pakalpojumu:
sudo java -jar kicker-booking-service-0.3.0.jar
Es iestatīju šo rindu uz.sh skriptu un pievienoju to kā automātisko palaišanu. Tātad, kad barošana ir ieslēgta, pakalpojums tiek palaists automātiski.
LCD ir nepieciešams viens īpašs skaidrojums.
Es izmēģināju dažādas pieejas/bibliotēkas, lai kontrolētu LCD pār I2C no RPi, bet man vienkārši neizdevās. Dažiem LCD nedarbojās pareizi, dažiem parādījās daži atkritumi.
Bet viena lieta ļoti labi strādāja tikai no kastes. Tas ir utilītas komandrindas rīks, kuru es atradu Jūs varat izmantot, lai kontrolētu LCD. Tāpēc es nolēmu izmantot šo rīku tieši no Java. Tas darbojas šādi: parasts Linux process (lcdi2c) tiek izsaukts (ar sagatavotiem parametriem) katru reizi, kad vēlos kaut ko parādīt LCD ekrānā.
Jums ir nepieciešams lejupielādēt rīku un novietot to blakus pakalpojumam JAR
Šī rīka izmantošana ir sava veida uzlaušana un muļķīgs risinājums, bet es ievēroju pirmo inženierijas noteikumu:
Ja tas ir stulbi, bet darbojas … tas nav stulbi
10. solis: lietošanas instrukcija
Jūs varat pārbaudīt kicker tabulas pašreizējo stāvokli izveidotajā Slack kanālā, ierakstot komandu "status" (vai īsi "st") vai tieši pārbaudīt ierīces luksoforus.
Ja jūs vienkārši vēlaties spēlēt - nospiediet sarkano pogu. Uz Slack kanālu tiks nosūtīta ziņa ar informāciju, ka kicker galds ir aizņemts. Kad esat pabeidzis spēlēt - nospiediet zaļo pogu. Uz Slack kanālu tiks nosūtīta ziņa ar informāciju par to, ka kicker galdu var spēlēt bez maksas.
Mainīsies arī luksofori, un LCD ekrānā būs redzama detalizēta informācija.
Tikai gadījumā, ja esat aizmirsis atbrīvot galdu pēc spēles pabeigšanas, taimauts ir iestatīts uz 20 minūtēm. Ja jūs joprojām spēlējat un jums ir nepieciešams vairāk laika, vēlreiz nospiediet sarkano pogu, un spēle tiks pagarināta par 5 minūtēm (attiecas tikai tad, ja līdz taimauta beigām ir atlikušas mazāk nekā 5 minūtes). Atskaņošanas taimauts tiks parādīts LCD ekrānā.
Lai rezervētu kicker galdu, uzrakstiet ziņojumu “rezervēt” (vai vienkārši: “res”) Slack kanālam.
Dzeltenais luksofors ieslēgsies, informējot citus, kas atrodas pie sitiena galda, ka tas ir rezervēts, un drīz kāds ieradīsies spēlēt.
Rezervācijas taimauts ir iestatīts uz 3 minūtēm. Pēc tam kicker galds pārslēdz savu stāvokli uz brīvu spēli.
Ja nepieciešams, varat atcelt rezervāciju, rakstot “Atcelt” Slack kanālā.
Sistēmai ir arī dažas citas nelielas funkcijas, piemēram:
- Pēc rezervēšanas pogas tiek iesaldētas uz 5 sekundēm. Tas tiek darīts, lai novērstu situācijas, ka tajā pašā laikā kāds rezervē un milisekundi vēlāk kāds nospiež sarkano pogu, domājot, ka tieši viņš/viņa ir galda vadītājs, bet nezinot, ka kāds galdiņu rezervēja tikai milisekundi iepriekš.
- Nospiežot jebkuru pogu, abas uz pusi sekundes tiek sasaldētas. Tas ir tāpēc, lai novērstu trakus pogu klikšķinātājus, lai Slack kanāls netiktu surogātpasts tik daudz.
- Slack bezmaksas versija ļauj saglabāt visas komandas 10 000 ziņojumus. Lai saglabātu dažus ziņojumus, pakalpojums izdzēsīs vecos ziņojumus, kas saistīti ar rezervācijas/statusa sistēmu) un paturēs tikai pēdējos 6 ziņojumus. Kāpēc 6? Jo visbiežāk ir 2 statusa scenāriji: "Rezervēts-okupēts-brīvs" un "Okupēts-brīvs". Tātad sistēma var saglabāt vismaz 2 pilnībā aizņemtas sesijas. Lai notīrītu visus sistēmas ziņojumus, ierakstiet komandu "clean" (vai "clear").
11. solis: atbrīvošana
Līdz šim (šīs instrukcijas publicēšanas brīdim) sistēma darbojas 2,5+ mēnešus un to izmanto vairāk nekā 30 cilvēki. Kicker galda statusa atjauninājuma dēļ mēs vienmēr zinām, kad tas ir brīvs vai aizņemts, tāpēc mēs vairs nezaudējam laiku, turp un atpakaļ. Savienojums un pakalpojums ir ļoti stabils, tāpēc mēs varam uz to paļauties.
Tik tālu, labi…
12. darbība: bieži uzdotie jautājumi
Kāpēc rezervācijas taimauts ir iestatīts uz 3 minūtēm?
3 minūtes ir maksimālais rezervācijas laiks, pieņemiet to, kā vēlaties kodā. Parasti tas notiks reti, kad paies pilnas 3 minūtes, un rezervācija tiks pārtraukta. Vairumā gadījumu kāds beidzot ieradīsies un ieņems galdu.
Kāpēc spēles taimauts ir iestatīts uz 20 minūtēm?
Atkarībā no spēlētājiem vidējais spēles laiks ir ~ 10 minūtes. Ja jums jāspēlē ilgāk, vēlreiz nospiediet sarkano pogu, kad atlikušas mazāk nekā 5 minūtes, un taimauts tiks pagarināts līdz 5 minūtēm. Šis taimauts ir iestatīts tikai gadījumā, ja kāds aizmirst atbrīvot tabulu.
Kāpēc ierīcē nav PIN paliktņa rezervācijas apstiprināšanai; nav pieteikumvārdu un paroļu?
Galvenā ideja bija saglabāt vienkāršu stulbumu. Pretējā gadījumā, ja rezervēšana, spēles sākšana un pabeigšana prasa pārāk daudz pūļu, tad neviens to nevēlas izmantot.
Kāpēc ierīce izskatās tik industriāli neglīta?
Tā kā man nebija lāzera griezēja, CNC, 3D printera, izsmalcinātu krāsainu etiķešu veidotāja utt. Jums ir prieks to uzlabot un padarīt skaistāku.
Kāpēc ne tikai ieviest kādu lietotni un pielīmēt lētu planšetdatoru pie sienas ar tādu pašu funkcionalitāti?
Lietotnes, lietotnes visur. Cilvēkiem patīk fiziski mijiedarboties ar lietām un ne tikai pieskarties plakaniem ekrāniem.
Ieteicams:
Žalūziju vadība ar ESP8266, Google mājas un Openhab integrāciju un tīmekļa vadību: 5 soļi (ar attēliem)
Žalūziju vadība Ar ESP8266, Google mājas un Openhab integrāciju un tīmekļa kontroli: šajā pamācībā es jums parādīšu, kā savām žalūzijām pievienoju automatizāciju. Es gribēju, lai to varētu pievienot un noņemt automatizācija, tāpēc visa instalācija ir ieslēgta. Galvenās detaļas ir šādas: Pakāpju motors Stepper vadītājs kontrolē ESP-01 Zobrati un stiprinājumi
Ar baterijām darbināms durvju sensors ar mājas automatizācijas integrāciju, WiFi un ESP-NOW: 5 soļi (ar attēliem)
Ar akumulatoru darbināms durvju sensors ar mājas automatizācijas integrāciju, WiFi un ESP-NOW: Šajā pamācībā es jums parādīšu, kā es izveidoju ar baterijām darbināmu durvju sensoru ar mājas automatizācijas integrāciju. Esmu redzējis vēl dažus jaukus sensorus un signalizācijas sistēmas, bet es gribēju to izveidot pats. Mani mērķi: sensors, kas nosaka un ziņo par darījumu
Vienkārša vienkārša mājasdarbu mašīna: 4 soļi (ar attēliem)
Vienkārša vienkārša mājasdarbu mašīna: šī mašīna ir veidota, izmantojot lētus materiālus, un tās būvniecība nepārsniedz 7 USD. Lai to izveidotu, jums ir nepieciešama pacietība un 2 stundas laika. Un jums ir jāzina lodēšana un elektroinstalācija, jo tas ietver nelielu ķēdi. Kad tas ir uzbūvēts, vienkārši pievienojiet to
Vienkārša ISS paziņojumu sistēma: 6 soļi (ar attēliem)
Vienkārša ISS paziņojumu sistēma: kas ir Starptautiskā kosmosa stacija un kāpēc jūs vēlaties paredzēt, kur tā atrodas? Lai atbildētu uz pirmo jautājumu, mēs varam meklēt atbildi NASA vietnē. Īsumā: Starptautiskā kosmosa stacija ir liels kosmosa kuģis. Tas riņķo apkārt
Kā uzlabot LAPTOP centrālo procesoru (un citas atdzist lietas!), Lai LĒNU/NOMIRSTU klēpjdatoru pārvērstu par ĀTRU klēpjdatoru!: 4 soļi
Kā uzlabot LAPTOP centrālo procesoru (un citas interesantas lietas!), Lai pārvērstu LĒNU/NOMIRSTU klēpjdatoru par ĀTRU klēpjdatoru! ļoti novecojis … LCD tika sasists un galvenais cietais disks tika konfiscēts, tāpēc klēpjdators būtībā bija miris ….. Skatiet fotoattēlu