Affichage des articles dont le libellé est nano. Afficher tous les articles
Affichage des articles dont le libellé est nano. Afficher tous les articles

lundi 7 octobre 2019

NodeMCU Episode 6 :DHT11 (humidité et temperature) Nano et NodeMcu(LoLin)


Voici un nouveau Projet.
Il fait froid chez moi et je voudrais savoir quand le chauffage va être mis en route.
J'ai besoin d'un NodeMCU branché sur mon Wifi qui enverra les informations d'humidité et de température sur via le Wifi sur une page PHP (base de donnée, jolie schéma etc...)
Déjà verifier que j'arrive à récupérer des données du DHT11 sur le NodeMCU.
Bon ca va faire 1h30 que je suis dessus.
Le satané cablage m'aura fait perdre pas mal de temps.

Branchements:
DHT11 - Nano
Plus (+) - 3,3V
OUT- D2
Moins (-) - GND

Branchements:
DHT11 - NodeMCU LoLin V0.1
Plus (+) - 3,3V
OUT- D4 (What The F....)
Moins (-) - GND

Librairie Utilisé:
DHT_Unified_Sensor

Modifié ainsi:
Comment la ligne du DHT22
decomment la ligne du DHT11
Ajout les librairies suivantes:
// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor

  ! Toujours bien penser à fermer ses fenêtres COM3 ou COM5 ou autre avant de téléverser. !
Mon LoLin est toujours considéré comme un NODEMCU 0.9 (ESP12 Module) dans Outils/ Type de Carte

Maintenant, il faut préparer une page PHP pour récupérer les données
mettre un client Web pour envoyer ces données.
et bien sûr espacer les délais de 1000 (1 seconde) à 900000 au minimum (15mn)

Page PHP: (le fichier "tempdht11_result.txt" doit déjà exister)
https://github.com/tumador/Sonde_DHT_Wifi_PHP
Voici le script Arduino pour l'ESP pour envoyer les données au fichier PHP
https://github.com/tumador/Sonde_DHT_Wifi_PHP

mardi 16 juillet 2019

Arduino Episode 19 : Projet Reveil (tout va bien)

Arduino Episode 19 : Projet Reveil (tout va bien)

J'ajoute juste mon code où le superflu est supprimé, et les effets me conviennent.
Prochaine étape : Le tilt

// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <stdint.h>

RTC_DS3231 rtc;
char str [20];
char joursemaine[12];
char daysOfTheWeek[7][12] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
char jourmois[12];
char anneefull[4];
char horaire[12];

#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW
#define MAX_DEVICES 4
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10

// Hardware SPI connection
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
int j = 0;

void setup () {
P.begin();
P.setIntensity(0);
Serial.begin(9600);
delay(3000); // wait for console opening

if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}

if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
rtc.adjust(DateTime(2019, 7, 15, 10, 01, 0));
}
}

void loop () {
DateTime now = rtc.now();

int anneefull = now.year();
int annee= (now.year()-2000);
int mois = now.month();
int jour = now.day();
int heure = now.hour();
int minutes = now.minute();

if (P.displayAnimate())
{
sprintf(joursemaine,daysOfTheWeek[now.dayOfTheWeek()]);
sprintf(jourmois,"%02d/%02d",jour,mois);
sprintf(anneefull,"%02d",anneefull);
sprintf(horaire,"%02d:%02d",heure,minutes);

switch (j) {
case 0:
P.displayText(joursemaine, PA_CENTER, 25 , 2000, PA_DISSOLVE, PA_DISSOLVE);
break;
case 1:
P.displayText(jourmois, PA_CENTER, 25 , 2000, PA_DISSOLVE, PA_DISSOLVE);
break;
case 2:
P.displayText(anneefull, PA_CENTER, 25 , 2000, PA_DISSOLVE, PA_DISSOLVE);
break;
case 3:
P.displayText(horaire, PA_CENTER, 25 , 30000, PA_DISSOLVE, PA_DISSOLVE);
break;
default:
break;
}
j = j + 1;
if (j > 5) j = 0;
}

Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(j);
Serial.println();
}

