Skip to content
Snippets Groups Projects
Commit 32ccac0a authored by Chauchat Eymeric's avatar Chauchat Eymeric
Browse files

ajout Septembre 2022

parent d57b5403
Branches
No related tags found
No related merge requests found
Showing
with 3141 additions and 0 deletions
/*
* See documentation at https://nRF24.github.io/RF24
* See License information at root directory of this library
* Author: Brendan Doherty (2bndy5)
*/
/**
* A simple example of sending data from 1 nRF24L01 transceiver to another.
*
* This example was written to be used on 2 devices acting as "nodes".
* Use the Serial Monitor to change each node's behavior.
*/
#include <SPI.h>
#include "printf.h"
#include "RF24.h"
// instantiate an object for the nRF24L01 transceiver
RF24 radio(10, 9); // using pin 7 for the CE pin, and pin 8 for the CSN pin
// Let these addresses be used for the pair
uint8_t address[][6] = { "1Node", "2Node" };
// It is very helpful to think of an address as a path instead of as
// an identifying device destination
// to use different addresses on a pair of radios, we need a variable to
// uniquely identify which address this radio will use to transmit
bool radioNumber = 1; // 0 uses address[0] to transmit, 1 uses address[1] to transmit
// Used to control whether this node is sending or receiving
bool role = false; // true = TX role, false = RX role
// For this example, we'll be using a payload containing
// a single float number that will be incremented
// on every successful transmission
float payload = 0.0;
void setup() {
Serial.begin(115200);
while (!Serial) {
// some boards need to wait to ensure access to serial over USB
}
// initialize the transceiver on the SPI bus
if (!radio.begin()) {
Serial.println(F("radio hardware is not responding!!"));
while (1) {} // hold in infinite loop
}
// print example's introductory prompt
Serial.println(F("RF24/examples/GettingStarted"));
// To set the radioNumber via the Serial monitor on startup
Serial.println(F("Which radio is this? Enter '0' or '1'. Defaults to '0'"));
while (!Serial.available()) {
// wait for user input
}
char input = Serial.parseInt();
radioNumber = input == 1;
Serial.print(F("radioNumber = "));
Serial.println((int)radioNumber);
// role variable is hardcoded to RX behavior, inform the user of this
Serial.println(F("*** PRESS 'T' to begin transmitting to the other node"));
// Set the PA Level low to try preventing power supply related problems
// because these examples are likely run with nodes in close proximity to
// each other.
radio.setPALevel(RF24_PA_LOW); // RF24_PA_MAX is default.
// save on transmission time by setting the radio to only transmit the
// number of bytes we need to transmit a float
radio.setPayloadSize(sizeof(payload)); // float datatype occupies 4 bytes
// set the TX address of the RX node into the TX pipe
radio.openWritingPipe(address[radioNumber]); // always uses pipe 0
// set the RX address of the TX node into a RX pipe
radio.openReadingPipe(1, address[!radioNumber]); // using pipe 1
// additional setup specific to the node's role
if (role) {
radio.stopListening(); // put radio in TX mode
} else {
radio.startListening(); // put radio in RX mode
}
// For debugging info
// printf_begin(); // needed only once for printing details
// radio.printDetails(); // (smaller) function that prints raw register values
// radio.printPrettyDetails(); // (larger) function that prints human readable data
} // setup
void loop() {
if (role) {
// This device is a TX node
unsigned long start_timer = micros(); // start the timer
bool report = radio.write(&payload, sizeof(float)); // transmit & save the report
unsigned long end_timer = micros(); // end the timer
if (report) {
Serial.print(F("Transmission successful! ")); // payload was delivered
Serial.print(F("Time to transmit = "));
Serial.print(end_timer - start_timer); // print the timer result
Serial.print(F(" us. Sent: "));
Serial.println(payload); // print payload sent
payload += 0.01; // increment float payload
} else {
Serial.println(F("Transmission failed or timed out")); // payload was not delivered
}
// to make this example readable in the serial monitor
delay(1000); // slow transmissions down by 1 second
} else {
// This device is a RX node
uint8_t pipe;
if (radio.available(&pipe)) { // is there a payload? get the pipe number that recieved it
uint8_t bytes = radio.getPayloadSize(); // get the size of the payload
radio.read(&payload, bytes); // fetch payload from FIFO
Serial.print(F("Received "));
Serial.print(bytes); // print the size of the payload
Serial.print(F(" bytes on pipe "));
Serial.print(pipe); // print the pipe number
Serial.print(F(": "));
Serial.println(payload); // print the payload's value
}
} // role
if (Serial.available()) {
// change the role via the serial monitor
char c = toupper(Serial.read());
if (c == 'T' && !role) {
// Become the TX node
role = true;
Serial.println(F("*** CHANGING TO TRANSMIT ROLE -- PRESS 'R' TO SWITCH BACK"));
radio.stopListening();
} else if (c == 'R' && role) {
// Become the RX node
role = false;
Serial.println(F("*** CHANGING TO RECEIVE ROLE -- PRESS 'T' TO SWITCH BACK"));
radio.startListening();
}
}
} // loop
Documentation/Pre-projet/Custom Dongle/Wiring.png

