Ajouter le wifi à son projet ... quel shield, quelle carte choisir ?

Bonjour,

Je souhaiterais ajouter une connectivité wifi à un projet qui tourne sur une carte Arduino Mega.
Il s'agit de reçevoir des requetes Http venant d'un smartphone ou pc pour contrôler une plateforme mobile.
Exemple : //192.168.43.132/F1/ (F1 = avancer)

J'ai jusqu'à présent utilisé une carte Arduino Uno Wifi qui ne fonctionne plus en plus d'être vieille et non suivie.

Il y a-t-il un modèle de shield Wifi qui vous a particulièrement rendu heureux ?

Merci pour vos conseils

dakota99:
Bonjour,

Je souhaiterais ajouter une connectivité wifi à un projet qui tourne sur une carte Arduino Mega.
Il s'agit de reçevoir des requetes Http venant d'un smartphone ou pc pour contrôler une plateforme mobile.
Exemple : //192.168.43.132/F1/ (F1 = avancer)

J'ai jusqu'à présent utilisé une carte Arduino Uno Wifi qui ne fonctionne plus en plus d'être vieille et non suivie.

Il y a-t-il un modèle de shield Wifi qui vous a particulièrement rendu heureux ?

Merci pour vos conseils

bonjour
pourquoi absolument un shield ?
un module esp8266 ou esp32 devrait certainement faire l'affaire, voir peut etre meme remplacer le mega2560
expose plus ton application actuelle

Merci pour votre réponse.
Il s'agit d'un projet de robot sur 2 roues.
La carte assure la gestion des composants suivants :

  • une carte contrôleur des 2 moteurs DC
  • 2 encodeurs sur les moteurs
  • 3 capteurs ultrasons
  • un accéléromètre
  • 4 boutons poussoirs
  • 4 leds
  • 1 buzzer
  • 1 afficheur lcd
  • 1 lecteur de carte SD
  • la réception des commandes en wifi

Le projet est déjà opérationnel excepté que la carte Arduino Wifi est hors service. Elle était chargée de recevoir les commandes en wifi et les transmettre à la Mega.

Merci

dakota99:
Merci pour votre réponse.
Il s'agit d'un projet de robot sur 2 roues.
La carte assure la gestion des composants suivants :

  • une carte contrôleur des 2 moteurs DC
  • 2 encodeurs sur les moteurs
  • 3 capteurs ultrasons
  • un accéléromètre
  • 4 boutons poussoirs
  • 4 leds
  • 1 buzzer
  • 1 afficheur lcd
  • 1 lecteur de carte SD
  • la réception des commandes en wifi

Le projet est déjà opérationnel excepté que la carte Arduino Wifi est hors service. Elle était chargée de recevoir les commandes en wifi et les transmettre à la Mega.

Merci

Ok
poste ton programme d'origine mega que l'on regarde comment est/etait articulé la gestion wifi

La réception des requêtes http est gérée par le Arduino Uno wifi que je souhaite remplacer.
La commande reçue est ensuite envoyée au Mega pour traitement.

#include <SoftwareSerial.h>// import the serial library
#include <stdio.h>
#include <stdlib.h>
#include <ArduinoWiFi.h>
#include <Wire.h>

char txc[20];
String readString;

// ====================================

void setup()
{Serial.begin(9600);
Serial.println("Setup");
Wifi.begin();
Wire.begin(4); // Rejoindre le bus à l'adresse #4
readString = "";
Serial.println("Arduino Wifi Started");
}

void loop()
{
while(Wifi.available()){proc1(Wifi);}
} // end loop

void proc1(WifiData client) {
String command = client.readStringUntil('/');
if (command == "digital") {
readString = client.readStringUntil('/');
Serial.print("Chaîne recue : ");
Serial.println(readString);
tx1(readString); // envoi cmde reçue à Arduino Mega
client.println("Status: 200 OK\n");
}
}

