« SE3Groupe2024-5 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
(ajout lien git sonar)
 
(7 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
== Description ==
== Description ==


Ligne 30 : Ligne 32 :


=== Schématique ===
=== Schématique ===
[[Fichier:Schematique-sonar.pdf|alt=schématique de la carte|gauche|vignette|schématique de la carte de pilotage du sonar]]
<p style="clear: both;" />


=== Routage ===
[[Fichier:Routage-sonar.pdf|alt=image du routage de la carte|gauche|vignette|capture d'écran du routage du sonar]]
<p style="clear: both;" />
<p style="clear: both;" />


=== Routage ===
=== Vue 3D ===
[[Fichier:Vue-3D-sonar.pdf|alt=Vue 3D de la carte|gauche|vignette|Vue 3D du routage]]
<p style="clear: both;" />
=== CAO de la carte du sonar ===
[[Fichier:Sonar.zip|vignette]]
<p style="clear: both;" />


=== Réalisation ===
=== Réalisation ===
 
<p style="clear: both;" />
=== Matériel ===
=== Matériel ===




CD4543 en DIP-16
CD4543 en DIP-16
<p style="clear: both;" />
== Programmation ==


== Programmation ==
<p style="clear: both;" />


== Programmateur AVR ==
== Programmateur AVR ==
Ligne 111 : Ligne 124 :


=== Archive GIT ===
=== Archive GIT ===
https://gitea.plil.fr/abiernac/SE3_2024_B5.git


=== Autres rendus ===
=== Autres rendus ===

Version actuelle datée du 15 avril 2025 à 14:59


Description

Objectif

Concevoir et réaliser un mini sonar à partir d'un émetteur-récepteur ultrason, avec un traitement des données effectué par un micro-contrôleur. Les données seront ensuite communiquées par ondes radio à un ordinateur. Le système devra être capable de fonctionner aussi bien sur batterie que connecté en USB à un ordinateur, et devra au minimum comporter des LED d'indication.

Cahier des charges

  • Contrôle et traitement des informations de l'émetteur-récepteur ultrason
  • Pilotage par moteur de l'angle de l'émetteur-récepteur ultrason
  • Retour de l'information par des LED sur la carte
  • Gestion de l'alimentation par USB
  • Communication sans fil avec un ordinateur
  • Gestion de l'alimentation sur batterie
  • Interface pour visualiser les informations sur ordinateur

Spécification techniques

  • angle de détection large (-90°,90°)
  • deux émetteurs/récepteurs à ultrason HC-SR04
  • Recharge par USB
  • transmission des données par onde radio via un module RF (NRFL2401)
  • Batteries Li-ion
  • une LED tricolore, pour notamment informer des différents niveaux de batterie
  • un afficheur 7 segments pour le débogage
  • interface machine via une application python
  • microcontroleur atmega

Carte électronique

Schématique

schématique de la carte
schématique de la carte de pilotage du sonar

Routage

image du routage de la carte
capture d'écran du routage du sonar

Vue 3D

Vue 3D de la carte
Vue 3D du routage

CAO de la carte du sonar

Fichier:Sonar.zip

Réalisation

Matériel

CD4543 en DIP-16

Programmation

Programmateur AVR

Tests allumage des LEDs

Lorsque nous avons fini de souder les composants sur la carte, nous avons voulu tester que la carte fonctionnait correctement, c'est pourquoi nous avons écrit un petit programme permettant l'allumage des leds jaunes(une qui s'allume à l'appui sur le bouton bleu traversant, une qui clignote à 10 Hz).

//avr-gcc -mmcu=atmega8u2 -Wall -Werror -I. -DF_CPU=16000000 -Os -o blink.elf blink.c
//avr-objcopy -j .text -j .data -O ihex blink.elf blink.hex
// avrdude -v -patmega8u2 -carduino -b115200 -P/dev/ttyACM0 -U flash:w:blink.hex
#include <avr/io.h>
#include <util/delay.h>
int main(void){
CLKSEL0 = 0b00010101;   // sélection de l'horloge externe
CLKSEL1 = 0b00001111;   // minimum de 8Mhz
CLKPR = 0b10000000;     // modification du diviseur d'horloge (CLKPCE=1)
CLKPR = 0;              // 0 pour pas de diviseur (diviseur de 1)
DDRD |= 0x00;                // Sortie pour la LED
DDRC=0x24;             // Entrée pour le bouton          

while(1){
  if(PIND & 0x40) PORTC =0x20;      // LED éteinte
  else PORTC |= 0x00;                  // LED allumée
  }
  PORTC^=0x04;
  _delay_ms(100);
}

Une fois le code compilé et uploadé, on obtient le résultat suivant:

Allumage de 2 LEDs sur la carte.
Pour que le microcontroleur se comporte comme un programmateur AVR USB, il faut d'abord qu'il puisse être reconnu comme un appareil USB, c'est pourquoi nous avons utilisé la bibliothèque LUFA et avons programmé notre carte avec le code qui suit pour qu'il puisse communiquer en USB:
MCU          = atmega8u2
ARCH         = AVR8
BOARD        = NONE
F_CPU        = 16000000
F_USB        = $(F_CPU)
OPTIMIZATION = s
TARGET       = VirtualSerial
SRC          = $(TARGET).c Descriptors.c $(LUFA_SRC_USB)
LUFA_PATH    = ../../LUFA
CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/
LD_FLAGS     =
	char*       ReportString    = NULL;
	static bool ActionSent      = false;
	static bool button = false;

	/* Device must be connected and configured for the task to run */
	if (USB_DeviceState != DEVICE_STATE_Configured)
	  return;
	/* Determine if a joystick action has occurred */
	if (!(PIND & 0x40)){
          if(!button){
	    ReportString = "BOUTON PRESSE\r\n";
	    ActionSent=false;
	    }
          button=true;
          }
        else button=false;
En faisant un lsusb, on observe que la carte est reconnue comme un appareil USB, configuré d'après les fichiers de configuration de la LUFA.
carte apparaissant comme appareil USB
Le résultat est présenté dans la vidéo ci-dessous:
Communication USB entre ISP et PC visualisée via minicom

Tests

Rendus

Archive GIT

https://gitea.plil.fr/abiernac/SE3_2024_B5.git

Autres rendus

SE3 2024 G5 prog schema.pdf
SE3 2024 G5 prog PCB.png

Projet KiCad programmateur AVR : Fichier:SE3-2024-G5-prog-kicad.zip