Un poco mas de Micropython

MicroPython es una implementación eficaz y eficiente del lenguaje de programación Python 3 que incluye un pequeño subconjunto de la biblioteca estándar de Python y está optimizado para ejecutarse en microcontroladores y en entornos restringidos.

Pyboard es una placa de circuito electrónico compacto que ejecuta MicroPython, lo que le brinda un sistema operativo Python de bajo nivel que se puede usar para controlar todo tipo de proyectos electrónicos.

MicroPython está repleto de funciones avanzadas, como un indicador interactivo, enteros arbitrarios de precisión, cierres, comprensión de listas, generadores, manejo de excepciones y más. Sin embargo, es lo suficientemente compacto como para caber y ejecutarse dentro de solo 256k de espacio de código y 16k de RAM.

Micropython pretende ser lo más compatible posible con Python normal para permitirle transferir código con facilidad desde el escritorio a un microcontrolador o sistema integrado.

Adecuar Micropython con modulos especificos de hardware.

MicroPython es un compilador y runtime de Python completo que se ejecuta en la tarjeta. Obtendrá una solicitud interactiva (la REPL) para ejecutar comandos inmediatamente, junto con la capacidad de ejecutar e importar scripts desde el sistema de archivos integrado. El REPL tiene historial, finalización de pestañas, sangría automática y modo de pegado para una excelente experiencia de usuario.

MicroPython se esfuerza por ser lo más compatible posible con Python normal (conocido como CPython), de modo que si conoces Python ya conoces MicroPython. Por otro lado, cuanto más aprendas sobre MicroPython, mejor te vuelves en Python.

Además de implementar una selección de bibliotecas centrales de Python, MicroPython incluye módulos como “machine” para acceder a hardware de bajo nivel.

Ejemplo:

#importar la libreria machine
from machine import Pin

#Establecer el pin como salida
#donde X1 es el numero de GPIO
p = Pin('X1', Pin.OUT)

# Manipulacion de los pines
p.high()
p.low()

Pyboard

Tarjeta Pyboard.

El pyboard es la placa oficial de microcontroladores MicroPython con soporte completo para funciones de software.

El hardware tiene:
Microcontrolador STM32F405RG.
CPU Cortex M4 a 168 MHz con hardware de punto flotante.
ROM de 1024KiB y RAM de 192KiB.
Conector micro USB para alimentación y comunicación serie.
Ranura para tarjeta micro SD, compatible con tarjetas SD estándar y de alta capacidad.
Acelerómetro de 3 ejes (MMA7660).
Reloj en tiempo real con batería de respaldo opcional.
24 GPIO en los bordes izquierdo y derecho y 5 GPIO en la fila inferior, más LED y interruptor GPIO disponibles en la fila inferior.
Convertidores analógicos a digitales de 3x 12 bits, disponibles en 16 pines, 4 con blindaje de tierra analógico.
Convertidores 2x 12 bits de digital a analógico (DAC), disponibles en los pines X5 y X6.
4 LEDs (rojo, verde, amarillo y azul).
1 reinicio y 1 interruptor de usuario.
Regulador de voltaje LDO incorporado de 3.3V, capaz de suministrar hasta 250 mA, rango de voltaje de entrada de 3.6V a 16V.
Cargador de arranque DFU en la ROM para actualizar fácilmente el firmware.

Completamente libre, Software open source.

MicroPython está escrito en C99 y todo el núcleo de MicroPython está disponible para uso general bajo la licencia muy liberal del MIT.

La mayoría de las bibliotecas y módulos de extensión (algunos de los cuales son de terceros) también están disponibles bajo MIT o licencias similares.
Puede usar y adaptar libremente MicroPython para uso personal, en educación y en productos comerciales.

MicroPython se desarrolla al aire libre en GitHub y el código fuente está disponible en la página de GitHub y en la página de descarga. Todos son bienvenidos a contribuir al proyecto.

Codigo: Moderno y muy Robusto.

MicroPython emplea muchas técnicas de codificación avanzadas y muchos trucos para mantener un tamaño compacto sin dejar de tener un conjunto completo de características.
Algunos de los artículos más notables son:

Muy configurable debido a muchas opciones de configuración en tiempo de compilación.
soporte para muchas arquitecturas (x86, x86-64, ARM, ARM Thumb, Xtensa).


Amplio conjunto de pruebas con más de 590 pruebas y más de 18,500 cajas de prueba individuales.

cobertura de código al 98,4% para el núcleo y al 96,3% para los módulos básicos más extendidos.

rápido tiempo de inicio desde el inicio hasta la carga del primer script (150 microsegundos para llegar a boot.py, en PYBv1.1 a 168MHz).

un simple, rápido y robusto recolector de basura de barrido de marcas para memoria de pila.
se genera una excepción MemoryError si se agota el heap.

se genera una excepción RuntimeError si se alcanza el límite de pila.

soporte para ejecutar el código Python en una interrupción de disco duro con una latencia mínima.

los errores tienen un retroceso e informan el número de línea del código fuente.

plegado constante en el analizador / compilador.

etiquetado de punteros para encajar pequeños enteros, cadenas y objetos en una palabra de máquina.

Transición transparente de enteros pequeños a enteros grandes.

soporte para el modelo de objeto de boxeo NaN de 64 bits.

soporte para flotadores rellenos de 30 bits, que no requieren memoria de almacenamiento dinámico.


un compilador cruzado y un bytecode congelado, para tener scripts precompilados que no toman ninguna RAM (excepto los objetos dinámicos que crean).

subprocesos múltiples a través del módulo “_thread”, con un bloqueo de intérprete global opcional (aún en proceso, solo disponible en puertos seleccionados).

un emisor nativo que etiqueta el codigo maquina directamente en lugar de la máquina virtual de bytecode.

ensamblador en línea (actualmente solo conjuntos de instrucciones Thumb y Xtensa).

Recursos online.

Documentación: http://docs.micropython.org/

Fuente.

https://micropython.org