Le Papoteur Liste des participants Méthodo Scénario d'usage Documentation Photos PITCH
Documentation technique du projet "Le Papoteur"

Matériel utilisé


Prise Jack
Potentiomètre
Enceinte Bluetooth
Micro Bluetooth
Entrée
Alimentation 5V 1A
Bouton Like/Dislike [3D Printed]
LED RGB
LED Rouge
LED Verte
Carte Raspberry Pi 3 B
Capteur Optocoupleur

Technologies utilisées


Editeur de Texte
Wifi
Bluethooth
Imprimante 3D
Découpeuse laser

Description technique du projet


Résumé

Nous sommes partis sur une raspberry Pi seule comme carte principale car nous avions besoin d'un accès réseau, de pouvoir interagir avec des LEDs et des boutons poussoirs, d'une entrée son ainsi que d'une sortie son.
-La partie réseau est assurée par le module Wi-Fi
-L'ampli et le haut parleur sont branchés sur la sortie Jack
-La voix est récupérée via une oreillette sans fil branchée sur le module Bluetooth
-Les boutons poussoirs et l'optocoupleur sont branchés sur les GPIO

Diagramme fonctionnel

image flowPapoteur.jpg (39.7kB)
fonctionnement général

Schéma de montage

image SchmaMontage.jpg (56.2kB)
Schéma de montage

Code principal



#define BP_NON   0
#define BP_OUI   1
#define ROULETTE 2

#define LED_R 3
#define LED_G 4
#define LED_B 5

#include <wiringPi.h>
#include <stdio.h>

//gcc -Wall -o fake.app -lwiringPi main.c
//g++ -c code_Pi.cpp && g++ code_Pi.o -o faaaake.app && ./faaaake.app
//https://discordapp.com/channels/523531879010271252/523531879010271262

void allOff();
void blink();

int statusRoulette=0;
int configLed=0;
int rouletteLancee=0;

int main (void)
{
  wiringPiSetup();
  pinMode (BP_OUI, INPUT);
  pinMode (BP_NON, INPUT);
  pinMode (ROULETTE, INPUT);
  pinMode (LED_R, OUTPUT);
  pinMode (LED_G, OUTPUT);
  pinMode (LED_B, OUTPUT);

  statusRoulette=digitalRead(ROULETTE);//LOW

  while(1)
  {
  	if(digitalRead(ROULETTE)!=statusRoulette)
  	{
  		//lanch appel
	  	system("chromium-browser --app=https://discordapp.com/channels/523531879010271252/523531879010271262 &");
	  	
  		for(int i=0; i<20; i++)
  		{
    		blink();
    		delay(150);
  		}
  		rouletteLancee=1;
  	}

  	if(rouletteLancee==1)
  	{
	  	
	  	//detect stop appel
	  	while(digitalRead(BP_OUI)!=LOW && digitalRead(BP_NON)!=LOW){}

	  	system("killall chromium-browser");
	  	
	  	//test
	  	
  		statusRoulette=digitalRead(ROULETTE);

		digitalWrite(LED_R, LOW);
		digitalWrite(LED_G, LOW);
		digitalWrite(LED_B, LOW);
	}
	rouletteLancee=0;
  }

  
  return 0 ;
}

void blink()
{
	switch(configLed)
	{
		case 0:
		allOff();
		digitalWrite(LED_R, HIGH);
		configLed++;
		break;

		case 1:
		allOff();
		digitalWrite(LED_R, HIGH);
		digitalWrite(LED_G, HIGH);
		configLed++;
		break;

		case 2:
		allOff();
		digitalWrite(LED_G, HIGH);
		configLed++;
		break;

		case 3:
		allOff();
		digitalWrite(LED_G, HIGH);
		digitalWrite(LED_B, HIGH);
		configLed++;
		break;

		case 4:
		allOff();
		digitalWrite(LED_B, HIGH);
		configLed++;
		break;

		case 5:
		allOff();
		digitalWrite(LED_B, HIGH);
		digitalWrite(LED_R, HIGH);
		configLed=0;
		break;

		default:
		break;
	}
}

void allOff()
{
	digitalWrite(LED_R, LOW);
	digitalWrite(LED_G, LOW);
	digitalWrite(LED_B, LOW);
}


code volume


#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LOWER    10
#define HIGHER   11
#define DELAY    100

//gcc -Wall -o Volume.app -lwiringPi main.c

int volume=50;
char volStr[2]={'5','0'};
char cmd[100]={0};

int main() 
{
  // put your setup code here, to run once:
  wiringPiSetup();

  pinMode(LOWER, INPUT);
  pinMode(HIGHER, INPUT);


  while(1) 
  {
    // put your main code here, to run repeatedly:
    if(digitalRead(LOWER)==LOW)
    {
      if(volume>=10) volume-=10;
      
      //conversion to str
      volStr[0]=volume/10;
      volStr[1]=volume%10;

      strcpy(cmd, "amixer sset PCM Playback Volume ");
      strcat(cmd, volStr);
      strcat(cmd, ".0%");

      system(cmd);

      delay(DELAY);
    }
    if(digitalRead(HIGHER)==LOW)
    {
      if(volume<=89) volume+=10;

      //conversion to str
      volStr[0]=volume/10;
      volStr[1]=volume%10;

      strcpy(cmd, "amixer sset PCM Playback Volume ");
      strcat(cmd, volStr);
      strcat(cmd, ".0%");

      system(cmd);
      
      delay(DELAY);
    }
  }
  return 0;
}





Retour