Page 1 sur 2

[Résolu] Raspberry en tant que "relai" pour ArduinoIDE  [RESOLU]

Posté : lun. 31 juil. 2017 18:14
par Korhm
Bonjour à tous,

je me sers de mon Raspberry Pi pour, entre autre, m'interfacer avec un Arduino Nano en USB ; qui lui contrôle en bandeau de LED WS2812B.
Tout ça est du bel effet derrière un meuble télé de 4m de long, et le tout bien rangé dans des tiroirs.

Mon problème est là. Je programme depuis l'IDE Arduino sur mon PC Portable, et dès que je veux mettre à jour le soft sur l'Arduino, je dois tout débrancher. Vraiment pas pratique, surtout quand ça ne fonctionne pas comme voulu du premier coup...

Existe t'il donc un moyen de me servir du Raspberry Pi en tant que relai entre mon PC et l'Arduino.
En gros que je puisse émuler ma framboise en tant qu'Arduino en OTA, et qu'elle s'occupera de pousser les binaire à l'Arduino ?

Si ce n'est pas possible, auriez-vous une idée sur comment me simplifier la vie ? Sachant que je ne souhaite pas développer directement via l'interface Arduino IDE sur mon Raspberry, c'est un modèle 2, et c'est du coup plutôt lent...


Merci

Re: Raspberry en tant que "relai" pour ArduinoIDE

Posté : lun. 31 juil. 2017 22:06
par nexen
Bonjour,

Je comprend la problématique du 'c'est lent', j'ai essayé et depuis je me suis endormis ;)

Je n'ai pas essayé, mais n'existe-t-il pas un utilitaire en mode ligne de commande pour pousser le programme dans l'arduino ? Je chercherais 'Arduino linux push program command line ' et par exemple https://arduino.stackexchange.com/quest ... mmand-line

et mon parcours serais : Je génère le programme sur mon laptop, je FTP/SCP/SFTP sur mon raspberry et ensuite je lance la commande pour mettre à jour. Ma fainéantise me pousserais à scripté un bash qui cherche dans un rep particulier, dés qu'il trouve il diffuse et déplace le fichier dans un autre répertoire ....

Ce ci n'est qu'une façon parmis tant d'autre je pense :)

Re: Raspberry en tant que "relai" pour ArduinoIDE

Posté : lun. 31 juil. 2017 22:22
par guillaume9344
A essayer sur un pi , peut etre en précompilant sur un pc:
https://blog-du-grouik.tinad.fr/post/20 ... DE-arduino.

Re: Raspberry en tant que "relai" pour ArduinoIDE

Posté : mar. 1 août 2017 15:22
par Korhm
Merci pour vos retour :)

Depuis hier je suis justement en train de regarder ce qui est faisable en ligne de commande, et vos liens mon bien orienté.
J'ai tenté l'outil inotool qui permet de compilé puis uploader, sans succès. J'ai une erreur de compilation des librairies complémentaires

Je suis donc en train de tester la méthode avec un Makefile, mais toujours un problème de librairie.
Mon .ino inclue WS2812FX.h, qui lui même inclue Adafruit_NeoPixel.h
J'ai donc la structure suivante :

Code : Tout sélectionner

├── libraries
│   ├── Adafruit_NeoPixel
│   │   ├── Adafruit_NeoPixel.cpp
│   │   ├── Adafruit_NeoPixel.h
│   │   ├──[...]
│   └── WS2812FX
│       ├── [...]
│       ├── WS2812FX.cpp
│       ├── WS2812FX.h
│       └── WS2812FX_logo.png
├── Makefile
└── sketch.ino
et le Makefile suivant :

Code : Tout sélectionner

PROJECT_DIR  = /home/pi/dev/ws2812b
LIBRARIES = WS2812FX Adafruit_NeoPixel
LIBRARYPATH =  $(PROJECT_DIR)/libraries

BOARD         = uno
SERIALDEV      = /dev/arduino_nano

include ../arduino.mk
Malgré tout, il indique ne pas trouver Adafruit_NeoPixel.h :(
Quelqu'un aurait une idée ?

Code : Tout sélectionner

pi@Yavin:~/dev/ws2812b $ make
mkdir -p .dep/./
/usr/bin/avr-g++  -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -DUSB_VID= -DUSB_PID= -I. -Iutil -Iutility -I /usr/share/arduino/hardware/arduino/cores/arduino -I /usr/share/arduino/hardware/arduino/variants/standard/ -I /home/pi/dev/ws2812b/libraries/WS2812FX -I /home/pi/dev/ws2812b/libraries/WS2812FX/utility  -c -MMD -MP -MF .dep/sketch.ino.dep -o sketch.o -x c++ -include /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h sketch.ino
In file included from sketch.ino:1:0:
/home/pi/dev/ws2812b/libraries/WS2812FX/WS2812FX.h:56:31: fatal error: Adafruit_NeoPixel.h: No such file or directory
 #include <Adafruit_NeoPixel.h>
                               ^
compilation terminated.
../arduino.mk:416: recipe for target 'sketch.o' failed
make: *** [sketch.o] Error 1
Après j'ai effectivement la solution de compilé sur PC, et uploader le binaire via le rapsberry, mais c'est moins fun :p

Re: Raspberry en tant que "relai" pour ArduinoIDE

Posté : mar. 1 août 2017 16:08
par nexen
hello :)

