UniHiker : Premier Démarrage et Premiers pas

Bonjour à tous,

Dans le précédent article, nous parlions des caractéristiques de l'UniHiker... aujourd'hui, nous allons le brancher et commencer notre exploration.

Qu'est que l'UniHiker ?

C'est un nano-ordinateur 4 coeurs intégrant un écran tactile, un support WiFi/Bluetooth et les nombreux connecteurs Gravity de DFRobot.

UniHiker @ MCHobby

Basé sur le système d'exploitation Linux (Debian), il bénéficie donc de ses nombreux utilitaires, service autour du langage de programmation Python 3.

Clairement orienté Acquisition de données/DataLoging et SBC Ultra portatif, l'UniHiker n'est pas là pour concurrence le Raspberry-Pi mais pour offrir des services complémentaires. 

Ses points communs avec le Raspberry-Pi sont: le système d'exploitation, la connectique de prototypage et Python.

L'UniHiker peut aussi agir sur son environnement et exécuter des script Python à la demande. Il n'est donc pas exclusivement cantonné à l'acquisition de données.

C'est justement pour ces caractéristiques spécifiques que l'UniHiker à attiré notre attention. 

Préchargé avec Linux Debian et logiciel UniHiker, l'appareil est prêt à l'emploi.

A propos de l'affichage

Comme précisé, c'est une système Linux de type Debian. Comme l'affichage/FrameBuffer du système d'exploitation est rediriger sur le LCD via un bus SPI, il faut environ 15 à 60 secondes pour voir défiler des informations sur l'écran. 

En effet, le noyaux du système d'exploitation doit démarrer avant même de pouvoir rediriger l'affichage sur le LCD.

Achever l'installation

A sa première mise-sous-tension, l'UniHiker termine son processus d'installation.

L'utilisateur est invité à sélectionner la langue l'UniHiker:

  • Chinois
  • English

Ce n'est pas le moment de faire n'importe quoi... au risque que cela devienne vraiment pénible par la suite ;-)

Sélectionnez l'anglais (English) avec votre doigt/stylet pour terminer l'installation.
Au terme de cette opération, l'UniHiker redémarre.

UniHiker - Premiers pas

L'UniHiker est capable de se connecter sur un réseau WiFi (ou de devenir un HotSpot).
Pour simplifier la prise en main, nous n'allons pas encore utiliser le WiFi.

  • Brancher l'UniHiker sur votre ordinateur via le câble USB-C.
  • Attendre l'affichage de l'écran d'accueil sur l'UniHiker.


Sur votre ordinateur:

  • Ouvrir un navigateur Internet (sauf IE)
  • Naviguer sur 10.1.2.3

Cela contactera le serveur WEB de l'UniHiker.
Bleuffant, cela fonctionne de la première fois sur mon Linux Mint avec FireFox.

Page d'accueil sur l'UniHiker

La page d'accueil est divisée en deux parties:

  • Sur la gauche: Menu d'accès rapide
  • Sur la droite: page actuellement sélectionnée (Home = Acceuil)

La page d'accueil de votre UniHiker permet d'accéder rapidement au site officiel (et sa documentation) ainsi qu'à quelques tutoriels présents sur le site officiel.
Ce sont des ressources utiles pour ne jamais être perdu.

Le menu du site


L'entrée Service Toggle permet d'activer/désactivé

  • SIoT : un petit serveur MQTT. Activé par défaut.
  • Jupyter : un service Jupyter Notebook qui permet de saisir et tester du code Python directement depuis une navigateur Web. Désactivé par défaut.

L'entrée Network Setting permet de sélectionner un réseau WiFi 2.4 GHz sur lequel l'UniHicker doit se connecter.

L'entrée File Upload permet de téléverser un fichier dans le répertoire utilisateur ~/upload (ou encore /root/upload) de l'UniHiker. Cette page permet également d'effacer un fichier.

Autres pages

Il existe d'autres services WEB comme SIoT et Jupyter avec leur propres pages.
Ces points seront abordés dans d'autres articles... nous allons plutôt nous concentrer sur la communication et l'exécution de code Python.

UniHiker - Connexion SSH

La connexion SSH permet d'obtenir une session terminal sur l'UniHiker. C'est très pratique pour aller fouiller dans le système de fichiers et interagir avec le système d'exploitation.

Comme notre UniHicker est connecté via USB sur notre ordinateur, nous savons que nous pouvons l'atteindre avec l'adresse IP 10.1.2.3 .

Depuis une machine Unix/Linux/Mac, l'utilitaire ssh permettra d'établir cette connexion sans aucun problème.

ssh root@10.1.2.3
Le mot de passe root par défaut est dfrobot

