Table des matières:

Ordinateur de poche BASIC : 6 étapes (avec photos)
Ordinateur de poche BASIC : 6 étapes (avec photos)

Vidéo: Ordinateur de poche BASIC : 6 étapes (avec photos)

Vidéo: Ordinateur de poche BASIC : 6 étapes (avec photos)
Vidéo: 💻 ORDINATEUR PORTABLE POUR DEBUTANT ( COURS INFORMATIQUE DEBUTANT) 2024, Novembre
Anonim
Ordinateur de poche BASIC
Ordinateur de poche BASIC
Ordinateur de poche BASIC
Ordinateur de poche BASIC

Ce Instructable décrit mon processus de construction d'un petit ordinateur de poche exécutant BASIC. L'ordinateur est construit autour de la puce AVR ATmega 1284P, qui a également inspiré le nom idiot de l'ordinateur (HAL 1284).

Cette version est fortement inspirée par l'incroyable projet trouvé ici et le badge SuperCON BASIC.

L'ordinateur exécute une version modifiée de TinyBasic, bien qu'une grande partie du logiciel soit basée sur le projet de dan14. Vous pouvez bien sûr suivre ce Instructable, ou encore mieux, l'améliorer car j'ai fait quelques erreurs.

Pour ce projet, j'ai également créé un manuel. Il mentionne quelques bugs et spécificités du moniteur choisi mais surtout, il contient la liste des opérations BASIC.

Après sa publication, j'ai réalisé une vidéo présentant le projet.

Étape 1: Pièces que j'ai utilisées

Pièces que j'ai utilisées
Pièces que j'ai utilisées
Pièces que j'ai utilisées
Pièces que j'ai utilisées
Pièces que j'ai utilisées
Pièces que j'ai utilisées

Pour le circuit intégré principal:

  • ATmega 1284P
  • Cristal 16MHz
  • Condensateur en céramique 2x 22pf
  • Résistance 10KΩ (pour la réinitialisation pull-up)
  • Bouton à 4 broches (pour la réinitialisation)
  • 470Ω Reistor (pour la vidéo composite)
  • Résistance 1kΩ (pour la synchronisation vidéo composite)
  • Cavalier à 3 broches (pour le signal vidéo)
  • Avertisseur passif

Pour le contrôle du clavier:

  • ATmega 328P (Comme ceux utilisés dans l'Arduino Uno)
  • Cristal 16MHz
  • Condensateur en céramique 2x 22pf
  • 12x 10KΩ Résistance (Pour reset pull up et boutons)
  • 51x bouton 4 broches (pour le clavier réel)

Pour le pouvoir:

  • Régulateur de tension L7805
  • DEL de 3 mm
  • Résistance 220Ω (pour LED)
  • 2x 0.1µF condensateur électrolytique
  • Condensateur électrolytique 0,22 µF (Vous pouvez remplacer ce 0,22 et un 0,1 par un 0,33. On m'a également dit que les valeurs n'avaient pas vraiment d'importance, mais je ne suis pas doué avec les condensateurs)
  • 2x cavalier à 2 broches (pour l'entrée d'alimentation et pour l'interrupteur principal)

GPIO (peut-être ajouter quelques motifs supplémentaires):

  • Cavalier 7 broches
  • 2x cavalier à 8 broches
  • Cavalier à 2 broches (pour 5V et GND)
  • Cavalier 3-4 broches (pour la communication série)

Non PCB:

  • Écran LCD 4 "avec vidéo composite (le mien avait une tension d'entrée comprise entre 7 et 30 V)
  • Support imprimé en 3D pour l'affichage
  • Une sorte d'interrupteur

Étape 2: le circuit

Le circuit
Le circuit

Le circuit n'est pas très joli et une grande partie de la région IC principale est inspirée de dan14. Cela étant dit, c'est un Arduino assez simple sur un circuit Breadboard. Le clavier est une simple grille et est contrôlé par l'ATmega328. Les deux puces AVR communiquent via les broches série UART.

Une image et mes fichiers Eagle sont joints et seront, espérons-le, suffisants pour recréer le circuit. Sinon, n'hésitez pas à m'en informer et je mettrai à jour l'Instructable.

Étape 3: Le PCB

Le PCB
Le PCB
Le PCB
Le PCB

Le PCB est à 2 couches et créé à l'aide d'Auto Route (Oh, quel trou ** !). Il a des boutons et un indicateur d'alimentation LED à l'avant et le reste à l'arrière. J'ai fait fabriquer mon PCB avec JCL PCB, et ils ont fait un travail incroyable avec. Les fichiers nécessaires pour recréer le PCB doivent être dans les fichiers Eagle d'avant.

Je vous suggère de reconcevoir le PCB, car j'ai certaines choses que j'aurais aimé faire différemment. Si vous aimez mon design, j'ai encore (au moment de la rédaction) quatre planches inutilisées que je suis plus que disposé à vendre.

La carte a quatre trous de perçage que j'ai utilisés pour monter l'écran LCD.

Étape 4: Téléchargement du code

Téléchargement du code
Téléchargement du code
Téléchargement du code
Téléchargement du code
Téléchargement du code
Téléchargement du code

Le 1284 et le 328 ont bien sûr besoin de code et le code que j'ai utilisé peut être trouvé ici: https://github.com/PlainOldAnders/HAL1284 sous ArduinoSrc/src. J'ai simplement utilisé l'IDE Arduino pour modifier et télécharger le code, mais avant cela, vous devrez graver des chargeurs de démarrage sur les circuits intégrés:

ATMega328:

Celui-ci est simple, dans le sens où il existe de nombreuses informations sur la façon de graver un chargeur de démarrage et de télécharger du code sur ce circuit intégré. Je suis généralement ce guide, principalement parce que j'oublie toujours les détails.

Le code pour le 328 (sous ArduinoSrc/keypad) est assez simple. Il repose totalement sur la bibliothèque Adafruit_Keypad-master-. Au cas où quelque chose changerait à propos de la lib, j'ai inclus la version que j'ai utilisée sur ma page github sous ArduinoSrc/lib.

ATmega1284:

C'était un peu difficile pour moi quand j'ai eu l'IC pour la première fois. J'ai commencé par obtenir le bootloader à partir d'ici et j'ai suivi le guide d'installation. Pour graver le bootloader, j'ai simplement fait la même chose qu'avec le 328 et j'ai obtenu de l'aide d'ici. Pour les deux circuits intégrés, je viens d'utiliser un Arduino Uno à la fois pour graver le chargeur de démarrage et pour télécharger le code (IC supprimé d'Arduino Uno lors du téléchargement).

Le code (sous ArduinoSrc/HAL1284Basic) est beaucoup trop compliqué pour moi mais j'ai pu modifier certaines parties du code:

J'ai ajouté quelques commandes (celles marquées d'un [A] dans le manuel.pdf) et j'ai également modifié d'autres commandes:

Tone: La commande de tonalité utilisait auparavant la fonction de tonalité d'Arduino, mais lors de l'utilisation de la bibliothèque TVout, le buzzer ne fonctionnait pas correctement. Je l'ai changé pour utiliser la fonction de tonalité de TVout, mais cela signifie que la broche de tonalité DOIT être la broche 15 (pour l'atmega1284)

Communication série: étant donné que le clavier est un bricolage, il utilise une communication série pour lire les caractères. Puisque l'atmega1284 est utilisé ici, il y a deux lignes de communication série disponibles, et lorsque "sercom" est activé, le code permet également d'écrire via le port série (à partir d'un ordinateur ou autre).

Résolution: Le moniteur utilisé pour ce projet est assez stupide, et une petite résolution est nécessaire, sinon l'image scintille. Si un meilleur moniteur est utilisé, je vous suggère de modifier la résolution dans la fonction de configuration.

Étape 5: Assemblage

Assemblée
Assemblée
Assemblée
Assemblée
Assemblée
Assemblée

Avec le code téléchargé et le PCB et les pièces prêts, il est maintenant temps de procéder à l'assemblage. Toutes les pièces que j'ai utilisées étaient des trous traversants, donc la soudure n'était pas trop difficile (par opposition aux badass-SMD-soudure-fellas là-bas). Le moniteur a été fixé aux quatre trous de perçage du PCB avec un support imprimé en 3D. Si un autre moniteur est utilisé, les quatre trous de perçage peuvent, espérons-le, être utilisés pour le montage.

Le support de moniteur utilisé ici est également conçu pour loger un interrupteur à bascule (connecté au cavalier "switch" sur le PCB) et les trois boutons de commande du moniteur. Le support est fixé avec des boulons M3 en plastique et des entretoises.

Pour la prise d'alimentation, j'ai utilisé un connecteur PCB JST, bien qu'une prise cylindrique lisse aurait été un peu plus lisse. Pour alimenter la carte, j'ai basculé entre une alimentation 12V ou trois batteries 18650 en série. Un cow-boy plus doux que moi pourrait probablement concevoir un support de batterie lisse pour la planche.

Étape 6: Bugs et travaux futurs

Touches fléchées: les touches fléchées ont été placées accidentellement et ne servent pas à grand-chose. Cela rend la navigation difficile

E/S de fichier: il existe des capacités d'E/S de fichier mais celles-ci ne sont pas implémentées. Pour lutter contre cela, le logiciel HAL1284Com est capable de télécharger des fichiers sur la carte. Il est également possible de télécharger vers l'EEPROM.

PEEK/POKE: PEEK et POKE ne sont pas testés et je ne sais pas quelles sont les adresses.

Break: Break (Esc) a parfois joué avec le code entier, lorsqu'il est dans des boucles infinies.

Broche 7: La broche PWM 7 peut être difficile lorsque vous essayez de DWRITE High ou AWRITE 255. Cela fonctionne bien avec AWRITE 254.

Idiot: Il serait idéal de pouvoir également télécharger via UART1 mais le téléchargement n'est possible que via UART0, donc le téléchargement devra être effectué en extrayant le circuit intégré principal. L'écran et le régulateur de tension 5 chauffent un peu trop lorsqu'ils fonctionnent longtemps.

Conseillé: