Composants
Code ESP32-C3
Branchements
Réalisation
Composants
Après la théorie, la pratique!
Très impressionné par la taille de l'ESP32-C3 Super-mini USB-C
Et après avoir tout branché, il restera encore 9 pins libres.
Test de bon fonctionnement la LED qui clignote:

Ça avance doucement. Au moins caméra et écran fonctionnent, sur batterie de voiture 12V.
Brancher la caméra sur l'écran n'a pas été si simple.
Content de voir que slip ring, et les engrenages en PLA marchent bien avec un peu de vaseline.
Maintenant il faut finaliser les modèles
- boitier de commande: en plus épais (il a cassé près d'un bouton poussoir)
- stator: assez stable pour tenir à plat sur la table
- rotor: mieux tenir la caméra
Puis tout souder, fixer dehors, supporter la pluie et un vent de 110Km/h.
/* TEST BOUTON POUSSOIR
Branchement
Gnd → vers une borne du bouton
GPIO4 → vers l'autre borne du bouton
Tous les pins GPIO peuvent être utilisé en digital.
mais sur ESPWROOM32 GPIO34,35,36,39 ne sont qu'en lecture
En mode Pull-Up,
quand le bouton n'est pas pressé le pin est sur HIGH.
quand il est pressé le pin est sur LOW.
*/
#define BOUTON 4
void setup() {
Serial.begin(115200);
pinMode(BOUTON, INPUT_PULLUP);
}
void loop() {
if(digitalRead(BOUTON) == LOW){
Serial.println("Pressé");
}
delay(100);
}
/* TEST SERVO SG90 360°
Installer la librairie ServoESP32 https://github.com/madhephaestus/ESP32Servo
Branchements:
+ → pin 5V (rouge)
- → Gnd (marron)
Data → pin 3 (jaune)
*/
#include <ESP32Servo.h>
Servo sg90;
void setup() {
sg90.attach(3);
}
void loop() {
sg90.write(89); // à droite lent
delay(3000);
sg90.write(0); // à droite rapide
delay(3000);
sg90.write(100); // à gauche lent
delay(3000);
sg90.write(180); // à gauche rapide
delay(3000);
}
/* PUSH BUTTON + SERVO
Branchements:
5V → le câble rouge du servo
Gnd → vers une borne du bouton, et le marron du servo
GPIO3 → vers l'autre borne du bouton
GPIO4 → data du servo (jaune)
*/
#include <ESP32Servo.h>
Servo sg90;
#define BOUTON_DROIT 3
void setup() {
sg90.attach(4);
pinMode(BOUTON_DROIT, INPUT_PULLUP);
}
void loop() {
if(digitalRead(BOUTON_DROIT) == LOW){
sg90.write(100); // à droite lent
//sg90.write(180); // à droite rapide
//sg90.write(89); // à gauche lent
//sg90.write(0); // à gauche rapide
}
delay(100);
}
/* PUSH BUTTON + POTENTIOMÈTRE pour régler la vitesse + SERVO
Branchements:
5V → le câble rouge du servo, une borne du pot
Gnd → vers une borne du bouton, une borne du pot, et le marron du servo
GPIO2 → borne du milieu du potentiomètre
GPIO3 → vers l'autre borne du bouton
GPIO4 → data du servo (jaune)
*/
#include <ESP32Servo.h>
Servo sg90;
#define BOUTON_DROIT 3
#define POTAR 2
void setup() {
sg90.attach(4);
pinMode(BOUTON_DROIT, INPUT_PULLUP);
}
void loop() {
if(digitalRead(BOUTON_DROIT) == LOW){
int potValue = analogRead(POTAR);
int pos = map(potValue, 0,4095, 100,180);
sg90.write(pos);
}
delay(100);
}
/* 2X PUSH BUTTON + POTENTIOMÈTRE pour régler la vitesse + SERVO
Si les deux boutons sont pressés en même temps, le servo ira à droite.
Branchements:
5V → le câble rouge du servo, une borne du pot
Gnd → vers une borne de chaque bouton, une borne du pot, et le marron du servo
GPIO2 → borne du milieu du potentiomètre
GPIO1 → vers l'autre borne du bouton gauche
GPIO3 → vers l'autre borne du bouton droit
GPIO4 → data du servo (jaune)
*/
#include <ESP32Servo.h>
Servo sg90;
#define BOUTON_GAUCHE 1
#define POTAR 2
#define BOUTON_DROIT 3
void setup() {
sg90.attach(4);
pinMode(BOUTON_GAUCHE, INPUT_PULLUP);
pinMode(BOUTON_DROIT , INPUT_PULLUP);
}
void loop() {
if (digitalRead(BOUTON_DROIT) == LOW){
int potValue = analogRead(POTAR);
int pos = map(potValue, 0,4095, 100,180);
sg90.write(pos);
}
else if(digitalRead(BOUTON_GAUCHE) == LOW)
sg90.write(map(analogRead(POTAR), 0,4095, 89,0));
delay(100);
}