// ====== Envoi commande à Arduino Mega
void tx1(String data)
{ data.toCharArray(txc, 17);
Wire.beginTransmission(4); // Envoyer vers device #4
Serial.print("Chaîne envoyee au Mega : ");
Serial.println(txc);
Wire.write(txc); //
Wire.endTransmission(); // Arreter la transmission
}

Bonsoir

Il y a-t-il un modèle de shield Wifi qui vous a particulièrement rendu heureux ?

Pas encore vu passer d'utilisateur de shiled WiFi 'heureux' sur ce forum !!
Par contre a plusieurs reprises des utlisateurs de shields WiFi ont exposé leurs problèmes avec des 'shieds ESP8266' mal conçus

3 solutions pour rester proche d'Arduino :

-transposer l'application sur ESP8266 ou ESP32 (en conservant l'IDE Arduino). pas de carte Arduino.
Dans cette voie la gestion des 2 encodeurs sera probablement le 'point chaud'

-transposer l'application sur une carte Arduino MKR WiFi 1010 (récente) ou la UNO WiFi Rev2 (imminente)... en espérant que ces deux cartes aient une durée de vie plus longue que la UNO WiFi retirée du circuit

-associer à la carte Mega un ESP8266 ou un ESP32 (bien câblés et alimentés et flashés avec un firmware AT) en 'modem WiFi'. Avec une carte Mega un port serie matériel est disponible pour l'ESP .....çà arrange les choses.
Reste a alimenter l'ESP (500mA conseillés) et réaliser une adaptation 4V/3,3V pour l'entrée Rx de l'ESP

OK avec al1fch.

La solution #3 (associer à la carte Mega un ESP8266) est sans doute la plus proche de ce que vous avez aujourd'hui vu que c'est ce que faisait l'arduino UNO WiFi (un ATmega328P avec un ESP8266 en guise de Module Wi-Fi)

ça fait en gros 2 processeurs tournant en parallèle, exécutant des programmes différents et communicant entre eux par voie série I2C qui est assez simple à mettre en oeuvre

Merci pour vos réponses.

J'étais parti sur ceci avec un Arduino Uno :
https://www.gotronic.fr/art-shield-wifi-a-antenne-integree-tel0078-22410.htm

ce shield est côuteux, peu ou pas employé sur ce forum

Il y a l'avant et l'après ESP !

Nombre de puces WiFI d'origines diverses : Microchip, Texas, Atmel .... et les modules qui les emploient, ont été reléguées au second plan . Elles apportaient les mêmes fonctionalités à un coût supérieur et avaient elles aussi leurs bugs rarement corrigés

issu de DFRobot cette carte est assortie d'une doc modeste.....bien utile car il faudra 'mettre les mains dans le cambouis'.... ce n'est pas si 'plug and play' que ça en a l'air !! ne serait-ce que la liaison série avec la carte Arduino.

Sparkfun fait un shield WiFi avec ESP8266 nettement moins cher

al1fch:
ce shield est côuteux, peu ou pas employé sur ce forum

Il y a l'avant et l'après ESP !
Nombre de puces WiFI d'origines diverse Microchip, Texas, Atmel .... et les modules qui les emploient, ont été reléguées au second plan . Elles apportaient les mêmes fonctionalités à un coût supérieur et avaient elles aussi leurs bugs rarement corrigés

issu de DFRobot cette carte est assortie d'une doc modeste.....bien utile car il faudra 'mettre les mains dans le cambouis'.... ce n'est pas si 'plug and play' que ça en a l'air !! ne serait-ce que la liaison série avec la carte Arduino.

Sparkfun fait un shield WiFi avec ESP8266 nettement moins cher

+1
pour illustration qui rappellera des déjà vieux souvenirs à certains ici :grin:

Bonjour,
Un Arduino Yun ?

Un ESP8266 selon un module NodeMCU me semble le plus simple, on en trouve chez Ali a trois euros

Vu les contraintes sur les pins et timing, pour ne pas avoir à tout repenser à mon avis la solution de 2 Arduinos séparés (et communicants) est la plus simple

Oui absolument, l'objectif étant de dépanner ce robot rapidement. (il est utilisé comme mascotte dans des classes de maternelles. Et la rentrée des classes a déjà eu lieu :slight_smile: )

Vos différents commentaires m'amènent à la conclusion qu'un nombre d'heures conséquent sera nécessaire pour que cela fonctionne comme avant ....

Donc pour l'instant j'essaie de trouver une carte Arduino Uno wifi d'occasion. Même si ce n'est pas une carte de premier choix, elle a quand même fait son job 2 ans.

J'avais aussi envisagé d'utiliser ceci : https://www.gotronic.fr/art-carte-arducam-esp8266-uno-b0082-25260.htm
Cela reste une Arduino Uno.

Merci pour vos commentaires.

Bonjour

J'avais aussi envisagé d'utiliser ceci : https://www.gotronic.fr/art-carte-arducam-esp8266-uno-b0082-25260.htm
Cela reste une Arduino Uno.

C'est une carte 100% ESP8266, au format physique UNO et programmable sous l'environnement ARDUINO une fois ajoutée l'extensiion. Porter l'application sur ce microcontrolleur représente un travail conséquent vu la liste des périphériques à gérer.

Éventuellement voir ce que cette carte sur amazon à dans le ventre... elle ressemble techniquement à la uno wifi...

Cette carte que tu as déniché, J-M-L semble voisine de la UNO Wifi retirée
je la vois aussi içi chez Bangood un poil plus décrite, idem chez Aliexpress

Avec un schéma ce serait encore mieux. on peut espérer la présence d'au moins un pont diviseur pour le RX ESP en plus d'une alimentation 3,3V robuste.

Une différence cependant avec la UNO WIFI : la liaison ESP-Mega 328 en 'fonctionnement normal' ne semble pas passer par un UART additionnel (UART I2C/SPI). Il y a donc une (petite) adaptation de l'application à réaliser.

Un ensemble de switch permet de faire des commutations au niveau des liaisons série pour établir tel ou tel chemin. et eviter le softserial. Elle parait donc assez souple d'utilisation, 'tous les modules peuvent fonctionner séparément'

al1fch:
Cette carte que tu as déniché, J-M-L semble voisine de la UNO Wifi retirée

--> petit bug dans vos liens

oui bien moins cher en chine mais si j'ai bien compris le besoin était urgent pour l'école, donc pas forcément le temps d'attendre l'arrivée par bateau à rame pour sauver 7 ou 8 euros

carte2.png

--> il semblerait que en mode opérationnel on fasse "ATmega328 <-> ESP8266" (restera à vérifier si c'est sur serial ou I2C) et que pour télécharger les codes on prenne "USB <-> ATmega328" pour la partie "Arduino" et "USB <-> ESP8266 " pour le code sur l'ESP

liens corrigés

  • , de fil en aiguille en suivant le marquage Robodyn.....

une carte ATMega2650 +ESP8266 + CH340G de la meme veine avec un schéma téléchargeable

Super merci pour ces liens. Je vais commander un Uno et un Mega pour tester.
entretemps j'ai trouvé un Arduino Uno wifi d'occasion que je vais recevoir.

J'ai aussi testé WIFI Shield V3 PCB Antenna SKU:TEL0078

Mais évidemment cela ne va pas tout seul.
Je l'ai connecté au réseau wifi du bâtiment et lui ai imposé une adresse IP statique.
Le ping fonctionne.
Mais je ne vois pas dans la doc comment lui envoyer une requête http avec une commande.
Et dans quel mode je dois le mettre pour ce faire : AP+STA ou AP mode ?
sur l'Arduino Uno wifi j'envoie une requête : 192.168.0.99/arduino/digital/F1
mais dans ce cas cette syntaxe ne fonctionne pas.

Si quelqu'un a une idée.
Merci.