Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Denne instruksjonsfilen vil vise deg hvordan du bygger din egen fortellerboks. Velg gjerne ditt eget eventyr.
Den såkalte "GrimmsBox" var et prosjekt av studenter fra Hochschule der Medien Stuttgart, Tyskland. Vi bruker en vanlig kvitteringsskriver for å skrive ut den første delen av en historie. På slutten av delen må det tas en avgjørelse. Ved hjelp av knapper kan du velge hvordan historien skal fortsette. Vi bruker en Raspberry Pi for å kjøre programvaren.
To av boksene vil være i bruk veldig snart. Folkebiblioteket i Mannheim arrangerer workshops med barn. Barna kan lage sine egne historier, og de kan oppleve historiene sine ved hjelp av GrimmsBox. Hovedmålet med slike workshops er å fremme lese- og skriveferdigheter. Fortellingskassene vil også bli tatt med til arrangementer, slik at barn fra klasse 3 til 6 vil bli introdusert for en oppslukende leseopplevelse.
Trinn 1: Hvordan lage etui til GrimmsBox
Nødvendig materiale:
- 1x 6 mm kryssfinerplate (1200x600x6mm)
- 1x 4 mm kryssfinerplate (1200x600x4mm)
- trelim
- nødvendige enheter: laserskjærer, datamaskin
Filene som brukes av GrimmsBox er tilgjengelig som gratis nedlasting. Filene er svg- og dxf -filer til de enkelte komponentene i GrimmsBox. Dette er på den ene siden understrukturen der Raspberry Pi finner sin plass, så boken med et bøyende hengsel og et egendesignet bokstativ.
6 mm kryssfinerplaten brukes til underkonstruksjonen og bokstativet. Boken ble kuttet ut av 4 mm kryssfinerplate. Den tykkere tallerkenen ville være for tykk til å lage boken. Bøyehengslet fungerer bare med 3-4 mm kryssfinerplater. Ellers ville det gå i stykker.
Dxf -filene er det riktige valget for de som ikke vil endre noe lenger. Disse er klare til bruk på laserskjæreren.
Men for de som fortsatt vil gi boksen sitt eget preg, kan de bruke SVG -filer i esken. Disse kan endres etter ønske. For å gjøre dette må filen åpnes i et program (f.eks. Inkscape). Med disse programmene kan du redigere de enkelte komponentene. Hvis du har endret noe (f.eks. Størrelsen på hullene for knappene eller pull-around), må du lagre SVG-filen som en dxf-fil.
Dxf -filen må åpnes ved laserskjæreren. Så snart filen vises på PC -en, må den velges hvilke linjer som skal kuttes og hvilke som skal graveres. Bokstaven på siden av esken ble gravert på Grimms eske og bokstaven på boken ble svakt kuttet. Avhengig av hva du liker bedre, kan du bruke det ene eller det andre. De ytre linjene må selvfølgelig alle kuttes. Bruken av laserskjæreren kan imidlertid avhenge av modellen til laserskjæreren og kan være annerledes.
Trinn 2: Slik monterer du knappene for GrimmsBox
Nødvendig materiale:
- 6 normalt åpne øyeblikkelige trykknapper, f.eks. knapper for arkadespill
- 8 hoppetråder med minst en kvinnelig avslutning, vår var ca 40 cm lang
- litt flette
- varmekrympeslange boksen som ble brukt til prosjektet ditt, i vårt tilfelle det laserskårne toppdekselet og de to sidedekslene som inkluderer de ekstra knappene
- loddetinn og loddejern
- multi-meter
- wire cutter
- wire stripper
- lighter eller varmluftspistol
- I koden vår brukte vi interne motstander, så vi trenger bare å gjøre to ting: Først kobler du en kvinnelig startkabel til hver knapp som vil føre til den respektive GPIO -pinnen og deretter koble knappene til hverandre, som deretter ledes til bakken via en annen hunkabel. Vi koblet sammen avstengningsknappen og knappen for omstart av programmet og brukte en bakkepinne til dem. De fire knappene som skal brukes av motoren som du velger selv, var også koblet til hverandre og delte en bakkepinne.
- Hvis knappene dine har mer enn to pinner, bruker du et multimeter for å finne ut hvilke som er egnet for å koble GPIO -pinnen og bakken. Med lydfunksjonen bør du bare høre en lyd hvis du berører to pinner og knappen trykkes for øyeblikket. Du kan gjøre en kontinuitetstest, en guide for hvordan du gjør det er tilgjengelig på ifixit:
- Ta en knapp og sett den inn i esken. Ta en av hoppetrådene og kutt den ene enden, som skal gi deg en startkabel med en kvinnelig ende. Bruk wire stripper til å kutte ca 5 millimeter av isolasjonen. Vri de løse ledningene litt, slik at ingen enkelt ledning stikker ut. Bruk litt tinn for å lage et fint belegg for ledningene. Hvis du er ny i lodding, er det en flott, kort tegneserie som lærer deg hvordan du skal lodde. Det kalles Lodding er enkelt, og PDF-filen er tilgjengelig på flere språk på https://mightyohm.com/blog/2011/04/soldering-is-e… Mål og kutt varmekrympeslangen, som du vil bruke til å isolere del der knappen og startkabelen blir loddet sammen. Trekk varmekrympeslangen over starttråden. Lodd jumperwiren til en av pinnene på knappen.
- Gjenta det siste trinnet for alle knappene. Sørg alltid for å trekke varmekrympeslangen over jumperwiren før lodding, da den kanskje ikke passer over kontakten.
- Nå kobler du avstengningsknappen og omstartknappen. Vi brukte emaljert kobbertråd, men som det viste seg å være litt kinkig, vil jeg foreslå å bruke normal flette. Klipp av noen centimeter flette. Som før, demonter den ved hjelp av wire stripper, men denne gangen i begge ender. Deretter loddes den ene enden til pinnen til enten avslutning eller omstart -knappen. Klipp igjen litt av varmekrympeslangen og trekk den over flettet.
- Deretter kobler du flettet til den gratis knappen på den andre knappen. Men du vil også koble til en annen startkabel her, som vil føre til jord. Forbered startkabelen som du gjorde med de andre, inkludert varmekrympeslangen. Bøy nå flettet slik at du kan lodde det til den frie pinnen som kommer fra knappen mot den frie enden. Deretter loddes jumperwiren til pinnen også. Lodding av flettet som kommer fra den ene siden og hoppetråden fra den andre siden sikrer at du kan trekke varmekrympeslangen over den loddede delen.
- Koble til de fire knappene som brukes til spillmotoren ved å bygge små broer. Sørg alltid for å trekke varmekrympeslangen over flettet før lodding. (Og vær også sikker på at knappene dine er i riktig posisjon før du kobler dem til hverandre). Når du kobler til den siste knappen, bør du igjen, som med de to andre knappene, koble flettet nedenfra og koble til en jumper wire også.
-
Ved å bruke multimeterens lydfunksjon kan du sjekke om alt er godt tilkoblet. Til slutt bør du sjekke om alle varmekrympeslanger er på rett sted. Deretter kan du bruke en lighter eller en varmluftspistol for å faktisk krympe den. Nå er du ferdig med å sette sammen knappene!
Trinn 3: Konfigurere programvaren
Du vil trenge:
- en Raspberry Pi med Raspbian installert (du bør også kunne bruke andre distribusjoner, men må justere noen kommandoer)-vi brukte en pakke bestående av en Raspberry Pi 3 Model B+ med et forhåndsinstallert SD-kort, en strømforsyning og et tilfelle, bør andre modeller også fungere
- en kvitteringsskriver - husk at du må koble skriveren til Raspberry Pi, så det kan være enklest å koble til via USB
- knappene dine
-
Koble Raspberry Pi til en skjerm, mus og tastatur. Du må også koble den til skriveren og knappene etter hvert. Knappene må kobles til spesifikke GPIO -pinner. Hvis du vil bruke andre pins enn vi gjorde, kan du endre det i koden. Foreløpig vil denne listen fortelle deg hvilken knapp som må kobles til hvilken pin. Jeg bruker BCM -nummerering som også brukes i koden. Det er et diagram på https://www.raspberrypi.org/documentation/usage/g… som viser deg hvilken pin som har hvilket nummer.
• avstengningsknapp - 17 • omstartsknapp - 27 • første knapp som brukes for alternativer i historien/eventyret - 5 • andre knapp - 6 • tredje knapp - 13 • fjerde knapp - 19 • de to hoppetrådene som er koblet til pinnene som går sammen med alle knappene må gå til bakken - i diagrammet markert med svarte prikker
Start Raspberry Pi ved å koble til strømforsyningen. Koble Raspberry Pi til internett ved hjelp av en LAN -kabel eller et trådløst nettverk.
- Det første du må gjøre når du installerer nødvendig programvare på bringebær -pi, er å oppdatere programvaren som allerede er installert. Vi vil gjøre dette ved hjelp av terminalen. Hvis dette er første gang du bruker en terminal, hjelper Raspberry Pi -dokumentasjonen (https://www.raspberrypi.org/documentation/usage/terminal/) deg med å bevege deg rundt og bli kjent med miljøet. Åpne en terminal og skriv inn sudo apt update og trykk enter. Dette oppdaterer listen over tilgjengelige pakker og versjoner. Etter det skriver du inn sudo apt upgrade. Dette vil faktisk installere nyere versjoner av pakkene som allerede er installert.
- Installering av skriverdriveren er neste trinn. Skriveradministrasjon i Linux kan gjøres ved hjelp av CUPS. Du må kanskje installere den på Raspberry Pi først. I en terminal skriver du inn sudo apt install cups. Det neste trinnet er å få skriverdriverne. Kanskje du er heldig, og det er inkludert i de offisielle depotene. I en terminal bruker du apt search [skrivernavn eller produsentnavn] for å se etter det. De fleste skrivere vil sannsynligvis ikke være inkludert i lagrene, så du må hente den fra andre steder. Det kan være en CD vedlagt skriveren. På produsentens nettsted bør de nyeste driverne være tilgjengelig for nedlasting. Noen produsenter har forskjellige nettsteder for forskjellige regioner i verden, og dessverre er det ikke alle som har den samme informasjonen. Hvis du har en Star -skriver, ser det ut til at starasia.com er nettstedet med de nyeste nedlastbare driverne. Kontroller at du laster ned skrivere for Linux. Vi brukte CUPS -driverne, ikke JavaPOS -driverne.
- Deretter må du installere driverne. Følg instruksjonene fra produsenten. Det kan være en programvarehåndbok for Linux tilgjengelig, som kan komme godt med. Følg instruksjonene for Debian eller Ubuntu - det er mange forskjellige Linux -distribusjoner og ikke alle er de samme, så sjekk først om du har de riktige instruksjonene for hånden. I vår håndbok startet instruksjonene uten å angi at de er for Red Hat-baserte systemer, og bare på neste side lærte vi at instruksjonene for Debian-baserte systemer er forskjellige. Programvarehåndboken bør også angi hvilke pakker som må installeres, for eksempel måtte vi installere "libcups2-dev". Du må sannsynligvis sudo noen kommandoer. For å redde deg fra å gjenta feilen vår: Hvis du trenger å kompilere driverne fra kildekoden ved hjelp av make - make install må sudoen. Bare fra feilmeldingen kunne vi ikke finne ut hva som gikk galt.
- Hvis den ikke er inkludert i installasjonshåndboken, må du konfigurere skriveren i CUPS. For å gjøre det, naviger til localhost: 631 i en nettleser. Klikk på "Administration" og deretter "Legg til skriver" for å konfigurere skriveren. Det er også en hjelpeseksjon. Du må autentisere som bruker, se https://help.ubuntu.com/lts/serverguide/cups.html… (seksjon “Webgrensesnitt”) for detaljer. Velg passende ppd og papirstørrelse. Du bør også gjøre den til standardskriver, siden programvaren vil skrive ut til standardskriveren. For å gjøre det, naviger til siden på skriveren og velg "Sett som serverstandard" fra "Administrasjon" -menyen. Fra "Vedlikehold" -menyen kan du velge "Skriv ut testside" for en første sjekk om alt er konfigurert riktig.
- En annen pakke du trenger er python3-yaml, ettersom historiene lagres i yaml-filer og pakken er nødvendig, slik at pythonkoden kan tolke dem. Bruk sudo apt install python3-yaml for å installere den.
- Nå skal vi endelig begynne med installasjonen av programvaren som faktisk skriver ut historiene og lytter etter input på GPIO -pinnene som er koblet til knappene. Åpne en terminal og naviger til hjemmekatalogen hvis du ikke allerede er i den (dette kan oppnås ved å skrive inn cd (for endringskatalog)). Siden koden vår er på GitHub, kan du kopiere den til din Raspberry Pi ved å bruke git-klon https://github.com/fio-na/GrimmsKiste-1.git Dette vil opprette et lokalt depot på din Raspberry Pi av koden vår. Hvis du får en feilmelding fordi git ikke er installert, kan du installere den ved å skrive inn sudo apt install git.
- Koden inneholder noen elementer du må endre. Først og fremst lagres historiene i yaml -filer som også er i git -depotet. Hvis banen til mappen din ikke er “/home/pi/GrimmsKiste-1”, må du endre disse banene for å bruke historiene. For det andre skriver vi ut ved hjelp av delprosesser og overleverer terminalkommandoer. Dette inkluderer noen alternativer som brukes av skriverdriveren, som lar oss avgjøre om papiret skal kuttes etter utskrift eller ikke. Disse vil sannsynligvis ikke fungere for deg (med mindre du også bruker en Star TSP -skriver). Du vil også legge merke til at et antall linjer, inkludert en prikk, skrives ut. Vi trengte dette, for ellers var deler av historien ikke lesbar fordi papiret fortsatt satt fast i skriveren. Og til slutt i funksjonen format_tekst bruker vi tekstinnpakning for å få tekstbiter som ikke er mer enn 28 tegn, for det er så mange som passer inn i en linje på vårt 80 mm papir. Juster disse tingene slik at de passer til oppsettet ditt.
- Noen filer må gjøres kjørbare. For å gjøre dette, naviger til mappen med koden du nettopp lastet ned. Dette bør være cd ~/GrimmsKiste-1 hvis du fulgte med. I Linux håndteres filtillatelser av chmod. chmod a+x Engin.py og chmod a+x shutdown-pi-and-restart-program.py gjør de to filene kjørbare for alle brukere.
- Nå kan vi teste om motoren kan gå og fungerer som den skal, og om skriveren og knappene er riktig konfigurert. Skriv inn./Engin.py for å gjøre det.
- Hvis alt fungerer bra, er neste trinn å sette opp to systemtjenester. For mer informasjon, kan archlinux wiki -siden (https://wiki.archlinux.org/index.php/Systemd) hjelpe eller mannssiden til systemd.service (https://www.freedesktop.org/software/systemd/ mann/systemd.service.html). Den første systemd -tjenesten vil sjekke hvert annet sekund, om Engin.py kjører for øyeblikket, og hvis den ikke er det, starter den den. Derfor starter det også programmet når Raspberry Pi starter. Åpne en fil i systemd-mappen: sudo nano /etc/systemd/system/grimmskiste-restart.service Skriv inn følgende:
-
[Enhet]
Beskrivelse = starter Grimms Kiste på nytt hvert andre sekund hvis den mislykkes [Service] ExecStart =/home/pi/GrimmsKiste-1/Engin.py Restart = alltid RestartSec = 2 [Install] WantedBy = multi-user.target
- Du må redigere banen på ExecStart, hvis Engin.py er plassert andre steder, f.eks. hvis brukernavnet ditt er annerledes. For å lagre en fil i nano, må du trykke ctrl + x, deretter skrive inn y (for ja) og trykke enter.
- Den andre tjenesten starter skriptet shutdown-pi-and-restart-program.py, som lytter til avstengning og omstart-knappen. Startknappen leser prosess -ID -en til Engin.py fra en fil og dreper den, og på grunn av den andre systemd -tjenesten starter Engin.py på nytt etter to sekunder. Avstengningsknappen sender ganske enkelt en kommando til Raspberry Pi som skal stenge nå. Åpne en annen fil ved hjelp av sudo nano /etc/systemd/system/grimmskiste.service og skriv inn følgende:
-
[Enhet]
Beskrivelse = Kontrollerer to maskinvareknapper for å slå av bringebær-pi eller for å drepe det kjørende programmet Grimms Kiste [Service] ExecStart =/home/pi/GrimmsKiste-1/shutdown-pi-and-restart-program.py [Install] WantedBy = multi-user.target
- Igjen må du redigere banen på ExecStart, hvis den er annerledes på Pi -en din. Og igjen, du kan lagre filen i nano ved å bruke ctrl + x, deretter skrive y og trykke enter.
- Nå har du enhetsfilene for systemtjenestene, men de er ikke i bruk ennå. Når du endrer enhetsfiler, skriver du inn sudo systemctl daemon-reload, så gjør det nå. Start deretter begge tjenestene med sudo systemctl start grimmskiste.service og sudo systemctl start grimmskiste-restart.service Dette starter tjenestene for nå. Bruk sudo systemctl status grimmskiste.service og sudo systemctl status grimmskiste-restart.service for å sjekke om de er i gang. I utgangen bør det være en linje som inkluderer "aktiv (kjører)", sannsynligvis på den tredje linjen - hvis den ikke er det, gikk noe galt. Journalctl kan kanskje hjelpe med mer feilsøkingsinformasjon.
- Ved å bruke systemctl start starter tjenestene bare nå, men hvis du vil at de skal starte hver gang Raspberry Pi starter, må du aktivere dem. Dette gjøres av sudo systemctl enable grimmskiste.service og sudo systemctl enable grimmskiste-restart.service.
- Nå bør du teste alle knappene hvis alt fungerer som det skal. Test avstengningsknappen også, og sjekk om alt fortsatt kjører skikkelig etter omstarten. I så fall trenger du ikke skjermen, tastaturet etc., og programmet ditt bør kjøre hver gang du kobler Raspberry Pi til kontakten.
Trinn 4: Introduksjon til YAML:
Viktig: Feltene i lilla må ikke gi nytt navn. Navnene på de enkelte listene er et unntak. Hver historie får sin egen YAML -fil med alle valg. Strukturen er den samme som for filen start.yaml
Tykktarm: Hvis du vil bruke kolon i teksten, må du lage en> ettermelding. Teksten senkes deretter en linje og innrykkes med to blanke linjer.
Faner: Ikke bruk faner, og sørg for at det ikke er faner på slutten av en melding, dette vil resultere i at analysatoren ikke kan lese filen.
_default_question: Spørsmålet som er angitt her tas hvis det ikke er angitt et felt med "spørsmål" i loggen.
_prompt: Dette feltet skrives ut når leseren må skrive inn.
Begge feltene kan bare eksistere én gang i start.yaml -filen og kan ikke brukes i andre filer.
start: start er navnet på den første listen på startsiden. Navnene må ikke dupliseres i alle andre lister. I malen kalles dette feltet "Historiens navn" og må endres for hver historie.
Melding: Dette feltet inneholder historien og må stå på en linje. spørsmål: Brukes når et annet spørsmål enn _default_question skal brukes. Hvis feltet ikke brukes, må det slettes. (valgfri)
Handlinger: "Handlinger" -listen inneholder valgalternativer. Maksimalt 4 alternativer kan angis her. Etikett: Etiketten skrives ut som et valgalternativ.
Neste: Dette er navnet på det neste valgalternativet som skal kalles.
ende: En liste med bare en melding markerer slutten på en historie. Feltene handlinger, etikett og neste må slettes
Legg til flere historier:
Som forklart ovenfor får hver ny historie sin egen.yaml -fil. For å gjøre dette, åpne mappen "Grimms Box" og kopier filen template.yaml. Du kan også finne den i vår GitHub-repo (https://github.com/fio-na/GrimmsKiste-1). Gi filen nytt navn til tittelen på historien og åpne den. I den nye filen legger du til produsenten og datoen og endrer feltet "Navnet på historien" til tittelen (se fig. 4: Navnet på historien her er HP1). Fyll deretter ut melding, spørsmål, etikett og neste. Når du har gjort dette, kopierer du datastrukturen (som vist i figur 4) og limer den inn under den siste neste. Tittelen vil nå bli endret til en nøkkel som brukes i "neste" i den første delen (som vist i fig. 4 HP1 vil da være HP2 eller gang2, avhengig av hvilket alternativ som redigeres først). Deretter fylles melding, spørsmål, etikett og neste ut igjen. Gjør dette for alle valgene/handlingene til hele historien er i filen. I alle ender må den siste listen bare inneholde en melding. Alle andre felt i den endelige listen må slettes. Etter det må filen lagres.
Fremgangsmåte kort fortalt:
- Åpne mappen Grimms Box
- Kopier Vorlage.yaml og gi nytt navn til historien.
- Åpne denne nye filen.
- Kopier datastruktur (fig. 4)
- Endre navnet fra Historikk til Markeringsnavn
- Skriv inn teksten til historien i meldingsfeltet,
- Sett inn passende etikett.
- Skriv inn navnet på det neste valgalternativet i neste.
- Gjenta trinn 4 til 9 til historien er ferdig.
- I alle ender: Den siste listen inneholder bare en melding.
- Lagre filen.
Legg til den nye historien din på startsiden:
start.yaml er startsiden for Grimms boks. Imidlertid må denne filen først ha tilgang til de nye historiene. Derfor må de nye historiene legges til i denne filen først.
For handlinger kan du bare lage 4 etiketter, siden Grimm -boksen bare har 4 knapper å velge mellom. Derfor, hvis, som i eksempelet start.yaml -fil, 4 etiketter og neste felt allerede er tilordnet, må den fjerde etiketten få navnet "Flere historier" eller "Mer" og en andre datastruktur (her: S2; med melding, spørsmål, handlinger, etikett, neste) må legges til og gi nytt navn. Deretter legger du til den nye historien med etikett og neste og gir den et passende navn. Til slutt må den lagres.
Fremgangsmåte kort fortalt:
I start.yaml:
- Åpen start.yaml
- Fyll ut feltene riktig.
- Feltene handlinger, etikett og neste må kopieres og limes inn.
- Lagre.
Oppretthold hovedfilen “Engin.py”:
Til slutt må historien legges til hovedfilen “Engin.py”. For dette må bare filbanen til den nye YAML -filen legges inn i fillisten. Banen er omsluttet av anførselstegn og atskilt fra de andre med et komma.
Fremgangsmåte kort fortalt:
- Åpne Engine.py.
- Kopier filbanen til YAML -filen
- Kopier banen til filelisten
- Skill veiene med kommaer.
Trinn 5: Bruksanvisning
For å starte Grimm's Box, koble skriveren til Raspberry Pi (det er et lite hull for kablene), koble skriveren og Raspberry Pi til kontakten og slå på skriveren. Raspberry Pi starter av seg selv når den er tilkoblet. Vent til den starter. Programvaren skal starte av seg selv.
Det er en knapp for å slå av Raspberry Pi og en knapp for å starte historien på nytt, hvis noen bare drar uten å fullføre historien. Begge må skyves i minst 3 sekunder. Dette er for å sikre at de ikke skyves ved et uhell, men du kan endre timingen i filen shutdown-pi-and-restart-program.py. Bruk avstengningsknappen, bare å koble fra er ikke bra for Raspberry Pi. Med det nåværende oppsettet kan du ikke se om Raspberry Pi er på eller av, så du må sjekke om den fortsatt reagerer på andre knapper hvis du vil være sikker.
Å starte programmet på nytt tar litt tid, ettersom du må trykke på knappen minst 3 sekunder, og prosessen i bakgrunnen sjekker bare hvert 2. sekund om programmet kjører, så hele prosessen til den skrives ut igjen kan ta 6 sekunder. Bare gi det litt tid. Startknappen kan også brukes hvis det oppstår problemer. Kanskje en omstart kan fikse det. Hvis den ikke gjør det, kan du koble Raspberry Pi til en skjerm osv. Og kjøre programmet fra terminalen feilmeldinger du kan slå opp på internett. Knappene som ble brukt til historiene må skyves i minst 0,1 sekunder, men det er svært sjelden at noen presser dem mindre enn det.
Hvis historien er ferdig, blir papiret kuttet og programmet starter automatisk igjen. Men for å gi leseren litt tid til å lese slutten, venter den i 3,5 sekunder pluss de 2 sekundene som trengs for å legge merke til at programmet ikke kjører og starter på nytt. De 3,5 sekundene kan redigeres i Engin.py -filen.
Knapper som trykkes mindre enn 1,7 sekunder etter det siste trykket, godtas ikke. Vi implementerte dette fordi Raspberry Pi er mye raskere enn skriveren, og hvis du trykker på to knapper, ville det føre til at en handling ble valgt før leseren kunne se alternativene.