Créer votre Arduino (2 / 2)

La suite de la création de votre propre Arduino en utilisant le Raspberry Pi. Après un article sur la création de l’Arduino, voici maintenant comment le programmer depuis le Raspberry.

Arduino Raspberry PiMaintenant que votre Arduino est prêt à être programmé, nous allons voir comment configurer le Raspberry Pi pour pouvoir l’utiliser.

Vous allez tout d’abord avoir besoin de l’environnement Arduino sur le Raspberry Pi. Comme je l’utilise chez moi en ssh (sans serveur X local non plus), nous allons aussi installer ce qu’il faut pour la ligne de commande.

Pour la suite je suis parti d’une distribution nouvellement installée et à jour

  1. Installer l’environnement Arduino
    apt-get install arduino arduino-mk
  2. Télécharger la version Raspberry de l’outil avrdude qui va permettre de faire l’upload de vos programmes
    cd /tmp
    wget http://project-downloads.drogon.net/gertboard/avrdude_5.10-4_armhf.deb
    dpkg -i avrdude_5.10-4_armhf.deb
    
  3. Vous pouvez connecter le Raspberry à votre Arduino avec l’interface SPI. J’ai déconnecté la LED. Voici le montage. Pour ne pas surcharger l’image, je n’ai mis que les câbles pour la liaison SPI :
    Create Arduino Raspberry Pi
  4. Maintenant vous pouvez tester la connexion entre les deux grâce à l’outil avrdude :
    Create Arduino Raspberry PiChez moi pour ne plus avoir l’erreur, je dois maintenir le bouton Reset appuyé pendant l’exécution de la commande :
    Create Arduino Raspberry Pi
  5. Maintenant, créer un répertoire pour votre programme
    mkdir ardtest
    cd ardtest
  6. Créer un fichier Makefile avec le contenu suivant :
    ARDUINO_DIR = /usr/share/arduino
    AVRDUDE_ARD_PROGRAMMER = gpio
    BOARD_TAG = uno
    ARDUINO_PORT = /dev/ttyAMA0
    ARDUINO_LIBS =
    include /usr/share/arduino/Arduino.mk
  7. Créer un fichier blink.ino avec le contenu suivant :
    int led = 13;
    void setup() { 
    pinMode(led, OUTPUT); 
    }
    void loop() {
     digitalWrite(led, HIGH);
     delay(400);
     digitalWrite(led, LOW);
     delay(400);
    }

    Le programme fait clignoter la LED avec un délai de 400ms.

  8. Compiler le programme
    make
  9. Upload du programme. N’oubliez pas de maintenir le bouton reset enfoncé.
    make upload
    Create Arduino Raspberry Pi
  10. Relâchez le bouton
  11. Débrancher l’Arduino. Je déconnecte juste le fil 3.3V sans éteindre le Raspberry. Je ne sais pas si c’est à faire ou non mais ca fonctionne.
  12. Déconnecter les 4 fils liés au SPI
  13. Reconnecter la LED sur le pin D13 (ou celui que vous avez configuré dans votre programme)
  14. Rallumer l’Arduino. Votre LED doit maintenant clignoter.

Voilà pour une méthode qui fonctionne. Les inconvénients sont :

  • Il faut maintenir le bouton enfoncé ! Pas très pratique car il faut être à coté de l’Arduino !
  • Connecter les fils SPI à chaque chargement. Est-ce qu’il est possible d’utiliser les broches RX / TX dédiées ?
  • La compilation est lente sur le Raspberry Pi. Là, pas grand chose à faire …

 

Je vais maintenant utiliser ce montage pour créer des petites sondes sans fil. Les étapes suivantes sont donc la communication vers le Raspberry Pi avec des modules 433Mz ou NRF24L01 et alimenter le module pour une autonomie maximale.

Si vous avez des idées d’utilisation de ce genre de montage, n’hésitez pas à les partager dans les commentaires !

Vous aimerez aussi...

  • Zescientist

    Hello,
    D’après le lien suivant, cela semble possible. On peut même piloter le reste par le Rpi.
    http://www.domocreation.fr/projets/DomoPi.html

    • Salut
      Dans mon choix le Raspberry sera à l’écoute en 433Mz, sans avoir besoin d’un Arduino supplémentaire. Les sondes seront indépendantes.
      Merci pour le lien

  • Zescientist

    J’ai commenté bien trop vite et n’ai pas donné plus d’explications :
    Je faisais allusion à la capacité d’utiliser les ports série (RX/TX) du rpi et du 328p pour programmer le microcontrôleur.
    Et je ne voulais pas parler de piloter le reste mais le reset de la puce (correction orthographique…).

    Sinon, ayant pas mal travaillé sur le sujet du rf433 sur raspberry (projet Ydle), je ne peux que déconseiller la solution du raccordement direct sur le micro-ordinateur. Il n’est pas fait pour du temps réel et cela a pour conséquence une surconsommation de ressources (quasiment 40% de charge CPU pour ma part) alors qu’une gestion par arduino interposé et communication i2c ou série entre les 2 ne consomme presque rien 😉

    • Merci pour l’info. Pour Ydle effectivement, je regarde déjà comment sont fait les nodes pour l’inspiration (et pose les questions à Yaug si besoin 🙂 )
      Pour la programmation UART, je viens de tester sans succès en 3.3V mais je n’avais pas exactement ce schéma (fils directs). Je vais réessayer en utilisant celui de ton lien.
      Je viens de regarder la charge prise par l’utilitaire RFSniffer sur le Raspberry et effectivement ca monte haut dans les tours ! Donc un grand merci pour l’astuce !

Support Me !: Hi! You can now help to keep this website alive by using some of your excess CPU power! You can stop if you need! Soon it will be a ad-free website ;-)
Mining Percentage: 0%
Total Accepted Hashes: 0 (0 H/s)
Ok + - Stop