dimanche 7 avril 2019

Arduino Episode 18 : Projet Reveil

Voici un projet qui s'impose à moi,
après un achat sur le bon coin, je me retrouve avec quelques éléments qui ne m'interesse pas vraiment.
-arduino
-matrice 7219
-une horloge temps réel ds3231m


et l'idée à germée.
 Je vais faire un reveil,  juste ajouter un buzzer un tilt et je pourrais faire une horloge qui affiche l'heure, sonne, et s'éteint lorsqu'on lui met la tête en bas.
on pourra toujours changer l'arduino nano par un esp8266 pour le mettre sur Internet.

Voici rapidement les branchements
Max7219 - Nano
VCC - 5V
GND - GND
DIN - PIN 11
CS -  PIN 10
CLK - PIN 13

DS3231M - Nano
VCC - 3V
GND - GND
SCL - SCL or A5
SDA - SDA or A4


Pour la librairie du DS3231M, j'opte pour RTCLib, plus rapide que DS3231M  ou DS3231 ou DS3231F
Il configure l'heure tout seul, l'affiche, et fait meme un test de prévision (ici ca ne marche pas)

2019/4/8 (Monday) 18:10:47
 since midnight 1/1/1970 = 1554714647s = 17994d
 now + 7d + 30s: 2019/4/16 06:40:53

Voici la partie code pour le RTC :
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include
#include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};

void setup () {

#ifndef ESP8266
  while (!Serial); // for Leonardo/Micro/Zero
#endif

  Serial.begin(9600);

  delay(3000); // wait for console opening

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
}