On peut voir dans la session suivante qu'il est possible d'utiliser les commandes linux ls et cd pour naviguer dans le système de fichiers sur l'UniHiker.
Il est également possible de voir le contenu du répertoire upload (où une image à été téléversée depuis l'interface WEB d'UniHicker)

$ ssh root@10.1.2.3
root@10.1.2.3's password: 
Linux unihiker 4.4.143-67-rockchip-g01bbbc5d1312 #376 SMP PREEMPT Thu Feb 23 17:38:05 CST 2023 aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Sep 14 19:58:59 2023 from 10.1.2.101
root@unihiker:~# ls
python-packages.lst  test.py  upload
root@unihiker:~# cd upload 
root@unihiker:~/upload# ls 
toolbox-electronic.jpg
root@unihiker:~/upload# 

Les utilisateurs de Windows (Linux ou Mac) pourrons utiliser Putty pour établir une connexion SSH avec l'UniHiker.


Une fois la connexion établie, le login et mot de passe ssh saisie, l'utilisateur peut avoir accès à la ligne de commande de l'UniHiker. 


Un premier script Python

Nous allons profiter de la connexion SSH pour créer un premier script Python.

nano est éditeur de texte en mode terminal qui permet saisir du code/texte dans un terminal. Une fois le code saisi dans nano, celui-ci peut être sauvé avec la combinaison de touche CTRL+O et la combinaison de touche CTRL+X permet de quitter l'éditeur.

Nano est un utilitaire très connu du monde Linux, vous 

Saisir la commande suivante dans la session SSH:

nano test.py

Et l'éditeur apparaît alors dans le terminal... il s'agit d'un éditeur sans mode graphique.


Ce petit script de test permet d'afficher un texte de bienvenue sur l'afficheur de l'UniHiker.

01: #  -*- coding: UTF-8 -*-
02: from unihiker import GUI
03: import time
04: 
05: gui = GUI()
06: gui.draw_text( text="Hello,UNIHIKER!",
                   origin="center",
                   x=120,y=160,
                   color="#0066CC")
07: 
08: while True:
09:    time.sleep(1)
  • Ligne 1: information sur l'encodage utilisé dans le script.
  • Ligne 2: import de la classe graphique GUI permettant de créer un interface utilisateur sur l'UniHiker
  • Ligne 5: création d'une instance de la classe GUI (variable gui) permettant de générer une interface graphique sur l'UniHiker.
  • Ligne 6: afficher une ligne de texte.
  • Ligne 7 et 8: l'UniHiker ré-affiche son interface dès que le script Python à terminer son exécution... il faut donc créer un boucle d'attente pour que le message soit visible ! L'utilisation de time.sleep(1) évite de surcharger le CPU.

Démarrer le script via SSH

Après avoir quitté  nano, nous revenons à la session SSH. C'est donc l'occasion rêvée de tester le script que l'on vient d'écrire.

Saisir la commande python test.py démarre le script, ce qui modifie l'affichage sur l'UniHiker.


Etant donné la boucle while True, il faudra presser la combinaison CTRL+C pour interrompre l'exécution du script. 

Lancer un script sur UniHiker via SSH

Une fois le script interrompu, UniHiker ré-affiche son écran d'accueil.

Démarrer script sur UniHiker

Ce qui serait intéressant, c'est de démarrer le test.py directement depuis l'UniHiker. La méthode est simple et efficace.

1) Afficher le menu principal

Presser le bouton Home sur le côté de l'UniHiker pour afficher le menu.

Si a un quelconque moment vous êtes perdu dans le menu, un pression longue sur le bouton "home" (4 secondes) réaffiche le menu principal.

2) Sélectionner "Run Programs"

Dans le menu UniHiker, sélectionner l'entrée Run Programs (exécuter)

3) Sélectionner le script à exécuter

Run Programs affiche un navigateur de fichiers permettant de naviguer de répertoire en répertoire jusqu'à sélectionner un fichier Python.

Sélectionnez le répertoire root/ qui est le répertoire personnel de l'utilisateur root.

Dans ce dernier répertoire, sélectionner le fichier test.py qui y est visible.

4) Exécution du script

Une fois le script sélectionné, celui-ci est démarré, ce qui affiche le message de bienvenue tel qu'encodé dans le script.

5) Interrompre l'exécution

Une pression COURTE sur le bouton "Home" (1 sec) termine l'exécution du script et ré-affiche le navigateur de fichiers.

Une pression LONGUE sur le bouton "Home" (4 sec) revient au menu principal de l'UniHiker.

Scripts de démonstration

Dans le point précédent, la sélection du script "test.py" mettait en lumière la présence d'un répertoire "demo" avec 7 scripts de démonstration.

