Gyrocam pour moto

Bonjour à tous!

Je suis depuis un moment à la recherche d’un moyen de faire une gyrocam (caméra qui utilise l’effet gyroscopique pour garder l’horizon quelque soit l’angle de la moto).

Je suis tombé sur un site fait par un retraité de chez IBM qui donne tout ce qu’il faut pour en construire une (les éléments électronique, les schémas du CI et le software).

Je me suis donc lancer… mais il y a un hic: il faut programmer les fuses d’un mircocontroleur (Atmega328p) et malgré avoir lu et relu plusieurs tuto, je dois avouer que c’est bien plus dur que je le pensais! (enfin pour moi qui ni connais strictement rien!)

Je sollicite donc votre aide, car non seulement la finalité (avoir une gyrocam) m’intéresse fortement depuis longtemps mais j’aimerai aussi comprendre d’avantage le coté programmation!

Alors voici le site en question: A Horizon-Stabilized Video Camera For Motorcycles

Dans la partie “Technical details” vous pourrez télécharger un zip contenant tout les codes nécessaire en cliquand sur “Here’s the source code”

Dans le fichier camera-setup-procedure.txt, vous pourrez lire la 1ere ligne qui me pose problème car elle n’est pas détaillé pour un novice comme moi: Program the AVR fuses for desired clock source [see notes in “./main.c”]

D’après les tutos que j’ai trouvé sur comment programmer un microcontrôleur AVR, il semble qu’il y ai plusieurs façon de le faire (arduino uno, breadboard avec port serie…) et avec plusieur logiciel différent (AVRstudio…)

Est ce que quelqu’un pourrait m’éclairer pas à pas sur la manière la plus simple à mettre en oeuvre pour programmer ces fusibles? Je serai tout ouie :)!!

totopio: D'après les tutos que j'ai trouvé sur comment programmer un microcontrôleur AVR, il semble qu'il y ai plusieurs façon de le faire (arduino uno, breadboard avec port serie...) et avec plusieur logiciel différent (AVRstudio...)

Est ce que quelqu'un pourrait m'éclairer pas à pas sur la manière la plus simple à mettre en oeuvre pour programmer ces fusibles? Je serai tout ouie :)!!

Bonsoir Ce n'est pas directement un environnement "arduino"

l'auteur utilise un autre IDE qui doit generer un .HEX hors bootloader , injecter un .HEX necessite un programmateur externe (qui peut etre un arduino)

Salut,

Tu as un exemple utilisant un Arduino à cette adresse. Ce sera peut être plus simple pour démarrer.

À plus,

-- N.

nicolasc_eu: Salut,

Tu as un exemple utilisant un Arduino à cette adresse. Ce sera peut être plus simple pour démarrer.

À plus,

-- N.

bonjour j'avais déjà vu cette realisation "arduino" il "semblerait" que la realisation de "l'ingé IBM retired" au vu des videos soit plus pointue en terme de positionnement (moins de saccades de positionnement)

Salut à vous deux! Merci pour vos réponses!

Artouste tu as raison, la gyrocam de l'ingé fonctionne bien mieux que l'autre!

Artouste: Bonsoir Ce n'est pas directement un environnement "arduino"

l'auteur utilise un autre IDE qui doit generer un .HEX hors bootloader , injecter un .HEX necessite un programmateur externe (qui peut être un arduino)

Dans son fichier "camera-setup" il précise que l'étape du bootloader est facultative et il précise que le code source du bootloader n'est pas inclus, mais j'en ai trouver un dans son zip:

// Atmega bootloader interface.
//

// size of xbee input buffer
//
#define XBEE_BUFFER_SIZE 202 

// size of a flash page on atmega target
//
#define LOADER_PAGE_SIZE 128

// make sure declarations match on host and target compilers
//
#ifdef SPM_PAGESIZE 
   // using atmega cross compiler
   #if LOADER_PAGE_SIZE != SPM_PAGESIZE
   #error declaration mismatch!
   #endif
#endif

// max data that atmega bootloader wants per transaction
//
//    LOADER_DATA_LIMIT
//       == LOADER_PAGE_SIZE
//          == SPM_PAGESIZE
//             == 128
//
//
#define LOADER_DATA_LIMIT LOADER_PAGE_SIZE

// loader transaction packet format
//
//    count (1 binary byte), 0 indicates eof
//    |  data (N binary bytes)
//    |  |
//    N  DDDDDDDDDDDDDDDDDDDDDDD
//
#define LOADER_PACKET_SIZE (1 + LOADER_DATA_LIMIT)

// sanity checks
//
#if LOADER_DATA_LIMIT > 255
#error data count would overflow 1 byte!
#endif

#if LOADER_PACKET_SIZE > XBEE_BUFFER_SIZE
#error xbee transmitter overrun risk!
#endif

// messages from atmega bootloader to host
//
#define LOADER_REQUEST_FIRST_BLOCK '!'
#define LOADER_REQUEST_NEXT_BLOCK  '*'
#define LOADER_ERROR               'E'

// messages from host to atmega application program
//
#define LOADER_REQUEST_REBOOT '

Est il complet? Que manque t-il?

J'ai cru comprendre dans ce tuto http://hardware-libre.fr/2014/02/fr-arduino-atmega-programmation-isp/ que le bootloader est là ou je programme les fusibles de l'atmega, donc il donne les paramètres dans le main.c :

// Fuse settings:
//
//  lfuse=d7 => external crystal    at 16MHz with brownout boot control
//  lfuse=e6 => external resonator  at 16MHz with brownout boot control
//  lfuse=c2 => internal oscillator at  8MHz with brownout boot control
//  hfuse=dc => my bootloader, spi programming enabled
//  efuse=04 => 4.3V brownout detection threshold

C'est "juste" cette histoire de bootloader et de fusibles qui me bloquent, le reste je pense pouvoir me débrouiller avec les tutos!

// parameters passed from bootloader to main(argc, argv) // argc is BOOTLOADER_MAGIC (indicating that bootloader is present on this chip) // argv is MCUSR register at time of startup (indicating reason for startup - ie. external-reset, watchdog-reset, etc.) //

define BOOTLOADER_MAGIC 0x1234


Est il complet? 
Que manque t-il?

J'ai cru comprendre dans ce tuto http://hardware-libre.fr/2014/02/fr-arduino-atmega-programmation-isp/ que le bootloader est là ou je programme les fusibles de l'atmega, donc il donne les paramètres dans le main.c :

§DISCOURSE_HOISTED_CODE_1§ ```

C'est "juste" cette histoire de bootloader et de fusibles qui me bloquent, le reste je pense pouvoir me débrouiller avec les tutos!