Inhoudsopgave:

DemUino - Thuiscomputer/controller - Ajarnpa
DemUino - Thuiscomputer/controller - Ajarnpa

Video: DemUino - Thuiscomputer/controller - Ajarnpa

Video: DemUino - Thuiscomputer/controller - Ajarnpa
Video: Часть 1 — Аудиокнига Кеннета Грэма «Ветер в ивах» (гл. 01–05) 2024, Juli-
Anonim
Image
Image
De bootloader branden
De bootloader branden

Een op Arduino geïnspireerde computer van DemeterArt Haal het meeste uit je oude PS2-toetsenbord. Hack het in een aangepaste personal computer om dingen te besturen! Ik heb altijd al mijn eigen thuiscomputer willen bouwen, een soort retro-stijl, niets bijzonders, maar met specifieke mogelijkheden die zijn afgestemd op mijn voorkeuren. Dus ik kwam aan de slag met de atmega328 MCU en de Arduino-ontwikkelkit.

Laat me zeggen dat dit project aanzienlijk langer zou hebben geduurd met twijfelachtige eindresultaten als het niet voor de begaafde fans was die egoïstisch minder de freeware-bibliotheken leveren die iedereen kan gebruiken. Bedankt iedereen:-)

bezoek mijn site om het hele verhaal te lezen en alle relevante bestanden te downloaden

www.sites.google.com/site/demeterart

Stap 1: Functies:

  • Gebaseerd op de ATMEGA328 met 32KB flash, 2KB SRAM en 1KB EEPROM.
  • ondersteuning voor interactieve en batchmodi
  • regeleditor en lijst-terwijl-bewerkmodus
  • 8 aangepaste tekens voor gebruikersafbeeldingen
  • 60 programmastappen genummerd 00, …, 99
  • 'If' voorwaardelijke, 'while' en 'for' lussen plus 'goto' en 'sub' statements voor vertakking
  • Basis rekenkundige en wiskundige uitdrukkingen plus booleaanse tests
  • systeemvariabelen zorgen voor getimede gebeurtenissen, gemiddelde, rms, min en max waarden van analoge pinnen, enz.
  • 26 gebruikersvariabelen voor interactie met systeemvariabelen en opdrachten
  • 104 bytes van een door de gebruiker adresseerbare array of 52 korte gehele getallen
  • mogelijkheid om programmagegevens en code on-the-fly te lezen/schrijven (p-variabele)
  • mini-oscilloscoop-app met aangepaste tekens voor pseudo-graphics
  • programma's en gegevens opslaan en laden van/naar EEPROM
  • programma's en variabelen laden/opslaan van/naar pc
  • autoexec in het laden en uitvoeren van een programma vanuit EEPROM na elke reset
  • 9 GPIO-pinnen (inclusief SPI) beschikbaar op externe DB15-connector
  • BUZZER voor geluidseffecten

Stap 2: Spullen die je nodig hebt

Een oud ps/2-toetsenbord dat dik genoeg is om het pcb-lcd-karakterdisplay (het populaire parallelle formaat) te huisvesten MAX232-chip voor RS232-poort atmel atmega328PU Arduino-ontwikkelkit met IDE 1.0.1 LM7805-regelaar 5V zoemerbruggelijkrichter, condensatoren, een reset-drukknop, connectoren enz

Stap 3: De Bootloader branden

Dus na een 'lege' atmega328PU-chip te hebben gekocht, moet er een beslissing worden genomen. Gebruik ik een speciale programmer, extern of ISP, of brand ik de Arduino-bootloader in het beest en maak ik de eenheid programmeerbaar via de UART-poort? Ik koos voor het laatste om mijn leven gemakkelijker te maken! De nieuwe bootloader neemt slechts een halve kilobyte flash-geheugen in beslag, waardoor er iets meer dan 31 KB aan gebruikersprogramma en statische data beschikbaar is. De Arduino-site behandelt het geval van het branden van de bootloader op een nieuwe chip, als het ging om het gebruik van avrdude om de doelchip daadwerkelijk te branden, mislukte het proces met een fout die de verkeerde id voor de specifieke MCU aangaf. Dus na wat zoeken vond ik deze man die het goed had en ik volgde zijn procedure. Het enige verschil waren 2 configuratiebestanden, avrdude.conf en boards.txt die avrdude en arduino IDE 1.0.1 nodig hadden om het mogelijk te maken. Na het kopiëren van de 2 bestanden naar hun juiste locaties (eerst een back-up van de oude maken) was de optie 'arduino328' van tools->Board beschikbaar en ging avrdude verder met het branden van de zekeringen en de bootloader. Nu is de chip klaar om te worden geprogrammeerd vanuit de nieuwe machine!

Stap 4: De eenheid bouwen

De eenheid bouwen
De eenheid bouwen
De eenheid bouwen
De eenheid bouwen

Een geperforeerde plaat met koperen strips werd gebruikt als snelle montageoplossing met DIP-sockets voor de chips, weet je, voor het geval dat! Vervolgens werden de gaten en inkepingen voor de connectoren, de resetknop en het LCD-scherm geopend door het extreem stevige en dikke plastic van het toetsenbord. Ja, dat is 25 jaar geleden gebouwd! Daarna volgde de warboel van draden die van de pcb naar de verschillende randapparatuur kwamen. Een rudimentaire continuïteitscontrole en vervolgens werd de voeding aangesloten zonder chips, alleen om de sockets te controleren op de juiste spanningen. Toen kwamen de 2 IC's en de toetsenbordbehuizing was stevig gesloten via de plastic drukknopen aan de onderkant. De unit was klaar om schetsen in de controller te branden!

