arduino:uc:mkr

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

arduino:uc:mkr [2022/03/28 11:29] philarduino:uc:mkr [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1
Ligne 1: Ligne 1:
-{{ :suivant.png?nolink&30|}} {{ :retour.png?nolink&30|}} [[arduino:accueilarduino|{{ :iconemaison.jpg?nolink&30|Sommaire Arduino}}]] 
  
-===== La carte Arduino MKR Wifi 1010 ===== 
-[Mise à jour le 28/3/2022] 
-{{ :arduino:arduino.png?80&nolink|}} 
- 
-=== Sources sur le site Arduino===  
-  * <html><a href = "https://store.arduino.cc/arduino-genuino/arduino-genuino-mkr-family" target="_blank">MKR FAMILY</a></html> 
-  * <html><a href="https://www.arduino.cc/en/Guide/MKRWiFi1010#toc3" target="_blank">Getting started with the MKR WiFi 1010</a></html> 
- 
-=== Lecture connexe === 
-  * Wiki matériels - [[materiels:accueilmateriels|"Capteurs, afficheurs, préactionneurs, etc."]] 
-  * Wiki Arduino - [[arduino:clientmqttesp8266|"Mettre en oeuvre un client MQTT sur un EP8266 (ESP32) Feather Huzzah ou Wifi MKR1010"]] 
-  * <html><a href="https://www.arduinolibraries.info/" target="_blank">Arduino Library List</a></html> 
- 
-=== Distributeur === 
-  * <html><a href="https://www.mouser.fr/new/arduino/arduino-mkr-wifi-1010/" target="_blank">Mouser</a></html> 
- 
----- 
- 
- 
-===== 1. La gamme MKR ===== 
-La gamme <html><a href="https://store.arduino.cc/arduino-genuino/arduino-genuino-mkr-family" target="_blank"><strong>MKR</strong></a></html> est une référence dans le domaine des cartes de développement **IoT**. Elle regroupe plusieurs cartes dont le tarif varie entre 20 et 60 euros (2019). 
- 
-{{ :arduino:mkr_family.jpg?nolink&600 |}} 
- 
-==== 1.1 Connectivité ==== 
-Toutes les cartes de la gamme MKR possèdent le même nombre d'<html><a href="https://www.didel.com/LogiqueMicro.pdf" target="_blank" title="On appelle entrées-sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés."><strong>E/S</strong></a></html>. Elles sont fournies avec un total de **22 broches d'E/S numérique** dont **12 broches PWM**. Elles comprennent également **7 broches d'entrée analogique** et **1 broche de sortie analogique**.  
- 
-Il existe plusieurs shields MKR, par exemple le blindage MKR Relay Proto Shield qui permet d’utiliser des relais et qui fournit de l'espace pour ajouter d'autres composants grâce à sa zone de prototypage.  
- 
-Bien qu'elles ne soient pas compatibles avec les shields Arduino Uno, il est possible de connecter facilement des capteurs aux cartes MKR à l'aide de l'adaptateur <html><a href="https://store.arduino.cc/arduino-mkr-connector-carrier" target="_blank">Arduino MKR Connector Carrier</a></html> (Grove compatible). <html><a href="https://webge.fr/doc/wikis/pdf/MKRConnectorCarrier_V3.0_sch.pdf" target="_blank">[Schéma]</a></html> 
-{{ :arduino:arduino_mkr_connector.jpg?nolink&500 |}} 
- 
-===== 2. La carte Arduino MKR Wifi 1010 ===== 
-Le MKR WIFI 1010 est équipé d'un module **ESP32** fabriqué par U-BLOX. Cette carte a pour objectif d’accélérer et de simplifier le prototypage des applications IoT basées sur le WiFi grâce à la flexibilité du module ESP32 et à sa faible consommation d’énergie. La carte est composée de **trois principaux blocs** : 
-  * Microcontrôleur **SAMD21** Cortex-M0+ 32bit Low Power ARM MCU <html><a href="https://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/Atmel-42181-SAM-D21_Datasheet.pdf" target="_blank">(Datasheet)</a></html> 
-  * **U-BLOX NINA-W10** Series Low Power 2.4GHz IEEE® 802.11 b/g/n Wi-Fi <html><a href="https://www.u-blox.com/sites/default/files/NINA-W10_DataSheet_%28UBX-17065507%29_C1-Public.pdf" target="_blank">(Datasheet)</a></html> 
-  * **ECC508 Crypto Authentication**. <html><a href="https://www.microchip.com/wwwproducts/en/atecc508a" target="_blank">(Datasheet)</a></html> 
-{{ :arduino:mkr1010.jpg?nolink&350 | 
-}} 
- 
-  * **Principales caractéristiques** 
-    * **Alimentation** de la carte : **5V** (circuit sous **3,3V**:!:) 
-    * **Batterie** supportée : Li-Po Single Cell, 3.7V, 700mAh Minimum 
-    * **E/S numériques** : 8 (7mA) 
-    * **PWM** : 2 (0, 1, 2, 3, 4, 5, 6, 7, 8, 10, A3 - or 18 -, A4 -or 19) 
-    * **UART** : 1 
-    * **SPI** : 1 
-    * **I2C** : 1 
-    * **I2S** : 1 
-    * **Réseau** : Wifi (sécurisé à l'aide du cryptage SHA-256) 
-    * **Entrées analogiques** : 7 (ADC 8/10/12 bit) 
-    * **Sortie analogique** : 1 (DAC 10bits) 
-    * **Interruptions externes** : 8 (0, 1, 4, 5, 6, 7, 8, A1 -or 16-, A2 - or 17) 
-    * **Flash** : 256KB 
-    * **SRAM** : 32KB 
-    * **EEPROM** : Non 
-    * **Fréquence d'horloge** : 48MHz, 32.768 kHz (RTC) 
- 
- 
-<note warning>Contrairement à la plupart des cartes Arduino, le MKR WIFI 1010 fonctionne sous 3,3V. La tension maximale tolérée par les broches d’E/S est de 3,3V. **L'application de tensions supérieures à 3,3 V à n'importe quelle broche d'E/S peut endommager la carte**. Bien que la sortie sur des appareils numériques 5V soit possible, la communication bidirectionnelle avec des appareils 5V nécessite un décalage de niveau approprié. **Cette adaptation de niveau est réalisée par la carte Arduino MKR Connector Carrier** ci-dessus.</note> 
- 
-{{ :arduino:uc:mkr_wifi_1010_pinout.jpg?nolink |}} 
- 
-<note tip>Pour afficher le diagramme de brochage complet au format PDF, cliquer <html><a href="https://content.arduino.cc/assets/Pinout-MKRwifi1010_latest.pdf" target="_blank">ici</a></html> ou le **schéma** de la carte MKR Wifi 1010, cliquer <html><a href="https://webge.fr/doc/wikis/pdf/MKRWiFi1010V2.0_sch.pdf" target="_blank">ici</a></html>.</note> 
- 
-<note>Le réseau Wi-Fi est à faible consommation d'énergie. Le port USB du MKR1010 peut être utilisé pour alimenter la carte sous 5V. Il possède un circuit de charge Li-Po qui permet à l'Arduino MKR WIFI 1010 de fonctionner sur batterie ou sur une source externe de 5 volts, chargeant la batterie Li-Po tout en utilisant une alimentation externe. Le passage d'une source à l'autre se fait automatiquement.</note>  
- 
- 
-===== 3. Préparation de l'IDE Arduino ===== 
- 
-==== 3.1 Installation du support "Arduino SAMD Boards" ==== 
-  * Dans le menu « **Outils** » , « **Type de carte** » et « **Gestionnaire de carte** », rechercher « Arduino SAMD Board » et installer le composant. 
-{{ :arduino:uc:gestmkr1010.png?nolink |}} 
- 
-==== 3.2 Les bibliothèques ==== 
-A partir du **gestionnaire de bibliothèque** de l'IDE Arduino, **télécharger** et **installer** : 
- 
-=== 3.2.1 WifiNINA === 
-  * **Sources** sur <html><a href="https://github.com/arduino-libraries/WiFiNINA" target="_blank">github</a></html> 
-  * **Documentation** sur <html><a href="https://www.arduino.cc/en/Reference/WiFiNINAarduino.cc"target="_blank">arduino.cc</a></html> 
- 
-Active la **connexion réseau** (locale et Internet) des Arduino MKR Wifi 1010, Arduino MKR VIDOR 4000 et Arduino UNO Wifi Rev.2. Avec cette bibliothèque, vous pouvez instancier des serveurs, des clients et envoyer / recevoir des paquets UDP via le wifi. La carte peut se connecter à des réseaux ouverts ou cryptés (WEP, WPA). L'adresse IP peut être attribuée de manière statique ou via un serveur DHCP. La bibliothèque peut aussi gérer le DNS. 
- 
-  * **Mise à jour du firmware du module WIFI NINA** 
-    - Mettre à jour la bibliothèque WiFiNINA avec le gestionnaire de bibliothèques. 
-    - Vérifier la version du firmware installé en téléchargeant et en exécutant l'exemple **//CheckFirmwareVersion//**  (→ Fichier → Exemples → WiFiNINA -> Tools). Les informations apparaissent dans le moniteur série. 
-    - Télécharger et exécuter l'exemple **//FirmwareUpdater//** dans la carte (→ Fichier → Exemples → WiFiNINA -> Tools) puis mettre à jour le firmware à l'aide de **WIFI101/WiFiNINA Firmware Updater** (-> Outils). 
- 
-=== 3.2.2 PubSubClient === 
-  * **Sources** et documentation de <html><span title="Créateur de Node Red"><strong>Nick O'Leary</strong></span></html> sur <html><a href="https://github.com/knolleary/pubsubclient" target="_blank">github</a></html> 
- 
-Cette bibliothèque fournit un client pour faire de simples messages de publication / abonnement avec un serveur prenant en charge MQTT.  
- 
-=== 3.2.3 WifiWebServer === 
-  * **Sources** sur <html><a href="https://github.com/khoih-prog/WiFiWebServer" target="_blank">github</a></html> 
- 
-WifiWebServer est une bibliothèque serveur simple mais complète pour les cartes AVR, Teensy, SAM DUE, **Arduino SAMD21**, Adafruit SAMD21/SAMD51, Adafruit nRF52, ESP32/ESP8266, STM32F/L/H/G/WB/MP1, etc., utilisant les modules/boucliers WiFi (WiFiNINA, WiFi101, U-Blox W101, W102, ESP8266/ESP32-AT, etc.). \\ Les fonctions sont similaires et compatibles à celles de  <html><a href="https://github.com/espressif/arduino-esp32/tree/master/libraries/WebServer" target="_blank">ESP32 WebServer</a></html> et des <html><a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer" target="_blank">ESP8266WebServer</a></html>. \\ A partir de la v1.1.0 cette bibliothèque fournit également un client HTTP et WebSocket de haut niveau dont les fonctions sont similaires et compatibles à celles de la bibliothèque <html><a href="https://github.com/arduino-libraries/ArduinoHttpClient" target="_blank">ArduinoHttpClient</a></html>. 
-===== 4. Démarrer avec la carte Arduino MKR WiFi 1010 ===== 
- 
- 
- 
-=== 4.1 Blink un premier Programme pour dire "Hello" === 
- 
-<code cpp *.cpp> 
-void setup() { 
-  pinMode(LED_BUILTIN,OUTPUT); 
-} 
-  
-void loop() { 
-  digitalWrite(LED_BUILTIN, HIGH);    
-  delay(1000);                    
-  digitalWrite(LED_BUILTIN, LOW);     
-  delay(1000);                     
-} 
-</code> 
- 
-{{ :arduino:uc:platformioico.png?nolink&50|}} 
-<note tip><html><a href="https://webge.fr/doc/wikis/code/Arduino/ARD_PIO_MKR1010_Blink.zip" target="_blank">Télécharger</a></html> le projet PlatformIO pour VSCode.</note> 
- 
-=== 4.2 Intégrer une nouvelle carte MKR1010 dans le réseau Wifi=== 
- 
-  * Ouvrir l'exemple //**WiFiPing**// accessible à partir de  (-> Fichier -> Exemples -> WiFiNINA) dans le logiciel Arduino. 
-  * Compléter le **SSID** et le **mot de passe** du Wifi comme dans l'exemple ci-dessous. 
-<code cpp *.cpp> 
-// Modifications dans WiFiPing 
-// Specify IP address or hostname  
-String hostName = "IP de la box à renseigner"; 
- 
-// Modifications dans arduino_secrets.h 
-#define SECRET_SSID "à renseigner" 
-#define SECRET_PASS "à renseigner" 
-</code> 
-//Résultat dans le moniteur série// 
-{{ :arduino:wifiping.png?nolink&400 |}} 
-  * Programmer la carte. 
-  * Identifier l'adresse **MAC** de la carte avec **Advanced Port Scanner**. 
-  * Entrer l'**@MAC** et attribuer une **@IP** à la carte dans l'onglet "//Réservation DHCP//" de la box du réseau. 
-  * Redémarrer la carte. 
- 
-{{ :arduino:uc:platformioico.png?nolink&50|}} 
-<note tip><html><a href="https://webge.fr/doc/wikis/code/Arduino/ARD_PIO_PING_MKR1010.zip" target="_blank">Télécharger</a></html> le projet PlatformIO pour VSCode.</note> 
-=== 4.4 Serveurs HTTP === 
-  * ** Ressource ** : <html><a href="https://randomnerdtutorials.com/esp32-http-get-post-arduino/" target="_blank">ESP32 HTTP GET and HTTP POST with Arduino IDE (JSON, URL Encoded, Text)</a></html> 
-  
-<note warning>Ce paragraphe présente **deux** versions d'un serveur HTTP : \\ 
- - La **Version 1** est une étude de cas pour le cours d'algorithmique \\ 
- - La **dernière version** est utilisée dans les projets. 
-</note> 
- 
-== 4.4.1 VERSION 1 : étude de cas == 
-  * ** Source** : //SimpleWebServer// (-> Fichier -> Exemples -> WiFiNINA) 
-  * **Montage**{{ :arduino:uc:mkr1010serveur.jpg?nolink |}} 
-  * **Algorithme** 
-<code> 
-// Principe 
-// Le serveur lit les requêtes caractère par caractère et extrait les données de l'url  
-// En réponse à la requête, il envoie une valeur ou/et déclenche une commande  
-// Exemples 
-// pas de données dans la requête => envoie de la page d'accueil 
-// /arduino/digital/led/1 => activation d'une sortie 
-// /arduino/digital/led/0 => désactivation d'une sortie 
-// /arduino/analog/val1 => mesure et envoie d'une valeur issue du CAN 
- 
-// Initialisation 
-Créer un serveur HTTP à l'écoute sur le port 80 
- 
-1.  si le module wifi n'est pas détecté alors  
-        bloquer le programme 
-2.  tant que le module n'est pas connecté au wifi faire 
-        se connecter au wifi avec le SSID et le mot2passe 
-    fin tant que 
-3. Démarrer le serveur HTTP 
- 
-// Programme 
-Répéter toujours 
- début // 4. Traiter les requêtes 
-    Attente blocante d'un client 
-    si un client est connecté alors 
-      currentLine <- "" // mémorise la donnée transmise dans la requête 
-      tant que le client est connecté faire 
-        | si il reste des caractères à lire  
-        | alors   
-        |  |  lire le dernier caractère transmis 
-        |  |  si ce caractère est une fin de ligne  
-        |  |  alors 
-        |  |   | si currentLine = "" // on a eu 2 fin de lignes consécutifs ! => pas de donnée transmise 
-        |  |   | alors  
-        |  |      Envoyer la page d'accueil au client et sortir de la boucle tant que 
-        |  |   | sinon 
-        |  |      currentLine <- "" 
-        |  |   | fin si 
-        |  |  sinon  
-        |  |   | si le caractère lu n'est pas un retour chariot  
-        |  |   | alors  
-        |  |      on l'ajoute à la fin de currentLine 
-        |  |   | fin si 
-        |  |  fin si 
-        |  |  // Traitement les autres requête(s) (une url suit l'@IP) 
-        |  |  Traiter la requête 1 et sortir de la boucle tant que 
-        |  |  Traiter la requête 2 et sortir de la boucle tant que  
-        |  |  ...     
-        |  |  Traiter la requête n et sortir de la boucle tant que      
-        | fin si 
-      fin tant que 
-    fin si 
-    Fermer la connexion 
- fin 
-</code> 
- 
-  * **Code** (adaptation de l'exemple __SimpleWebServer__) 
-{{ :arduino:arduino.png?50&nolink|}} 
-<note tip><html><a href="https://webge.fr/doc/wikis/code/Arduino/ARD_MKR1010_HTTP_SERVER_V1.zip" target="_blank" title="Version 1">Télécharger</a></html> le projet Arduino.</note> 
- 
-  * **Tests**{{ :arduino:uc:pageaccueil.png?nolink |}} 
- 
- == 4.4.2 VERSION utilisée dans les projets == 
-  * ** Source** : //AdvancedWebServer// (-> Fichier -> Exemples -> WiFiWebServer) 
-  * **Montage**{{ :arduino:uc:mkr1010serveur.jpg?nolink |}} 
-  * **Algorithme** 
-<code> 
-// Serveur HTTP V4 
-// Le serveur répond à une requête en envoyant une ou des valeurs lues sur ses entrées 
-// et/ou en déclenchant une commande sur ses sorties 
-// Exemples 
-// pas de données dans la requête => envoie de la page d'accueil 
-// /ecrire/valA?val=1 => activation de la sortie valA 
-// /ecrire/valA?val=0 => désactivation de la sortie valA 
-// /lire/val1 => mesure et envoie la valeur présente sur l'entrée val1 (issue du CAN) 
-// ------------------------------------------------------------------------------------ 
-// Variables 
-   chaîne de caractères <- page HTML (accueil) 
-   tableaux de caractères <- SSID et mot2passe  
- 
-// Liste des gestionnaires (fonctions) répondant à une requête 
-   g1. Envoie de la page d'accueil 
-   g2. Commande de la led L de la carte et de la sortie D0 
-   g3. Commande de la sortie D1 
-   g4. Mesure et transmission de la valeur analogique présente sur A0 
-   g5. Mesure et transmission de la valeur analogique présente sur A1 
-   g6. Mesure et transmission des valeurs analogiques présentes sur A0 et A1 au format JSON 
-   g7. Traitement des requêtes non prises en charge 
-   ... 
-   gn ... 
- 
-// Initialisation 
-   a. Configuration des E/S 
-   b. Si le module wifi n'est pas détecté, alors  
-        bloquer le programme !!!! 
-   c. tant que le module n'est pas connecté au réseau wifi  
-        faire 
-          se connecter au réseau Wifi avec le SSID et le mot2passe 
-      fin tant que    
-   d. Inscription les gestionnaires de requête 
-   e. Démarrage du serveur HTTP 
-       
-Répéter toujours 
-   Traiter une requête 
-</code> 
- 
-  * **Code**  
-{{ :arduino:uc:icoarduinoplatformio.png?nolink|}} 
-<note tip><html><strong>Télécharger</strong> le projet <a href="https://webge.fr/doc/wikis/code/Arduino/ARD_PIO_MKR1010_HTTP_SERVER.zip" target="_blank" title="Version 4">PlatformIO</a> pour VSCode ou le projet <a href="https://webge.fr/doc/wikis/code/Arduino/ARD_MKR1010_HTTP_SERVER_V4.zip" target="_blank" title="Version 4">Arduino</a></html>.</note> 
- 
-  * **Tests** {{ :arduino:uc:pageaccueilv4.jpg?nolink |}} 
-=== 4.5 Client MQTT=== 
-  * Voir la page [[arduino:clientmqttesp8266|"Mettre en oeuvre un client MQTT sur un EP8266 (ESP32) Feather Huzzah ou MKR Wifi 1010"]] 
-===== 5. Tutoriels ===== 
-Des liens vers des tutoriels sont accessibles sur la page [[arduino:webographie|webographie]]. 
  • arduino/uc/mkr.1648459790.txt.gz
  • Dernière modification : 2022/03/28 11:29
  • de phil