Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
guias:orangepizero [2023/01/02 16:35] – se ha restaurado la vieja versión (2018/01/31 23:54) Sergio Alvariño | guias:orangepizero [2023/01/02 17:26] (actual) – Sergio Alvariño | ||
---|---|---|---|
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// | ||
+ | |||
+ | 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// | ||
+ | |||
+ | < | ||
+ | ssh [email protected] | ||
+ | |||
+ | </ | ||
+ | |||
+ | ¡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 // | ||
+ | |||
+ | ===== 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 // | ||
+ | |||
+ | < | ||
+ | git clone https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Y un fork del repositorio original **ya adaptado** | ||
+ | |||
+ | < | ||
+ | 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 // | ||
+ | |||
+ | Probamos el acceso al // | ||
+ | |||
+ | < | ||
+ | #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:// | ||
+ | |||
+ | ** | ||
+ | |||