Technische Universiteit Eindhoven, Faculteit de.. Elektrotechniek, Vakgroep Meet & Besturingssystemen, Sectie Medische Elektrotechniek
Keukenweegschaal voor visueel gehandicapten Technische handleiding Door Herman Kuster
Rapport van Afstudeerwerk uitgevoerd van: februari 1996 tim december 1996 in opdracht van de plaatsvervangend leerstoelhouder: dr. ir. PJ.M. Cluitmans onder leiding van: ir. W.H. Leliveld medebegeleid door: H.J.M. Ossevoort
De faculteit Elektrotechniek van de Technische Universiteit Eindhoven aanvaardt geen aansprakelijkheid voor de inhoud van stage- en afstudeerverslagen
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Inhoud Hoofdstuk 1, Hardware beschrijving 1.1, Weegschaal 1.2, Microcontroller 1.3, Spraaksynthesizer 1.4, Spraakinterface Hoofdstuk 2, Software beschrijving 2.1, Startup procedure 2.2, Hoofdlus 2.3, Interrupt 0 procedure 2.4, Compose sentence procedure 2.5, Interrupt 1 procedure 2.6, Timer 1 interrupt procedure 2.7, Key interrupt procedure 2.8, Timer 0 procedure 2.9, Extrapolate procedure 2.10, Volume control procedure 2.11, Alarm control procedure Hoofdstuk 3, Aanbevelingen Bijlage 1, Weegschaal PCB Bijlage 2, Serieel signaal Bijlage 3, 80CL580 blokschema Bijlage 4, ISD2500 series blokschema Bijlage 5, Spraakinterface schema Bijlage 6, Spraakinterface PCB Bij lage 7, Spraakinterface componenten opstelling Bijlage 8, Spraakinterface onderdelen lijst.. Bijlage 9, Startup procedure flowchart Bijlage 10, Hoofdlus flowchart Bijlage 11, Interrupt 0 procedure flowchart Bijlage 12, Compose sentence output Bijlage 13, Interrupt 1 procedure flowchart Bijlage 14, Timer 1 interrupt procedure flowchart Bijlage 15, Key 0..2 interrupt procedure flowchart Bijlage 16, Timer 0 interrupt procedure flowchart Bijlage 17, Extrapolate procedure flowchart Bijlage 18, Volume control procedure jump table Bijlage 19, Alarm control procedure jump table
-2-
3 3 4 5 5 8 8 8 9 10 10 11 11 12 12 13 13 15 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Hoofdstuk 1, Hardware beschrijving 1.1, Weegschaal Ais basis voor dit afstudeerproject is gekozen voor een digitale keukenweegschaal van Ohaus, type LSSOOO. In 'Bijlage 1, Weegschaal PCB' staat een afbeelding van de print zoals deze gevonden kan worden in deze weegschaal. In de tekening staat aangegeven waar de verschillende signalen moeten worden afgetapt. Hierbij dient bij de S V voeding en bij het seriele signaal nog een 10 kQ weerstand in serie te worden opgenomen. De aansluiting op de 9-polige SUB-D chassis (male) is als voIgt: 0 V aan pin 1 tim pin 6 , S V aan pin 7, Serieel signaal aan pin 8 en 9 V aan pin 9. Door rechts-achterin de behuizing van de weegschaal bij de nokjes een rechthoekige opening van I x 2 cm (h x b) te frezen kan dit SUB-D chassis makkelijk ingebouwd worden. Het uitlezen van de gewicht data uit de weegschaal gaat zeer eenvoudig omdat de weegschaal de gewicht informatie verzendt via de seriele uitgang. In 'Bijlage 2, Serieel signaal' is een stukje van dit seriele signaal weergegeven zoals dat te zien zou kunnen zijn op een oscilloscoop. Op deze uitgang wordt circa 2 keer per seconde het huidige gewicht verzonden in pakketjes van 32 bits. Elk van deze bits is opgebouwd uit een puIs hoog van 660 /-ls, daama een pauze van 240 /-lS, waama athankelijk van het logische nivo van het desbetreffende bit een puIs van 660 /-lS hoog danwellaag, het volgende bit voIgt na 2 ms pauze. De betekenis van deze 32 bits is als voIgt: bitO-bit3: I sle digit van het display (deze wordt niet gebruikt) bit4-bit7: 2de digit van het display (kilogrammen) bit8-bitll: 3de digit van het display (honderden gram) bitI2-bitlS: 4de digit van het display (tientallen gram) bit16-bit19: sde digit van het display (eenheden gram) bit20: 1 = negatief gewicht, 0 = positief gewicht bit21: ? bit22: 1 = overflow, 0 = no overflow bit23: 1 = lb/oz mode, 0 = gram mode bit24-bit2S: inverse van bit23 bit26: 1 = low battery, 0 = battery good bit27-bit28: ? bit29: idem bit 23 bit30-bit31: ? De vijf digits van het display zijn op een speciale manier gekodeerd en moeten in de software weer worden gedekodeerd tot BCD-code.
-3-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
1.2, Microcontroller In 'Bijlage 3, 80CL580 blokschema' is een afbeelding weergeven van het blokschema van de 80CL580. De onderdelen die voor de rest van de schakeling van belang zijn zijn achtereenvolgens: • 16-bits timer TO, deze wordt in de schakeling gebruikt als interne tijd timer. Deze timer is als 8-bits auto-reload geconfigureerd, wat inhoudt dat bij het overlopen van de teller (11111111 b naar OOOOOOOOb) automatisch de teller wordt herladen met een 8-bits woord en wordt herstart. De reload waarde is zodanig gekozen dat de frequentie waarmee timer 0 overloopt 2 kHz is. Op deze manier kan in de timer 0 interrupt routine (bij elke overloop wordt een interrupt gegenereerd) de interne tijd worden bijgewerkt. • 16-bits timer Tl, deze timer wordt in combinatie met externe interrupt 1 gebruikt voor het meten van de pulslengte van seriele weegschaaldata. Deze timer is als 16-bits teller geconfigureerd met als speciale optie dat het nivo op de interrupt 1 pin bepaalt of de teller al dan niet wordt voorzien van klokpulsen. Door nu op deze interrupt 1 pin de inverse (de teller loopt als het nivo hoog is) van de weegschaal data aan te bieden kan op eenvoudige wijze de lengte van de lage perioden in dit signaal worden gemeten. • Externe interrupt 0, deze wordt gebruikt bij de aansturing van de spraaksynthesizer (ISD2560). Het nivo op deze pin wordt bepaald door de EOM uitgang van deze spraaksynthesizer. Hierdoor wordt elke keer dat de ISD2560 klaar is voor het ontvangen van een nieuw kommando een interrupt gegenereerd, waarmee dan een procedure kan worden aangeroepen die deze aansturing verzorgt. • Externe interrupt 1, zie timer 1. • Externe interrupt 2 tim 4, aan deze pinnen hangen drie schake1aars die dienen voor de bediening van de spraakinterface. Bij het sluiten van een schakelaar wordt het nivo laag, wat tot gevolg heeft dat er een interrupt wordt gegenereerd. Intern zijn deze ingangen voorzien van een pull-up weerstand. In de interrupt procedure die daardoor wordt aangeroepen kan de functionaliteit van de desbetreffende toets worden verwezenlijkt. • Pulsewidth uitgang PWMO, deze wordt gebruikt om op eenvoudige wijze een DA funktie te verwezenlijken. Deze semi analoge uitgang wordt via een simpel RC laagdoorlaat filter gebruikt voor de aansturing van de volume regeling van de audio versterker. • fc interface (SDA en SCL), deze wordt gebruikt voor de aansturing van een klein EEPROM geheugen. In deze EEPROM worden de semi-permanente gegevens (volume, kookwekkertijd) opgeslagen zodat ze bewaard blijven bij het wegvallen van de voedingsspanning. • I/O poorten PO en P2, deze worden gebruikt voor de aansturing van het externe code geheugen. • I/O poorten PI, P3 en P4, deze worden gebruikt voor de aansturing van de rest van de schakeling.
- 4-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
1.3, Spraaksynthesizer Het tweede belangrijke IC is de ISD2560. Van dit IC is in 'Bijlage 4, ISD2500 series blokschema' een blokschema afgebeeld. Ook hier zal een korte beschrijving worden gegeven van de belangrijkste funkties. De ISD2500 serie spraak synthesizers kan worden opgevat als een solid state spraak opname/weergave IC. In dit IC kunnen op eenvoudige manier verschillende messages (tot een totale tijd van 60 seconden bij de ISD2560) worden opgeslagen die elk apart zijn te adresseren. Op deze manier zijn dus komplete zinnen op te bouwen door de verschillende messages op de juiste manier achter elkaar af te spelen. De ISD2560 wordt in de spraakinterface aangestuurd met de volgende pinnen: • Address Buffers, deze ingangen worden samen met de 'Device Control' ingangen gebruikt voor de aansturing van het spraak IC. Het spraak IC kent verschillende modes van operatie waarvan de volgende worden gebruikt. Allereerst wordt met aIle adres lijnen laag bij een hoog-laag overgang op de CE ingang de eerste message in het IC afgespeeld. Dit wordt gebruikt om het IC te reseUen naar het begin van zijn geheugen. Vervolgens kan met adreslijnen AO, A8 en A9 hoog het IC in de 'message cueing' (mode 0) worden gezet. In deze mode kan met behulp van hoog-laag overgangen op de CE ingang vooruit worden gespoeld door de verschillende messages zonder ze uit te spreken. Als laatste wordt met adreslijnen A4, A8 en A9 hoog de 'delete end of message markers' (mode 4) geselecteerd. Deze mode wordt gebruikt voor het afspelen van een message, waarna het IC niet automatische in de powerdown mode komt (dit geeft namelijk een storende klik in het uitgangssignaal). • Device Control, deze ingangen zijn nodig voor de aansturing van het IC. De PD ingang zet het IC in de Power Down mode, dit is zinvol voor de energie besparing. De CE ingang wordt gebruikt voor verschillende funkties zoals hierboven beschreven. De EOM uitgang wordt gebruikt door de microcontroller om een interrupt procedure aan te roepen die de besturing verzorgt van het spraak IC. De uitgang wordt aan het einde van elke message laag, zodat de microcontroller een terugmelding krijgt wanneer een bepaalde message is afgelopen. • SP+ en SP-, de uitgangen voor de speaker. In de interface worden de uitgangen gebruikt voor de aansturing van een regelbare versterker. Tevens worden deze uitgangen via een opamp (die de nivo's converteert naar 0 en 5 V) toegevoerd aan de microcontroller zodat deze kan identificeren welke taal is opgeslagen in de spraak synthesizer.
1.4, Spraakinterface Het schema van de hardware staat afgebeeld in 'Bijlage 5, Spraakinterface schema' , hieronder voIgt een beschrijving van de werking hiervan. Het schema, het PCB (Bijlage 6, Spraakinterface PCB), de componenten opstelling (Bijlage 7, Spraakinterface componenten opstelling) en de onderdelen lijst (Bijlage 8, Spraakinterface onderdelen lijst) voor de spraakinterface zijn allen gemaakt met Ultimate Student version 4.6. Deze ontwerpen zijn echter ook als Ultimate files (weegscha.sch en weegscha.ddf) beschikbaar. Allereerst is de voeding van de interface opgebouwd rond IC U4, de schakeling rond dit IC is een standaard toepassing voor 5 V voeding. De twee condensatoren C5 en C8 dienen om de inkomende (9V) spanning van de batterij/adapter van de weegschaal te ontkoppelen, 11 = +9V (SUB-D pin 9) en J2 = OV (SUB-D pin 1-6). Vervolgens wordt de uitgangsspanning van U4 ingesteld met behulp van de twee weerstanden R6 en R7, met de getekende dimensionering
-5-
Keukenweegschaal voor visueel gehandicapten, technische handleiding resulteert dat in een Vdd spanning van ca. 5 V. Weerstand R3 tot slot is opgenomen om de SHDN (Shutdown) ingang van U4 aan de positieve voedingsspanning te leggen als deze in de power down mode gezet wordt om energie te sparen. De aansturing van dit SHDN signaal gebeurt op drie manieren. Allereerst kan met behulp van de schakeling rond TI deze Iijn laag gemaakt worden. Op pin 13 wordt de 5 V (SUB-D pin 7) voeding aangesloten van de weegschaal, zodat als deze aangaat het nivo op 13 van 0 V naar 5V gaat. Hierdoor word TI via de weerstanden R4 en R9 in geleiding gebracht, en SHDN wordt naar OV getrokken. Vervolgens kan op dezelfde manier via T4 en uitgang PIA van de microcontroller ook SHDN laag gemaakt worden. Op deze manier heeft de microcontroller dus de mogelijkheid om ongewenst uitschakelen van de voeding te voorkomen. Ais derde mogelijkheid is nog de diode D2 opgenomen die samen met druktoets SWI ook SHDN laag kan maken. Door een druk op toets SWI wordt dus ook de voeding ingeschakeld ongeacht of de weegschaal is ingeschakeld. De drie toetsen SWI, SW2 en SW3 zijn direkt aan de microcontroller gekoppeld en dienen om de interface te bedienen. De ingangen op de microcontroller hebben de mogelijkheid om een interrupt te genereren als het nivo op de ingang een hoog-Iaag transitie ondergaat. De 5 V ingang van de weegschaal op 13 (zie boven) wordt ook nog via weerstand R13 en buffer U6C aangeboden aan P4.7 van de microcontroller. Hiermee kan de microcontroller dus 'zien' of de weerschaal al dan niet aanstaat. Een stukje naar rechts in het schema komen we bij de RC kombinatie bestaande uit CI en Rl. Deze twee genereren de reset puIs om een goede startup te garanderen van de microcontroller. Led D I en R2 vervolgens hebben aIleen een funktie in het debug proces. Hiermee kan op eenvoudige wijze een terugkoppeling worden verkregen over de interne toestand van de microcontroller. De voeding voor de versterker U8 kan worden uit- en ingeschakeld met behulp van de schakeling rond de transistoren T2 en T3. Ais uitgang P1.5 van de microcontroller hoog wordt komt T2 in geleiding. Hierdoor wordt via de weerstanden RII en RI2 ook T3 in geleiding gebracht waarmee de voeding van de versterker is ingeschakeld. De condensatoren CI6 en C 17 dienen om de voeding voldoende te ontkoppelen (deze dienen op de PCB zo dicht mogelijk bij de versterker te worden geplaatst). De seriele data van de weegschaal komt binnen op pin J4 (SUB-D pin 8). Weerstand RI8 en het inverterende buffer U6A zorgen ervoor dat dit signaal wordt geinverteerd en dat de ingangs impedantie hoog genoeg is. De microcontroller kan aIleen van de hoge perioden de pulslengte meten, en in het seriele signaal zitjuist de informatie in de lage perioden. De geinverteerde data wordt vervolgens aan de microcontroller aangeboden op de P3.3/Intl ingang. Deze genereert een interrupt bij elke hoog-Iaag overgang. Buffer U6D wordt niet gebruikt en is daarom zodanig aangesloten dat er geen zwevende ingangenluitgangen zijn die de stabiliteit van de schakeling kunnen beYnvloeden. U5 vervolgens is een fc EEPROM die wordt gebruikt om de standaard gegevens in op te slaan zodat ze bewaard bijven bij het uitschakelen van de voedingsspanning. De aansturing van dit IC gebeurt via de I2C bus (SDA en SCL). De weerstanden R5 en R8 zijn nodig omdat de fc bus voorzien is van open-kollektor uitgangen. De klok voor de microcontroller wordt opgewekt door kristal X I sarnen met condensatoren C6 en C7. De rij condensatoren onder aan het schema zijn bedoeld voor de ontkoppeling van de voedings spanning. Bij de plaatsing van deze condensatoren op de PCB dient rekening te worden gehouden dat deze zo dicht mogelijk tegen de IC's geplaatst worden. CII wordt
-6-
Keukenweegschaal voor visueel gehandicapten, technische handleiding meteen aan de uitgang van U4 geplaatst, C19 en C20 worden als extra ontkoppeling geplaatst bij U7 (1 voor VDDa, VSSa en 1 voor VDDd, VSSd). U2 dient om uit de gemultiplexte adres en data bus de adressen te bufferen zodat hiermee U3 kan worden aangestuurd. In U3 zit het gehele programma opgeslagen dat zorgdraagt voor de korrekte aansturing van de interface. De spraak synthesizer U7 wordt met behulp van 5 controle lijnen bestuurd. Als eerste worden via P3.0 en P3.1 de adres/mode ingangen zodanig aangestuurd dat de microcontroller de ISD2560 in de drie modes kan zetten die nodig zijn voor het afspelen van willekeurige berichten. Via de uitgangen P3.6 enP3.7 worden de CE (Chip enable) en de PD (powerdown) ingangen bestuurd. De terugkoppeling van ISD2560 naar de microcontroller geschiedt van de EOM uitgang naar P3.2/IntO. Hiermee wordt elke keer dat de ISD2560 klaar is met het afspelen van een bericht een interrupt gegenereerd. De uitgangen van de spraaksynthesizer worden via opamp U6B ook weer naar de microcontroller terug gevoerd op de P3.5/T1 pin. De microcontroller is via deze weg in staat om te controleren welke spraak is opgeslagen in de ISD2560. De + uitgang van de ISD2560 wordt via C 18 direkt naar de versterker doorgevoerd. In de versterker U8 wordt het signaal van de ISD2560 samen met het eventuele signaal van de microcontroller (via P3.4, RIO en C12) versterkt en weergegeven door de luidspreker SPI. De versterker heeft ook nog een volume regel ingang die wordt aangestuurd via de puls-breedte uitgang van de microcontroller (PWMO). Dit pulsbreedte gemoduleerd signaal wordt door R14, R17 en C13 omgezet in een DC signaal, op deze manier is een eenvoudige volumeregeling mogelijk. De versterker tot slot kan direkt een 8 Ohm speaker aansturen die wordt gebruikt voor de weergave van zowel de spraak alsook de tonen gegenereerd door de microcontroller.
-7-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Hoofdstuk 2, Software beschrijving Voor de volledige uitleg van de werking van de software wordt verwezen naar de source code (weegscha.asm), hierin is door middel van commentaar aangegeven welke funkties worden vervuld door de verschillende stukken code.
2.1, Startup procedure Bij het opstarten van de schakeling wordt automatisch een reset van de microcontroller gegenereerd, waarna de 'startup' procedure wordt doorlopen zoals afgebeeld in 'Bijlage 9, Startup procedure '. Ais eerste wordt na het begin van deze procedure de microcontroller (MCU) geinitialiseerd. Hier worden de uitgangspinnen van de I/O poorten op de juiste logische waarden gezet, het interne RAM wordt gewist en de stackpointer wordt op een veilige waarde gezet. Vervolgens worden in het blok 'Read EEPROM' de default waarden gelezen zoals deze zijn opgeslagen in"de I2C EEPROM. In deze EEPROM zijn de waarden opgeslagen van het volume, de ingestelde alarmtijd en de taal. In het blok 'Init volume' wordt de zojuist ingelezen waarde voor het volume naar de PWM uitgang geschreven zodat de versterker staat ingesteld op het juiste volume. Hierna wordt de taal identificatie uitgelezen uit de ISD2560. Dit gebeurt op de volgende manier. In de ISD2560 is in een bepaalde message een serie pulsen opgeslagen die aangeven welke taal is opgeslagen in het IC. Deze pulsen worden geteld door Timer 1 van de microcontroller, na afloop bevat het timer 1 register dus een getal dat aangeeft welke taal is opgeslagen in het huidig geinstalleerde spraak IC. De waarde in het timer 1 register wordt vervolgens vergeleken met de waarde die zojuist is ingelezen uit de EEPROM. Ais deze waarden niet hetzelfde zijn wordt geconcludeerd dat er een ander spraak IC is ge"installeerd, de reaktie hierop is dat de nieuwe taal wordt uitgesproken. Bij aIle berichten die de interface hierna uitspreekt wordt rekening gehouden met de ge"installeerde taal (zie ook de beschrijving van de Compose sentence procedure). Op deze manier is het eenvoudig mogelijk de interface een andere taal te laten spreken door het vervangen ofherprogrammeren van aIleen het spraak IC. Ais de taal goed is ingesteld gaat de startup procedure verder met het controleren of de weegschaal aanstaat. Het is namelijk ook mogelijk om de interface in te schakelen door op de alarm toets te drukken. Ais de weegschaal niet aan staat wordt geconcludeerd dat er op de alarm toets moet zijn gedrukt en de alarm_flag wordt geset. In de hoofdlus wordt dan de alarm procedure aangeroepen die zorgt voor de verdere afhandeling van de alarm funktie. Ais laatste worden in de startup procedure nog de interrupts en de timers geinitialiseerd die zorgdragen voor het verdere verloop van het programma.
2.2, Hoofd/us Ais de startup procedure is doorlopen komt de microcontroller automatisch terecht in de hoofdlus die is afgebeeld in 'Bijlage 10, Hoofdlus'. Ais eerste wordt getest of de interface nog aan moet blijven. Hier wordt op drie dingen getest, allereerst of er nog data van de weegschaal komt, ten tweede ofhet alarm actief is en als laatste of er momenteel een boodschap wordt uitgesproken. Ais geen van deze tests positief uitvalt dan wordt de shutdown procedure aangeroepen die de interface uitschakelt. Vervolgens worden achtereenvolgens een aantal vlaggen getest en aan de hand van de uitkomst daarvan een procedure al of niet aangeroepen. In de figuur zijn een aantal van deze tests afgebeeld, maar in het werkelijke
-8-
Keukenweegschaal voor visueel gehandicapten, technische handleiding programma worden er nog een aantal tests extra uitgevoerd die nodig zijn voor andere procedures. Tests die niet in de figuur staan zijn: Alarm control flag => alarm control procedure, deze flag wordt gebruikt om aan te geven dat momenteel de alarm control procedure bezig is met een interactie met de gebruiker. Volume control flag = volume control procedure, idem voor de volume control procedure. IQ2 .. IQ4 => interrupt 2 .. 4, deze software flags zijn nodig om de key interrupt procedures aan te roepen als de interrupt zelf is uitgeschakeld (zie ook key interrupt beschrijving) Ais laatste wordt de microcontroller in de idle mode gezet, waarbij de normale programma executie wordt stil gelegd, echter de timers en interrupts blijven werken. De microcontroller blijft in deze mode staan totdat er een interrupt optreedt. Timer 0 is zodanig geconfigureerd dat deze elke 0,5 ms een interrupt genereert. Daardoor wordt gewaarborgd dat de hoofdlus minimaal 2000 maal per seconde wordt doorlopen.
2.3, Interrupt 0 procedure Voor de aansturing van het spraak IC wordt gebruik gemaakt van interrupt O. De procedure die deze interrupt afhandelt is afgebeeld in 'Bijlage 11, Interrupt 0 procedure'. Deze interrupt is gekoppeld aan de EOM uitgang van het spraak IC en zodoende wordt deze interrupt elke keer aangeroepen als het spraak IC klaar is met een bepaalde aktie. Er zijn drie verschillende akties die kunnen leiden tot een EOM signaal van het spraak IC. Normal address mode, in deze mode wordt het spraak IC gereset naar fragment O. Een laag nivo op de EOM uitgang geeft aan dat het IC is gereset. Mode 0 (queing messages), in deze mode wordt de interne message pointer in het spraak IC een fragment opgeschoven, een laag signaal op de EOM uitgang geeft aan dat het volgende fragment is gevonden. Mode 4, deze mode wordt gebruikt voor het normaal afspelen van een fragment. Ais de EOM uitgang nu laag wordt betekent dit dat het uitspreken van het fragment is afgelopen. Ais eerste wordt in deze procedure gekeken of het spraak buffer leeg is. In het interne RAM van de microcontroller worden 16 bytes gebruikt als buffer om een zin op te bouwen die moet worden uitgesproken. Ais blijkt dat dit buffer leeg is dan kan het spraak IC en de versterker worden uitgeschakeld omdat de zojuist uitgesproken zin beeindigd is. Ais tweede test wordt gekeken of er een nieuw fragment moet worden uitgesproken. Een komplete zin wordt opgebouwd uit verschillende fragmenten die netjes achter elkaar moeten worden uitgesproken, bijvoorbeeld '138 gram' wordt uitgesproken als honderd-acht-en-der-tig-gram. Ais blijkt dat er weer een nieuw fragment moet worden uitgesproken dan wordt het spraak IC gereset naar fragment 0 (in de normal address mode). Het eerste fragment uit het buffer wordt opgeslagen in een counter en het spraak buffer wordt 1 byte opgeschoven. De derde test die wordt uitgevoerd kijkt of er momenteel wordt vooruit-gespoeld door de fragmenten heen (mode 0). Ais dit het geval is wordt er opnieuw naar een volgend fragment gespoeld en de counter wordt met 1 verlaagd. Dit gaat net zo lang door totdat het gewenste fragment is bereikt (counter = 0) waama het huidige fragment wordt uitgesproken in mode 4. Ais het programma besluit dat er een zin moet worden uitgesproken (bijvoorbeeld bij een veranderend gewicht) dan gebeuren er achtereenvolgens de volgende dingen. 1. Het spraak buffer wordt geladen met de juiste volgorde van fragmenten 2. De versterker en het spraak IC worden ingeschakeld 3. Het spraak IC wordt gereset naar fragment 0 (normal address mode) en het eerste fragment uit het spraakbuffer wordt geladen in een tijdelijke teller en het spraakbuffer wordt een byte opgeschoven.
-9-
Keukenweegschaal voor visueel gehandicapten, technische handleiding 4. De message pointer in het spraak IC wordt vooruit gespoeld totdat de tijdelijke teller (zie punt 3) nul heeft bereikt (mode 0) 5. Het huidige fragment wordt uitgesproken (mode 4). 6. Er wordt getest of het spraak buffer alleeg is, zo niet dan wordt verder gegaan met punt 3. Is het spraak buffer welleeg dan wordt het spraak IC en de versterker uitgeschakeld.
2.4, Compose sentence procedure Het vullen van het spraakbuffer met de juiste volgorde van fragmenten wordt verzorgd door de 'Compose sentence' procedure. In 'Bijlage 12, Compose sentence output' staan de verschillende soorten berichten die deze procedure kan samenstellen. Door deze procedure worden 8 talen ondersteund en bij elk van deze talen kunnen vier verschillende berichten worden gegenereerd. In de bijlage zijn aIleen de verschillende berichten weergegeven voor het nederlands. AIle mededelingen van de weegschaal worden via deze procedure verzorgd. Ais een bepaalde procedure (bijv. de volume control procedure) iets wil vertellen aan de gebruiker dan hoeven er aIleen enkele registers te worden geladen die aangeven wat er uitgesproken moet worden, waarna de 'compose sentence' procedure wordt aangeroepen. Deze zorgt er op zijn beurt dan voor dat het spraakbuffer wordt gevuld met de juiste data, waarbij de zinsopbouw wordt aangepast aan de ingestelde taal. De procedure is uitgevoerd als jump-table in combinatie met een aantallook-up-tables wat als groot voordeel heeft dat de procedure overzichtelijk blijft en de verschillende berichten als tabellen aanwezig zijn in het codegeheugen waardoor ze eenvoudig veranderd kunnen worden. De vier verschillende berichten die zijn weergegeven volgen zoveel mogelijk de nederlandse taalregels. Het enige bericht dat nadere toelichting verdient is de kort gewichtmelding. Deze wordt gegeven als de weegschaal in de extrapolatie mode staat, het is dan zaak om zo snel mogelijk een indicatie van het gewicht te hebben en daarom worden er in de gewicht meldingen een aantal zaken weggelaten. Het gewicht wordt allereerst afgerond op 10 gram en de mededeling gram achter het gewicht is komen te vervallen. Het gewicht zelf wordt in de korte vorm weergegeven door aIleen de honderdtallen uit te spreken ('een' tot en met 'negen'), met daarna de tientallen grammen ('nul' tot en met 'negentig'). Ais het gewicht een kilo grens passeert wordt dat gemeld door een maal de nieuwe hoeveelheid kilo(s) weer te geven. Ais laatste wordt in deze procedure ook nog gezorgd voor de daadwerkelijke start van de uitspraak, de versterker wordt ingeschakeld en de interrupt 0 procedure wordt aangeroepen om de ISD2560 te initialiseren. Onderaan de bijlage staan nog enkele voorbeelden van berichten zoals die door de procedure kunnen worden samengesteld.
2.5, Interrupt 1 procedure Het decoderen van het seriele signaal van de weegschaal wordt verzorgd door interrupt 1 in samenwerking met timer 1. De interrupt 1 procedure zorgt hier voor de ontvangst en de timer 1 procedure voor de decodering. De procedure die wordt aangeroepen door interrupt 1 staat afgebeeld in 'Bijlage 13, Interrupt 1 procedure'. Bij elke laag naar hoog overgang van het seriele signaal wordt deze procedure aangeroepen. Timer 1 geeft op dat moment de lengte van de voorliggende pauze aan. Ais eerste wordt in deze procedure getest of de timer een waarde bevat die kleiner is dan 512/-ls. Deze waarde kan twee oorzaken hebben: De zojuist ontvangen pauze was de 240 /-lS durende pauze tussen de twee pulsen die samen 1 bit vormen met logisch 1 nivo.
- 10-
Keukenweegschaal voor visueel gehandicapten, technische handleiding De zojuist ontvangen pauze is de pauze tussen twee pulstreinen. In de timer 1 interrupt procedure wordt namelijk de timer op nul gezet en het tellen gestopt. Deze timer 1 interrupt wordt aangeroepen als de timer overloopt, wat gebeurt bij een pauze langer dan 65,5 ms. Bij de eerste puIs van een pulstrein bevat de timer dus de waarde O. Ais de timer kleiner is dan 512 ms gebeurt er verder niets en wordt meteen naar het einde van de procedure gesprongen. Bevat de timer een waarde die groter is dan 512 IlS dan wordt in de volgende test gekeken of de waarde groter is dan 2.56 ms. Ais de waarde groter is dan 2.56 ms dan betekent dat dat er zojuist een bit is ontvangen met logisch nivo O. Is de waarde van de timer minder dan 2.56 ms dan is er zojuist een bit ontvangen met de logische waarde 1. Afhankelijk van de waarde wordt er vervolgens een 0 of een 1 weggeschreven in een serieel ontvangst buffer, waama dit buffer 1 bit wordt opgeschoven.
2.6, Timer 1 interrupt procedure Zoals gezegd loopt timer 1 over als de pauze langer duurt dan 65.5 ms. Gevolg hiervan is dat de timer 1 interrupt procedure wordt aangeroepen. Een pauze van deze lengte komt in het seriele signaal aIleen voor tussen twee pulstreinen van 32 bits. Ais de timer 1 procedure wordt aangeroepen is dan ook zojuist een pulstrein ontvangen waarvan de afzonderlijke bits in een 4 byte (32 bit) serieel buffer zijn opgeslagen door de interrupt I procedure. De timer 1 procedure kan dan ook gebruikt worden voor het decoderen van de zojuist ontvangen data van de weegschaal. Een flowchart van deze procedure is afgebeeld in 'Bijlage 14, Timer 1 interrupt procedure' . Ais eerste wordt hier de timer gestopt en gereset. Vervolgens wordt er gecontroleerd of de laatst gedecodeerde gewicht data correct was. Is dit het geval, dan wordt deze data bewaard in een tweede variabele in het RAM. Dit is nodig voor de extrapolatie funktie die uit de laatste twee gewicht data probeert te voorspellen wat het gewicht over enige tijd is. Het volgende blok in de flow-chart representeert twee funkties. Allereerst wordt de zojuist ontvangen data (uit het seriele buffer) gedecodeerd, en vervolgens wordt dit gedecodeerde signaal op enkele kenmerken getest of de ontvangen data geldig is. Valt deze laatste test gunstig uit dan wordt de gedecodeerde gewicht data opgeslagen in het RAM. Vervolgens wordt getest of het zojuist ontvangen en gecodeerde gewicht anders is dan het gewicht zoals dat aan het begin van de procedure is bewaard. Ais er verschil is dan wordt de extrapolatie procedure aangeroepen die een lineaire extrapolatie uitvoert met de twee laatste gewicht data. Is het gewicht onveranderd dan hoeft er verder niets te gebeuren en kan naar het einde van de procedure worden gesprongen.
2.7, Key interrupt procedure De afhandeling van een toetsdruk op een van de 3 toetsen wordt verzorgd door drie bijna identieke procedures zoals afgebeeld in 'Bijlage 15, Key 0.. 2 interrupt procedure'. In deze procedure wordt als eerste getest of de input pin waaraan de toets is aangesloten weI echt laag is in een Ius die lOx wordt doorlopen. Blijkt dat de pin aIle 10 de tests laag is dan wordt verder gegaan met de volgende test. Er wordt nu gekeken of de interrupt behorende bij de toets nog weI is enabled. Is dit niet het geval dan wordt naar het einde van de procedure gesprongen. Is de interrupt nog weI ge-enabled dan wordt deze als eerste aktie na de test gedisabled. Gevolg hiervan is dat een toetsdruk (met dender ruis) niet gezien kan worden als twee ofmeer toetsdrukken. Ais afsluiting van de procedure volgen nog het Set Key_flag blok - 11 -
Keukenweegschaal voor visueel gehandicapten, technische handleiding waar een flag wordt geset die aangeeft dat de toets is ingedrukt. Waarna nog een korte piep wordt gegenereerd die ook een auditieve terugkoppeling geeft naar de gebruiker. Ais bij de eerste test van de procedure wordt gekonstateerd dat de pin niet laag is, dan wordt gesprongen naar een tweede loop die test of de pin hoog is. Deze loop wordt weer 10 X doorlopen en als een van deze tien tests een laag nivo op de input pin ziet, wordt er naar het einde van de procedure gesprongen. Hiermee wordt gewaarborgd dat het nivo op de ingangspin weI echt hoog is. Ais aIle tien tests een hoog nivo zien op de ingangspin dan wordt vervolgens de interrupt weer ge-enabled zodat er weer een nieuwe toetsdruk kan worden geregistreerd. Met deze procedure wordt dus gewaarborgd dat een toets niet herhaalt. Er is dus zowel het indrukken alsook het loslaten van de toets nodig om 1 komplete toetsdruk te registreren.
2.8, Timer 0 procedure De interne tijd van de microcontroller wordt bijgehouden door de timer 0 interrupt procedure afgebeeld in 'Bijlage 16, Timer 0 interrupt procedure'. Deze wordt met een vaste frequentie van 2000 maal per seconde aangeroepen doordat timer 0 als auto-reload is geconfigureerd. De eerste test die in de timer 0 interrupt procedure wordt gedaan is of er een piep gegenereerd moet worden. Ais dit het geval is dan wordt de piep pin (P3.4) even laag gemaakt waarna hij weer terugkeert naar zijn hoge rusttoestand. Hiermee wordt dus een toon opgewekt met een frequentie die gelijk is aan de aanroep frequentie van de interrupt procedure, in dit geval dus 2 kHz. Deze piep wordt voor twee doeleinden gebruikt. Allereerst worden zoals vermeld de toetsdrukken auditief gemaakt door een piep van 0.05 seconden. De interne alarm funktie maakt ook gebruik van deze piep, dan duurt een piep 1 seconde. De procedure wordt vervolgd met het blok waarin de interne tijd wordt opgehoogd. Er vindt hier een deling door 20 plaats zodat de interne tijd met een nauwkeurigheid van 1/1 00 seconde kan worden bijgehouden. Vervolgens wordt getest ofhet alarm momenteel aktiefis, waama de eventuele alarmtijd wordt verminderd met 1 seconde. De alarmtijd is tot de op de seconde nauwkeurig. De laatste test die wordt uitgevoerd is of de alarmtijd is verlaagd naar 0, waama er een piep wordt gegenereerd.
2.9, Extrapolate procedure De procedure die het extrapoleren van het gewicht voor zijn rekening neemt is afgebeeld in 'Bijlage 17, Extrapolate procedure' . De procedure begint met het controleren of het huidige gewicht 0 is, als dit het geval is dan gebeurt er verder niets. Deze situatie kan zich voordoen wanneer de weegschaal wordt ge-tarreerd of als het zojuist gewogen voorwerp van de weegschaal wordt afgehaald. In beide gevallen is het niet wenselijk dat het gewicht wordt geextrapoleerd. Is het huidge gewicht ongelijk aan 0 dan volgen achter elkaar de verschillende stappen voor de extrapolatie. De berekeningen van de verschillende onderdelen van de totale formule gebeuren allemaal met 16 of 32 bit nauwkeurigheid en vermenigvuldigd met 100H. Deze twee maatregelen zijn genomen om er voor te zorgen dat er geen ongewenste integer afrondingen optreden die de uitkomst onnauwkeurig maken. Aan het eind van de berekening wordt de uitkomst weer door 100H gedeeld om de werkelijke waarde te krijgen van het geextrapoleerde gewicht. De procedure sluit af met een laatste test die controleert of het geextrapoleerde gewicht niet meer dan 5 kilogram is. Deze laatste test is opgenomen omdat bij snelle veranderingen (in 1 keer een groot gewicht op de weegschaalleggen) de extrapolatie erg onnauwkeurig wordt en al snel een gewicht voorspeld van meer dan 5 kilo. De weegschaal
- 12 -
Keukenweegschaal voor visueel gehandicapten, technische handleiding zelf kan echter maar tot 5 kilo wegen, daarom wordt het maximale ge-extrapoleerde gewicht begrenst op 5 kilo.
2.10, Volume control procedure De volume regeling van de interface gebeurt met de procedure zoals die is weergegeven in 'Bijlage 18, Volume control procedure'. De volume control procedure is gerealiseerd met een zogenaamde 'jump table', dit betekent dat aan de hand van een getal (Volume status) wordt gesprongen naar een bepaalde sub-routine. Als de volume procedure voor de eerste keer wordt aangeroepen (na een druk op de volume toets) dan heeft de volume status de waarde O. De procedure begint dan ook bij punt 0 en komt met de melding "volume regeling aan" (in het Nederlands). Daarna wordt getest ofhet huidige volume groter is dan 8 (de middenwaarde), afhankelijk hiervan wordt de volume status 1 of 2. Als de procedure verder gaat bij 1 dan wordt de vraag "volume zachter ?" aan de gebruiker gesteld, waama wordt vervolgd met status 3. Daar aangekomen wordt 5 seconden gewacht op een eventuele toetsdruk van de gebruiker. Reageert de gebruiker binnen deze 5 seconden met een toetsdruk dan wordt verder gegaan met status 5, anders wordt verder gegaan met status 7. Bij status 5 wordt allereerst getest of de gebruiker al weer op de volumetoets heeft gedrukt ten teken dat het volume nu zacht genoeg is waarna naar status 7 wordt gegaan. Is dit niet het geval dan wordt het volume verlaagd en wordt er getest of het huidige volume het minimale volume is. Is dit niet het geval dan wordt "zachter" uitgesproken, is dit weI het geval dan wordt "volume minimaal" uitgesproken, waama verder gegaan wordt bij status 7. Wordt hier niet op de volumetoets gedrukt dan blijft de status 5, en wordt telkens het volume een stap zachter gezet en wordt "zachter" uitgesproken totdat het minimale volume is bereikt. Bij status 7 wordt bekeken of nog een keer de inverse vraag moet worden gesteld ("volume harder ?" na het volume zachter regelen en omgekeerd), dit gebeurt aan de hand van een lasttime flag. Wordt er besloten dat er nog een inverse vraag moet worden gesteld dan wordt de status 2, waarna op dezelfde manier het volume harder kan worden gesteld via de punten 2,4,6 en 8. Is het echter niet nodig nog een keer de inverse vraag aan te bieden dan wordt verder gegaan met status 9, waar "volume regeling uit" wordt uitgesproken en waar de volume control procedure wordt beeindigd.
2.11, Alarm control procedure Op dezelfde manier als de volume regeling kan ook het alarm worden ingesteld, de procedure die hiervoor zorgdraagt is afgebeeld in 'Bijlage 19, Alarm control procedure'. Deze procedure is ook uitgevoerd als eenjump table, met nu de alarmstatus als keuze ingang. Als voor de eerste keer op de alarmtoets wordt geduwd, dan wordt in de hoofdlus de alarm control procedure aangeroepen en de alarm status is dan O. De procedure komt dan als eerste met de mededeling "alarm" ten teken dat de alarm control procedure aktief is. Vervolgens wordt de huidige ingestelde alarmtijd opgehaald uit het geheugen, waama verder wordt gegaan bij status 1. Hier wordt de zin "ingestelde tijd:" uitgesproken waama de huidige alarmtijd wordt uitgesproken in het formaat "(XX minu(u)t(en) en) YY seconden". Bij status 2 wordt hiema gevraagd "Alarm starten ?", waama bij status 3 weer 5 seconden wordt gewacht of de gebruiker ')a" zegt door op de alarm toets te drukken. Als blijkt dat de gebruiker het alarm wil starten (keypressed = true) dan wordt de procedure vervolgd bij status 4, anders wordt naar status 5 gesprongen. Bij status 4 wordt allereerst de mededeling gegeven "alarm aan". Vervolgens wordt de ingestelde alarmtijd gekopieerd naar count-down registers zodat de timer oprocedure deze kan aftellen. De alarm active flag wordt meteen hiema geset zodat het - 13 -
Keukenweegschaal voor visueel gehandicapten, technische handleiding
aftellen ook daadwerkelijk begint. Als laatste wordt de status op 16 gezet en wordt de alarm control procedure gestopt. Dit heeft tot gevolg dat als de gebruiker tijdens het lopen van het alarm op de toets drukt de alarm control procedure dan niet bij 0 begint maar bij 16. Als er bij status 3 niet op de toets gedrukt wordt dan wordt bij status 5 gevraagd "alarmtijd veranderen 7", waarna bij status 6 weer 5 seconden wordt gewacht op een eventuele toetsdruk. Geeft de gebruiker door middel van een druk op de toets te kennen dat het alarm veranderd moet worden, dan wordt de status 8. Reageert de gebruiker niet, dan wordt bij status 7 de melding "alarm uit" gegeven en wordt het alarm uitgeschakeld, de status wordt 0 en de procedure wordt gestopt. Wil de gebruiker het alarm instellen dan wordt als eerste bij status 8 gevraagd "Alarm korter 7", de gebruiker heeft hiema weer 5 seconden om bij status 10 te reageren op deze vraag. Wordt er op de toets gedrukt dan wordt verder gegaan bij status 14, anders wordt bij status 12 gekeken of er nog een keer de inverse van de vraag moet worden aangeboden. Afhankelijk hiervan wordt bij status 9 gevraagd "Alarm langer 7", ofwordt weer terug gesprongen naar status 1. Bij status 14 wordt als eerste gecontroleerd of de gebruiker weer op de toets heeft gedrukt ter indicatie dat de alarmtijd nu kort genoeg is. Is dat niet het geval dan wordt het alarm 1 stap verlaagd. Er wordt vervolgens gecontroleerd of de huidige alarmtijd de minimaal instelbare alarmtijd is, waama de mededeling wordt gegeven "alarmtijd minimaal" en verder wordt gegaan bij status 12. Als laatste wordt hier de huidige alarmtijd uitgesproken. De procedure blijft hier dus steeds het alarm korter zetten totdat er op de toets wordt gedrukt oftotdat de minimaIe alarmtijd is bereikt. Het langer maken van de alarmtijd gaat op dezelfde manier via status = 9, 11, 13 en 15. Status 16 wordt bereikt als het alarm is ingeschakeld en er wordt op de alarm toets gedrukt. Er wordt dan als eerste gecontroleerd of het alarm al afgelopen is, en er dus een alarmpiep te horen is. Als dit het geval is dan wordt de alarmpiep uitgezet en wordt vervolgens de alarm procedure stopgezet via status 7. Als het alarm nog niet is afgelopen dan wordt de mededeling gegeven "alarm over:" waama de tijd wordt uitgesproken die aangeeft hoelang het nog duurt totdat er een alarm piep optreedt. Bij status 17 wordt vervolgens gevraagd "alarm stoppen 7" waarna de gebruiker weer 5 seconden heeft om bij status 18 te reageren en het alarm uit te schakelen (via status 7). Als de gebruiker niet op de knop duwt dan gaat de procedure verder bij status 19, alwaar gevraagd wordt "alarmtijd instellen 7". De gebruiker kan dan weer binnen 5 seconden reageren waama de alarmtijd kan worden ingesteld zoals boven is beschreven bij status 8. Reageert de gebruiker ook hier niet op de vraag dan komt de procedure met de mededeling "Alarm aan" ten teken dat het alarm gewoon doorloopt. De status wordt weer op 16 gezet en de procedure wordt gestopt.
- 14 -
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Hoofdstuk 3, Aanbevelingen Om aan aIle eisen te voldoen zoals die in de probleemstelling van het verslag 'Keukenweegschaal voor visueel gehandicapten, rapport van afstudeerwerk' door Herman Kuster, zijn gesteld dienen er nog een aantal dingen te gebeuren. Deze zullen kort worden toegelicht en waar mogelijk is aangegeven hoe dit eventueel opgelost kan worden: • Voor de ondersteuning van meerdere talen (anders dan het Nederiands) moeten er allereerst meerdere ISD2560's worden ingesproken met de benodigde spraak fragmenten. Hierbij dient ook een taal-id fragment te worden opgenomen. Deze bestaat uit een aantal perioden van een sinus golf, het aantal perioden geeft aan welke taal in de ISD2560 is geprogrammeerd. Het aantal perioden voIgt uit de volgende formule: # perioden = 32 x N, waarin N de LANGUAGE variabele is zoals gebruikt in de COMPOSE_SENTENCE procedure in de software. • In de COMPOSE_SENTENCE procedure dient vervolgens voor deze talen de aansturing te worden geprogrammeerd. Per taal moeten er twee look-up tables (een voor de getallen van 0 tim 99 en een voor de overige berichten) en een klein stukje software dat deze lookup tables aanstuurt worden geprogrammeerd. • De punten die uit de evaluatie naar voren zijn gekomen die nog verbetering vereisen: • Het gelijktijdig bedienen van de volume regeling en de alarm functie geeft een chaotische toestand, er dient in de software nog een beveiliging te worden opgenomen die dit voorkomt. De VOLUME_CONTROL en ALARM_CONTROL procedures zouden in de eerste stap een test kunnen uitvoeren of de andere procedure al aktief is. Door te wachten totdat de andere procedure is gestopt kan worden voorkomen dat de spraakboodschappen door elkaar gaan lopeno • Ais het gewicht op de weegschaal groter is dan 5 kg moet er geen gewicht uitspraak worden gedaan, maar aIleen 'weegschaal overbelast' worden gezegd. Dit is te realiseren door in de SPECIALSCALESTATES procedure een flag te zetten waarmee de SPEAK- LONG- WEIGHT en de SPEAKSHORT WEIGHT procedures kunnen testen of het gewicht moet worden uitgesproken. • Negatief gewicht wordt nu nog gemeld met 'negatief gewicht', door aIleen de melding 'min' voor het gewicht wordt dezelfde informatie overgedragen. Hiervoor dient in de ISD2560 nog een spraak fragment 'min' te worden toegevoegd en moet in de software de 'negatief gewicht' zin worden vervangen door 'min' in de NED- SPEC- TABLE vertaal tabel. • Bovengrens bij het extrapoleren. In de EXTRAPOLATE procedure in de software dient nog een test te worden uitgevoerd die controleert of het voorspelde gewicht meer afwijkt dan een bepaalde bovengrens (bijv. 200 gram) van het huidige gewicht op de weegschaal. Hiermee moet voorkomen worden dat bij een kleine maar snelle verandering van het gewicht de voorspelling vasdoopt tegen de maximale waarde van 5 kg. • Beter tempo en intonatie in de uitspraak. De uitgesproken zinnen moeten meer pauzes bevatten zodat duidelijk is wanneer een nieuwe zin begint, hiervoor dient de NED_SPEC_TABLE te worden gewij zigd. Ook dienen de spraak fragmenten die in de ISD2560 zijn geprogrammeerd een betere klemtoon te krijgen. Hierbij valt te denken aan verschillende fragmenten voor bijv. 'harder?' in de vraag 'volume harder?' en 'harder' als het volume een stap harder wordt gezet. Ook dient er rekening mee te worden gehouden dat fragmenten allemaal hetzelfde tempo - 15 -
Keukenweegschaal voor visueel gehandicapten, technische handleiding
hebben. Bij de volume regeling wordt bijvoorbeeld telkens als het spraak fragment is afgelopen het volume een stap harder of zachter gezet. Het spraak fragment 'harder' duurt echter minder lang dan 'zachter', waardoor het harder regelen van het volume sneller verloopt dan het zachter regelen. Het werkt plezieriger als deze beide spraakfragmenten even lang duren zodat het omhoog regelen van het volume even snel gaat als het omlaag regelen, deze spraak fragmenten moeten dus nog worden aangepast. • Versterker eerder aanzetten. Het begin van een zin valt af en toe weg omdat de versterker nog niet geheel is ingeschakeld. Het is wellicht mogelijk om in de software een kleine vertraging in te bouwen die enkele tienden van een seconde wacht met het begin van een zin. Een andere mogelijkheid is om de ISD2560 eerst een pauze fragment te laten uitspreken. • 'volume regeling' vervangen door 'geluidssterkte regeling'. De technische term volume voor de geluidssterkte blijkt lang niet altijd duidelijk voor niet technische gebruikers. Hiervoor dient allereerst de ISD2560 te worden voorzien van de juiste spraak fragmenten en tevens dienen in de NED_SPEC_TABLE de zinnen te worden veranderd. • Het eindgewicht automatisch een maal herhalen. Ook omdat de uitspraak nog niet optimaal is (zie boven) wordt soms de gewicht melding niet volledig verstaan. Deze funktie kan worden ingebouwd door in de SPEAK_LONG_WEIGHT procedure uit te breiden met een teller funktie die test hoe vaak de volledige gewicht melding al IS gegeven. • Alarm automatisch uitschakelen. In het prototype wordt het alarm niet automatisch uitgeschakeld als het is af gegaan. Dit heeft tot gevolg dat als de gebruiker niet op de alarm toets drukt de interface om de 5 seconden blijft piepen. Door dit piepen automatisch uit te schakelen na een bepaalde tijd (bijv. 30 sec.) kan het gebruiksgemak worden vergroot. In de INT_TIM_O wordt het genereren van het alarm verzorgd en hier zou ook door middel van een extra timer kunnen worden gezorgd dat het alarm stopt na een vaste tijd. • De spraak herhaal toets aIleen het gewicht laten herhalen. Ais nu op de 'spraak herhaal' toets wordt gedrukt wordt de laatste spraak boodschap herhaald, ongeacht of dit een gewicht was of een mededeling van bijv. de volume regeling. Sommige gebruikers vinden het plezieriger om aIleen de gewicht meldingen te herhalen. Voor deze funktie moet er in de COMPOSE_SENTENCE worden gezorgd dat aIleen de gewicht boodschappen worden gekopieerd naar het tweede spraak buffer. • Ais bij een lopend alarm de alarmtijd moet worden veranderd dan is het misschien logischer als dat gebeurt vanaf de huidige tijd tot het alarm. In het huidige prototype wordt de alarmtijd veranderd vanaf de start waarde. • Kontakt opnemen met Soehnle, achterafbleek dat de LS5000 weegschaal van Ohaus eigenlijk een model van Soehnle was die voorzien is van een ander merk en type nummer. Voordat de weegschaal met spraakinterface in produktie wordt genomen verdient het aanbeveling om met Soenhle hierover afspraken te maken.
- 16 -
_._.
OJ
OV +9V => SUB-D9
=> SUB-D 1..6 =>J2
D)
CO CD ~
:E CD
=> Jl
~
::: ~ ::l
~
(1) (1)
"a ~
~
l:::i l:::i
CD CO
""'-
0
""'l
(J)
:::r D) D)
~
0 0
~
{;;,
::: (1) (1)
"tJ (')
OJ
""'-
IJQ (1) ~
l:::i
::l
e... .g.... ~
(1)
.......
.::l
....
--...l
(1) ~
~
::l {;;'
~ ~
(1)
~
l:::i
::l
~
(1)
-,
ss.:
JJ => 10 kO => SUB-D7 =>13
Serieel signaal => 10 kO => SUB-D 8 => J4
_._.
OJ
D)
~
;:s
CD N
(';) (';)
CJ)
..,_. CD
CD CD
-_. tn
(Q
::::J
D) D)
32 bits
~
(Q
~
ca. 300 ms.
~ ~
oa (")
;:sl::l l::l
"~
0 0
~
~ c;:;. ~
(';) (';)
"Oq (';)
;:sl::l ;:s l::l...
-. (")
~
...
-
(';)
,;:s
............
00
··
660 ~s
··· · ··· · :
... ... . ... :
~
(")
;:s;:s
c;:;.
2.0 ms.
(")
·
;..'1 - - - - - - - - 1 - - + 1
;:s-
:+-
~240 J.1S~
:
;:sl::l ;:s
~s:
-.e.:
:660
:..
(';)
~
(';)
~:
1 bit
---=
~--------I\.
;:s
Oq
TO
®
T1
®
INT2 to INT8 , ? INT1
_.m
INTO
ADCOto ADC3 Vref(p)(A)
--
VDD
VSS
I
I
® ® CD
PWMO
VSSA
D)
CO (1)
W XTAL1
00
0
TWO 16-BIT TIMER/ EVENT COUNTERS (TO, T1)
XTAL2
EA
CPU
PROGRAM MEMORY
DATA MEMORY
6 Kbytes ROM
256 bytes RAM
n ~ I - STADC
ADC
PWM
CD
(1)
80C51 core excluding ROM/RAM
ALE
PSEN
(1)
3D)
® RD
@
Sfl>
A8 to A15
PARALLEL I/O PORTS & EXT BUS
l~~~ll PO P1 P2 P3
SERIAL UART PORT
® ® TXD RXD
8-BIT I/O PORTS
IT P4
16-BIT TIMER/ EVENT COUNTER
T2
<1) alternative function of port 2
CD
@ alternative function of port 3
(1) Not available in the P8OCL580.
WATCHDOG TIMER (T3)
M BB540
CD
@ alternative function of port 0 alternative functions of port 1
12C-BUS INTERFACE
CD T2EX
®
GJ SDA
CD SCL
alternative function of port 4
0 CO (")
8-bit internal bus
\0
ADO toAD?
c.n
00
"e::::rn
P80CL580 P83CL580
WR
......
r
RST
--
EWN
_.m-_. Q)
CO CD
~
~
en
c N
ISD2500 SERIES BLOCK DIAGRAM
C1I
~
ANA IN N
0
ANA OUT
Q)
-g
MIC
u
Q)
o
MIC REF
480 K Cell Nonvolatile Analog Storage Array
~
0 0
~
(;;. l'I:>
~
~ ~
;:::
-.
l:l....
en (')
.g
CD
.;:::
:::r
3Q) SP+
.....
l'I:> .....
~
5-Pole Active Smoothing Filter
~ ~ ~
CD
-
TECHNOlOGY 8'1' tSO
en
<:')
CD
en
ChipCorde(
5-Pole Active Antialiasing Filter
oa
:::
C" 0
"
l'I:> l'I:>
"'!
::::!.
"::. -= " -..
;::: ~
0 0
en
XCLK
~
::: ~
<:')
~
it <:') ~
;:::
(;;. <:')
AGC
SP-
~
l'I:>
~ ~
;:::
Address Buffers
Device Control
-.-.~ l'I:>
l:l.... ;:::
O'q
VCCA VSS A VSSD VCCD
AO A1 A2 A3 A4 A5 A6 A7 A8 A9
PD OVF PIA
CE EOM AUX IN
OJ ,'lv.(
Iiv,:,,;/1 I'
"
"
w ,
I
1>.'4
'> I .
>
~
'II
LJH
I', 1"",
I'"
".
f, 1 /
.J,)\
V', '.1'
i,
!
lJ1
I
PwM0
~J\JI
N
T
pi,
£/.
bJ
, ." N
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 6, Spraakinterface PCB
laeel-ll-al .4steu~
8
0 o
{.} (;) ~.~
o c
-u ()) L-
ro
o
~.-}
(=)
o ~')000
Q)
r-O'l
0
0000
(j)
-00
n6m4sH xd .s~n6J6d nsrl~ti~ Qni~J6TI
o
,.)
-lU
~Il..
,:;
8
0 0 0 0 0 0 0 0 0 0 0 0
,.)
0 0 0
{.)
,.}
00 00 00 00 00 0 00 00 00 00 0
0 0 0 0 0 0 0 0 ~.}
0 ,.)
,.)
o
0
,.)
00 00 00 00 00 00 00 00 00 00 0
0
(;)
o
0
0 0000 0
00(')(';000
[9]
<:> ,....."..,.",."., ..",."
0 0 0
0
0
[9]
0
(:5
,":
,"',
o
~
[9]
o
,.)
o ~.)
0
[9]
0
.......
El
,.:;
0
[9]
,.}
o
o
(.)
0
I
~.. ~ o coP. o ,".
@J
o 00000000000800 0 "'.'
,.}
0
,.}
0
o
'%1":
o
•
El r .
0
. 000000
0
El ,.)
00
00 00
o (.)
0
(-~
(=)
,.}
0 0 0 0 0 0 0 0 0 0
8
0
000000(') 000000
0~0000 ~.) O · . 0(';000
oo
~
0 0 El
o ,..}
0 0 0 0 0 0 0 0
o
0
~.}
,o
..}
,.;
o 0~"}'·)000(·)'·)'·)0~·}'·)''')0
~.}
"1$
•
c
-U ()) L-
ro
o
(j)
Q)
-00 r-O'l
-lU
~Il..
- 22-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 7, Spraakinterface componenten opstelling
• II@. tIJ~'"
tIJ~
.•
tIJ~'" -0
c OJ
LCO (j)
o
Q) -flO
;:::co
I.
~
••
~•
~•
-lU
~Il
..••
I::
e •••••••• •
•
C~ 1
E.
Cf;E
Elk
•
.
IFl
1
•
•••••• •••••••
I
~•
e=le£:l •• ••• • m • => • • •• ~ •• su.r·1 B • •• • .c:::RfLJ. • c::::R7.:::J•
•• •• •• :: •• ••
0
••
•
GAT
[• • • • 1
~ I.... --I·~·
• c::::::RS.:::J.
.c::::RU. .c:::RIT:J.
~•
c;"
~
@
~
•••
---.J
1.
•
••••••• ••••••
~
e:;
• c::::m::::J.
«J3 (}) • J
· ~ ~ l"~o:,:;:!~: ~ .=.C)~ .'--'. •• (J). =>.
~(;)~
I·············· ~ -$-
~: - - - - - - - - -
(;)~
- 23 -
.c::RI'[].
• c:::RI2::J.
• •
~
l!1
~$
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 8, Spraakinterface onderdelen Iijst
B I L L
o
F
MAT E R I A L S
Project name: SCH\WEEGSCHA 15:32 Nov. 16, 1996 Time & date: Device
#
Value
Package type
Refdes
--------------------------------------------------------------------------
1 1 1 2
27C256 74HC573 80CL580 CER.CAP
11 CER.CAP
1 DIODE 3 HDR 1
80CL580 10pF
DIP28 DIP20 80CL580 CRM5A
100nF
CRM5A
1N4001
DIOD1 PIN
1 1 1 1 1 3
HDR 1 ICL7663 ISD2560 LED LM324 NPN
BC414
pin DIP8 DIP28 LED5 DIP14 TRA T092B
1 1 1 2
PCA8581 PNP POL. CAP POL. CAP
BC416 1uF 10uF
DIP8 TRA T092B CAXO CAXO
1 POL.CAP 2 POL.CAP
22uF 100uF
CAXO CAXO
POL.CAP RES.25W RES.25W RES.25W RES.25W
470uF 1 k 10 k 10k
CAXO RES12 RES12 RES12 RES12
22k
RES12
1 1 1 1 7
1 RES.25W
red
1k
- 24-
U3 U2 U1 C6 C7 C2 C3 C4 C8 C9 C10 C12 C14 C15 C17 C18 D2 J1 J2 J3 J4 U4 U7 D1 U6 T1 T2 T4 U5 T3 C1 C19 C20 C13 C5 Cll C16 R2 Rll R4 R1 R5 R8 R10 R13 R17 R18 R14
Keukenweegschaal voor visueel gehandicapten, technische handleiding 5 RES.2SW
lOOk
RESl2
RES.2SW RES.2SW SPEAKER SW- SPST
210k 604k 80hm
RESl2 RESl2 HEADER2 SIL2
I I I 3
I TDA70S2A I XTAL
DIP8 XTAL
6 MHz
- 25 -
R3 R9 Rl2 RIS Rl6 R7 R6 SPI SWI SW2 SW3 U8 Xl
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 9, Startup procedure flowchart
- 26-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 10, Hoofdlus flowchart
Yes
No
Int_0 flag set? => Interrupt 0 procedure Key_1 Pressed? => Alarm control procedure Key_2 Pressed? => Speak again procedure Key_3 Pressed? => Volume control procedure Weight changed ? => Speak short weight
Yes
No
- 27-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 11, Interrupt 0 procedure flowchart
- 28-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 12, Compose sentence output Jump table: language = 0..7, message sort = 0..3 language = 0 (Dutch) .---- message sort O. Time message in the format:
J 1.
XX~ minuut
en .=::::: yy
-+
minuten ~
~seconde
seconden
Weight in long format:
~
----. kilo
-+
en
~ ': honderd .......'-.4i:z .=::::: gram
2.
Weight in short format:
3.
Special messages
Voorbeelden: Tijd (mm:ss): 00:01 wordt weergegeven als: 00:45 wordt weergegeven als: 01 :30 wordt weergegeven als: 25:00 wordt weergegeven als: Lang gewicht (gram): 0000 wordt weergegeven als: 0012 wordt weergegeven als: 0123 wordt weergegeven als: 0234 wordt weergegeven als: 2345 wordt weergegeven als:
een seconde vijf-en-veer-tig-seconden een-minuut-en-der-tig-seconden vijf-en-twin-tig-minuten-en-nul-seconden
nul-gram twaalf-gram honderd-drie-en-twin-tig-gram twee-honderd-vier-en-der-tig-gram twee-kilo-en-drie-honderd-vijf-en-veer-tig-gram
Kart gewicht (gram): 0000 wordt weergegeven als: nul 0025 wordt weergegeven als: der-tig 0132 wordt weergegeven als: een-der-tig 0656 wordt weergegeven als: zes-zes-tig 1234 wordt weergegeven als: een-kilo-twee-der-tig 1345 wordt weergegeven als: drie-vijf-tig (de melding een-kilo wordt aIleen gegeven bij het passeren van de 1 kilo, daama wordt weer aIleen de honderdtallen en tientallen grammen uitgesproken) - 29-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 13, Interrupt 1 procedure flowchart
- 30 -
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 14, Timer 1 interrupt procedure flowchart
No
Correct
- 31 -
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 15, Key 0..2 interrupt procedure flowchart
I------~
lOX.-----------l
No
- 32-
10 X
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 16, Timer 0 interrupt procedure flowchart
No
No
Yes
No
- 33 -
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 17, Extrapolate procedure flowchart
XWD = extrapolated weight WD(t) = last received weight WD(t-l) = previous received weight t = time between WD(t) and WD(t-l) Xt = extrapolate time
- 34-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 18, Volume control procedure jump table Volume control: Jump table: Volume status = 0.. 15 O.
Speak "Volume control on" If current volume> 8 then volume status = 1 else volume status = 2 1. Speak "Decrease volume ?" Volume status = 2 2. Speak "Increase volume ?" Volume status = 4 3. Wait 5 seconds for user input Ifkeypressed then volume status = 5 else volume status = 7 4. Wait 5 seconds for user input If keypressed then volume status = 6 else volume status = 8 5. Ifkeypressed then volume status = 7 else Decrease volume If volume = minimal then speak "volume minimal" Volume status = 7 else speak "softer" 6. If keypressed then volume status = 8 else Increase volume If volume = maximal then speak "volume maximal" Volume status = 8 else speak "louder" 7. If lasttime = 1 then volume status = 9 else volume status =2 8. If lasttime = 1 then volume status = 9 else volume status = 1 9. Speak "volume control off' Write volume to eeprom Exit 10.. 15 not used
- 35 -
Keukenweegschaal voor visueel gehandicapten, technische handleiding
Bijlage 19, Alarm control procedure jump table Alarm control Jump table: alarm status = 0..31 O.
1.
2. 3. 4.
5. 6. 7.
8. 9. 1O. 11. 12. 13. 14.
Speak "alarm control on" Read alarm time form RAM Alarm status = 1 Speak "the current alarm time is:" Speak alarm time Alarm status = 2 Speak "Start alarm ?" Alarm status = 3 Wait 5 seconds for user input If keypressed then alarm status = 4 else alarm status = 5 Speak "alarm on" Set alarm time Set alarm active = 1 Write alarm time to eeprom Alarm status = 16 Exit Speak "change alarm time ?" Alarm status = 6 Wait 5 seconds for user input If keypressed then alarm status = 8 else alarm status = 7 Speak "alarm off' Set alarm active = 0 Alarm status = 0 Exit Speak "decrease alarm time ?" Alarm status = 10 Speak "increase alarm time ?" Alarm status = 11 Wait 5 seconds for user input If keypressed then alarm status = 14 else alarm status = 12 Wait 5 seconds for user input If keypressed then alarm status = 15 else alarm status = 13 If lasttime = 1 then alarm status = 1 else alarm status = 9 If lasttime = 1 then alarm status = 1 else alarm status = 8 If keypressed then alarm status = 12 else Decrease alarm time If alarm time = minimal then speak "alarm time minimal" Alarm status = 12 else speak alarm time
- 36-
Keukenweegschaal voor visueel gehandicapten, technische handleiding
15.
If keypressed then alarm status = 13 else
Increase alarm time If alarm time = maximal then speak "alarm time maximal" Alarm status = 13 else speak alarm time 16. If beep = 1 then beep = 0 Alarm status = 7 else speak "Alarm in:" Speak alarm time Alarm status = 17 17. Speak "stop alarm ?" Alarm status = 18 18. Wait 5 seconds for user input If keypressed then alarm status = 7 else alarm status = 19 19. Speak "change alarm time ?" Alarm status = 20 20. Wait 5 seconds for user input If keypressed then alarm status = 8 else alarm status = 21 21. Speak "alarm continues" Alarm status = 16 Exit 22..31 not used
- 37 -
Technische Universiteit Eindhoven, Faculteit der Elektrotechniek, Vakgroep Meet & Besturingssystemen, Sectie Medische Elektrotechniek
Keukenweegschaal voor visueel gehandicapten Door Herman Kuster
Rapport van Afstudeerwerk uitgevoerd van: februari 1996 tim december 1996 in opdracht van de plaatsvervangend leerstoelhouder: df. if. P.J.M. Cluitmans onder leiding van: if. W.H. Leliveld medebegeleid door: H.J.M. Ossevoort
De faculteit Elektrotechniek van de Technische Universiteit Eindhoven aanvaardt geen aansprakelijkheid voor de inhoud van stage- en afstudeerverslagen
Samenvatting Dit verslag behandelt de resultaten van een afstudeerproject dat is uitgevoerd in de afgelopen acht maanden aan de Technische Universiteit te Eindhoven, Faculteit Elektrotechniek, vakgroep Meet- en Besturingssystemen, sectie Medische Elektrotechniek. Het onderwerp van dit afstudeerproject is het ontwerp van een sprekende keukenweegschaal voor visueel gehandicapten. Ais eerste stap is een klein markt onderzoek uitgevoerd om uit te vinden welke digitale keukenweegschaal het best gebruikt zou kunnen worden als basis voor het project. Nadat de keuze was gevallen op de LS5000 van Ohaus is de hardware ontworpen voor de spraak-interface. Deze interface is gebaseerd op een 80CL580 microcontroller in samenwerking met een ISD2560 spraak-synthesizer. Ais laatste stap in het ontwerpproces zijn de microcontroller en de spraak synthesizer geprogrammeerd zodat de totale spraakinterface de volgende functies kan uitvoeren: • Het gewicht kan op twee verschillende manieren worden uitgesproken. Ais het gewicht stabiel is wordt het volledig uitgesproken, maar als het gewicht verandert dan wordt het geextrapoleerd en verkort uitgesproken. • Volumeregeling. Het volume van de uitspraak kan worden geregeld met een drukknop. • Alarm functie. De spraak-interface kan worden gebruikt als een eenvoudige alarm klok, die ook bediend wordt met een drukknop. • Spraakherhaalfunctie. De laatste uitgesproken mededeling kan worden herhaald door op de spraakherhaaltoets te drukken. Het gebouwde prototype is op beperkte schaal getest en daaruit bleek dat er nog een paar kleine verbeteringen mogelijk waren. Tevens dient de ondersteuning voor meerdere talen nog te worden geprogrammeerd. Ais deze punten zijn gerealiseerd dan kan de spraak-interface op beperkte schaal worden geproduceerd zodat visueel gehandicapten ook daadwerkelijk gebruik kunnen maken van de sprekende weegschaal.
Summary This report contains the results of a graduate project that has been performed the past 8 months at the Eindhoven University of Technology, Faculty of Electrical Engineering, Department of Measurement and Control Systems, Section Medical Electrical Engineering. The subject ofthe project is the design of a talking kitchen scales for use by visually disabled people. First a small market survey was done to find out which digital kitchen scales best could be used as a basis for the design. After the choice was made to use the LS5000 manufactured by Ohaus, the hardware of the speech interface was designed. This interface is based on a 80CL580 microcontroller unit, accompanied by an ISD2560 speech synthesiser. The last stage of the design process was to program the microcontroller and the speech synthesiser in a way that the following tasks are performed: • The weight can be spoken in two different forms. When it is stable the weight is spoken completely, and when it is changing the weight is extrapolated and spoken in a short form. • Volume control. The volume of the spoken messages can be adjusted with one push button. • Alarm function. The speech interface can be used as a simple alarm clock, also controlled with one push button. • Speech repetition. The last spoken message can be repeated by pushing the speech repeat button. This prototype was tested and it turned out that some minor changes still are needed to be made to the speech interface. Also the implementation of multiple languages must still be done. When these points have been realised the speech interface can be manufactured in small series allowing visually disabled people to actually use the talking kitchen scale.
Keukenweegschaal voor visueel gehandicapten
Inhoud Hoofdstuk 1, Inleiding Hoofdstuk 2, Probleemstelling Hoofdstuk 3, Verloop van het ontwerp traject 3.1, Keuze van de weegschaal 3.2, Ontwerp van de hardware 3.3, Software ontwerp Hoofdstuk 4, Evaluatie Hoofdstuk 5, Conclusies en aanbevelingen Literatuurlijst Bijlage 1, Hardware blokschema Appendix 1, Handleiding weegschaal met spraakinterface 1.1, Bediening/aansluiting van de weegschaal.. 1.2, Bediening en aansluiting van de spraakinterface 1.2.1, Volume regeling 1.2.2, Alarm funktie 1.2.3, Spraak herhaal funktie 1.2.4, Voorspellende weging
-4-
5 6 9 9 10 12 15 17 18 19 20 20 22 22 23 23 23
Keukenweegschaal voor visueel gehandicapten
Hoofdstuk 1, Inleiding De mens is altijd al bezig geweest om voor zichzelfhet dagelijks leven zo aangenaam mogelijk te maken door slimme oplossingen te bedenken voor een gerezen probleem. De afgelopen tientallen jaren heeft zich dat ondermeer geuit in het ontwerpen van allerhande elektronische apparatuur voor gebruik in en om het huis. Een van deze apparaten die sinds enkele jaren op de markt is is een elektronische keukenweegschaal. Dit type weegschaal heeft een aantal mogelijkheden die hem beter geschikt maken voor het keukengebruik dan de al wat oudere mechanische typen. Hierbij valt onder andere te denken aan de grotere nauwkeurigheid, eenvoudige tarreer methode en dit alles in een kleinere behuizing. Het is dan ook niet verwonderlijk dat deze elektronische weegschalen steeds meer gebruikt worden in de keuken. Er is echter een groep mensen waarvoor deze vooruitgang een stuk moeizamer verloopt. Bij het leeuwendeel van de nieuw ontwikkelde apparatuur wordt er namelijk vanuit gegaan dat de gebruiker een goed gezichtsvermogen bezit. Is dit echter niet het geval, dan zijn deze electronische weegschalen nauwelijks te gebruiken omdat het gewicht aIleen wordt weergegeven op een klein display. Bij de oude mechanische typen was het vaak nog weI mogelijk om de schaalverdeling in reliefuit te voeren waardoor visueel gehandicapten ze toch konden gebruiken. Een electronische weegschaal is echter niet op deze manier geschikt te maken voor gebruik door deze groep gehandicapten. Aan de Technische Universiteit Eindhoven is bij de vakgroep Meet en Besturing Systemen, sectie Medische Elektrotechniek een groep mensen aktief die zich bezig houdt met het ontwikkelen van communicatiehulpmiddelen en instrumentatie ten behoeve van ouderen en gehandicapten. Een van de projecten die in deze groep in uitvoering is, is het ontwerpen van een keukenweegschaal voor visueel gehandicapten. Het afstudeer project dat in dit verslag behandeld wordt is dan ook een voortzetting van werk dat al is ingezet door anderen.
-5-
Keukenweegschaal voor visueel gehandicapten
Hoofdstuk 2, Probleemstelling Dit afstudeer project is een vervolg op een project dat is uitgevoerd in de vakgroep Medische Elektrotechniek van de Technische Universiteit Eindhoven in 1990. In dat project is een sprekende keukenweegschaal ontwikkeld die geschikt is voor gebruik door visueel gehandicapten. Het destijds ontwikkelde prototype funktioneerde al redelijk optimaal en is geevalueerd in een blinden instituut. De technologie die in dat prototype is gebruikt is echter reeds verouderd, de weegschaal en de spraaksynthesizer zijn niet meer in produktie. Omdat nog steeds de wens bestaat om een sprekende weegschaal op kleine schaal in produktie te nemen moest er dus een nieuw model worden ontwikkeld. De probleemstelling van dit afstudeer project is dan ook nagenoeg identiek aan degene zoals die is beschreven in [Alberti, 1986] en [Uitert, 1990]. Verder zijn er uit de evaluatie die is uitgevoerd met het prototype ook nog enkele punten naar voren gekomen waar rekening mee dient te worden gehouden bij een nieuw ontwerp. De lijst met algemene eisen waaraan de weegschaal met de nieuw te ontwikkelen spraakinterface moet voldoen wordt dan ook als voIgt: • De weegschaal waarop het ontwerp gebaseerd wordt dient robuust te zijn. Bij het dagelijks gebruik van de weegschaal kan het voorkomen dat deze van het aanrecht op de grond valt, of anderszins wordt blootgesteld aan krachten die het mechanisme van de weegschaal kunnen ontwrichten. Ook kan het voorkomen dat er vloeistof over de weegschaal wordt gemorst. De weegschaal dient zoveel mogelijk bestand te zijn tegen deze gebeurtenissen zodat de goede werking van het geheel niet in gevaar komt. Er moet dus op gelet worden dat in de weegschaal zo min mogelijk beweegbare onderdelen zijn verwerkt (deze gaan bij mechanische schokken over het algemeen het eerste stuk). Tevens moet worden gelet op de behuizing waarin de weegschaal zich bevindt. Deze moet eventuele vloeistof zo goed mogelijk buiten langs afvoeren en deze moet ook tegen een stootje kunnen. Voor de spraakinterface geldt natuurlijk eenzelfde verhaal, ook deze dient tegen een stootje te kunnen en zoveel mogelijk spatwater- en stofdicht te zijn. • Eenvoudige bediening van de weegschaal is ook een punt waar op gelet moet worden. Blinden en slechtzienden hebben over het algemeen al meer moeite met het correct bedienen van elektronische apparatuur omdat de visuele terugkoppeling ontbreekt. De weegschaal dient dan ook het liefst zo min mogelijk knoppen te hebben die tevens een eenduidige funktie hebben. De bediening van de spraakinterface dient ook eenvoudig te zijn waarbij zo goed mogelijk gebruik kan worden gemaakt van het feit dat er een auditieve terugkoppeling kan worden gemaakt. • De weegschaal dient ook goedkoop te zijn. De bedoeling van dit project is uiteindelijk ook het op kleine schaal in produktie nemen van het ontwerp zodat blinde en slechtziende gebruikers ook werkelijk de mogelijkheid hebben om zo'n sprekende weegschaal aan te schaffen. Voorkomen moet worden dat hierbij de prijs een beslissende rol gaat spelen. Ook voor de spraakinterface geldt dat deze zo goedkoop mogelijk moet worden uitgevoerd. Bij de keuze van de verschillende komponenten dient ook op de prijs te worden gelet. Ook moet goed rekening worden gehouden met de produceerbaarheid van de interface, zodat niet de uiteindelijke prijs van het geheel wordt bepaald door de arbeidskosten die nodig zijn voor de produktie van de interface. • Ondersteuning van meerdere talen. am de spraakinterface zo universeel mogelijk te houden is het gewenst dat op eenvoudige manier kan worden omgeschakeld tussen verschillende talen.
- 6-
Keukenweegschaal voor visueel gehandicapten • De weegschaal met spraakinterface dient ook voorzien te zijn van een voorspellende weging. Deze voorziening moet het gemakkelijker maken voor blinden en slechtzienden om bijvoorbeeld een bepaalde hoeveelheid vloeistof afte wegen. De spraakinterface probeert hiermee te voorspellen wat er voor gewicht op de weegschaal zal staan aan het einde van de spraak boodschap die dit moet melden. Zonder deze funktie bleek dat er vrijwel altijd iets meer werd afgewogen dan de bedoeling was omdat de spraak altijd een bepaalde tijd achterloopt op het werkelijke gewicht. • Het dient ook mogelijk te zijn om met een 'spraak herhaal' toets het laatste uitgesproken gewicht te herhalen mocht dit niet goed verstaan zijn. • Het volume van de spraakinterface dient regelbaar te zijn. Omdat de weegschaal met spraakinterface in veeI verschillende omgevingen gebruikt moet kunnen worden dient het mogelijk te zijn om het volume waarmee de spraak boodschappen worden gegeven te veranderen. • Uitbuiten van de mogelijkheden. Ais het zonder al te veel extra moeite/kosten mogelijk is om zinvolle extra funkties in de spraakinterface te bouwen dient dit zoveel mogelijk te gebeuren. Hierbij valt voomamelijk te denken aan het implementeren van een kookwekker omdat deze ook veel in de keuken wordt gebruikt en omdat conventionele typen voor blinden en slechtzienden moeilijk te bedienen zijn. • De spraakinterface dient voorzien te zijn van duidelijke spraakboodschappen. Het gewicht dient met een goede zinsopbouw te worden uitgesproken. De speciale toestanden van de weegschaal (overgewicht, negatief gewicht, batterij leeg) dienen duidelijk te worden gemeld en dit alles goed verstaanbaar. Ais de gestelde eisen verder worden gespecificeerd en onderverdeeld naar eisen voor de hardware en eisen voor de software dan worden de hardware eisen: • Energie zuinig. am het mogelijk te maken dat de weegschaal met spraakinterface ook met batterijen gevoed kan worden dient gelet te worden op het energie verbruik. Er moet voor worden gezorgd dat zoveel mogelijk onderdelen van de schakeling uitschakelbaar zijn zodat als ze niet gebruikt worden ze ook geen energie verspillen. • Het ontwerp dient zo eenvoudig mogelijk te blijven. Omdat het ontwerp ook geproduceerd moet gaan worden is het zaak om van het begin af aan rekening te houden met deze eis. Er dienen geen componenten te worden gebruikt die moeilijk leverbaar zijn of waarvan de productie in de toekomst niet zeker is. Tevens dient bij het ontwerp van het PCB ook te worden gelet op eenvoud, anders gaan de arbeidskosten die nodig zijn om de print te assembleren overheersen. • De gebruikte componenten dienen ook zo goedkoop mogelijk te zijn. In samenhang hiermee zal er zo goed mogelijk gebruik moeten worden gemaakt van de mogelijkheden van de verschillende componenten. Er kan beter een component worden gebruikt die op het maximum van zijn kunnen werkt, dan twee die ieder maar een gedeelte van de beschikbare capaciteit gebruiken. • De ontworpen schakeling dient zo universeel mogelijk van opzet te zijn. Daar er in de toekomst wellicht nog verdere uitbreidingen gewenst zijn is het verstandig om daar rekening mee te houden bij het ontwerp.
-7-
Keukenweegschaal voor visueel gehandicapten Voor de software gelden dan de volgende eisen: • De gegenereerde spraak moet eenvoudig te veranderen zijn in een andere taal en moet tevens goed verstaanbaar zijn. • Ais extra funkties zijn een regelbaar volume en een kookwekker/alarm gewenst. Een regelbaar volume is geen overbodige luxe omdat het apparaat in veeI verschillende omgevingen moet kunnen functioneren, veel of weinig achtergrond geluid, hardhorend of niet etc. De kookwekker/alarm funktie is gewenst omdat deze ook vaak in de keuken wordt gebruikt en conventionele modellen hiervan zijn vaak moeilijk te bedienen door blinden of slechtzienden. • De spraakinterface dient de mogelijkheid te hebben om de laatste gewichtsmelding zo nodig te herhalen. Omdat het uiteindelijke gewicht maar een maal wordt uitgesproken is het gewenst dat als deze boodschap niet goed is verstaan, deze kan worden herhaald.
-8-
Keukenweegschaal voor visueel gehandicapten
Hoofdstuk 3, Verloop van het ontwerp traject 3.1, Keuze van de weegschaal Nadat aIle eisen opgesteld zijn zoals deze in het voorgaande 'Hoofdstuk 2, Probleemstelling' zijn vermeld, is begonnen met het oplossen van deze probleemstelling. De eerste stap hierin was het kiezen van een goede weegschaal die als basis kan worden gebruikt voor de rest van het ontwerp. Na een klein marktonderzoek en het aanschrijven van verschillende fabrikanten is gekozen voor de LS5000 weegschaal van Ohaus. Deze weegschaal heeft de volgende positieve eigenschappen: • Robuust. De behuizing van de weegschaal is gemaakt van een stevige kunststof. Intern zijn er geen bewegende delen zodat ook het binnenwerk goed bestand is tegen mechanische belastingen. Tevens zijn aIle onderdelen van de behuizing zodanig overlappend uitgevoerd dat vloeistof die van boven op de weegschaal gemorst wordt langs de buitenkant van de weegschaal afloopt, zonder door te dringen tot het inwendige. Het enige punt van aandacht hierbij zijn de aansluitingen aan de achterzijde van de weegschaal, hierdoor kan eventueel weI vocht de weegschaal inlopen. • Eenvoudige bediening. De LS5000 heeft maar een knop waarmee de hele weegschaal bediend kan worden. Deze ene knop verenigt drie funkties (aanluit en tarreer) zonder dat daardoor de bediening onduidelijk wordt. • De weegschaal is ook redelijk goedkoop. De LS5000 is te koop voor ca. fl. 200,- (incl. BTW). Gezien de geboden kwaliteit van de weegschaal is dit niet dum. • Het gewicht kan met deze weegschaal op twee verschillende manieren worden uitgelezen. Allereerst is de standaard gram (g) uitlezing beschikbaar, maar ook de pound/ounce (lb/oz) uitlezing kan worden gebruikt. Hiermee kan wellicht in de toekomst ook een spraakinterface worden ontwikkeld die beide standaarden kan uitspreken, de huidige versie kan echter aIleen met de gram uitlezing overweg. • Eenvoudige uitlezing van gewichtsdata. De weegschaal is intern reeds voorzien van een seriele uitgang die het mogelijk maakt om het gewicht uit te lezen via een signaaIlijn. De speciale toestanden van de weegschaal (negatief gewicht, overgewicht, uitlees mode en lage batterij spanning) worden ook in dit serieel signaal verzonden.
-9-
Keukenweegschaal voor visueel gehandicapten
3.2, Ontwerp van de hardware Nadat de keuze was gemaakt voor de weegschaal is er een ontwerp gemaakt voor de hardware van de spraakinterface. Om zoveel mogelijk aan de eisen te kunnen voldoen zoals die zijn gesteld in 'Hoofdstuk 2, Probleemstelling' is gekozen voor een opzet waarbij het grootste gedeelte van de functionaliteit van de schakeling wordt gerealiseerd in een microcontroller. Het ontwerp van de hardware zal worden beschreven aan de hand van het blokschema zoals dat te vinden is in 'Bijlage 1, Hardware blokschema', echter voor een volledige beschrijving wordt verwezen naar [Kuster, 1996a]. In eerste instantie was gekozen voor een microcontroller (MCV) van het type 80CL4l 0, zie [Philips, 1995]. Deze is MCS-5l compatibel zodat de mogelijkheid bestond om de software zoals deze in het eerdere project ontwikkeld was te hergebruiken. Het bleek echter dat bij de ontwikkeling van de software deze microcontroller over te weinig intern RAM beschikte (128 bytes) zodat er regelmatig een stack overflow optrad waardoor de software vastliep. Alleen door het genereren van een reset was uit deze toestand te komen, hetgeen ongewenst is. Daarom is in tweede instantie gekozen voor de 80CL580, zie ook [Philips, 1995] die ook weer MCS-5l compatibel is, en tevens een groter intern RAM heeft van 256 bytes. Hiermee bleek de software goed te kunnen werken. Een tweede voordeel van deze microcontroller t.o.v. de 80CL4l0 is dat hij beschikt over een puIs breedte modulatie uitgang. Hiermee kan op eenvoudige manier een digitaal naar analoog conversie worden gerealiseerd. Deze microcontroller is in een standaard toepassing in de schakeling gebruikt in combinatie met een latch en een EPROM. De latch dient ervoor om de adreslijnen AO tot en met A7 uit de gemultiplexte dataladres bus van de microcontroller te halen. Hiermee kan de EPROM worden aangestuurd waarin het codegeheugen zich bevindt. Voor het genereren van de spraak is gekozen voor een spraak synthese IC van het type ISD 2560. Deze heeft de mogelijkheid om in totaal 60 seconden spraak op te slaan. De verschillende spraak fragmenten kunnen ieder afzonderlijk worden afgespeeld waardoor een zin kan worden opgebouwd uit de verschillende spraak fragmenten. Dit spraak IC wordt direkt aangestuurd door de microcontroller via 5 stuurlijnen. De uitgang van het spraak IC wordt via een buffer weer teruggekoppeld naar de microcontroller waarmee deze beschikt over de mogelijkheid om de taal die in het spraak IC is geprograrnmeerd te herkennen. . De uitgang van het spraak IC wordt verder nog naar een regelbare versterker gevoerd die direkt een 8 Ohm luidspreker kan aansturen. De volume regeling van deze versterker komt voor rekening van een puIs breedte uitgang van de microcontroller, die door een RC-filter wordt omgezet in een DC-spanning. Om het energie gebruik te verminderen is verder gekozen voor een volledig uitschakelbare voeding, die van de 9 V spanning die van de weegschaal wordt betrokken een 5 V en een 9 V spanning maakt. De 9 V spanning is nodig voor de versterker, de rest van de schakeling werkt op de gestabiliseerde 5 V. Deze beide spanningen zijn uit- en inschakelbaar via de lijnen aan de onderkant van het 'Power supply' blok. Als eerste wordt de spraakinterface ingeschakeld als de aangesloten weegschaal ingeschakeld wordt (dit gebeurt via de 'scales on' ingang). De spraakinterface kan ook door de S1 toets (alarm toets) worden aangezet. De microcontroller heeft verder ook nog twee stuurlijnen waarmee de 5 V en de 9 V afzonderlijk aan- danwel uitgezet kunnen worden. Het inlezen van de gewichtsdata van de weegschaal gaat via een serieel signaal dat via een buffer direkt naar de microcontroller wordt gevoerd.
- 10-
Keukenweegschaal voor visueel gehandicapten Voor de bediening van de spraakinterface zijn drie toetsen opgenomen die ook direkt aan de microcontroller zijn gekoppeld. De funkties van deze toetsen zijn achtereenvolgens: • S1, Alarm toets. Hiermee kan de alarmtij d worden ingesteld, het alarm kan worden gestart en gestopt en de tijd totdat het alarm afgaat kan worden opgevraagd. • S2, Spraak herhaal toets. Hiermee wordt de laatste spraak boodschap nog een keer uitgesproken. • S3, Volume regel toets. Met deze toets is het mogelijk om het volume waarmee de versterker het geluid weergeeft hoger danwellager te stellen. Ais laatste onderdeel is in de schakeling een EEPROM opgenomen die via een fC bus met de microcontroller communiceert. Deze EEPROM wordt gebruikt om de instellingen te bewaren als de voeding wordt uitgeschakeld. De variabe1en die hierin worden opgeslagen zijn: volume, alarmtijd en de taal.
- 11 -
Keukenweegschaal voor visueel gehandicapten
3.3, Software antwerp De derde stap in het ontwerp proces was het schrijven van de software die zorgt voor de juiste werking van de schakeling. Ook hier wordt voor de volledige beschrijving verwezen naar [Kuster, I996a]. De software zoals die bestond voor het oude model bleek achterafniet bruikbaar voor het nieuwe model. Dit werd voornamelijk veroorzaakt door het feit dat de uitlezing van de weegschaal en de aansturing van de spraaksynthesizer in het nieuwe model totaal anders gebeurt dan in het oude model. Het argument betreffende het hergebruik van de software dat is gebruikt bij de keuze van de microcontroller is dan ook niet relevant gebleken. Er had net zo goed voor een andere microcontroller gekozen kunnen worden. Van de software zal alleen dat gedeelte worden behandeld dat relevant is voor het begrip van de werking van het prototype. Momenteel kan de software alleen in de nederlandse taal uitspraken doen. Daarom zijn alle spraakboodschappen weergegeven in het Nederlands. Allereerst wordt de seriele gewichtsdata die wordt ingelezen van de weegschaal door de software gedecodeerd en omgezet in een bruikbare vorm. In dit seriele signaal van de weegschaal zijn ook de 'speciale toestanden' van de weegschaal opgenomen. Dingen als: lage batterij spanning, negatief gewicht, over- en ondergewicht e.d. worden hierin als bits verstuurd. Na deze decodeerstap is het gewicht aanwezig in het interne RAM van de microcontroller in twee bytes, die de 4 digits van het weegschaaldisplay in BCD gecodeerde vorm bevatten. Tevens zijn de speciale toestanden van de weegschaal opgeslagen in enkele vlaggen en wordt de tijd (met een resolutie van 0.01 sec) tussen de ontvangst van de laatste twee gewichtsdata bewaard in een variabele voor gebruik in de extrapolatie procedure. Ais deze data is gedecodeerd dan wordt gekeken ofhet gewicht is veranderd, zo ja dan wordt het gewicht geextrapoleerd over een vaste tijd volgens onderstaande formule:
( Xf"..t)
(Xf"..t)
XWd(t)= ----;;:(+1 ·Wd(t)- ----;;:( ·Wd(t-I)
Hierin zijn: • XWd(t), het geextrapoleerde gewicht • XM, de tijd waarover geextrapoleerd wordt • f"..t, de tijd tussen de laatste twee gewichtsdata • Wd(t), laatste gewichtsdata • Wd(t-I), vorige gewichtsdata Met deze formule wordt dus een eenvoudige lineaire extrapolatie verkregen van het gewicht zoals ook is afgebeeld in Figuur 1 Extrapolatie. Dit geextrapoleerde gewicht wordt vervolgens in een verkorte vorm uitgesproken.
m
1
XWd(t)
Wd(t) Wd(t-l)
• ~t
Figuur 1 Extrapolatie - 12 -
X~t
------.. t
Keukenweegschaal voor visueel gehandicapten Hierbij wordt getracht aIle nodige infonnatie te geven in een zo kort mogelijke tijd. Allereerst wordt het geextrapoleerde gewicht afgerond op tientallen grammen, waama dit wordt uitgesproken in de volgende vonn: '(X kilo) Y 20'. De X is hierin het aantal kilo's. Deze worden aIleen uitgesproken als er een verandering is opgetreden in dit getal, bijvoorbeeld als het gewicht van 1946 gram naar 2034 gram gaat. De Y in de verkorte gewichtsmelding staat voor de honderdtallen van het aantal grammen, de 20 tot slot geeft de tientallen weer. Hieronder in Tabel 1, Voorbeeld van de voorspellende weging is een voorbeeld gegeven van de verkorte gewichtsme1dingen zoals die gegeven zouden kunnen worden bij een veranderend gewicht.
Voorspeld werkelijk gewicht (gram) 0 34 67 196 423 945 1368 1893 2568 3251 3957
Uitgesproken gewicht nul dertig zeventig twee nul vier twintig negen vijftig een kilo drie zeventig acht negentig twee kilo vijf zeventig drie kilo twee vij ftig negen zestig
Tabell, Voorbeeld van de voorspellende weging Als het gewicht op de weegschaal is gestabiliseerd dan wordt het gewicht volledig uitgesproken in de vonn: X kilo en Y honderd 2 gram. X is weer het aantal kilo's, Y het aantal honderden grammen en 2 de tientallen en eenheden van de grammen. Als het gewicht in 'TabeI1, Voorbeeldvan de voorspellende weging' na de laatste regel niet meer zou veranderen wordt 'drie kilo en negenhonderd zeven en vijftig gram' uitgesproken. De volume regeling van de spraakinterface wordt bediend via een 'vraag - antwoord spel' met een knop. Door binnen 5 seconden na een vraag op de knop te drukken heeft de gebruiker de mogelijkheid om 'ja' te antwoorden op de gestelde vraag. Na de eerste druk op de volume knop komt de spraakinterface met de melding 'volume instellen aan', waama gevraagd wordt 'volume harder?' of 'volume zachter ?' al naargelang het huidige ingestelde volume minder of meer dan de middenstand is. De gebruiker kan op deze vraag met 'ja' antwoorden door op de knop te drukken waama het volume in stapjes harder danwel zachter wordt geste1d terwijl steeds 'harder' of 'zachter' wordt uitgesproken. Ais het volume de juiste waarde heeft bereikt dan kan de harder/zachter Ius worden onderbroken door weer op de knop te drukken. Hiema wordt altijd nog een keer de inverse vraag gesteld, dus als de eerste keer 'volume harder ?' is gevraagd dan wordt in tweede instantie ook nog een keer 'volume zachter ?' gevraagd. De volume regel procedure wordt afgesloten als er geen reaktie komt op de laatst geste1de vraag, de spraakinterface meldt dan 'volume instellen uit'. Op eenzelfde manier kan ook de alarmfunktie van de spraakinterface worden gebruikt. Het instellen van de alarmtijd, het starten/stoppen van het alann en het opvragen van de tijd totdat het alann afgaat gebeurt ook weer met een knop in kombinatie met een 'vraag - antwoord spel'. De alarmtijd kan worden ingesteld tussen ~ minuut en 1 ~ uur door na de vraag 'alanntijd langer?' of'alarmtijd korter?' op de knop te drukken. Daama kan het alarm worden gestart door na de vraag 'alann starten ?' op de knop te drukken. Ais het alann gestart
- 13 -
Keukenweegschaal voor visueel gehandicapten is kan door nogmaals drukken op de alarmknop de nog te verstrijken tijd totdat het alarm afgaat worden opgevraagd, waarna de vraag 'alarm stoppen 7' wordt gesteld waarmee het alarm gestopt kan worden door op de knop te drukken. Wordt er na deze laatste vraag niet op de knop gedrukt dan loopt het alarm gewoon door na de mededeling 'alarm aan' . AIle uitgesproken zinnen worden in de software door een procedure samengesteld. Deze procedure zet met behulp van een look-up table de uit te spreken getallen om in een correcte zin. De overige berichten (zoals 'weegschaal aan', 'volume instellen aan' e.d.) worden op eenzelfde manier gegenereerd via een tweede look-up table. In het prototype is een ondersteuning ingebouwd voor 8 verschillende talen, voor elk van deze talen kan de zinsopbouw worden gerealiseerd via twee look-up tables, een voor de getallen en een voor de overige berichten. Deze ondersteuning voor 8 talen kan eenvoudig worden uitgebreid tot een maximum van 64. In het prototype zijn tot nu toe aIleen voor het Nederlands de look-up tables geYmplementeerd, zodat momenteel aIleen de Nederlandse taal kan worden gebruikt.
- 14 -
Keukeml'eegschaal voor visueel gehandicapten
Hoofdstuk 4, Evaluatie Tijdens een van de laatste fasen in het ontwerp traject is het ontwikkelde prototype op beperkte schaal geevalueerd. Het huidige model bestaat uit een printplaat met daarop de nodige elektronika die wordt bediend door een los toetsenbordje met 3 toetsen. In de uitgevoerde evaluatie zijn dan ook nog geen punten opgenomen wat betreft de ergonomie van het ontwerp. AIleen aIle verschillende funkties van de weegschaal in combinatie met de spraakinterface zijn getest op functionaliteit. In totaal is aan een tiental mensen gevraagd om een aantal wegingen uit te voeren (zowel dynamische wegingen alsook statische) en ook de extra funkties van de spraakinterface (volume regeling, alarm) te gebruiken. Daama is gevraagd welke funkties goed of minder goed werkten en tevens is gevraagd naar mogelijke verbeteringen. Hierbij dient weI te worden opgemerkt dat aIle proefpersonen niet visueel gehandicapt waren, voor een meer realistische evaluatie dient deze dan ook nog herhaald te worden in een blindeninstituut. Uit deze eerste evaluatie zijn de volgende dingen naar voren gekomen: Punten die nog verbetering behoeven: • Alarm regeling en volume regeling tegelijk bedienen geeft chaos. In het prototype dat geevalueerd werd was het mogelijk door het kort na elkaar indrukken van de alarm knop en de volume regel knop beide procedures te aktiveren. Dit had tot gevolg dat de beide procedures gelijktijdig allerlei vragen aan de gebruiker gingen stellen wat erg storend werkt. Ook was het zo dat als er tijdens een vraag antwoord spel via een van beide procedures tegen de weegschaal werd gestoten dat er gewichtmeldingen werden gegeven tussen de vragen door, ook dit is erg verwarrend. Er moet dus nog worden gezorgd dat er maar een soort melding wordt gegeven aan de gebruiker, 6f alarm instellen 6fvolume instellen 6f gewichtsmelding. • Extrapoleren over 2 seconden is te lang. De tijd waarover het gewicht werd geextrapoleerd was in het prototype op 2 seconden ingesteld. Oit bleek te lang te zijn omdat de uitspraak van het verkort gewicht minder tijd in beslag neemt. Een gevolg hiervan was dat er vaak te vroeg werd gestopt met de weging omdat de gebruiker dacht al voldoende massa op de weegschaal te hebben. • Bij overflow geen gewicht meer uitspreken. Ais er op de weegschaal teveel gewicht staat dan wordt dit aangegeven met de melding' gewicht te groot' , meteen daama werd echter nog de oude waarde van het gewicht (vlak voor de overflow) gemeld. Ook dit is verwarrend omdat de gebruiker denkt dat de overgewicht situatie al is opgelost, deze gewichtsmelding na een overflow dient dan ook te worden onderdrukt. • Negatief gewicht melden met 'min'. De melding 'negatief gewicht' als het gewicht minder dan 0 gram is is te lang, door deze te vervangen door 'min' wordt dezelfde informatie gegeven in minder tij d. • Extrapoleren met bovengrens. Het bleek dat de extrapolatie routine soms bij hele kleine veranderingen in een korte tijd al een heel groot gewicht voorspelde, met name was dit het geval als er bij 0 gram op de weegschaal even tegen de weegschaal werd gestoten. Dit werkt erg verwarrend en daarom is het wenselijk dat deze toestand wordt herkend en onderdrukt. • Interface aan/uit bericht weglaten. Bij het in- en uitschakelen van de spraakinterface werd dit aan de gebruiker geme1d met 'interface aan' of 'interface uit'. Voor de gebruiker zijn deze meldingen overbodig omdat sowieso al duidelijk is dat de spraakinterface aan staat als er een spraak boodschap wordt gegeven. - 15 -
Keukenweegschaal voor visueel gehandicapten
• Meer pauzes in de zinnen. De gegenereerde spraak boodschappen van het prototype volgden elkaar soms erg snel op, hierdoor was het moeilijk te herkennen wanneer een zin was afgelopen en een nieuwe zin begon. Door meer pauzes op de juiste plaats moeten de gegenereerde zinnen een beter ritme krij gen. • Nul gram bericht bij aanzetten. Ais de weegschaal wordt aangezet is het wense1ijk dat er meteen een melding wordt gegeven van het gewicht op de weegschaal. Dit is bij aanzetten van de weegschaal altijd 0 gram omdat de weegschaal zichzelf tarreert bij inschakelen. • Betere vraag klemtoon. De gestelde vragen (bijv. 'volume harder?' bij de volume regeling) zijn moeilijk als zodanig te herkennen, een betere vraag-klemtoon zou dit kunnen verbeteren. • Versterker eerder aanzetlen. Soms valt het eerste stuk van de zin weg omdat de versterker enige tijd nodig heeft om volledig in te schakelen. Dit is wellicht te verhelpen door de versterker iets eerder in te schakelen. Ook is het mogelijk elke zin te beginnen met een korte pauze die het inschakelen van de versterker overbrugt. Punten die mogelijk voor verbetering vatbaar zijn: • De 'volume regeling' vervangen door 'geluidsterkte regeling' en 'ge1uid harder' en 'geluid zachter' i.p.v. 'volume harder' en 'volume zachter'. De term volume voor de ge1uidssterkte blijkt soms minder duidelijk voor niet technische personen. In het prototype en in de handleiding kan de term volume dan ook beter worden vervangen door geluidssterkte. • Automatisch het eindgewicht een maal herhalen. Somrnige gebruikers vonden het prettiger als het eindgewicht twee maal werd uitgesproken in plaats van de huidige een maal. • Alarm automatisch uit na een bepaalde tijd. In het huidige prototype moet het alarm worden uitgezet door op de alarm toets te drukken, gebeurt dit niet dan blijft het onophoudelijk doorgaan. Het gebruiksgemak wordt verhoogd als het alarm zichzelf zou uitschake1en na een bepaalde tijd. • Herhaal toets alleen gewichtsmelding laten herhalen. Sommige gebruikers vonden het plezieriger als de spraak herhaal toets alleen de laatste gewichtsmelding zou herhalen. In het huidige prototype worden alle meldingen herhaald, dus ook dingen als 'Alarm aan'. Er waren echter ook gebruikers die het in de huidige vorm goed vonden werken.
- 16 -
Keukenweegschaal voor visueel gehandicapten
Hoofdstuk 5, Conclusies en aanbevelingen Zoals in het hoofdstuk 'Hoofdstuk 4, Evaluatie' al naar voren is gekomen zijn er nog een aantal dingen die moeten gebeuren voordat de ontwikkelde spraakinterface in kombinatie met de weegschaal volledig aan de eisen voldoet. Kort samengevat zijn er drie dingen aan te geven waaraan nog gewerkt moet worden. Allereerst de punten die uit de evaluatie naar voren zijn gekomen. Deze onvolkomenheden zijn over het algemeen op te lossen met betrekkelijk kleine aanpassingen in de software voor de microcontroller. Ten tweede is het nog nodig dat voor de ondersteuning van meerdere talen deze nog worden geprogrammeerd in de interface. Hiervoor dient per ondersteunde taal een lijst te worden samengesteld waarin aIle relevante spraakboodschappen zijn opgenomen. Vervolgens dient deze lijst te worden opgesplitst in verschillende spraakfragmenten die worden ingesproken op de ISD2560. Ais per taal een ISD2560 is geprogrammeerd met de juiste spraak fragmenten dan moeten, als laatste stap, in de software van de microcontroller nog de routines worden opgenomen die zorgen voor de juiste zinsopbouw. Deze handelingen nemen redelijk veel tijd in beslag omdat ook nog moet worden uitgezocht hoe per taal de zinsopbouw precies moet ZlJn. Ais laatste punt moet het ontwerp dan nog worden gekompleteerd door het in een kastje in te bouwen. Bij deze laatste stap dient te worden gelet op de ergonomie van het ontwerp, goed voelbare knoppen, goed kontrast bij de knoppen e.d. Ook dient te worden gelet op de goede toegankelijkheid van de ISD2560 spraaksynthesizer. De ondersteuning van meerdere talen geschiedt door middel van een ISD2560 per taal, welke dan naar believen in de interface gestoken kunnen worden. Het IC-voetje waar deze ISD2560 in moet komen dient dus makkelijk bereikbaar te zijn voor de leverancier zodat het veranderen van taal eenvoudig gedaan kan worden. Deze laatste twee punten zouden prima in een stage kunnen worden ondergebracht die misschien wordt uitgevoerd als vervolg op mijn afstudeer project. Ais daama deze drie punten allemaal verwezenlijkt zijn dan kan na een degelijke evaluatie de spraakinterface wellicht op kleine schaal op de markt worden gebracht. Ook is tijdens het ontwerp traject een literatuur onderzoek gedaan met als onderwerp 'communicatie hulpmiddelen t.b.v. visueel gehandicapten'. Omdat de resultaten daarvan niet direct bruikbaar waren voor het afstudeerwerk is hiervan geen literatuur opgenomen in de literatuurlijst. Het verlag van dit literatuur onderzoek is echter weI separaat beschikbaar, zie hiervoor [Kuster, 1996b].
- 17 -
Keukenweegschaal voor visueel gehandicapten
Literatuurlijst [1]
Ulticap User manual & Ultiboard User manual Ultimate technology 1993
[2]
8051-based Microcontrollers Philips 1995
[3]
8051 cross assembler user's manual (asm51.doc) MetaLink Corporation 1990
[4]
Een sprekende keukenweegschaal voor visueel gehandicapten, assemblagehandleiding H.lM. Ossevoort, if. A.G. van Uitert en if. R.W.M. Mathijssen 1990
[5]
Een sprekende keukenweegschaal voor visueel gehandicapten, technische beschrijving if. A.G. van Uitert, H.J.M. Ossevoort en if. R.W.M. Mathijssen 1990
[6]
Ontwikkeling van een sprekende weegschaal t.b.v. blinden en slechtzienden lA.M. Alberti 1986
[7]
Keukenweegschaal voor visueel gehandicapten, technische handleiding H. Kuster 1996a
[8]
Verslag bibliotheek praktikum t.b.v. Afstudeer opdracht: keukenweegschaal voor visueel gehandicapten. H. Kuster 1996b
- 18 -
_._.
(I:l
OJ
@"'
c.c CD
~
:L
., Co :EOJ ., OJ
CD C"
0
L
(I:l (I:l
oa ~
;:;-!::l !::l
""~
0 0
"l
-. ~
'~"'"
(I:l (I:l
""-
CD
~
OJ
~.....
3
-
;:s ~
"en
~
Serial datavF
~
~ ;:;--
(')
Scales on0-----1.--- -
~
OJ
!::l ;:s ~
(I:l
;:s
Keukenweegschaal voor visueel gehandicapten
Appendix 1, Handleiding weegschaal met spraakinterface 1.1, Bediening/aansluiting van de weegschaal Achterop de weegschaal (LS5000 van Ohaus) zijn twee aansluitingen te vinden (zie 'Figuur 2, Achterkant v.d. weegschaal'). De weegschaal en de spraakinterface worden gevoed via aansluiting 1. Hier dient een gestabiliseerde netvoeding van 7,5 tot 12 V DC / 50 rnA op te worden aangesloten. Let hierbij op de juiste aansluiting, de middenaansluiting dient positiefte zijn ten opzichte van de buitenste aansluiting. Als de netvoeding wordt gebruikt wordt automatisch de batterij uitgeschakeld. De spraakinterface wordt aangesloten op 2 aansluiting 2. De weegschaal kan ook met batterijen Figuur 2, Achterkant v.d. weegschaal worden gevoed (zie 'Figuur 3, Onderkant v.d. weegschaal'). In dit geval kan in batterijvak (3) een 9 volt blok batterij worden geplaatst. Aangezien de spraakinterface behoorlijk veel energie verbruikt wordt echter aanbevolen een netvoeding te gebruiken (zie boven). Voor een correcte werking van de spraakinterface dient de weegschaal in de gram mode te staan, hiervoor dient schakelaar 4 op de onderkant van de weegschaal in de positie 'g' te worden geplaatst.
• '.
,.
••
4
Fiallur 3 Ouderkaut v d weeaschaaJ
- 20-
Keukenweegschaal voor visueel gehandicapten De bediening van de weegschaal geschiedt met de 'On/Off/Tare' toets (5) op de bovenkant van de weegschaal (zie 'Figuur 4, Bovenkant v.d. weegschaal'). De drie funkties van deze toets zijn als voIgt: . . . • On: als de weegschaal is uitgeschakeld dan Gilllli\tl"3~r . . INSTRUMENTEN j_ wordt deze ingeschakeld door een maal de ~~~_~~-?r.: ;:" .... .. toets in te drukken. • Off: als de weegschaal is ingeschakeld en ,;"in het display staat 0 gram, dan wordt de weegschaal uitgeschakeld door een maal de toets in te drukken. • Tare: als de weegschaal is ingeschakeld en het gewicht in het display is ongelijk 0 gram dan wordt door eenmaal de toets in te drukken het gewicht op nul gesteld. De weegschaal kan drie verschillende foutmeldingen geven (zie 'Figuur 5, Weegschaal foutmeldingen'): • Ais het gewicht te groot is (meer dan 5 kg) dan wordt dit aangegeven met vijf horizontale streepjes aan de bovenkant van het display. • Is het gewicht 'te klein' (minder dan - 5 kg), dan wordt dit aangegeven door 5 horizontale streepjes aan de onderkant van het display. • Ais de weegschaal wordt gevoed met een batterij en de batterij is bijna leeg, dan wordt dit aangegeven met de melding 'bAt' in het display. J, '
'"",'--~"
.",~~
Figuur 4, Bovenkant v.d. weegschaal
Te groot gewicht Te klein gewicht
bR~
Batterij bijna leeg
Figuur 5, Weegschaal foutmeldingen
- 21 -
,~,'
[ ,,1,
':, ": :7;;~
Keukenweegschaal voor visueel gehandicapten
1.2, Bediening en aansluiting van de spraakinterface De spraakinterface wordt aangesloten op de weegschaal zoals is beschreven in '1.1, Bediening/aansluiting van de ~veegschaal'. De spraakinterface betrekt zijn voeding uit de weegschaal zodat er verder geen aansluitingen behoeven te worden gemaakt. Ais de weegschaal wordt aangezet dan wordt de spraakinterface ook automatisch ingeschakeld; dit wordt gemeld met de mededeling 'Weegschaal aan'. Ais de weegschaal weer wordt uitgezet dan wordt dit gemeld met de mededeling 'Weegschaal uit', waama ook de spraakinterface wordt uitgeschakeld (tenzij het alarm van de spraakinterface aktiefis). De bediening van de spraakinterface geschiedt met behulp van drie toetsen, achtereenvolgens de 'alarm toets', de 'spraak herhaal toets' en de 'volume regel toets'. De 'alarm toets' en de 'volume regel toets' sturen beide een interaktieve procedure aan die met behulp van een vraag ¢:> antwoord spel de mogelijkheid bieden tot het instellen van respectievelijk het alarm en het volume. Ais de gebruiker op een gestelde vraag met 'ja' wil antwoorden dan dient dat binnen vijf seconden kenbaar te worden gemaakt door op de desbetreffende toets te drukken. Ais bijvoorbeeld bij de alarm instel procedure wordt gevraagd "Alarm starten 7", dan heeft de gebruiker vijf seconden de tijd om door middel van een druk op de alarm toets het alarm te starten.
1.2.1, Volume regeling Het instellen van het volume geschiedt als voIgt: 1. Na de eerste druk op de volume toets komt de spraakinterface met de melding "volume instellen aan", waama gevraagd wordt "volume harder 7" of "volume zachter 7" al naargelang het huidige volume onder of boven het midden is ingesteld. 2. De gebruiker heeft vervolgens vijf seconden de tijd om de gestelde vraag bevestigend te beantwoorden door op de volume regel toets te drukken. Ais er binnen deze tijd geen toetsdruk voIgt wordt aangenomen dat de vraag ontkennend is beantwoord. 3. Ais de gebruiker op de gestelde vraag bevestigend heeft geantwoord dan wordt vervolgens het volume steeds harder/zachter gesteld en elke stap wordt gemeld met de mededeling "harder" of "zachter". 4. Deze cyc1us kan door de gebruiker worden onderbroken als het volume de juiste waarde heeft bereikt door op de volume toets te drukken. De spraakinterface stelt vervolgens nog de inverse vraag, "volume zachter 7" als bij de eerste stap "volume harder 7" is gevraagd en om gekeerd, de procedure gaat dan weer verder bij stap 2. De cyclus wordt door de spraakinterface onderbroken als het volume zijn maximale/minimale volume heeft bereikt. Deze situatie wordt gemeld met "volume maximaal" of met "volume minimaal". Hiema wordt nog een keer de inverse vraag gesteld en daama gesprongen naar stap 2. Ais bij punt 2 niet op de vraag wordt gereageerd met een toetsdruk dan onderzoekt de spraakinterface of er nog een keer de inverse vraag moet worden gesteld. Er wordt op deze manier gewaarborgd dat de gebruiker altijd zowel de "volume harder 7" alsook de "volume zachter 7" vraag krijgt. Ais er geen inverse vraag meer hoeft te worden gesteld dan wordt de procedure afgesloten met de mededeling "volume regeling uit".
- 22-
Keukenweegschaal voor visueel gehandicapten 1.2.2, Alarm funktie Het instellen van het alarm gaat op eenzelfde manier, aIleen heeft de alarm instel procedure meer mogelijkheden. Het instellen/starten/stoppen/opvragen van het alarm geschiedt als voIgt: 1. Na de eerste keer drukken op de alarm toets komt de spraakinterface met de melding "alarm instellen aan", waama direkt wordt gevraagd "alarm starten ?". 2. De gebruiker kan weer binnen vijf seconden kenbaar maken dat het alarm gestart moet worden door op de toets te drukken, waama het alarm wordt gestart met de melding "alarm aan". 3. Wordt het alarm niet gestart dan wordt vervolgens de vraag "alarm instellen ?" gesteld. Een toetsdruk binnen vijf seconden geeft hierop een bevestigend antwoord en de spraakinterface komt met de vraag "alarmtijd korter 7", waama op dezelfde manier als bij de volume regeling de alarmtijd korter kan worden ingesteld. Ais er niet wordt gereageerd op de vraag "alarmtijd korter ?" dan wordt de inverse vraag "alarmtijd langer ?" gesteld waarmee de alarmtijd langer ingesteld kan worden. Na het instellen van het alarm gaat de procedure weer verder bij stap 1, waar het nieuw ingeste1de alarm kan worden gestart. 4. Ais bij 3 niet wordt gereageerd op de eerste vraag "alarm instellen ?" dan sluit de procedure af met de melding "alarm uit". Ais bij punt 1 het alarm is gestart en er wordt weer op de alarm toets gedrukt dan worden de volgende punten doorlopen: 1. De spraakinterface komt als eerste met een melding in de vorm "alarm over X minuten en Y seconden" waarin X en Y de minuten en de seconden zijn die de tijd aangeven totdat het alarm afloopt. Direkt daama wordt de vraag gesteld "alarm stoppen ?", de gebruiker kan hiermee door een toetsdruk binnen vijf seconden het alarm stopzetten. 2. Ais er niet wordt gereageerd op de vraag "alarm stoppen ?" dan wordt de vraag "alarm instellen ?" gesteld, waama op dezelfde wijze zoals boven is beschreven het alarm kan worden ingesteld. 3. Wordt ook op de vraag "alarm instellen ?" niet gereageerd dan loopt het alarm door met de melding "alarm aan". Ais de alarmtijd is verstreken dan wordt dit weergegeven met een doordringende pieptoon, waama het alarm moet worden uitgeschakeld door weer op de alarm toets te drukken.
1.2.3, Spraak herhaal funktie De spraak herhaal toets heeft aIleen de funktie om het laatste uitgesproken gewicht nog een keer te herhalen.
1.2.4, Voorspellende weging De spraakinterface heeft een speciale funktie die het afwegen van bijvoorbeeld vloeistoffen moet vergemakkelijken. Ais het gewicht op de weegschaal verandert zal de spraakinterface proberen het gewicht dat over enige tijd bereikt zal worden te voorspellen uit het verloop van de gewicht toe- of afname. De tijd waarover het gewicht wordt voorspeld is een seconde wat ook ongeveer de tijdsduur is die de spraakinterface nodig heeft voor het uitspreken van het gewicht in verkorte vorm. Deze verkorte vorm is nodig om de uitspraak niet te lang te laten duren. Bij een gewichtsmelding in verkorte vorm wordt het gewicht afgerond op 10 gram nauwkeurig, waama dit wordt uitgesproken op de volgende manier:
- 23 -
Keukenweegschaal vaal' visueel gehandicapten • De kilo's worden aIleen uitgesproken als daarin een verandering is opgetreden, dus als bijvoorbeeld het gewicht van 936 naar 1068 gaat dan wordt eenmaal 'een kilo' uitgesproken. • De honderdtallen van het gewicht in grammen wordt uitgesproken met een getal van nul tot negen, zonder dat daarachter 'honderd' wordt gezegd. • De tientallen van het gewicht in grammen worden uitgesproken zonder de melding' gram' . In onderstaande tabel is een voorbeeld weergegeven van de gewichtmeldingen zoals die door de weegschaal gegeven zouden kunnen worden bij een veranderend gewicht: Voorspeld werkelijk gewicht (gram) 0
34 67 196 423 945 1368 1893 2568 3251 3957
Uitgesproken gewicht melding nul dertig zeventig twee nul vier twintig negen vijftig een kilo drie zeventig acht negentig twee kilo vijf zeventig drie kilo twee vijftig negen zestig
Ais het gewicht op de weegschaal niet meer verandert dan wordt het gewicht volledig uitgesproken. Ais bijvoorbeeld in bovenstaande tabel het gewicht niet meer verandert na de laatste regel, dan spreekt de spraakinterface dit gewicht als voIgt uit: 'drie kilo en negenhonderd zevenenvij ftig gram' . Deze laatste melding kan nogmaals worden uitgesproken door op de spraak herhaal toets te drukken.
- 24-