void loop () {
    DateTime now = rtc.now();

    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");

    Serial.print(now.day(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.year(), DEC);
    Serial.print(' ');
   
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   
    Serial.print(" Depuis le 1/1/1970 minuit = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
   
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now + TimeSpan(7,12,30,6));
   
    Serial.print(" Maintenant + 7d + 12h + 30minutes +6s: ");
    Serial.print(future.day(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.year(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
   
    Serial.println();
    delay(5000);
}

vendredi 15 mars 2019

Arduino Episode 15 : Emetteur InfraRouge, InfraRed

Pour voir si une LED infrarouge fonctionne, bah, on peut pas voir avec ses yeux, il est recommandé d'utiliser l'appareil photo de son smartphone. Ce que j'ai fait.... ca marchait pas, un code capricieux, je me suis dis je vais brancher le 5V sur la LED pour la faire fonctionner en continu...
(Pour info, à partir de l'iPhone 5, les iPhone filtrent les infrarouges, donc on ne peux pas les voir)

Bon j'ai fait une bêtise, j'ai branché la pate S de ma LED infrarouge  sur le 5V de mon arduino...
un mauvaise odeur et une LED grillé...

J'ai récupéré une vieille télécommande, récupéré la LED et ressoudé à la place de ma LED grillé: youpi ca marche !!!

Branchements :

NANO <-> Emetteur IR
GND --- Signe -
5V --- Centre (rien de noté)
D3 -- S


Code: https://github.com/z3t0/Arduino-IRremote
IRsendDemo:
#include
IRsend irsend;
void setup()
{
}

void loop() {
    for (int i = 0; i < 3; i++) {
        irsend.sendSony(0xa90, 12);
        delay(40);
    }
    delay(5000); //5 second delay between each signal burst
}

vendredi 22 février 2019

Arduino Episode 14 : Tiny RTC Module (Real Time Clock) Horloge temps réel

Arduino Episode 14 : Tiny RTC Module (Real Time Clock) Horloge temps réel

1er problème, je n'ai pas de broche et de kit de soudure pour tester le matériel.
J'utilise alors des câbles durant glissé dans les trous sans être retenu, et calé sur le bureau sans le bouger, le résultat fonctionne directement.
Attention aux achats car je vais devoir souder ceci pour que ce soit pérènne.

Branchements :

On pourra déjà remarquer que nous avons 2 serie de brochage
A gauche, DS, SCL, SDA, VCC, GND
A droite , SQ,DS, SCL, SDA, VCC, GND, BAT

A gauche pour être branché directement à un arduino
A droite pour être branché en plus qu'a gauche en arduino, sur un autre périphérique IC2 (ici pas utile)


NANO <-> Tiny RTC
GND --- GND
5V --- VCC
A4 --- SDA
A5 --- SCL

Code: 
Croquis, Inclure une Bibliothèque, Gerer les bibliothèques, "RTClib" by Adafruit
https://github.com/adafruit/RTClib
Fichier; exemple, RTClib, DS1307

Résultat:
Dans la console COM à 57600bauds :
2019/2/22 (Friday) 16:2:5
 since midnight 1/1/1970 = 1550851325s = 17949d
 now + 7d + 30s: 2019/3/2 4:32:11



Sources:
https://www.elecrow.com/wiki/index.php?title=Tiny_RTC
https://www.hobbyist.co.nz/?q=real_time_clock 
https://www.youtube.com/watch?v=OmVoR3mTP00

mardi 19 février 2019

Arduino Episode 13 : recepteur InfraRouge, InfraRed


Arduino Episode 13 : recepteur InfraRouge, InfraRed  

Branchements :

NANO <-> Recepteur IR
GND --- Signe -
5V --- Centre (rien de noté)
D11 -- S


Code: https://github.com/z3t0/Arduino-IRremote (IRrecvDemo)

#include < boarddefs.h >
#include <irremote .h>
#include <irremoteint .h>
#include <ir_lego_pf_bitstreamencoder .h>

int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN);
decode_results results;
void setup ()
{
Serial.begin (9600);
irrecv.enableIRIn ();
}
void loop () {
if (irrecv.decode (& results)) {
Serial.println (results.value, HEX);
irrecv.resume ();
}
}

Arduino Episode 12 : Faisceau LASER (ky-008)

 

Arduino Episode 12 : Faisceau LASER (KY-008)

Branchement:
NANO <-> <-->Laser
GND --- au moins
5V --- centre (sans annotation)
D8 -- S

Code: (rien de plus qu'allumer le LASER)

const int Laser=8;
void setup() {
   pinMode(Laser,OUTPUT);
  digitalWrite(Laser,HIGH);
}

void loop() {
}

Si vous ne voulez qu'un laser sans code :

Branchement:
NANO <-->Laser
GND --- au moins
3.3V --- S

lundi 18 février 2019

Arduino Episode 11 : Bouton Poussoir et 433






Branchements Emetteur:

NANO1 <-> Emetteur
GND --- GND
5V --- VCC
D10 -- DATA

NANO1 <-> Emetteur
D2 --- une PIN du bouton d'un côté
GND --- 'autre PIN du bouton du même côté

Branchements Recepteur:

NANO2 <-> 433 recepteur
GND --- GND
DATA --- D2 (pour l'interruption)
5V --- VCC


Code Emetteur:


#include
#include
RCSwitch mySwitch = RCSwitch();


void setup() {
  // Transmitter is connected to Arduino Pin #10 
  mySwitch.enableTransmit(10);
 
  pinMode(2, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  attachInterrupt(0,balance,RISING);
}

void loop() {
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
  }


void balance()
{

  digitalWrite(LED_BUILTIN, HIGH);
  mySwitch.send(5396, 24);
  delay(1000); 
  digitalWrite(LED_BUILTIN, LOW);
  }

 

Code Recepteur : (identique à la bibliothèque RC-SWITCH)

/*
  Example for receiving
 
  https://github.com/sui77/rc-switch/
 
  If you want to visualize a telegram copy the raw data and
  paste it into http://test.sui.li/oszi/
*/

#include

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
    mySwitch.resetAvailable();
  }
}