¿Algún entusiasta de Arduino?
Oye, he estado pensando en esto y cuanto más lo pienso, más creo que puedo hacer esto. Mi idea es básicamente esta: hacer una computadora funcional con un microcontrolador Arduino Uno.
Mi único objetivo para esta computadora es la capacidad de editar y ejecutar programas BASIC. Eso es todo. Solo lo quiero para la programación, ya que eso es lo único que me interesa en este momento :)
Entonces, tal como lo veo, necesitaré tres componentes principales de hardware:
- alguna forma de pantalla (pantalla VGA o algo así)
- alguna forma de registrar la entrada del teclado, y
- alguna forma de almacenar datos en la memoria externa.
¿Alguien sabe de alguna manera de hacer esto? Sé de maneras de mostrar en una pantalla, pero no conozco un buen componente de API / hardware para registrar la entrada del teclado o almacenar memoria externa.
Voy a necesitar mucha ayuda en esto. ¿Alguien puede ayudarme y ofrecer ideas y consejos y sugerencias útiles para un buen hardware / una buena biblioteca de código abierto, o dos, o tres, o diez?
Adicional:
Blog Creación de una computadora Arduino Uno para cualquier persona interesada.
Respuestas:
El teclado se puede hacer simplemente usando un teclado PS / 2: es solo serie y hay muchos tutoriales disponibles para ello.
El almacenamiento de datos se puede hacer simplemente en una tarjeta SD: ya existe un escudo para hacerlo.
En cuanto al video, eso es considerablemente más difícil. Si desea que el Arduino genere una señal de video PAL, por ejemplo, entonces tiene su trabajo cortado para usted. Sí, es posible, y alguien ha creado un juego Arduino "pong", pero tiene gráficos muy gruesos y solo blanco y negro.
Para VGA, necesitará alguna forma de interfaz para hacer el trabajo por usted. Sparkfun solía vender la tarjeta de video Picaso que podría funcionar con el Arduino, pero desafortunadamente se ha descontinuado y aún no hay planes para un reemplazo.
TBH, su mejor opción sería usar algo como un terminal Wyse y comunicarse con el Arduino por completo usando el serial. Mucho más simple que jugar con señales de video y demás.
fuente
Veo el punto de Olin aquí: si solo desea editar / ejecutar / aprender BASIC, simplemente use una PC.
Sin embargo, si el objetivo es el desafío de crear una computadora que pueda ejecutar BASIC y aprender sobre el hardware y la implementación de nivel inferior al mismo tiempo, entonces esto es un poco diferente. Estoy a favor de cosas como esta, es una excelente manera de mejorar el conocimiento y estoy seguro de que sacarás mucho provecho de ello. Como Steven menciona todas las capas confusas y (en su mayoría) irrelevantes que, por ejemplo, tiene Windows, se pueden eliminar, dejando los conceptos básicos (sin juego de palabras).
De todos modos, es posible que desee ver algo un poco más poderoso como el PIC32 para esto, ya que debería ser capaz de manejar toda la funcionalidad (por ejemplo, VGA básica) por sí mismo.
Aquí hay una placa compatible con Arduino, la UNO32
The Maximite es una computadora con un intérprete BASIC basado en un PIC32, es posible que desee ver el Diseño y la Construcción para algunas ideas.
fuente
Estás de suerte, ¡porque estoy trabajando en una PC Arduino ahora mismo! Sin embargo, no es mucho, solo el primer modelo. El firmware también es muy simple y tiene un pequeño conjunto de API. Pero, la cosa funciona! No es lo suficientemente bueno para editar BASIC (o cualquier idioma excepto el propio), pero este es solo el primer modelo. La placa madre es bastante simple, y que utiliza este . Aquí está el firmware que utilicé:
La descripción del método es difícil de explicar, pero el código se almacena como bytes sin formato. Debería tener el software de desarrollo pronto ... Espero que esto ayude. Si alguna vez quiere usar esto para algún proyecto, DEBE TENER UN archivo BIOS.mk8 en el directorio raíz de la SD o el sistema no funcionará.
fuente
Con el debido respeto a David Brin (me gustan mucho sus libros; no estoy calificado para juzgar lo bueno que es como astrofísico), no es ni programador ni educador.
Estuve alrededor y codificando en los primeros días de las PC, y escribí una buena cantidad de código BASIC. Y he estado escribiendo código profesionalmente desde entonces.
La razón por la que usamos BASIC en ese entonces era que sus dos opciones eran usar BASIC o escribir en ensamblaje, y el ensamblaje era más difícil de entender y mucho más engorroso de usar. Tan basico.
En los más de 30 años desde entonces, ha habido mejoras significativas en la instrucción de programación. Mi esposa enseña una clase de programación inicial que usa Alice (www.alice.org), y es mucho mejor conceptualmente que los enfoques más antiguos.
Creo que la solución de Brin fue bastante elegante. Podrías construir algo bastante simple en un Raspberry PI. En el arduino, creo que será un reto meter todo lo que necesitas en 2K de RAM; que tiene que contener cualquier OS / Monitor que termine escribiendo, un intérprete de comandos, código para hacer la visualización y almacenamiento para el programa básico en sí.
Sin mencionar el hecho de que tendrá que hacer una gran cantidad de programación difícil y personalizada para poder escribir código en un entorno simple.
fuente
No lo entiendo Si solo desea tener un medio para programar en Basic, ejecute un intérprete básico en su PC. No entiendo cómo esperas que el Arduino ayude con esto. El Arduino es un microcontrolador con mucho software sofisticado para ocultar los detalles del hardware. Parte del costo de esto es un menor rendimiento y más uso de recursos que el programa equivalente que se ejecuta directamente en el microcontrolador. ¿Ahora desea escribir el código Arduino para convertirlo nuevamente en una computadora de uso más general, todo para que a su vez pueda ejecutar un intérprete básico en esa computadora de uso general? Esto tiene poco sentido.
Dado que su único objetivo es poder editar y ejecutar programas básicos (ejecutar un intérprete básico), comience con una plataforma informática de propósito más general, preferiblemente incluso una que ya tenga un intérprete básico disponible. Su PC es exactamente una plataforma de este tipo. Si desea que este sea un hardware externo, parece que una computadora de placa única estándar satisfaría sus necesidades mucho mejor que un Arduino.
Adicional:
Ahora dice que no desea ejecutar en una PC y encuentra este enlace sobre alguien que quiere la línea de comando básica para que su hijo aprenda. Es cierto que no leí todo el artículo (no me gusta que la gente responda con enlaces. Debería poder expresar su punto de forma independiente en unas pocas oraciones), pero no veo cómo una PC con un intérprete básico de línea de comandos no aborda su problema ¿Por qué no se permite que el intérprete básico se ejecute en una PC pero se puede ejecutar en un Arduino? Recuerde, usted dijo de antemano que su único objetivo era editar y ejecutar programas básicos. Nada en esa declaración dice en qué hardware tiene que ejecutarse, y ninguna de sus explicaciones posteriores explica por qué una PC no funcionaría bien.
Probablemente hay intérpretes básicos que se ejecutan en la línea de comandos. El antiguo QBASIC aún podría funcionar en algún modo de compatibilidad con DOS. Incluso si no es así, dado que está dispuesto a dedicar hardware a esto, ¿cómo es que ejecutar DOS y QBASIC en una PC no proporciona lo que solicitó?
fuente
poke
declaraciones. No se deben instalar controladores COM virtuales, no hay USB a ningún puente, no se debe cargar un IDE de desarrollador complejo. Los SBC son comparables, pero generalmente carecen de la interfaz de teclado / video (¡y almacenamiento de cassettes!) De las computadoras domésticas.Lista de intérpretes AVR BASIC:
fuente
Me gusta la idea de ejecutar una aplicación común, como BASIC en un Arduino, especialmente si la construiste tú mismo. Me gusta la conveniencia de tener un práctico dispositivo Arduino alimentado por batería que ejecute la aplicación que quería. Si fuera yo, usaría quizás un Arduino MEGA para tener suficientes pines para el teclado y un escudo SD para el almacenamiento.
Elegiría una pantalla LCD de gráficos en color o una pantalla TFT en vez de VGA para simplificar la programación y las conexiones, una forma de hacer un seguimiento de la fecha y la hora (RTC), y ¿qué es una aplicación sin internet o red (escudo de ethernet)? ¿RAMs I2C adicionales (24LC256) quizás? Y algunos I2C MCP223017 en caso de que necesite algunos puertos adicionales. ¿Qué tal si varios Arduino hacen una tarea paralela? Eso mejoraría el rendimiento, estoy seguro.
fuente