Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previaPróxima revisiónAmbos lados, revisión siguiente | ||
guias:orangepizero [2018/01/31 23:53] – [Monitorizar temperatura] Añadir imagen Sergio Alvariño | guias:orangepizero [2021/04/16 20:41] – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ====== Orange Pi Zero: Empezar rápido desde linux ====== | ||
- | |||
- | Para usar la Orange Pi Zero tendremos que crear imágenes arrancables en tarjetas micro SD. | ||
- | |||
- | ===== Crear una SD arrancable ===== | ||
- | |||
- | Dependiendo de donde conectemos la tarjeta tendremos que usar diferentes rutas. En el procedimiento descrito a continuación '' | ||
- | |||
- | Si la tarjeta se conecta via adaptador USB, linux la va a asociar a un dispositivo /dev/sdx, por ejemplo en mi portátil el disco duro es '' | ||
- | |||
- | Si conectamos una memoria con un adaptador USB linux la podría mapear en '' | ||
- | |||
- | Si la memoria se conecta mediante una ranura SD, linux la asociará a un dispositivo '' | ||
- | |||
- | Los datos se pueden almacenar directamente en la memoria SD o en una partición creada en la memoria. | ||
- | |||
- | Resumiendo: | ||
- | |||
- | * '' | ||
- | * ${card}${p} será '' | ||
- | |||
- | Antes de seguir adelante hay que estar completamente seguro del dispositivo asociado a nuestra memoria SD para no armar ningún estropicio. | ||
- | |||
- | Hay varias comprobaciones que se pueden hacer: | ||
- | |||
- | '' | ||
- | |||
- | '' | ||
- | |||
- | < | ||
- | Disk / | ||
- | Units: sectors of 1 * 512 = 512 bytes | ||
- | Sector size (logical/ | ||
- | I/O size (minimum/ | ||
- | Disklabel type: dos | ||
- | Disk identifier: 0x00000000 | ||
- | </ | ||
- | '' | ||
- | |||
- | < | ||
- | | ||
- | | ||
- | </ | ||
- | Descargamos la imagen de Jessie adaptada a la //Orange Pi Zero// desde la página https:// | ||
- | |||
- | Descomprimimos la imagen y la grabamos en la tarjeta SD con el comando: | ||
- | |||
- | < | ||
- | sudo dd if=./ | ||
- | </ | ||
- | Insertamos la tarjeta en la //Orange Pi// y le damos alimentación. El primer arranque llevará alrededor de tres minutos, y tras ese tiempo aun hará falta un minuto más para poder hacer login. Este retardo es debido a que el sistema intentará actualizar la lista de paquetes y creará un area de swap de emergencia en la SD, y además cambiará el tamaño de la partición que hemos creado para ocupar todo el espacio libre en la SD. | ||
- | |||
- | De momento solo la he arrancado y efectivamente las particiones han cambiado tras el arranque así que tiene buena pinta. | ||
- | |||
- | Volvemos a insertar la SD en la //Orange Pi// y la conectamos con un cable ethernet al router de casa. El Armbian viene configurado por defecto para obtener su IP desde un servidor DHCP. | ||
- | |||
- | Como mi cutre-router no me da información de las IP asignadas usamos //nmap//: | ||
- | |||
- | < | ||
- | nmap -sP 192.168.0.0/ | ||
- | </ | ||
- | Con eso averiguamos la IP asignada a la //Orange Pi Zero// y ya podemos hacer login con el siguiente comando ((La password por defecto de Armbian es **1234**, nos pedirá cambiarla en el primer login. | ||
- | )): | ||
- | |||
- | < | ||
- | ssh root@192.168.0.109 | ||
- | </ | ||
- | ¡Y ya estamos! | ||
- | |||
- | {{: | ||
- | |||
- | |||
- | Lo primero es poner al dia el sistema: | ||
- | |||
- | < | ||
- | apt-get update | ||
- | apt-get upgrade | ||
- | </ | ||
- | Si quieres puedes reconfigurar el //time zone//: | ||
- | |||
- | < | ||
- | dpkg-reconfigure tzdata | ||
- | </ | ||
- | ===== Conexión WIFI ===== | ||
- | |||
- | Vamos a comprobar que todo va bien: | ||
- | |||
- | < | ||
- | root@orangepizero: | ||
- | lo no wireless extensions. | ||
- | |||
- | tunl0 no wireless extensions. | ||
- | |||
- | wlan0 IEEE 802.11bgn | ||
- | Mode: | ||
- | Retry long limit: | ||
- | Encryption key:off | ||
- | Power Management: | ||
- | |||
- | eth0 no wireless extensions. | ||
- | </ | ||
- | Todo tiene buena pinta, vamos a ver si detecta WIFIs: | ||
- | |||
- | < | ||
- | root@orangepizero: | ||
- | ESSID:" | ||
- | ESSID:" | ||
- | ESSID:" | ||
- | ESSID:" | ||
- | ESSID:" | ||
- | ESSID:" | ||
- | ESSID:" | ||
- | ESSID:" | ||
- | ESSID:" | ||
- | ESSID:" | ||
- | ESSID:"" | ||
- | ESSID:" | ||
- | </ | ||
- | Para configurar el wifi echamos un ojo al fichero '' | ||
- | |||
- | < | ||
- | # Armbian ships with network-manager installed by default. To save you time | ||
- | # and hassles consider using 'sudo nmtui' instead of configuring Wi-Fi settings | ||
- | # manually. | ||
- | </ | ||
- | Así que basta con ejecutar '' | ||
- | |||
- | |||
- | |||
- | {{ : | ||
- | |||
- | Ejecutamos '' | ||
- | |||
- | < | ||
- | ifconfig | ||
- | |||
- | wlan0 Link encap: | ||
- | inet addr: | ||
- | inet6 addr: fe80:: | ||
- | UP BROADCAST RUNNING MULTICAST | ||
- | RX packets:2 errors:0 dropped:0 overruns:0 frame:0 | ||
- | TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 | ||
- | collisions: | ||
- | RX bytes:328 (328.0 B) TX bytes:852 (852.0 B) | ||
- | </ | ||
- | ====== Orange Pi Zero, características técnicas ====== | ||
- | |||
- | La tarjeta de desarrollo Orange Pi Zero viene equipada con un procesador Cortex A7 Allwinner H2+ quad core, con 256 o 512MB RAM, Ethernet, y puertos USB. Disponible en Aliexpress (tienda oficial) por 6.99 dolares, mas 3.39 dolares como gastos de envío. | ||
- | |||
- | ===== Especificaciones ===== | ||
- | |||
- | * SoC – Allwinner H2(+) quad core Cortex A7 processor @ 1.2 GHz with Mali-400MP2 GPU @ 600 MHz | ||
- | * System Memory – 256 to 512 MB DDR3-1866 SDRAM | ||
- | * Storage – micro SD card slot | ||
- | * Connectivity – 10/100M Ethernet + 802.11 b/g/n WiFi (Allwinner XR819 WiFi module) with u.FL antenna connector and external antenna | ||
- | * USB – 1x USB 2.0 host ports, 1x micro USB OTG port | ||
- | * Expansion headers – Unpopulated 26-pin “Raspberry Pi B+” header + 13-pin header with headphone, 2x USB 2.0, TV out, microphone and IR receiver signals | ||
- | * Debugging – Unpopulated 3-pin header for serial console | ||
- | * Misc – 2x LEDs | ||
- | * Power Supply – 5V via micro USB port or optional PoE | ||
- | * Dimensions – 52 x 46 mm | ||
- | * Weight – 26 grams | ||
- | |||
- | ===== Esquema de pines ===== | ||
- | |||
- | Un excelente esquema de pines puede conseguirse en [[https:// | ||
- | |||
- | {{: | ||
- | |||
- | El mapeado de los pines de la Orange (de los micros Allwinner en realidad) en el kernel de Linux viene dado por la formula: | ||
- | |||
- | < | ||
- | (Position of letter in alphabet - 1) * 32 + Pin number | ||
- | </ | ||
- | Para todos los pines PA de nuestra Orange Pi Zero, el número del kernel coincide con el del pin. Pero para los pines //PG06// y //PG07// se corresponden con los códigos //198// y //199//. | ||
- | |||
- | ===== Esquemas eléctricos ===== | ||
- | |||
- | Pueden bajarse de [[http:// | ||
- | |||
- | ====== Accediendo al hardware desde linea de comandos ====== | ||
- | |||
- | La memoria es más que suficiente para correr programas. El Armbian consume únicamente 40Mb en funcionamiento. | ||
- | |||
- | < | ||
- | root@orangepizero: | ||
- | | ||
- | Mem: 247068 | ||
- | -/+ buffers/ | ||
- | Swap: | ||
- | </ | ||
- | Vamos a hacer algunas pruebas con el hardware. En Armbian, como todo Unix que se precie, todo es un fichero. | ||
- | |||
- | En el directorio '' | ||
- | |||
- | < | ||
- | root@orangepizero: | ||
- | backlight | ||
- | bdi devfreq | ||
- | block disp | ||
- | bsg dma hwmon leds | ||
- | cedar_dev | ||
- | </ | ||
- | ===== LEDs ===== | ||
- | |||
- | Si miramos dentro del directorio '' | ||
- | |||
- | < | ||
- | root@orangepizero: | ||
- | root@orangepizero:/ | ||
- | green_led | ||
- | </ | ||
- | Podemos ver, por ejemplo, a que evento está asociado cada led ejecutando '' | ||
- | |||
- | < | ||
- | root@orangepizero:/ | ||
- | none mmc0 mmc1 timer heartbeat backlight [default-on] rfkill0 phy1rx phy1tx phy1assoc phy1radio | ||
- | root@orangepizero:/ | ||
- | [none] mmc0 mmc1 timer heartbeat backlight default-on rfkill0 phy1rx phy1tx phy1assoc phy1radio | ||
- | </ | ||
- | O podemos encender el led rojo ejecutando '' | ||
- | |||
- | ===== GPIO ===== | ||
- | |||
- | Podemos ver los GPIO disponibles ejecutando: | ||
- | |||
- | < | ||
- | root@orangepizero: | ||
- | GPIOs 0-383, platform/ | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | Podemos activar un nuevo puerto GPIO, digamos el 15: | ||
- | |||
- | < | ||
- | root@orangepizero: | ||
- | </ | ||
- | Ahora veremos el puerto activo: | ||
- | |||
- | < | ||
- | root@orangepizero: | ||
- | GPIOs 0-383, platform/ | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | En el directorio '' | ||
- | |||
- | ====== Bibliotecas útiles ====== | ||
- | |||
- | ===== Python ===== | ||
- | |||
- | ==== Instalación de virtualenv ==== | ||
- | |||
- | Para probar bibliotecas de Python instalamos: | ||
- | |||
- | < | ||
- | sudo aptitude install python-pip | ||
- | sudo aptitude install python-virtualenv | ||
- | sudo aptitude install python-dev | ||
- | </ | ||
- | El caso es que el // | ||
- | |||
- | < | ||
- | pip install --upgrade pip | ||
- | pip install --upgrade virtualenv | ||
- | </ | ||
- | Despues de eso ya he podido usar // | ||
- | |||
- | ==== orangepi_PC_gpio_pyH3 ==== | ||
- | |||
- | Tenemos dos repos disponibles: | ||
- | |||
- | El repositorio original con las librerías //gpio// para H3: | ||
- | |||
- | < | ||
- | git clone https:// | ||
- | </ | ||
- | Y un fork del repositorio original **ya adaptado** a la Orange Pi Zero (que es el que usaremos): | ||
- | |||
- | < | ||
- | git clone https:// | ||
- | </ | ||
- | **IMPORTANTE: | ||
- | |||
- | Por ejemplo: la definicion de // | ||
- | |||
- | < | ||
- | { " | ||
- | </ | ||
- | Nos clonamos el repo. Vamos a hacer todas las pruebas desde la cuenta de **root**. | ||
- | |||
- | Creamos un entorno para pruebas y lo activamos: | ||
- | |||
- | < | ||
- | virtualenv test_pyH3_zero | ||
- | source test_pyH3_zero/ | ||
- | </ | ||
- | Compilamos la biblioteca: | ||
- | |||
- | < | ||
- | cd orangepi_PC_gpio_pyH3 | ||
- | python setup.py install | ||
- | </ | ||
- | Y ya podemos probar los ficheros de ejemplo: | ||
- | |||
- | < | ||
- | examples/ | ||
- | examples/ | ||
- | </ | ||
- | El resto de ejemplos no van a funcionar, están escritos para la // | ||
- | |||
- | ===== Acceso desde C ===== | ||
- | |||
- | ==== pyA20 ==== | ||
- | |||
- | La biblioteca de Python // | ||
- | |||
- | < | ||
- | cd pyA20 | ||
- | ls | ||
- | gpio/ i2c/ __init__.py | ||
- | </ | ||
- | Nos interesa probar las bibliotecas en los directorios //gpio// e //i2c//, al menos de momento. Serían // | ||
- | |||
- | Probamos el acceso al //gpio// desde C con un programa sencillo que nos haga encender y apagar el led de la OPI. | ||
- | |||
- | < | ||
- | #include < | ||
- | sunxi_gpio_init(); | ||
- | sunxi_gpio_set_cfgpin(SUNXI_GPA(17), | ||
- | while(1) { | ||
- | sunxi_gpio_output(SUNXI_GPA(17), | ||
- | sleep(1); | ||
- | sunxi_gpio_output(SUNXI_GPA(17), | ||
- | sleep(1); | ||
- | } | ||
- | </ | ||
- | ==== WiringOP-Zero ==== | ||
- | |||
- | Esta biblioteca imita a la // | ||
- | |||
- | Tenemos un fork que viene preparado para la Orange Pi Zero disponible aquí: | ||
- | |||
- | < | ||
- | https:// | ||
- | </ | ||
- | GPIO funciona completamente y al parecer aun no han testeado el i2c (tiene mala pinta) | ||
- | |||
- | Para compilarla seguimos las instrucciones: | ||
- | |||
- | < | ||
- | git clone https:// | ||
- | cd WiringOP-Zero | ||
- | chmod +x ./build | ||
- | sudo ./build | ||
- | </ | ||
- | Podemos comprobar que todo se ha instalado correctamente: | ||
- | |||
- | < | ||
- | gpio readall | ||
- | | ||
- | | H2+ | wPi | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | H2+ | wPi | | ||
- | | ||
- | </ | ||
- | Instalamos las i2c-tools '' | ||
- | |||
- | ==== WiringPI-Python-OP ==== | ||
- | |||
- | Una receta para compilar WiringPI-Python-OP | ||
- | |||
- | Edited by nopnop2002 at 2017-3-18 22:51 | ||
- | |||
- | diyer replied at 2017-3-6 06:03 can someone explain how to map wiringPO on zero plaese? | ||
- | |||
- | You can update WiringPi-Python-OP to WiringPi-Python-OP-ZERO. | ||
- | |||
- | 1.Download [WiringOP libary for the Orange Pi Zero] from here. | ||
- | |||
- | https: | ||
- | |||
- | 2.Download [[# | ||
- | |||
- | https: | ||
- | |||
- | 3.Replace base library | ||
- | |||
- | cd WiringPi-Python-OP rm -R WiringPi cp -R $HOME/ | ||
- | |||
- | 4.Build WiringPi-Python-OP-ZERO library | ||
- | |||
- | sudo apt-get install python-dev python-setuptools swig swig2.0 -python wiringpi.i sudo python setup.py install cd tests sudo python test.py | ||
- | |||
- | WiringPi-Python-OP-ZERO have there pin. PysPin PinInLib 1(3.3V) 2(5V) 3 8 4(5V) 5 9 6(GND) 7 7 8 15 9(GND) 10 16 11 0 12 1 13 2 14(GND) 15 3 16 4 17(3.3V) 18 5 19 12 20(GND) 21 13 22 6 23 14 24 10 25(GND) 26 11 | ||
- | |||
- | This is same as RPI TYPE A or B | ||
- | |||
- | ===== Referencias ===== | ||
- | |||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | |||
- | ====== Distribuciones disponibles para Orange Pi Zero ====== | ||
- | |||
- | ===== Armbian oficial ===== | ||
- | |||
- | En la página oficial de [[https:// | ||
- | |||
- | ==== Ubuntu Server (legacy kernel) ==== | ||
- | |||
- | Es la versión estable | ||
- | |||
- | ==== Ubuntu Server (mainline kernel) ==== | ||
- | |||
- | Es la versión de desarrollo. | ||
- | |||
- | ===== Orange Pi oficial ===== | ||
- | |||
- | Tiene [[http:// | ||
- | |||
- | ===== Diet Pi ===== | ||
- | |||
- | En [[http:// | ||
- | |||
- | ====== Monitorizar temperatura ====== | ||
- | |||
- | Podemos ver estadísticas de nuestra OPI con: | ||
- | |||
- | < | ||
- | sudo armbianmonitor -m | ||
- | |||
- | Stop monitoring using [ctrl]-[c] | ||
- | Time CPU load %cpu %sys %usr %nice %io %irq CPU | ||
- | 21:04:18: 1152MHz | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | 21: | ||
- | </ | ||
- | También podemos instalar RPi-Monitor con el comando: | ||
- | |||
- | < | ||
- | sudo armbianmonitor -r | ||
- | </ | ||
- | Una vez instalado podemos visitar desde nuestro navegador la dirección ip de nuestra OPI Zero // | ||
- | |||
- | {{ : | ||
- | |||
- | ¡Ojo! Las gráficas no se refrescan automáticamente hay que recargar la página. | ||
- | |||
- | Para desinstalar el RPi-Monitor basta con: | ||
- | |||
- | < | ||
- | sudo aptitude uninstall rpimonitor | ||
- | </ | ||
- | ====== Referencias ====== | ||
- | |||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[https:// | ||
- | * http:// | ||
- | * https:// | ||
- | * https:// | ||
- | * https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[http:// | ||
- | * [[https:// | ||
- | * [[http:// | ||