Wifi - web server
D1 mini V4.0.0
Official doc : https://www.wemos.cc/en/latest/d1/d1_mini.html
IDE Arduino config.
Piezo sensor - bip!
#define pinPiezo 0
void setup() {
// initialise les broches
pinMode(pinPiezo, OUTPUT);
}
void bip(int note, int note_delay){
tone (pinPiezo, note);
delay(note_delay);
noTone(pinPiezo);
}
void loop() {
bip(600,100);
bip(900,100);
delay(4000);
}
Led
See https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(2, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Servo
See https://docs.arduino.cc/learn/electronics/servo-motors
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
void setup() {
myservo.attach(15,500,2500); // change
}
void SetPos(int pos){
myservo.write(pos);
}
void loop() {
SetPos(0);
delay(2000);
SetPos(45);
delay(2000);
SetPos(90);
delay(2000);
SetPos(180);
delay(2000);
}
IR distance sensor
const int digital_pin = 12;
const int analog_pin = A0;
void setup(){
Serial.begin(9600);
pinMode(digital_pin,INPUT);
}
void loop(){
Serial.print("Analog Reading=");
Serial.print(analogRead(analog_pin));
Serial.print("\t Digital Reading=");
Serial.println(digitalRead(digital_pin));
delay(10);
}
Warning
The digital pin (12) never goes to 1, no idea why!
Use REST API
Install https://www.arduino.cc/reference/en/libraries/arest/ To use ESP8266 (here D1 mini), add a specific module (see below the excerpt from the documentation)
Info
For ESP8266 (here D1 mini) add a new module:
For WiFi using the ESP8266 chip
To use the library with the ESP8266 WiFi chip you will need to install the required module from the Boards Manager of the Arduino IDE. These are the steps to install the ESP8266 package inside the Arduino IDE:
Start the Arduino IDE and open the Preferences window Enter http://arduino.esp8266.com/stable/package_esp8266com_index.json into the Additional Board Manager URLs field. You can add multiple URLs, separating them with commas. Open the Boards Manager from Tools > Board menu and install the esp8266 package (and after that don't forget to select your ESP8266 board from Tools > Board menu).
ESP8266 D1 mini
Wire
#define PIN_LED 5
#define PIN_DIGITAL_IR 12
#define PIN_ANALOG_IR A0
#define PIN_PIEZO 14
#define PIN_SERVO 16
Nano NRF24
Don't Work because there only one bidirectionnal node (nomber 0).
Source
https://passionelectronique.fr/tutorial-nrf24l01/
Wire
"Concernant les broches CE et CSN, il y a bien d’autres endroit où vous pourriez les brancher. Je pense notamment aux broches D9 et D10, par exemple. Mais avant de faire quel que changement que ce soit, réfléchissez bien à l’usage que vous ferez des autres pins. Par exemple, si vous utilisez un servomoteur piloté via ondes radios avec un nRF24L01+, sachez que la librairie « servo.h » qui permet de les piloter ne permet pas de les brancher sur n’importe quelles broches. Et justement, ceux-ci ne peuvent être « attachés » qu’aux bornes 9 et 10 d’un arduino uno, ou arduino nano. Comme quoi, il faut toujours lister tous ses besoins, avant d’attribuer telle ou telle pin d’entrée ou sortie à tel ou tel périphérique !"
Reciever
/*
01/11/2023
Code inspired by :
Fichier: HelloWorldNRF24L01-Recepteur
Description: Réception d'un message "Hello World" depuis un autre arduino nano, via un NRF24L01
Auteur: Passion-Électronique
Librairie utilisée : https://github.com/nRF24/RF24
*/
#include <SPI.h>
#include <RF24.h>
#define pinCSN 7 // On associe la broche "CSN" du NRF24L01 à la sortie digitale D7 de l'arduino
#define pinCE 8 // On associe la broche "CE" du NRF24L01 à la sortie digitale D8 de l'arduino
#define tunnel "PIPE1" // On définit le "nom de tunnel" (5 caractères) à travers lequel on va recevoir les données de l'émetteur
RF24 radio(pinCE, pinCSN); // Instanciation du NRF24L01
const byte adresse[6] = tunnel; // Mise au format "byte array" du nom du tunnel
char message[32]; // Avec cette librairie, on est "limité" à 32 caractères par message
#define LED_YELLOW_PIN 5
#define LED_GREEN_PIN 6
void setup() {
Serial.begin(9600);
Serial.println("Récepteur NRF24L01");
Serial.println("");
pinMode(LED_GREEN_PIN, OUTPUT);
pinMode(LED_YELLOW_PIN, OUTPUT);
for (int i=0; i < 4; i++) {
digitalWrite(LED_GREEN_PIN, HIGH);
delay(100);
digitalWrite(LED_GREEN_PIN, LOW);
digitalWrite(LED_YELLOW_PIN, HIGH);
delay(100);
digitalWrite(LED_YELLOW_PIN, LOW);
Serial.println(i);
}
digitalWrite(LED_GREEN_PIN, HIGH);
// Partie NRF24
radio.begin(); // Initialisation du module NRF24
radio.openReadingPipe(0, adresse); // Ouverture du tunnel en LECTURE, avec le "nom" qu'on lui a donné
radio.setPALevel(RF24_PA_MIN); // Sélection d'un niveau "MINIMAL" pour communiquer (pas besoin d'une forte puissance, pour nos essais)
radio.startListening(); // Démarrage de l'écoute du NRF24 (signifiant qu'on va recevoir, et non émettre quoi que ce soit, ici)
}
void loop() {
// On vérifie à chaque boucle si un message est arrivé
if (radio.available()) {
radio.read(&message, sizeof(message)); // Si un message vient d'arriver, on le charge dans la variable "message"
Serial.print("<< Recied: ");
Serial.println(message); // … et on l'affiche sur le port série !
// Led blink
digitalWrite(LED_YELLOW_PIN, HIGH);
delay(2);
digitalWrite(LED_YELLOW_PIN, LOW);
}
}
Transmitter
/*
01/11/2023
Code inspired by :
Fichier: HelloWorldNRF24L01-Emetteur
Description: Emission d'un "Hello World" via un NRF24L01
Auteur: Passion-Électronique
Librairie utilisée : https://github.com/nRF24/RF24
*/
#include <SPI.h>
#include <RF24.h>
#define pinCSN 7 // On associe la broche "CSN" du NRF24L01 à la sortie digitale D7 de l'arduino
#define pinCE 8 // On associe la broche "CE" du NRF24L01 à la sortie digitale D8 de l'arduino
#define tunnel "PIPE1" // On définit un "nom de tunnel" (5 caractères), pour pouvoir communiquer d'un NRF24 à l'autre
RF24 radio(pinCE, pinCSN); // Instanciation du NRF24L01
const byte adresse[6] = tunnel; // Mise au format "byte array" du nom du tunnel
const char message[] = "Hello World !!!"; // Message à transmettre à l'autre NRF24 (32 caractères maxi, avec cette librairie)
#define LED_GREEN_PIN 5
#define LED_YELLOW_PIN 6
void setup() {
Serial.begin(9600);
Serial.println("Emeteur NRF24L01");
pinMode(LED_GREEN_PIN, OUTPUT);
pinMode(LED_YELLOW_PIN, OUTPUT);
for (int i=0; i < 2; i++) {
digitalWrite(LED_GREEN_PIN, HIGH);
delay(100);
digitalWrite(LED_GREEN_PIN, LOW);
digitalWrite(LED_YELLOW_PIN, HIGH);
delay(100);
digitalWrite(LED_YELLOW_PIN, LOW);
Serial.println(i);
}
digitalWrite(LED_GREEN_PIN, HIGH);
radio.begin(); // Initialisation du module NRF24
radio.openWritingPipe(adresse); // Ouverture du tunnel en ÉCRITURE, avec le "nom" qu'on lui a donné
radio.setPALevel(RF24_PA_MIN); // Sélection d'un niveau "MINIMAL" pour communiquer (pas besoin d'une forte puissance, pour nos essais)
radio.stopListening(); // Arrêt de l'écoute du NRF24 (signifiant qu'on va émettre, et non recevoir, ici)
}
void loop() {
radio.write(&message, sizeof(message)); // Envoi de notre message
Serial.print(">> Send: ");
Serial.println(message);
delay(5000);
// Led blink
digitalWrite(LED_YELLOW_PIN, HIGH);
delay(1);
digitalWrite(LED_YELLOW_PIN, LOW);
}
Gravitrax ATtiniy 85
DON'T WORK!
Arduino IDE
Use Processer: ATmaga328P (Old bootloader)
Wire
const int LED_VERTE = 0;
void setup() {
pinMode(LED_VERTE, OUTPUT);
}
void loop() {
//feu vert, 5 sec
digitalWrite(LED_VERTE, LOW);
delay(100);
digitalWrite(LED_VERTE, HIGH);
delay(100);
}
Upload programme
https://phmarduino.wordpress.com/2015/12/11/programmer-un-attiny-85/
https://github.com/sui77/rc-switch
https://web.archive.org/web/20151007014308/https://code.google.com/p/rc-switch/wiki/HowTo_Send
https://mechatrofice.com/arduino/rf-remote-controller-using-arduino-and-ask-module