16.3 KiB

\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\babel@aux[2]{}
\@nameuse{bbl@beforestart}
\catcode `:\active
\catcode `;\active
\catcode `!\active
\catcode `?\active
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\pgfsyspdfmark {pgfid2}{0}{38412394}
\pgfsyspdfmark {pgfid3}{0}{37462122}
\babel@aux{french}{}
\@writefile{toc}{\contentsline {section}{\numberline {1}Présentation}{1}{section.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2}Construction}{1}{section.2}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Câblage possible d'une nrf24l01 avec une arduino nano\relax }}{2}{figure.caption.2}\protected@file@percent }
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{fig:wiring}{{1}{2}{Câblage possible d'une nrf24l01 avec une arduino nano\relax }{figure.caption.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3}Script de contrôle}{2}{section.3}\protected@file@percent }
\gdef \@abspage@last{3}
This diff is collapsed.
\BOOKMARK [1][-]{section.1}{\376\377\000P\000r\000\351\000s\000e\000n\000t\000a\000t\000i\000o\000n}{}% 1
\BOOKMARK [1][-]{section.2}{\376\377\000C\000o\000n\000s\000t\000r\000u\000c\000t\000i\000o\000n}{}% 2
\BOOKMARK [1][-]{section.3}{\376\377\000S\000c\000r\000i\000p\000t\000\040\000d\000e\000\040\000c\000o\000n\000t\000r\000\364\000l\000e}{}% 3
File added
File added
\documentclass{EPSA-rap-template}
\type{Présentation}
\titresize{\LARGE} % ne pas hésiter a changer la taille :
%\normalsize
%\large
%\Large
%\LARGE
%\huge
%\Huge
%\HUGE
\titre{Dongle de contrôle}
\departement{Recherche}
\auteurs{Eymeric \textbf{Chauchat}}
\version{V1.0}
\versionnement{
\ver{V1.0}{25 aout 2022}{ ECT }{Rédaction initiale.}{1}
}
\setuppack
\begin{document}
\fairepagedegarde
\newpage
\tableofcontents
\section{Présentation}
Ce document va présenter la réalisation du Dongle de contrôle de la voiture RC et du script permettant son arrêt d'urgence et sa commande si l'on choisit une intelligence déporté.
Le Dongle est composé d'une arduino Nano, d'une carte nrf24l01 et d'un bouton poussoir. Il va permettre de contrôler en temps réel la voiture et de récupérer des informations des différents capteurs.
\section{Construction}
Le câblage suit celui d'une carte nrf24l01 basique (Figure \ref{fig:wiring}). La carte se branche ensuite directement à l'ordinateur qui va la contrôler soit directement grâce à l'invité port série d'arduino ou au travers d'un script python.
\begin{figure}
\centering
\includegraphics[width=0.4\textwidth]{Wiring.png}
\caption{Câblage possible d'une nrf24l01 avec une arduino nano}
\label{fig:wiring}
\end{figure}
\section{Script de contrôle}
\end{document}
\ No newline at end of file
\babel@toc {french}{}\relax
\contentsline {section}{\numberline {1}Présentation}{1}{section.1}%
\contentsline {section}{\numberline {2}Construction}{1}{section.2}%
\contentsline {section}{\numberline {3}Script de contrôle}{2}{section.3}%
File added
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\babel@aux[2]{}
\@nameuse{bbl@beforestart}
\catcode `:\active
\catcode `;\active
\catcode `!\active
\catcode `?\active
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\pgfsyspdfmark {pgfid3}{0}{38412394}
\pgfsyspdfmark {pgfid4}{0}{37462122}
\babel@aux{french}{}
\@writefile{toc}{\contentsline {section}{\numberline {1}Mise en contexte}{1}{section.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2}Introduction}{1}{section.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3}Organisation Macro}{2}{section.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4}Déroulé macro de l'année}{2}{section.4}\protected@file@percent }
\gdef \@abspage@last{3}
This diff is collapsed.
\BOOKMARK [1][-]{section.1}{\376\377\000M\000i\000s\000e\000\040\000e\000n\000\040\000c\000o\000n\000t\000e\000x\000t\000e}{}% 1
\BOOKMARK [1][-]{section.2}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 2
\BOOKMARK [1][-]{section.3}{\376\377\000O\000r\000g\000a\000n\000i\000s\000a\000t\000i\000o\000n\000\040\000M\000a\000c\000r\000o}{}% 3
\BOOKMARK [1][-]{section.4}{\376\377\000D\000\351\000r\000o\000u\000l\000\351\000\040\000m\000a\000c\000r\000o\000\040\000d\000e\000\040\000l\000'\000a\000n\000n\000\351\000e}{}% 4
File added
File added
\documentclass{EPSA-rap-template}
\type{Présentation}
\titresize{\Large} % ne pas hésiter a changer la taille :
%\normalsize
%\large
%\Large
%\LARGE
%\huge
%\Huge
%\HUGE
\titre{ Démonstrateur FASTBOT-AutoDrive v1.0}
\titresh{ Démonstrateur FASTBOT-AutoDrive}
\departement{Direction Recherche \& Innovation EPSA}
\departementsh{ R\& I}
\auteurs{Eymeric \textbf{Chauchat}}
\version{V1.0}
\versionnement{
\ver{V1.1}{4 Septembre 2022}{ ECT }{Changement de titre.}{2}
\ver{V1.0}{31 août 2022}{ ECT }{Rédaction initiale.}{1}
}
\setuppack
\begin{document}
\fairepagedegarde
\newpage
\tableofcontents
\section{Mise en contexte}
En 2022 les règles du concours de formula student ont évolué et ont pour la première fois dans l'histoire du FS rendu obligatoire les épreuves driverless (conduite autonome) pour la catégorie de véhicule électrique.
Ce changement à pour conséquence de donner un très fort malus aux équipes FS ne possèdent pas de Driverless sur leur véhicule (0 points sur le DV-skidpad et sur le DV-acceleration). L'EPSA faisant parti de cette catégorie, il faut trouver au plus vite une solution pour permettre de développer en parallèle de voiture FS un système de conduite autonome pour voiture.
L'EPSA dans son projet principal à pour l'instant énormément de mal à réunir des élèves ingénieurs talentueux en électronique et en programmation du à sa propension à la réalisation mécanique et à son passé dans les FS thermiques.
\section{Introduction}
L'idée a donc émergé d'essayer d'organiser un Pae satellite composé exclusivement de passionné d'informatique pour permettre un travail sur le sujet. Les nouveaux membres de ce projet auront pour exclusif but de préparer un système de détection et un algorithme permettant la conduite autonome d'un véhicule radio commandé.
Ce véhicule radio commandé taille un seizième possède des performances se rapprochant à son échelle d'une Formula Student électrique.
Pour bien sûre garder le lien total avec le Formula Student, la voiture devra être autonome uniquement et spécifiquement sur des répliques des épreuves de Formula Student à l'échelle un seizième.
Sachant que le but du projet est de principalement programmer, la voiture va être pré-préparer pour être commandable par des cartes de contrôles modernes.
\section{Organisation Macro}
Le projet bien que dirigé par l'EPSA sera de la forme d'un Pae classique centralien : il sera composé de 5-7 membres. Il possèdera en plus des revues centralienne, son propre système de jalonnement TOP avec de plus une liaison hebdomadaire avec la direction EPSA (lors de la séance de Pae).
Un nouveau professeur référent a été cherché : M.Deveautour plus en lien direct avec la recherche et qui aura un rôle principal de conseiller stratégique du projet.
\section{Déroulé macro de l'année}
Le projet sera durant l'année séparé en groupe de travail qui bien que lié dans la finalité travailleront de manière semi-indépendante.
Durant la première phase de l'année la première tâche sera de trouver pour la première équipe de trouver un moyen d'acquérir le flux vidéo sur l'intelligence (qui pourra être ou non embarqué) et pour l'autre de développer une simulation de comportement de la voiture pour pouvoir entrainer les différents algorithmes dessus (espace 3D où peut évoluer une réplique numérique de la voiture). (jusqu'à fin Octobre)
La deuxième phase de l'année sera principalement axée sur le développement de la solution. La première équipe devra réussir à extraire du flux vidéo la position de la voiture dans l'espace et par rapport aux obstacles, tandis que la seconde mettra en place un algorithme qui permettra à partir de la position de la voiture par rapport aux obstacles, de la contrôler de manière autonome dans la simulation. (jusqu'à mi-février)
La troisième phase du projet est la plus courte. Elle aura pour but de réunir les deux parties du projet pour pouvoir réaliser une série de test de l'algorithme de détection et de contrôle sur la voiture radio-commandé. C'est en ce sens que les deux groupes restent lié car il est nécessaire que à l'aube de la troisième phase le résultat de l'algorithme de détection soit l'entrée de l'algorithme de contrôle
\end{document}
\ No newline at end of file
\babel@toc {french}{}\relax
\contentsline {section}{\numberline {1}Mise en contexte}{1}{section.1}%
\contentsline {section}{\numberline {2}Introduction}{1}{section.2}%
\contentsline {section}{\numberline {3}Organisation Macro}{2}{section.3}%
\contentsline {section}{\numberline {4}Déroulé macro de l'année}{2}{section.4}%
Documentation/Pre-projet/Resume/Arduino Nano scheme.png

50.3 KiB

File added
Documentation/Pre-projet/Resume/Wiring.png

16.3 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment