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 [2018/01/31 23:54] – [Monitorizar temperatura] Sergio Alvariño | guias:orangepizero [2023/01/02 17:26] (actual) – Sergio Alvariño | ||
|---|---|---|---|
| Línea 5: | Línea 5: | ||
| ===== Crear una SD arrancable ===== | ===== Crear una SD arrancable ===== | ||
| - | Dependiendo de donde conectemos la tarjeta tendremos que usar diferentes rutas. En el procedimiento descrito a continuación '' | + | 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 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 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 '' | + | 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. | Los datos se pueden almacenar directamente en la memoria SD o en una partición creada en la memoria. | ||
| Línea 17: | Línea 17: | ||
| Resumiendo: | Resumiendo: | ||
| - | * '' | + | * '' |
| - | * ${card}${p} será '' | + | * ${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. | Antes de seguir adelante hay que estar completamente seguro del dispositivo asociado a nuestra memoria SD para no armar ningún estropicio. | ||
| Línea 24: | Línea 24: | ||
| Hay varias comprobaciones que se pueden hacer: | Hay varias comprobaciones que se pueden hacer: | ||
| - | '' | + | '' |
| - | + | ||
| - | '' | + | |
| + | ''< | ||
| < | < | ||
| + | |||
| Disk / | Disk / | ||
| Units: sectors of 1 * 512 = 512 bytes | Units: sectors of 1 * 512 = 512 bytes | ||
| Línea 35: | Línea 35: | ||
| Disklabel type: dos | Disklabel type: dos | ||
| Disk identifier: 0x00000000 | Disk identifier: 0x00000000 | ||
| + | |||
| </ | </ | ||
| - | '' | + | |
| + | '' | ||
| < | < | ||
| | | ||
| | | ||
| + | |||
| </ | </ | ||
| - | Descargamos la imagen de Jessie adaptada a la //Orange Pi Zero// desde la página https:// | ||
| - | Descomprimimos | + | Descargamos |
| + | Descomprimimos la imagen y la grabamos en la tarjeta SD con el comando: | ||
| < | < | ||
| + | |||
| sudo dd if=./ | 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. | + | |
| + | 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. | 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. | + | 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//: | Como mi cutre-router no me da información de las IP asignadas usamos //nmap//: | ||
| Línea 59: | Línea 65: | ||
| < | < | ||
| nmap -sP 192.168.0.0/ | 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. | + | |
| - | )): | + | Con eso averiguamos la IP asignada a la //Orange Pi Zero// |
| < | < | ||
| ssh [email protected] | ssh [email protected] | ||
| + | |||
| </ | </ | ||
| + | |||
| ¡Y ya estamos! | ¡Y ya estamos! | ||
| {{: | {{: | ||
| - | |||
| Lo primero es poner al dia el sistema: | Lo primero es poner al dia el sistema: | ||
| Línea 76: | Línea 84: | ||
| apt-get update | apt-get update | ||
| apt-get upgrade | apt-get upgrade | ||
| + | |||
| </ | </ | ||
| + | |||
| Si quieres puedes reconfigurar el //time zone//: | Si quieres puedes reconfigurar el //time zone//: | ||
| < | < | ||
| dpkg-reconfigure tzdata | dpkg-reconfigure tzdata | ||
| + | |||
| </ | </ | ||
| + | |||
| ===== Conexión WIFI ===== | ===== Conexión WIFI ===== | ||
| Línea 99: | Línea 111: | ||
| eth0 no wireless extensions. | eth0 no wireless extensions. | ||
| + | |||
| </ | </ | ||
| + | |||
| Todo tiene buena pinta, vamos a ver si detecta WIFIs: | Todo tiene buena pinta, vamos a ver si detecta WIFIs: | ||
| Línea 116: | Línea 130: | ||
| ESSID:"" | ESSID:"" | ||
| ESSID:" | ESSID:" | ||
| + | |||
| </ | </ | ||
| - | Para configurar el wifi echamos un ojo al fichero '' | ||
| + | Para configurar el wifi echamos un ojo al fichero ''< | ||
| < | < | ||
| + | |||
| # Armbian ships with network-manager installed by default. To save you time | # Armbian ships with network-manager installed by default. To save you time | ||
| # and hassles consider using 'sudo nmtui' instead of configuring Wi-Fi settings | # and hassles consider using 'sudo nmtui' instead of configuring Wi-Fi settings | ||
| # manually. | # manually. | ||
| + | |||
| </ | </ | ||
| - | Así que basta con ejecutar '' | ||
| + | Así que basta con ejecutar ''< | ||
| + | {{ : | ||
| - | {{ :guias: | + | Ejecutamos ''< |
| + | < | ||
| - | Ejecutamos '' | ||
| - | |||
| - | < | ||
| ifconfig | ifconfig | ||
| Línea 143: | Línea 159: | ||
| collisions: | collisions: | ||
| RX bytes:328 (328.0 B) TX bytes:852 (852.0 B) | RX bytes:328 (328.0 B) TX bytes:852 (852.0 B) | ||
| + | |||
| </ | </ | ||
| + | |||
| ====== Orange Pi Zero, características técnicas ====== | ====== Orange Pi Zero, características técnicas ====== | ||
| Línea 166: | Línea 184: | ||
| Un excelente esquema de pines puede conseguirse en [[https:// | Un excelente esquema de pines puede conseguirse en [[https:// | ||
| - | {{:src/img/Orange-Pi-Zero-Pinout.jpg| Pineado Orange Pi}} | + | [[: |
| El mapeado de los pines de la Orange (de los micros Allwinner en realidad) en el kernel de Linux viene dado por la formula: | 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 | (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//. | + | |
| + | 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 ===== | ===== Esquemas eléctricos ===== | ||
| Línea 182: | Línea 202: | ||
| La memoria es más que suficiente para correr programas. El Armbian consume únicamente 40Mb en funcionamiento. | La memoria es más que suficiente para correr programas. El Armbian consume únicamente 40Mb en funcionamiento. | ||
| - | |||
| < | < | ||
| + | |||
| root@orangepizero: | root@orangepizero: | ||
| | | ||
| Línea 189: | Línea 209: | ||
| -/+ buffers/ | -/+ buffers/ | ||
| Swap: | Swap: | ||
| + | |||
| </ | </ | ||
| + | |||
| Vamos a hacer algunas pruebas con el hardware. En Armbian, como todo Unix que se precie, todo es un fichero. | Vamos a hacer algunas pruebas con el hardware. En Armbian, como todo Unix que se precie, todo es un fichero. | ||
| - | En el directorio '' | + | En el directorio '' |
| < | < | ||
| Línea 201: | Línea 223: | ||
| bsg dma hwmon leds | bsg dma hwmon leds | ||
| cedar_dev | cedar_dev | ||
| + | |||
| </ | </ | ||
| + | |||
| ===== LEDs ===== | ===== LEDs ===== | ||
| - | Si miramos dentro del directorio '' | + | Si miramos dentro del directorio '' |
| < | < | ||
| Línea 210: | Línea 234: | ||
| root@orangepizero:/ | root@orangepizero:/ | ||
| green_led | green_led | ||
| + | |||
| </ | </ | ||
| - | Podemos ver, por ejemplo, a que evento está asociado cada led ejecutando '' | + | |
| + | Podemos ver, por ejemplo, a que evento está asociado cada led ejecutando '' | ||
| < | < | ||
| - | root@orangepizero:/ | + | root@orangepizero:/ |
| - | none mmc0 mmc1 timer heartbeat backlight [default-on] rfkill0 phy1rx phy1tx phy1assoc phy1radio | + | none mmc0 mmc1 timer heartbeat backlight [default-on] rfkill0 phy1rx phy1tx phy1assoc phy1radio |
| - | root@orangepizero:/ | + | root@orangepizero:/ |
| - | [none] mmc0 mmc1 timer heartbeat backlight default-on rfkill0 phy1rx phy1tx phy1assoc phy1radio | + | [none] mmc0 mmc1 timer heartbeat backlight default-on rfkill0 phy1rx phy1tx phy1assoc phy1radio |
| </ | </ | ||
| - | O podemos encender el led rojo ejecutando '' | + | |
| + | O podemos encender el led rojo ejecutando '' | ||
| ===== GPIO ===== | ===== GPIO ===== | ||
| Línea 233: | Línea 261: | ||
| | | ||
| | | ||
| + | |||
| </ | </ | ||
| + | |||
| Podemos activar un nuevo puerto GPIO, digamos el 15: | Podemos activar un nuevo puerto GPIO, digamos el 15: | ||
| < | < | ||
| - | root@orangepizero: | + | root@orangepizero: |
| </ | </ | ||
| + | |||
| Ahora veremos el puerto activo: | Ahora veremos el puerto activo: | ||
| < | < | ||
| - | root@orangepizero: | + | root@orangepizero: |
| GPIOs 0-383, platform/ | GPIOs 0-383, platform/ | ||
| | | ||
| Línea 250: | Línea 282: | ||
| | | ||
| | | ||
| + | |||
| </ | </ | ||
| - | En el directorio '' | + | |
| + | En el directorio '' | ||
| ====== Bibliotecas útiles ====== | ====== Bibliotecas útiles ====== | ||
| Línea 265: | Línea 299: | ||
| sudo aptitude install python-virtualenv | sudo aptitude install python-virtualenv | ||
| sudo aptitude install python-dev | sudo aptitude install python-dev | ||
| + | |||
| </ | </ | ||
| - | El caso es que el // | + | |
| + | El caso es que el // | ||
| < | < | ||
| pip install --upgrade pip | pip install --upgrade pip | ||
| pip install --upgrade virtualenv | pip install --upgrade virtualenv | ||
| + | |||
| </ | </ | ||
| - | Despues de eso ya he podido usar // | + | |
| + | Despues de eso ya he podido usar // | ||
| ==== orangepi_PC_gpio_pyH3 ==== | ==== orangepi_PC_gpio_pyH3 ==== | ||
| Línea 278: | Línea 316: | ||
| Tenemos dos repos disponibles: | Tenemos dos repos disponibles: | ||
| - | El repositorio original con las librerías //gpio// para H3: | + | El repositorio original con las librerías // |
| < | < | ||
| git clone https:// | git clone https:// | ||
| + | |||
| </ | </ | ||
| - | Y un fork del repositorio original **ya adaptado** a la Orange Pi Zero (que es el que usaremos): | + | |
| + | Y un fork del repositorio original **ya adaptado** | ||
| < | < | ||
| git clone https:// | git clone https:// | ||
| + | |||
| </ | </ | ||
| - | **IMPORTANTE: | ||
| - | Por ejemplo: la definicion de // | + | **IMPORTANTE: |
| + | |||
| + | Por ejemplo: la definicion de // | ||
| < | < | ||
| { " | { " | ||
| + | |||
| </ | </ | ||
| + | |||
| Nos clonamos el repo. Vamos a hacer todas las pruebas desde la cuenta de **root**. | Nos clonamos el repo. Vamos a hacer todas las pruebas desde la cuenta de **root**. | ||
| Línea 302: | Línea 346: | ||
| virtualenv test_pyH3_zero | virtualenv test_pyH3_zero | ||
| source test_pyH3_zero/ | source test_pyH3_zero/ | ||
| + | |||
| </ | </ | ||
| + | |||
| Compilamos la biblioteca: | Compilamos la biblioteca: | ||
| Línea 308: | Línea 354: | ||
| cd orangepi_PC_gpio_pyH3 | cd orangepi_PC_gpio_pyH3 | ||
| python setup.py install | python setup.py install | ||
| + | |||
| </ | </ | ||
| + | |||
| Y ya podemos probar los ficheros de ejemplo: | Y ya podemos probar los ficheros de ejemplo: | ||
| Línea 314: | Línea 362: | ||
| examples/ | examples/ | ||
| examples/ | examples/ | ||
| + | |||
| </ | </ | ||
| + | |||
| El resto de ejemplos no van a funcionar, están escritos para la // | El resto de ejemplos no van a funcionar, están escritos para la // | ||
| Línea 327: | Línea 377: | ||
| ls | ls | ||
| gpio/ i2c/ __init__.py | 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. | + | Nos interesa probar las bibliotecas en los directorios // |
| + | |||
| + | Probamos el acceso al // | ||
| < | < | ||
| Línea 342: | Línea 394: | ||
| sleep(1); | sleep(1); | ||
| } | } | ||
| + | |||
| </ | </ | ||
| + | |||
| ==== WiringOP-Zero ==== | ==== WiringOP-Zero ==== | ||
| - | Esta biblioteca imita a la // | + | Esta biblioteca imita a la // |
| Tenemos un fork que viene preparado para la Orange Pi Zero disponible aquí: | Tenemos un fork que viene preparado para la Orange Pi Zero disponible aquí: | ||
| Línea 351: | Línea 405: | ||
| < | < | ||
| https:// | https:// | ||
| + | |||
| </ | </ | ||
| + | |||
| GPIO funciona completamente y al parecer aun no han testeado el i2c (tiene mala pinta) | GPIO funciona completamente y al parecer aun no han testeado el i2c (tiene mala pinta) | ||
| Línea 361: | Línea 417: | ||
| chmod +x ./build | chmod +x ./build | ||
| sudo ./build | sudo ./build | ||
| + | |||
| </ | </ | ||
| + | |||
| Podemos comprobar que todo se ha instalado correctamente: | Podemos comprobar que todo se ha instalado correctamente: | ||
| Línea 369: | Línea 427: | ||
| | H2+ | wPi | | | H2+ | wPi | | ||
| | | ||
| - | | + | |
| - | | + | |
| - | | + | |
| | | ||
| - | | + | |
| | | ||
| - | | + | |
| | | ||
| - | | + | |
| - | | + | |
| | | ||
| | | ||
| - | | + | |
| | | ||
| - | | + | |
| | | ||
| | H2+ | wPi | | | H2+ | wPi | | ||
| | | ||
| + | |||
| </ | </ | ||
| - | Instalamos las i2c-tools '' | + | |
| + | Instalamos las i2c-tools '' | ||
| ==== WiringPI-Python-OP ==== | ==== WiringPI-Python-OP ==== | ||
| Línea 402: | Línea 462: | ||
| 1.Download [WiringOP libary for the Orange Pi Zero] from here. | 1.Download [WiringOP libary for the Orange Pi Zero] from here. | ||
| - | https:%%//%%github.com/ | + | https:< |
| 2.Download [[# | 2.Download [[# | ||
| - | https:%%//%%github.com/ | + | https:< |
| 3.Replace base library | 3.Replace base library | ||
| Línea 459: | Línea 519: | ||
| Podemos ver estadísticas de nuestra OPI con: | Podemos ver estadísticas de nuestra OPI con: | ||
| - | |||
| < | < | ||
| + | |||
| sudo armbianmonitor -m | sudo armbianmonitor -m | ||
| Línea 480: | Línea 540: | ||
| 21: | 21: | ||
| 21: | 21: | ||
| + | |||
| </ | </ | ||
| + | |||
| También podemos instalar RPi-Monitor con el comando: | También podemos instalar RPi-Monitor con el comando: | ||
| < | < | ||
| sudo armbianmonitor -r | sudo armbianmonitor -r | ||
| + | |||
| </ | </ | ||
| - | Una vez instalado podemos visitar desde nuestro navegador la dirección ip de nuestra OPI Zero // | ||
| - | {{ : | + | 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. | ¡Ojo! Las gráficas no se refrescan automáticamente hay que recargar la página. | ||
| Para desinstalar el RPi-Monitor basta con: | Para desinstalar el RPi-Monitor basta con: | ||
| - | |||
| < | < | ||
| + | |||
| sudo aptitude uninstall rpimonitor | sudo aptitude uninstall rpimonitor | ||
| + | |||
| </ | </ | ||
| + | |||
| ====== Referencias ====== | ====== Referencias ====== | ||
| Línea 502: | Línea 568: | ||
| * [[http:// | * [[http:// | ||
| * [[https:// | * [[https:// | ||
| - | * http:// | + | * [[http:// |
| - | * https:// | + | * [[https:// |
| - | * https:// | + | * [[https:// |
| - | * https:// | + | * [[https:// |
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| Línea 513: | Línea 579: | ||
| * [[https:// | * [[https:// | ||
| * [[http:// | * [[http:// | ||
| + | |||
| + | ** | ||
| + | |||