TPE terminal s


8 posts
by smartties » Thu Feb 14, 2013 1:10 pm
Salut, dans le cadre d'un projet scolaire, nous somme un groupe de 5 personnes,
devant réaliser un trieur de linge. Pour cela nous avons réalisé et simulé la partie
mécanique. Mais maintenant nous devons appliqué la partie robotique/electronique.
l’alimentations est fourni par le secteur. Nous disposons de 1 moteur, 1 capteurs de couleur
(les références ne sont pas encore défini, cela va déprendre de la compatibilité avec le raspberry)
puis 4 éjecteur electro-aimant.
Ce que je voudrais savoir : est il possible de diriger tous ces composants à partir d'un programme
fait sur le raspberry. Je programme moi même en C++ depuis 3 ans, je sais ce qui m'attend.
Donc si vous avez des tutoriels je suis preneur.

Merci
Posts: 11
Joined: Wed Dec 26, 2012 3:37 pm
by eephyne » Thu Feb 14, 2013 3:59 pm
Je ne m'y connais pas des masses en gpio et compagnie mais de ce que j'ai vu qui à été réalisé avec le rpi , je ne vois aucune raison que ça ne convienne pas
Posts: 15
Joined: Fri Dec 28, 2012 12:55 pm
by totoharibo » Thu Feb 14, 2013 5:09 pm
Seul problème : la conception électronique,

Côté soft, pas de problème.
Plusieurs solutions existent (et la doc est bien fournie) :
- en shell : gpio
- C wiringPi
- en python
Posts: 888
Joined: Thu Jan 24, 2013 8:43 am
by removebeforeflight » Thu Feb 14, 2013 6:20 pm
Tout cela est possible bien sur ! Tu peux disposer de 17 GPIO au maximum sur le RPi. Pour l'entrée du capteur optique, il y a un port CSI sur la carte, tu peux trouver une caméra compatible ou passer par une autre biais.
Visitez mon site Web : les aventures d'un apprenti pilote : http://dreamofflying.wordpress.com/
Posts: 42
Joined: Thu Nov 29, 2012 8:55 pm
by smartties » Thu Feb 14, 2013 6:38 pm
Merci, je pense plutot utiliser le language C, pour programmer.
j'ai trouvé quelque demo qui mon l'air tres simple :
Code: Select all
#define BCM2708_PERI_BASE        0x20000000
#define GPIO_BASE                (BCM2708_PERI_BASE + 0x200000) /* GPIO controller */


#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>

#define PAGE_SIZE (4*1024)
#define BLOCK_SIZE (4*1024)

int  mem_fd;
char *gpio_map;

// I/O access
volatile unsigned *gpio;


// GPIO setup macros. Always use INP_GPIO(x) before using OUT_GPIO(x) or SET_GPIO_ALT(x,y)
#define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3))
#define OUT_GPIO(g) *(gpio+((g)/10)) |=  (1<<(((g)%10)*3))
#define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3))

#define GPIO_SET *(gpio+7)  // sets   bits which are 1 ignores bits which are 0
#define GPIO_CLR *(gpio+10) // clears bits which are 1 ignores bits which are 0

void setup_io();

int main(int argc, char **argv)
{
  int g,rep;

  // Set up gpi pointer for direct register access
  setup_io();

  // Switch GPIO 7..11 to output mode

 /************************************************************************\
  * You are about to change the GPIO settings of your computer.          *
  * Mess this up and it will stop working!                               *
  * It might be a good idea to 'sync' before running this program        *
  * so at least you still have your code changes written to the SD-card! *
 \************************************************************************/

  // Set GPIO pins 7-11 to output
  for (g=7; g<=11; g++)
  {
    INP_GPIO(g); // must use INP_GPIO before we can use OUT_GPIO
    OUT_GPIO(g);
  }

  for (rep=0; rep<10; rep++)
  {
     for (g=7; g<=11; g++)
     {
       GPIO_SET = 1<<g;
       sleep(1);
     }
     for (g=7; g<=11; g++)
     {
       GPIO_CLR = 1<<g;
       sleep(1);
     }
  }

  return 0;

} // main


//
// Set up a memory regions to access GPIO
//
void setup_io()
{
   /* open /dev/mem */
   if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) {
      printf("can't open /dev/mem \n");
      exit(-1);
   }

   /* mmap GPIO */
   gpio_map = (char *)mmap(
      NULL,             //Any adddress in our space will do
      BLOCK_SIZE,       //Map length
      PROT_READ|PROT_WRITE,// Enable reading & writting to mapped memory
      MAP_SHARED,       //Shared with other processes
      mem_fd,           //File to map
      GPIO_BASE         //Offset to GPIO peripheral
   );

   close(mem_fd); //No need to keep mem_fd open after mmap

   if ((long)gpio_map < 0) {
      printf("mmap error %d\n", (int)gpio_map);
      exit(-1);
   }

   // Always use volatile pointer!
   gpio = (volatile unsigned *)gpio_map;


} // setup_io


Sauriez vous où je pourrais trouver des capteurs de couleur/ou autre composants
compatible avec le raspberry ? j'ai beau chercher je ne sais pas si le composant
est compatible avec le raspberry.

Merci
Posts: 11
Joined: Wed Dec 26, 2012 3:37 pm
by jelopo » Fri Feb 15, 2013 9:08 pm
Bonjour,

Il n'y a pas de composant spécifiquement compatible avec le Raspberry PI. Si tu utilises les GPIO, il faut des capteurs qui travaillent en 3,3V. Sinon, il faut réaliser un étage électronique de compatibilité de tension. Regarde du coté des forum Arduino par exemple.

Bon projet.
A+
Posts: 364
Joined: Wed Oct 17, 2012 7:53 pm
by fdufnews » Sat Feb 16, 2013 8:26 am
Posts: 151
Joined: Fri Oct 07, 2011 5:37 pm
by smartties » Wed Feb 20, 2013 4:20 pm
Salut, j'ai trouvé une librairie C, qui me permet de gère des composant en input/output.
Les composant que tu me propose sont des capteur de lumière, est ce que c'est la même
chose que des capteurs de couleurs ?
Posts: 11
Joined: Wed Dec 26, 2012 3:37 pm