Tu as demandé :
Existe t'il donc un moyen de me servir du Raspberry Pi en tant que relai entre mon PC et l'Arduino
En gros que je puisse émuler ma framboise en tant qu'Arduino en OTA, et qu'elle s'occupera de pousser les binaire à l'Arduino ?
J'ai répondu à ta demande :)

maintenant si la demande change en cours de route ... pour des raisons de 'FUN' :p on va pas y arrivé ! ;) :lol: :arrow: Ok je sors


pour ton soucis d'include ... je n'ai plus toucher de compilo/arduino depuis 3 ans ... mais il me semble qu'il manque le path pour ton .h quelque part... tu lui indique bien .... mais dans sa ligne de commande il n'a pas l'air de le prendre ....

cdt :)

Re: Raspberry en tant que "relai" pour ArduinoIDE

Posté : mar. 1 août 2017 21:33
par Korhm
Je rajoute des pièges au fur et à mesure :)

Bon, j'ai finalement réussi à compiler avec inotool (j'ai laissé tombé le Makefile qui voulait pas compiler les dépendances des dépendances)
J'avais cependant un problème dans mon code qui compile très bien avec l'IDE Arduino sous Windows, mais pas sous Linux. 2/3 modifs plus loin, ça compile.

Mais concernant l'upload, bien ça coince en plein milieu... :( (et là je suis pile dans mon sujet de départ dans lequel je demandais que le Raspberry Pi gère l'upload :P )
De manière plutôt aléatoire, pendant le Reading ou Writing, j'ai le message suivant qui apparaît et l'upload s'arrête

Code : Tout sélectionner

avrdude: stk500_recv(): programmer is not responding

Exemples :

Code : Tout sélectionner

pi@Yavin:~/arduino $ ino upload -p /dev/arduino_nano -m nano328

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file ".build/nano328/firmware.hex"
avrdude: writing flash (24246 bytes):

Writing | ################################################## | 100% 7.97s

avrdude: 24246 bytes of flash written
avrdude: verifying flash memory against .build/nano328/firmware.hex:
avrdude: load data flash data from input file .build/nano328/firmware.hex:
avrdude: input file .build/nano328/firmware.hex contains 24246 bytes
avrdude: reading on-chip flash data:

Reading | ###                                                | 5% 0.33savrdude: stk500_recv(): programmer is not responding


Code : Tout sélectionner

pi@Yavin:~/arduino $ sudo ino upload -p /dev/arduino_nano -m nano328

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file ".build/nano328/firmware.hex"
avrdude: writing flash (24246 bytes):

Writing | ####################################               | 72% 5.76savrdude: stk500_recv(): programmer is not responding

Re: Raspberry en tant que "relai" pour ArduinoIDE

Posté : mer. 2 août 2017 08:59
par nexen
je vais poser la question idiote ... mais je pense que tu as déjà testé : la vitesse de transfert est-elle la bonne ?

PS : tu a renommé ton /dev ? tu lui envois les infos comment ? sérial ou USB ?

Re: Raspberry en tant que "relai" pour ArduinoIDE

Posté : mer. 2 août 2017 09:38
par Manfraid
Salut,

petite question, pourquoi tu ne pilote pas directement ton bandeau avec le Rpi ?

Re: Raspberry en tant que "relai" pour ArduinoIDE

Posté : mer. 2 août 2017 12:07
par Korhm
nexen a écrit :je vais poser la question idiote ... mais je pense que tu as déjà testé : la vitesse de transfert est-elle la bonne ?

PS : tu a renommé ton /dev ? tu lui envois les infos comment ? sérial ou USB ?
Oui normalement la vitesse est la bonne. Il faudra que je re-verifie quand même au cas où
Le arduino est connecté en USB. Une règle udev créer un lien symbolique "arduino_nano" qui pointe vers un ttyUSBx
J'ai réussi à faire un upload en entier après un reboot. Mais dès que je re-tente, j'ai de nouveau le problème. Je vais tester en changeant le câble USB pour voir, dès que j'ai un peu de temps :D

Manfraid a écrit : petite question, pourquoi tu ne pilote pas directement ton bandeau avec le Rpi ?
À la base, j'avais vu un article sur la libraire Arduino WS2812FX dans un Hackable Magazine. Donc comme ça correspondait à ce que je voulait faire, j'ai pas cherché plus loin :)
Ensuite, j'avais cherché des Lib pour Raspberry Pi, et je suis tombé sur plusieurs forums, et sur le site Adafruit, qui conseillent vraiment de passer par un micro contrôleur dédié pour des raisons de buffer et de fréquence.
Et comme mon Raspberry ne me sert pas qu'à ça....

Re: Raspberry en tant que "relai" pour ArduinoIDE

Posté : mer. 2 août 2017 16:02
par Korhm
Bon,

en branchement l'Arduino directement sur un port USB du Raspberry Pi, plutôt que via un HUB USB, l'upload se fait correctement à chaque coup.

Merci à tous pour votre aide ;)