Mes préférés sont code rain (effet Matrix) et spirit level (utilise l'accéléromètre).

La lecture du point suivant vous apprendra où trouver ces script sur l'UniHiker.

Un peu de curiosité

Ce qui est bien lorsque l'on dispose d'une connexion SSH, c'est qu'il est possible de passer par la porte de derrière pour voir ce qui se passe sur l'UniHiker!

En utilisant la commande ps -ef | grep python permet de lister les processus impliquant le mot "python".

Ainsi après le démarrage nous avons:

root      3452   351  0 18:10 ?        00:00:00 /usr/bin/python3 startServer.py
root      3453   351  0 18:10 ?        00:00:44 /usr/bin/python3 -c import pyboardgui
root      3454  3452  0 18:10 ?        00:00:00 sh -c python /opt/unihiker/pyboardWeb/pyboardWeb_en/startServer.py
root      3455  3454  0 18:10 ?        00:00:07 python /opt/unihiker/pyboardWeb/pyboardWeb_en/startServer.py
root      3626  3002  0 20:39 pts/0    00:00:00 grep python

Si on lance notre petit script "test.py" via l'interface UniHiker, nous pouvons ré-inspecter les processus.

root      3452   351  0 18:10 ?        00:00:00 /usr/bin/python3 startServer.py
root      3453   351  0 18:10 ?        00:00:45 /usr/bin/python3 -c import pyboardgui
root      3454  3452  0 18:10 ?        00:00:00 sh -c python /opt/unihiker/pyboardWeb/pyboardWeb_en/startServer.py
root      3455  3454  0 18:10 ?        00:00:07 python /opt/unihiker/pyboardWeb/pyboardWeb_en/startServer.py
root      3632  3453  0 20:41 ?        00:00:00 /bin/sh -c cd '/opt/unihiker/pyboardUI/run/root' && python3 '/opt/unihiker/pyboardUI/run/root/test.py'
root      3633  3632 28 20:41 ?        00:00:01 python3 /opt/unihiker/pyboardUI/run/root/test.py
root      3639  3002  0 20:41 pts/0    00:00:00 grep python

Qu'est ce que cela nous apprends?

  1. Pour commencer (processus 3633), notre script est lancé avec une commande  python3 /opt/unihiker/pyboardUI/run/root/test.py . 
  2. Le processus parent de 3633 est le processus 3632. Ce processus 3632 est une commande shell combinant un Change Directory dans le répertoire de test.py suivi d'un appel python3 xxx/test.py . Ce dernier appel crée le processus 3633.
  3. Enfin le processus parent de la commande shell (3632) est processus 3453 qui est donc l'application de lancement UniHiker (le menu UniHiker). Ce processus à pour commande /usr/bin/python3 -c import pyboardgui .

Une précision sur le répertoire de stockage:

  • Notre script utilisateur est bien stocké dans /root 
  • Pourtant l'appel au script se fait via /opt/unihiker/pyboardUI/run/root/test.py
  • En inspectant le répertoire  /opt/xxx/run/ avec ls -l /opt/unihiker/pyboardUI/run on apprend qu'il y a un lien symbolique vers /root/
oot@unihiker:~# ls /opt/unihiker/pyboardUI/run/ -l
total 0
lrwxrwxrwx 1 root root 23 Apr 11 05:26 demo -> /opt/unihiker/examples/
lrwxrwxrwx 1 root root  7 Apr 11 05:26 media -> /media/
lrwxrwxrwx 1 root root 21 Apr 11 05:26 mindplus -> /root/mindplus/cache/
lrwxrwxrwx 1 root root  6 Apr 11 05:26 root -> /root/

Ce n'est d'ailleurs pas le seul lien symbolique, nous y retrouvons aussi "démo" (vers les examples), media (pour la carte microSD) et aussi "minplus" pour l'éditeur codebloc s'il est utilisé.

Redémarrer l'interface UniHiker

Si en cours d'expérimentation vous perdez le contrôle de votre UniHiker, il est possible de redémarrer l'interface UniHiker en:

  • Pressant le bouton Home pendant 4 sec.
  • en utilisant la commande kill <id_processus> du menu (voir ligne avec pyboardgui).

La prochaine fois

Nous parlerons:

  • du partage réseau avec Samba
  • Transfert via SSH
  • Partage d'écran (avec VNC)

Où acheter

MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible. 

SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

2 commentaires:

  1. on est obligé de rester root?pas de creation de user moins privilégié?

    RépondreSupprimer
    Réponses
    1. C'est un système Debian, il est donc possible de créer d'autres utilisateurs.

      Supprimer