🛠 Connecter le Nicla au WiFi via une carte hôte
Objectifs
Donner accès au réseau au Nicla Sense ME malgré l'absence totale de radio WiFi embarquée. À retenir avant tout câblage : la carte n'a ni ESP32-N4, ni puce WiFi de quelque sorte que ce soit — le manuel officiel est catégorique, « The Nicla Sense ME does not have built-in Wi-Fi » — et la voie documentée par Arduino est une carte hôte (MKR WiFi 1010 ou Portenta C33) qui joue le rôle de passerelle, soit par BLE, soit par câble ESLOV, soit par connectique MKR-shield en I²C. C'est la bibliothèque Arduino_BHY2Host qui fait le pont : le Nicla reste le nœud de capteurs autonome, l'hôte récupère les données et dispose de sa propre connectivité.
Matériel
- Carte Arduino Nicla Sense ME (ABX00050) chargée avec le sketch « App » de la bibliothèque Arduino_BHY2 (mode périphérique)
- Carte hôte : MKR WiFi 1010 (core ≥ 2.5.2 pour le mode shield) ou Portenta C33
- Bibliothèque Arduino_BHY2Host sur l'hôte ; câble ESLOV ou simple proximité BLE pour la liaison
- >
Code complet
// A televerser sur la CARTE HOTE (MKR WiFi 1010), pas sur le Nicla
#include "Arduino.h"
#include "Arduino_BHY2Host.h"
#include <WiFi101.h>
Sensor tempSensor(SENSOR_ID_TEMP);
const char* ssid = "MON_WIFI";
const char* pass = "MON_MOT_DE_PASSE";
void setup {
Serial.begin(115200);
while (!Serial);
// 2e argument : NICLA_VIA_BLE, NICLA_VIA_ESLOV ou NICLA_AS_SHIELD
BHY2Host.begin(false, NICLA_VIA_BLE);
tempSensor.begin;
while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
Serial.println("Connexion WiFi en cours...");
delay(2000);
}
Serial.println("Passerelle connectee");
}
void loop {
static auto printTime = millis;
BHY2Host.update; // pompe les données recues du Nicla
if (millis - printTime >= 5000) {
printTime = millis;
Serial.println(String("Temperature (via Nicla) : ") + String(tempSensor.value, 2));
}
}
Vérification attendue
Le Nicla téléversé en mode « App » est détecté par l'hôte ; la console de l'hôte affiche la température du BME688 du Nicla toutes les 5 secondes, et le WiFi est établi (adresse IP affichable avec WiFi.localIP). Une fois cette passerelle validée, n'importe quelle bibliothèque réseau sur l'hôte (HTTP, MQTT, Arduino Cloud) peut exploiter les données du Nicla — voir le tutoriel MQTT avancé.
Erreurs fréquentes
- Oublier de téléverser le sketch « App » sur le Nicla avant de lancer BHY2Host : l'hôte ne voit alors aucun périphérique.
- Confondre les constantes de transport :
NICLA_VIA_BLE,NICLA_VIA_ESLOVetNICLA_AS_SHIELDcorrespondent à trois branchements différents ; le mauvais choix donne un timeout silencieux. - Accroche ESLOV : si aucune activité ESLOV ne survient dans la première minute, le LDO se coupe et l'ESLOV meurt (design basse consommation) ; contourner avec
BHY2.setLDOTimeout(milliSecondes)côté Nicla. - Suspensions intermittentes de l'hôte sur I²C (bug connu du pilotage de la broche reset du stack BHY2Host) : préférer le BLE pour démarrer, puis tester l'ESLOV.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_rgb.inoArduinoimu_bhi260.inoArduinorotation_fusion.inoArduinopression_bmp390.inoArduinonose_electronique.inoArduinoboussole_bmm150.inoArduino