Table des matières:

DemUino - Ordinateur personnel/contrôleur : 7 étapes
DemUino - Ordinateur personnel/contrôleur : 7 étapes

Vidéo: DemUino - Ordinateur personnel/contrôleur : 7 étapes

Vidéo: DemUino - Ordinateur personnel/contrôleur : 7 étapes
Vidéo: Punto nº150. Muiñeira. Nivel 3 2024, Novembre
Anonim
Image
Image
Graver le bootloader
Graver le bootloader

Un ordinateur inspiré d'Arduino par DemeterArt Tirez le meilleur parti de votre ancien clavier PS2. Hackez-le dans un ordinateur personnel personnalisé pour contrôler les choses ! J'ai toujours voulu construire mon propre ordinateur à la maison, un peu de style rétro, rien d'extraordinaire mais avec des capacités particulières adaptées à mes préférences. J'y suis donc parvenu avec le MCU atmega328 et le kit de développement Arduino.

Permettez-moi de dire que ce projet aurait pris beaucoup plus de temps avec des résultats finaux douteux s'il n'y avait pas eu les fans surdoués qui, de manière moins égoïste, fournissent les bibliothèques de logiciels gratuits pour que tout le monde puisse les utiliser. Merci à tous:-)

visitez mon site pour lire toute l'histoire et télécharger tous les fichiers pertinents

www.sites.google.com/site/demeterart

Étape 1: Fonctionnalités

  • Basé sur l'ATMEGA328 avec 32 Ko de flash, 2 Ko de SRAM et 1 Ko d'EEPROM.
  • prise en charge des modes interactif et batch
  • éditeur de ligne et mode liste en cours d'édition
  • 8 caractères personnalisés pour les graphiques utilisateur
  • 60 étapes de programme numérotées 00, …, 99
  • Boucles conditionnelles 'If', 'while' et 'for' plus instructions 'goto' et 'sub' pour le branchement
  • Expressions arithmétiques et mathématiques de base et tests booléens
  • les variables système permettent des événements chronométrés, des valeurs moyennes, efficaces, minimales et maximales des broches analogiques, etc.
  • 26 variables utilisateur pour interagir avec les variables système et les commandes
  • 104 octets d'un tableau adressable par l'utilisateur ou 52 entiers courts
  • capacité de lire/écrire les données du programme ainsi que le code à la volée (variable p)
  • mini application d'oscilloscope avec des caractères personnalisés pour les pseudo-graphiques
  • enregistrer et charger des programmes et des données vers/depuis l'EEPROM
  • charger/enregistrer des programmes et des variables depuis/vers le PC
  • autoexec dans le chargement et l'exécution d'un programme à partir de l'EEPROM après chaque réinitialisation
  • 9 broches GPIO (SPI incluses) disponibles sur connecteur DB15 externe
  • BUZZER pour les effets sonores

Étape 2: choses dont vous aurez besoin

Un vieux clavier ps/2 assez épais pour abriter l'affichage des caractères LCD de la carte PCB (le format parallèle populaire) Puce MAX232 pour port RS232 Kit de développement Arduino atmel atmega328PU avec régulateur IDE 1.0.1 LM7805 Redresseur de pont buzzer 5V, condensateurs, un bouton poussoir de réinitialisation, connecteurs etc.

Étape 3: Graver le Bootloader