Ik stel voor dat men niet-polaire 1uF/16V-condensatoren gebruikt voor de MAX232-laadpompen. Plaats de 100nF ontkoppelcondensatoren voor de twee chips zo dicht mogelijk bij de respectievelijke VCC- en GND-pinnen. Gebruik een sterverbinding voor de voeding en aarde die verwijzen naar de LM7805-regelaar. Switch 2 kan een jumper zijn, afhankelijk van impementatie, maar het is goed om te hebben, al was het maar om in bepaalde gevallen ongewenste MCU-resets van de host-pc te voorkomen. In ieder geval moet de schakelaar gesloten zijn zodat de Arduino IDE de schets kan branden via het resetten van de doel-MCU (pin DTR van RS232). In mijn geval is de verbinding permanent (altijd gesloten). Gebruik een serieweerstand voor de zoemer om de verschillende nF's van capaciteit te isoleren van de aandrijfpoort … je weet maar nooit … Plaats de XTAL en de ladende 18-22 pF-condensatoren zo dicht mogelijk bij de respectieve pinnen van de controller.

Vanwege de gelijkrichtbrug kan het apparaat worden gevoed door zowel AC- als DC-stroomadapters. Bij DC is er een spanningsval van 1,5 V tussen de adapter en de ingang naar de regelaar. In het geval van AC is de ingang van de regelaar ongeveer 1,4 keer de RMS-uitgang van de adapter of minder vanwege belasting. Als het verschil tussen de ingang van de regelaar en de uitgang (+5V) groot is, zeg 7 volt, dan benadert het stroomverbruik van de regelaar 0,5 watt en is het beter om een kleine koelplaat te gebruiken waarop de chip kan worden gemonteerd (mits er is ruimte voor) voor lange gebruiksuren bij warm weer.

De AC-ingangszekering kan worden geselecteerd afhankelijk van uw externe belastingen (via de DB15-connector). Andere factoren die de keuze van de zekering beïnvloeden, zijn de stroombegrenzende weerstand voor de LED-achtergrondverlichting van het LCD-scherm, de brugcondensator voor de laadstroom en de stroomcapaciteit van de voedende transformator.

Stap 5: SCHEMA

SCHEMATISCH
SCHEMATISCH

Stap 6: SOFTWARE DIE AAN BOORD WERKT

Dit is de schets die het allemaal mogelijk maakt … en 32 KB is NIET genoeg! Je kunt het ongewijzigd gebruiken, in welk geval ik een verwijzing naar mijn naam op prijs zou stellen, of het naar believen veranderen en mij vergeten;-)

Dit is de gedetailleerde documentatie over de machine.

Samenvatting van opdrachten en uitdrukkingen

“: een niet-afdrukbare commentaarregel

ai: voeg interrupt 0 toe (pin D2)

ar: analoog lezen

aw: 'analoog schrijven' per arduino of beter gezegd pwm

ca: analoge opname in een array

cl: wist het scherm cno: return *Prgm index van regelnummer

di: wacht op een reeks pulsen en meet de duur en timing

dl: vertraging

do: in combinatie met 'wh'

dr: digitaal lees elke pin

dw: digitale schrijf elke pin

ed: editormodus / programma laden vanaf pc / regels hernummeren

el: EEPROM-toegangsfunctie

end: de END-instructie van een programma

ensb: beëindigt subroutine

es: EEPROM-toegangsfunctie

fl: eenvoudig voortschrijdend gemiddelde filter

fr: voor-volgende lus (fr-nx)

ga: ga naar programmastap

gosb: ga door met de uitvoering naar de subroutine

gt: wacht op gebruikersinvoer

indien: testconditie en ga naar stap

io: GPIO 1-9 bits

ld: programma laden/samenvoegen vanuit EEPROM

lp:: toetsenbordgestuurde lus in interactieve modus

ls: lijstmodus / programma per regel naar pc verzenden

ml: tijd krijgen

mm: vrij geheugen weergeven

nos: converteert getal naar tekenreeks

nx: in combinatie met 'fr'

pl: plot array cxx

pm: stel pinnen in voor in of output

pr: drukt een bericht of waarde of aangepast teken af

rgc: opdracht voor bereikkopie voor arrays

rgs: range set commando voor arrays

rn: voer het programma uit in RAM

rs: zachte reset

rx: ontvang een karakter via RS232

si: synchrone seriële ingang met klok- en datapinnen

sm: mini-oscilloscoop-app sno: zet string om in getal

dus: synchrone seriële uitgang met klok- en datapinnen

sub: declareert subroutine

sv: programma opslaan in EEPROM

tn: piep een toon

tx: een nummer verzenden via RS232

wh: een do-while-lus die wordt gebruikt in combinatie met 'do'

Stap 7: Videoclip van Mini App 'sm' Running

bezoek mijn site om het hele verhaal te lezen en alle relevante bestanden te downloaden

www.sites.google.com/site/demeterart