« SE3Groupe2024-5 » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
== Description == | == Description == | ||
Ligne 42 : | Ligne 42 : | ||
[[Fichier:Vue-3D-sonar.pdf|alt=Vue 3D de la carte|gauche|vignette|Vue 3D du routage]] | [[Fichier:Vue-3D-sonar.pdf|alt=Vue 3D de la carte|gauche|vignette|Vue 3D du routage]] | ||
<p style="clear: both;" /> | <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;" /> | <p style="clear: both;" /> |
Version du 13 avril 2025 à 00:00
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
Routage
Vue 3D
CAO de la carte du sonar
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:
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;
Tests
Rendus
Archive GIT
Autres rendus
Projet KiCad programmateur AVR : Fichier:SE3-2024-G5-prog-kicad.zip