Ainsi, après avoir acheté une puce atmega328PU «vide», il y a une décision à prendre. Est-ce que j'utilise un programmeur spécial externe ou ISP ou dois-je graver le bootloader Arduino dans la bête et rendre l'unité programmable via son port UART ? J'ai choisi cette dernière pour me simplifier la vie ! Le nouveau chargeur de démarrage n'occupe qu'un demi-ko de mémoire flash, laissant un peu plus de 31 Ko de programme utilisateur et de données statiques disponibles. Le site Arduino couvre le cas de la gravure du chargeur de démarrage sur une nouvelle puce. Lorsqu'il s'agissait d'utiliser avrdude pour graver la puce cible, le processus a échoué avec une erreur indiquant le mauvais identifiant pour le MCU particulier. Donc, après quelques recherches, j'ai trouvé ce gars qui avait raison et j'ai suivi sa procédure. La seule différence était 2 fichiers de configuration, avrdude.conf et boards.txt requis par avrdude et arduino IDE 1.0.1 pour rendre cela possible. Après avoir copié les 2 fichiers à leurs emplacements appropriés (sauvegardez d'abord les anciens), l'option 'arduino328' de tools->Board était disponible et avrdude a procédé à la gravure des fusibles et du chargeur de démarrage. La puce est maintenant prête à être programmée depuis la nouvelle machine !

Étape 4: Construire l'unité

Construire l'unité
Construire l'unité
Construire l'unité
Construire l'unité

Une carte perforée avec des bandes de cuivre a été utilisée comme solution d'assemblage rapide avec des prises DIP pour les puces, vous savez, juste au cas où ! Ensuite, les trous et les découpes pour les connecteurs, le bouton de réinitialisation et l'écran LCD ont été ouverts à travers le plastique extrêmement solide et épais du clavier. Oui, ça a été construit il y a 25 ans ! Il s'en est suivi le fouillis de fils émanant du PCB vers les différents périphériques. Un contrôle de continuité rudimentaire, puis l'alimentation a été connectée sans puces peuplées juste pour vérifier les prises pour les tensions appropriées. Puis sont arrivés les 2 circuits intégrés et le boîtier du clavier a été fermement fermé via ses boutons-pression en plastique au bas. L'unité était prête à graver des croquis dans le contrôleur !

Je suggère d'utiliser des condensateurs non polaires 1uF/16V pour les pompes de charge MAX232. Localisez les condensateurs de découplage 100nF pour les deux puces aussi près que possible des broches VCC et GND respectives. Utilisez une connexion en étoile pour l'alimentation et la terre référencée au régulateur LM7805. Le commutateur 2 pourrait être un cavalier en fonction de l'implémentation, mais il est bon de l'avoir, ne serait-ce que pour éviter les réinitialisations indésirables du MCU du PC hôte dans certains cas. Dans tous les cas, le commutateur doit être fermé pour permettre à l'IDE Arduino de graver le croquis en réinitialisant le MCU cible (broche DTR de RS232). Dans mon cas, la connexion est permanente (toujours fermée). Utilisez une résistance en série pour le buzzer afin d'isoler les plusieurs nFs de capacité de la porte d'entraînement… on ne sait jamais. Localisez le XTAL et les condensateurs de chargement 18-22pF aussi près que possible des broches respectives du contrôleur.

En raison du pont redresseur, l'unité peut être alimentée par des adaptateurs d'alimentation CA et CC. En cas de courant continu, il y a une chute de tension de 1,5 V entre l'adaptateur et l'entrée du régulateur. En cas de courant alternatif, l'entrée du régulateur est d'environ 1,4 fois la sortie RMS de l'adaptateur ou moins en raison de la charge. Si la différence entre l'entrée du régulateur et sa sortie (+5V) est importante, disons 7 volts, alors la puissance consommée par le régulateur approche les 0,5 watts et il vaut mieux utiliser un petit dissipateur sur lequel monter la puce (à condition il y a de la place pour lui) pour de longues heures de fonctionnement par temps chaud.

Le fusible d'entrée AC peut être sélectionné en fonction de vos charges externes (via le connecteur DB15). D'autres facteurs qui influencent le choix du fusible sont la résistance de limitation de courant pour le rétroéclairage LED de l'écran LCD, le condensateur en pont pour le courant de charge et la capacité de courant du transformateur d'alimentation.

Étape 5: SCHÉMA

SCHÉMATIQUE
SCHÉMATIQUE

Étape 6: FONCTIONNEMENT DU LOGICIEL À BORD

C'est le sketch qui fait tout arriver… et 32 Ko ne suffisent PAS ! Vous pouvez soit l'utiliser sans modification, auquel cas j'apprécierais une référence à mon nom, soit le changer à volonté et m'oublier;-)

Ceci est la documentation détaillée sur la machine.

Résumé des commandes et expressions

: une ligne de commentaire non imprimable

ai: attachez l'interruption 0 (broche D2)

ar: lecture analogique

aw: 'écriture analogique' par arduino ou plus correctement pwm

ca: capture analogique dans un tableau

cl: efface l'affichage cno: retourne *Prgm index du numéro de ligne

di: attendre une série d'impulsions et mesurer la durée et le timing

dl: retard

do: en conjonction avec « wh »

dr: lecture numérique n'importe quelle broche

dw: écriture numérique n'importe quelle broche

ed: mode éditeur / charger le programme depuis le PC / renuméroter les lignes

el: fonction d'accès EEPROM

end: l'instruction END d'un programme

ensb: termine le sous-programme

es: fonction d'accès EEPROM

fl: filtre de moyenne mobile simple

fr: boucle for-next (fr-nx)

go: sauter à l'étape du programme

gosb: continuer l'exécution du sous-programme

gt: attend l'entrée de l'utilisateur

if: condition de test et saut à l'étape

io: GPIO 1-9 bits

ld: charger/fusionner le programme depuis l'EEPROM

lp:: boucle contrôlée par clavier en mode interactif

ls: mode liste / envoie le programme au PC une ligne à la fois

ml: obtenir le temps

mm: afficher la mémoire libre

nos: convertit le nombre en chaîne

nx: en conjonction avec ‘fr’

pl: tracer le tableau cxx

pm: définir les broches pour l'entrée ou la sortie

pr: imprime un message ou une valeur ou un caractère personnalisé

rgc: commande de copie de plage pour les tableaux

rgs: commande de définition de plage pour les tableaux

rn: lance le programme en RAM

rs: réinitialisation logicielle

rx: recevoir un caractère via RS232

si: entrée série synchrone avec broches d'horloge et de données

sm: mini oscilloscope app sno: convertit la chaîne en nombre

donc: sortie série synchrone avec horloge et broches de données

sub: déclare le sous-programme

sv: enregistrer le programme dans l'EEPROM

tn: bip une tonalité

tx: transmettre un numéro via RS232

wh: une boucle do-while utilisée en conjonction avec « do »

Étape 7: Clip vidéo de la mini application 'sm' en cours d'exécution

visitez mon site pour lire toute l'histoire et télécharger tous les fichiers pertinents

www.sites.google.com/site/demeterart

Conseillé: