Tartalomjegyzék:
- 1. lépés: A koncepció és a prototípus -bizonyítás
- 2. lépés: Anyagok és eszközök
- 3. lépés: Előlap - LCD képernyő
- 4. lépés: Előlap - Állapotjelző LED -ek
- 5. lépés: Előlap - gombok
- 6. lépés: Tápcsatlakozó
- 7. lépés: Mindent össze kell rakni
- 8. lépés: Laza konfiguráció
- 9. lépés: Szoftver implementálása
- 10. lépés: Használati utasítás
- 11. lépés: Elengedés
- 12. lépés: GYIK
Videó: Egyszerű Kicker állapot és foglalási rendszer laza integrációval: 12 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Egy cégnél, ahol dolgozom, van egy rúgóasztal. A vállalat sok emeletet foglal el, és az alkalmazottak egy részének akár 3 percbe is telhet, amíg az asztalhoz ér, és… rájön, hogy az asztal már foglalt.
Ezért felmerült egy ötlet egyfajta egyszerű státusz -közvetítési és foglalási rendszer kiépítésére, amely valós időben működik.
A vállalat a Slack kommunikációs eszközt használja, ahol minden alkalmazott rendelkezik fiókkal. Van még egy #kicker csatornánk is, csak a… kickerről szóló vitákhoz. A csatorna egyfajta "belépési pontként" használható a foglaláshoz, és tájékoztatást kaphat az aktuális asztal állapotáról.
Mint általában, sok koncepció létezik az ilyen rendszer kezelésére. Általában azonban mindegyikben megjelent egy alapvető szabály: egyszerűnek kell lennie a használathoz, anélkül, hogy túlzott lépéseket kellene végrehajtani a rendszerrel való foglalkozás során.
Az eszköz és a szolgáltatás nincs ragasztva a kicker asztalhoz, és bármilyen "közös erőforráshoz" használható (például ping-pong asztal, konzol, stb.), Amelyhez valamilyen státuszközvetítő és foglalási megoldás szükséges.
Szóval, kezdjük…
1. lépés: A koncepció és a prototípus -bizonyítás
Nagyjából az volt az ötlet, hogy olyan eszközt építsünk, amely a rúgóasztal mellé kerül, a következő követelményeknek megfelelően:
-
néhány mutató az asztal jelenlegi állapotáról - ha mellette áll, tudnia kell, hogy ingyenes vagy fenntartott, és valaki 3 perc múlva jön játszani. A közlekedési lámpák tökéletesen illeszkednek az elképzeléshez:
- zöld fény - szabadon játszható,
- sárga fény - fenntartva,
- piros lámpa - elfoglalt.
-
gomb (ok) A játék előtt és után kattinthat, hogy mindenki más értesüljön az aktuális asztal állapotáról. 1 váltógomb helyett úgy döntöttem, hogy két külön gombot használok:
- piros gomb - foglalja el az asztalt, indítson játékot (foglalás után vagy esetenként).
- zöld gomb - kioldási táblázat.
- néhány kijelző részletesebb információkkal a "történésekről" - foglalási időtúllépés, ismételt asztalállapot, lejátszási időkorlát stb.
Foglalás alatt csak a következő 3 percre szóló foglalást értem. A rendszert nem úgy tervezték, hogy a felhasználó pontosan le tudja foglalni az asztalt (pl. 02:00 PM). Nem úgy működik, mint a foglalás pl. éttermekben, de csak néhány percre.
A LAN -kapcsolat hiánya miatt az egyetlen lehetőség a WLAN használata - mindenesetre ez a legjobb megoldás. A rendszer agyának Slack API -t kell használnia a parancsok küldésére és fogadására a Slack csatornáról. Először a NodeMCU -t próbáltam használni. Képes voltam fogadni és fogadni üzeneteket a Slack -ba és onnan, de a HTTPS használat és a Slack „üdvözlő üzenet” mérete (~ 300 KB) miatt a NodeMCU megszakította a kapcsolatot, és/vagy valami furcsa kivételt kapott, amelyet nem tudtam megoldani az interneten keresztül történő ásás.
Ezért úgy döntöttem, hogy valami erősebbet használok: Raspberry Pi 3 (a Zero W WiFi -vel ekkor még nem jelent meg). Az RPi birtokában a megvalósítási nyelvet C -ről Java -ra válthatnám, mivel ez kényelmesebb számomra - tehát ez előny volt. Ma használhat valami erősebbet, mint a NodeMCU, és kevésbé erőteljeset, mint az RPi. A Raspberry Zero esetleg?
Miután az első prototípust kenyérsütő táblára építette, őrült kábelezéssel, sok vázlattal és prototípus -készítéssel, a rendszer úgy tűnt, hogy működik.
Mindezek az ötletek és a működő PoC birtokában elkezdtem tervezni a fenti elemek különböző elhelyezési konfigurációit az előlapon, hogy azok a leginkább informatívak és legkényelmesebben használhatók legyenek. Ellenőrizheti a többi javaslatot, talán néhány jobban megfelel Önnek. Az utolsót én választottam.
2. lépés: Anyagok és eszközök
Az általam használt anyagok:
- Doboz
- Raspberry Pi, microSD kártya, micro USB tápegység
- Zöld és piros arcade gombok
- 16x2 LCD kijelző
- LED -ek - RGB -t használtam, de használhatja a megfelelő színt
- Férfi - Nő és Nő - Nő - kenyérlap deszkázó kábelek
- Micro USB interfész
- Mini kenyértábla csak néhány vezeték csatlakoztatásához
- Rövid mikro USB kábel, amely jumperként működik a dobozon belül az RPi táplálásához
Eszközök, amelyeket használtam:
- Éles kés (pl. Használati kés szőnyegvágáshoz)
- Forgó szerszám
- Ragasztópisztoly
- Forrasztóállomás
- Fogó, átlós fogó/oldalvágó
- Csavarhúzó
- Fájl
- Nekem
Valószínűleg szükséges eszközök:
A fentiek mindegyike, de "én" helyett a következőnek kell lennie: "te":)
3. lépés: Előlap - LCD képernyő
Az LCD képernyő lyuka egyszerű volt. Csak egy téglalap, amely illeszkedik az LCD képernyőmhöz. Miután megpróbáltam éles késsel vágni, rájöttem, hogy a doboz műanyaga meglehetősen kemény. Tehát fúrószerszámmal vágtam az ablakot és csiszoltam a széleket.
4. lépés: Előlap - Állapotjelző LED -ek
A LED -lyukak szintén egyszerűek. Most vettem egy nagy fúrót fához, majd a széleit fúrószerszámmal csiszoltam. A nagy LED -ek tökéletesen szorosan illeszkedtek. Még nem forrasztottam ellenállást a LED -ekhez - hagytam az összeszerelési folyamatra.
5. lépés: Előlap - gombok
Ennek a 2 nagy gombnak a legnagyobb problémája az volt, hogy egyenletesen helyezze el őket a megfelelő távolsággal. Csak a fúrószerszámmal vágtam ki a lyukakat, mivel lépésről lépésre növelhetném az átmérőt, hogy a gombok szorosan illeszkedjenek.
6. lépés: Tápcsatlakozó
Egy kis lyuk a mikro -USB tápellátáshoz nagyon kényes feladat volt. Azt akartam, hogy a lyuk a lehető legjobban illeszkedjen, ezért sok időt töltöttem itt a polírozással. De elégedett voltam a végeredménnyel.
Ezután elvágtam egy rövid mini USB -kábelt, amelyet a dobozba helyeztek. Az egyik oldal az RPi -hez van csatlakoztatva, a másik oldalon az összes kábelt forrasztották a micro USB interfészhez az USB pinoutok szerint.
Ezután a kisméretű NYÁK-t közvetlenül a dobozhoz ragasztottam (ez az összeállítási lépésen látható fényképen látható).
7. lépés: Mindent össze kell rakni
Először megfelelő ellenállásokat forrasztottam a LED -ekhez színük (feszültségük) szerint 3,3 V voltra. 100Ω -ot használtam piroshoz, két 82 és 100 ellenállást sárgához (zöld és piros csomópont), 100Ω -ot zöldhez. Használhatja az online ellenállás egyikét a LED -számológéphez. De kérjük, végezzen némi kutatást a kívánt fényerő és pontos színárnyalat szerint.
A sárga LED lábait összeforrasztották, így maga a LED csak egy tűvel vezérelhető RPi -n.
A pinout diagram szerint:
LED csomópontokat csatlakoztattak:
- Zöld LED - GPIO1 az Rpi -n
- Sárga LED (mindkét lábon) GPIO2 -re RPi -n
- Piros LED GPIO0 -ra RPi -n
Az LCD -t I2C csapok segítségével csatlakoztattam RPi csapokra
- LCD SDA - GPIO8 RPi -n
- LCD SCL - GPIO9 RPi -n
- LCD PWR 5V -ra RPi -n
- LCD GND -GND RPi -n
Az LCD-t további védelemként melegen ragasztották a dobozhoz.
A 3.3V -ot és a GND -t a kis kenyérsütőhöz kötöttem, hogy gombokhoz használhassam őket.
A zöld gombot a 3.3V -os mini kenyértáblán keresztül és a GPIO5 -hez csatlakoztatta RPi -n.
A piros gombot mini kenyértáblán keresztül a 3.3V -hoz és RPi GPIO4 -hez kötötték.
Tehát amikor megnyomja a gombot, az RPi csap magas állapotot mutat.
A mini bradboard tökéletesen működik, így kihagytam az összes vezeték forrasztását a NYÁK -ba. Ehelyett csak letakartam a mini kenyértáblát forró ragasztóval, hogy a kábelek ne essenek le.
Az RPi borítóját is melegen ragasztottam a dobozhoz, hogy ne lógjon belül.
Megcsavartam az előlapot, benne minden cuccal.
Ezután egyszerű címkéket nyomtam, vágtam és ragasztottam a közlekedési lámpák és gombok mellé.
8. lépés: Laza konfiguráció
Hozza létre csapatát a Slack.com webhelyen, vagy használja azt, amelyik rendelkezik, és rendelkezik legalább rendszergazdai jogokkal.
A Slack szolgáltatásban hozzon létre egy csatornát a szolgáltatás Slack integrációjához (vagy hagyja ki a csatorna létrehozását, ha már meglévőt szeretne használni).
Adja hozzá a bejövő webhook -integrációt a csapatához. Válassza ki a csatornát, és másolja a webhook URL -címét.
Adja hozzá a Bots integrációt a csapatához. Válasszon nevet a botjának, és másolja a bot API tokent.
Az egyéni integrációkat kezelő oldalnak úgy kell kinéznie, mint a képen.
Meg kell hívnia a botot csatornája tagjaként. Ezt megteheted már a csatorna létrehozása során.
Ha később szeretné személyre szabni a szolgáltatást, ellenőrizze a Slack API -t.
9. lépés: Szoftver implementálása
Ezt az oktatóanyagot követve a Raspbian operációs rendszert használtam RPi -mhez. Kérlek, bocsáss meg, kihagyom a magyarázatot, mivel sok helyen már dokumentált, és a folyamat egyszerű. Remélem, elég ügyes és tapasztalt ahhoz, hogy egyedül tudjon RPi -t beállítani. Ne felejtse el beállítani a WiFi hozzáférést a Raspberry Pi készüléken;)
Amint azt a prototípuskészítés részben említettük, a Java -t használtam az egész rendszer agyának megvalósításához. A kód elérhető a GitHubon -
Az általam használt Java könyvtárak:
- pi4j - a Raspberry Pi használatához a Java -ból
- A Springboot, mint alkalmazási platform
- allbegray/slack-api mint Slack integráció
Szerkesztenie kell a konfigurációs fájlt az src/resources/config.properties mappában. Három bejegyzést kell konfigurálnia a Slack API használatához:
- channelName - a csatorna neve Az állapotváltozásokat közzé szeretné tenni, és parancsokat kapni.
- slackBotToken - az Ön Slack csapatintegrációiban konfigurált bot jelzője, amelyet üzenetek küldésére használnak a fent említett csatornára. Felhívjuk figyelmét, hogy hozzá kell adnia a Slack Bot -ot a csatorna tagjához.
- webhookUrl - az URL, amelyet a Slack Team egyéni integrációiból kaphat.
A projekt Mavenized, ezért a felépítéséhez csak írja be (legalább Java 8 és Maven telepítve kell):
mvn tiszta csomag
És a célfáradtságban megtalálható a Springbooted JAR fájl. Egy szolgáltatás elindításához:
sudo java -jar kicker-booking-service-0.3.0.jar
Ezt a sort.sh szkriptre állítottam, és hozzáadtam automatikus indításként. Tehát amikor a készülék be van kapcsolva, a szolgáltatás automatikusan elindul.
Egy speciális magyarázat szükséges az LCD -hez.
Próbáltam különböző megközelítéseket/könyvtárakat, hogy RPi -ről vezéreljem az LCD -t az I2C felett, de nem sikerült. Egyes LCD -k nem működtek megfelelően, egyesek szemetet mutattak.
De egy dolog nagyon jól működött, csak a dobozból. Ez a segédprogram parancssori eszköze, amelyet találtam Az LCD vezérléséhez használható. Ezért úgy döntöttem, hogy ezt az eszközt közvetlenül a Java -ról használom. Így működik, hogy egy normál Linux folyamatot (lcdi2c) hívnak meg (előkészített paraméterekkel) minden alkalommal, amikor valamit meg akarok jeleníteni az LCD képernyőn.
Töltse le az eszközt, és helyezze a JAR szolgáltatás mellé
Ennek az eszköznek a használata egyfajta hack és buta megoldás. De követem az 1. mérnöki szabályt:
Ha hülyeség, de működik… nem hülyeség
10. lépés: Használati utasítás
A rúgótábla aktuális állapotát a létrehozott Slack csatornán ellenőrizheti a "status" (vagy rövidesen "st") parancs beírásával, vagy közvetlenül ellenőrizheti az eszköz közlekedési lámpáit.
Ha csak játszani szeretne - nyomja meg a piros gombot. Az üzenet a Slack csatornára kerül elküldésre azzal az információval, hogy a kicker asztal foglalt. Ha befejezte a játékot - nyomja meg a zöld gombot. Az üzenetet elküldjük a Slack csatornára azzal az információval, hogy a kicker asztal szabadon játszható.
A közlekedési lámpák is megváltoznak, és az LCD képernyőn néhány részletes információ látható.
Csak abban az esetben, ha elfelejti felszabadítani az asztalt a játék befejezése után, az időkorlát 20 percre van állítva. Ha még mindig játszik, és több időre van szüksége, nyomja meg újra a piros gombot, és a mérkőzés 5 perccel meghosszabbodik (csak akkor alkalmazza, ha kevesebb mint 5 perc van hátra az időkérés előtt). A lejátszási időtúllépés megjelenik az LCD képernyőn.
A kicker asztal lefoglalásához írjon egy üzenetet „reserve” (vagy csak: „res”) a Slack csatornára.
A sárga jelzőlámpa bekapcsol, és tájékoztatja a rúgóasztal közelében lévőket, hogy le van foglalva, és hamarosan valaki játszani fog.
A foglalási időtúllépés 3 percre van állítva. Ezt követően a kicker asztal szabad állapotba kapcsolja a játékot.
Ha szüksége van rá, akkor törölheti a foglalást a Slack csatornán a „Mégse” felirattal.
A rendszernek van néhány egyéb kisebb funkciója is, mint pl.
- A foglalás után a gombok 5 másodpercre lefagynak. Ez azért van, hogy megakadályozzuk a helyzeteket, hogy ugyanabban az időben valaki tartalék és egy miliszekundum múlva valaki megnyomja a piros gombot, azt gondolva, hogy ő/ő foglalja el az asztalt, de nem tudja, hogy valaki csak egy ezredmásodperccel lefoglalta az asztalt.
- Bármelyik gomb megnyomása fél másodpercre lefagyasztja mindkettőt. Ez azért van, hogy megakadályozzuk az őrült gombnyomást, így a Slack csatorna nem lesz ennyire spam.
- A Slack ingyenes verziója lehetővé teszi, hogy 10000 üzenetet tároljon az egész csapat. Az üzenetek egy részének megőrzése érdekében a szolgáltatás törli a foglalási/állapotrendszerhez kapcsolódó régi üzeneteket), és csak az utolsó 6 -ot tartja meg. Miért 6? Mivel leggyakrabban 2 állapotforgatókönyv létezik: "Foglalt-foglalt-szabad" és "Foglalt-szabad". Tehát a rendszer legalább 2, teljesen elfoglalt munkamenetet képes tárolni. Az összes rendszerüzenet törléséhez írja be a "clean" (vagy "clear") parancsot.
11. lépés: Elengedés
Eddig (ennek az utasításnak a közzétételének pillanatában) a rendszer 2,5+ hónapig működik, és több mint 30 ember használja. A rúgótábla állapotfrissítése miatt mindig tudjuk, hogy mikor van szabad vagy foglalt, így nem veszítjük el az időt oda -vissza. A kapcsolat és a szolgáltatás nagyon stabil, így bízhatunk benne.
Eddig jó…
12. lépés: GYIK
Miért van beállítva a foglalási időtúllépés 3 percre?
3 perc a maximális foglalási idő, fogadja el úgy, ahogy szeretné a kódban. Általában ritkán fordul elő, hogy teljes 3 perc telik el, és a foglalás időtúllépésre kerül. A legtöbb esetben valaki végül eljön és lefoglalja az asztalt.
Miért van beállítva a lejátszási időtúllépés 20 perc?
A játékosoktól függően az átlagos játékidő ~ 10 perc. Ha hosszabb ideig kell játszania, nyomja meg újra a piros gombot, amikor kevesebb, mint 5 perc van hátra, és az időtúllépés visszaáll 5 percre. Ez az időtúllépés arra az esetre van beállítva, ha valaki elfelejti kiadni az asztalt.
Miért nincs a készüléken PIN -kód a foglalás megerősítéséhez; nincs bejelentkezés és jelszó?
A fő ötlet az volt, hogy egyszerű-buta maradni. Ellenkező esetben, ha a foglalás, a játék indítása és befejezése túl sok erőfeszítést igényel, akkor senki sem akarja használni.
Miért néz ki a készülék ennyire ipari-csúnyának?
Mivel nem volt lézervágóm, CNC -m, 3D -s nyomtatóm, díszes színes feliratozógépem stb.
Miért nem valósít meg néhány alkalmazást, és nem ragad egy olcsó táblagépet a falhoz, ugyanazzal a funkcióval?
Alkalmazások, alkalmazások mindenhol. Az emberek szeretnek fizikailag kapcsolatba lépni a dolgokkal, és nem csak a lapos képernyőkre koppintani.
Ajánlott:
Laza állapotfrissítő ESP8266 -tal: 5 lépés (képekkel)
Slack Status Updater ESP8266 segítségével: Ez a projekt egy kicsit megkönnyíti a napját, ha távoli dolgozó vagy a Slack használatával. Megmutatom, hogyan kell felépíteni egy ESP8266 wifi kártyával. Az áttekintéshez ne hagyja ki a fenti videót. Akár új vagy a Slack használatában, akár csak most használta
Akkumulátoros ajtóérzékelő otthoni automatizálási integrációval, WiFi és ESP-NOW: 5 lépés (képekkel)
Akkumulátoros ajtóérzékelő otthoni automatizálási integrációval, WiFi-vel és ESP-NOW-val: Ebben az útmutatóban megmutatom, hogyan készítettem elemmel működő ajtóérzékelőt otthoni automatizálási integrációval. Láttam még néhány szép érzékelőt és riasztórendszert, de magam szerettem volna ilyet készíteni. Célkitűzéseim: Egy érzékelő, amely észleli és jelenti a hibát
Wifi által vezérelt 12 V -os LED szalag a Raspberry Pi használatával Taskerrel, Ifttt integrációval: 15 lépés (képekkel)
Wifi által vezérelt 12 V -os LED szalag a Raspberry Pi használatával Taskerrel, Ifttt integrációval: Ebben a projektben megmutatom, hogyan lehet egy egyszerű 12 voltos analóg led csíkot wifi felett egy málna pi segítségével ellenőrizni. Ehhez a projekthez szüksége lesz: 1x Raspberry Pi (I Raspberry Pi 1 B+modellt használok) 1x RGB 12v Le
Autós telefon töltő csavarog-laza-elment: 4 lépés (képekkel)
Autós telefon töltő Wiggle-Loose-Be-Gone: Íme egy egyszerű módja annak, hogy az autós töltők csatlakoztatva legyenek a járműhöz; tegyen egy maszkolószalagot a végére, mielőtt csatlakoztatja
Hőmérséklet -érzékelő / időjárási állapot: 9 lépés (képekkel)
Hőmérséklet-érzékelő / időjárás-állomás: Hozzon létre időjárás-állomást vagy hőmérséklet-figyelőt a nagyon hűvös digitális hőmérséklet-érzékelő DS1820 segítségével. Ezzel a beállítással kiszolgálószobát és időjárás-állomást figyelhetek. Ez a projekt a következőkből áll: Dallas 1 vezetékes buszhálózat Interfész RS- 232 és