Page 2
Compilation du programme exemple blink ..............16 3.2.3 Copie et exécution de blink sur le PICO................. 20 Installation et configuration de Visual Studio Code sur Raspberry ..........22 Installation ..........................22 Configuration ......................... 24 Installation des extensions pour Micro Python ..............24 4.3.1...
Page 3
8.1.3 Interruptions ........................38 IDE Arduino ..........................39 8.2.1 Entrées ........................... 39 8.2.2 Sorties ..........................40 8.2.3 Interruptions ........................41 PWM .............................. 42 LED interne ..........................43 9.1.1 Python ........................... 43 9.1.2 C / C++ ........................... 44 9.1.3 IDE Arduino ........................48 LED multicolore ........................
Page 4
15.2.2 Mise à l’heure automatique ..................86 Température ..........................88 16.1 Thermomètre interne ......................88 16.1.1 Python ........................... 88 16.1.2 C / C++ ........................... 89 16.1.3 IDE Arduino ........................91 16.2 DS18B20 ..........................93 16.2.1 Python ........................... 93 I2C .............................. 99 17.1 Python ...........................
Page 5
SD faisant office de disque dur, un écran etc…, le Raspberry PICO est un microcontrôleur. Il n’a donc pas de système d’exploitation et il ne peut stocker et faire fonctionner qu’un seul programme à la fois.
Page 6
1.1 Achat Son tarif est très attractif, début avril 2021, on le trouve à 4€20 chez Kubii. Le PICO W est quant à lui à 5€80 à sa sortie en juillet 2022...
Page 7
Pour une utilisation sur un BreadBord, prévoir 43 picos à souder sur les broches. 20 de chaque côté et 3 pour la partie debug (pour le côté pratique, mettre les 3 pico de debug vers le haut). Il peut également être directement soudé sur un circuit imprimé.
Page 8
2 Premier branchement Un premier test consiste à brancher le PICO sur un port USB d’un ordinateur Windows ou Linux. Bizarrement, le PICO semble se faire passer pour une clef USB de 128Mo, mais il n’en est rien. Le PICO ne comporte en fait que 2Mo de mémoire flash.
Page 9
Dès que le programme est copié, il prend le dessus sur le bootloader qui permet d’avoir le disque virtuel. Le disque virtuel s’arrête instantanément. Il peut être récupéré pour changer de logiciel ou de version de Python en appuyant sur le bouton « BOOTSEL » au moment du branchement du PICO sur la prise USB.
Page 10
Raspberry OS. Afin de configurer l’IDE, il faut suivre ce tutoriel. Dans la version de Raspberry OS du 11 janvier 2021, il est inutile d’installer le Plugins dans le chapitre « Installer la liaison avec PICO », c’est déjà fait.
Page 12
« main.py ». Le nom est important car cela permet au programme de se lancer automatiquement dès que le PICO est alimenté. La sauvegarde avec un autre nom oblige à se reconnecter avec Thonny pour ouvrir le...
Page 13
Le programme se lance alors automatiquement et fait clignoter la LED à 2.5Hz, et ce à chaque branchement du PICO.
Page 14
3.2 Faire clignoter la LED interne en C 3.2.1 Installation et paramétrage du SDK Encore un petit tutoriel à suivre pour installer tous les logiciels requis. Voici juste les copies d’écran des commandes du tutoriel. Cette installation prend une dizaine de minutes avec une ligne fibre haut débit.
Page 16
3.2.2 Compilation du programme exemple blink Cette procédure compile tous les exemples et prend plus d’une heure sur un RPI4...
Page 20
3.2.3 Copie et exécution de blink sur le PICO Connexion du PICO en appuyant sur le bouton « BOOTSEL »...
Page 21
Copie du programme blink.uf2 dans le PICO Et le PICO clignote à 2Hz (250ms allumé et 250ms éteint). Si l’interpréteur Python était installé, le programme blink.uf2 le remplace.
Page 22
4 Installation et configuration de Visual Studio Code sur Raspberry 4.1 Installation Suivre les instructions du site Visual Studio, mettez à jour l’OS et installez le logiciel.
Page 23
Le logiciel se trouve dans le menu « programmation »...
Page 24
4.2 Configuration Au premier démarrage, il faut lui indiquer quelques paramètres, tout particulièrement le look voulu. 4.3 Installation des extensions pour Micro Python...
Page 25
4.3.1 Python Extension 4.3.2 Pylance C’est très long à installer, environ 30mn sur mon PI4 2Go...
Page 26
4.4 Conclusion Même sur un RPI4, c’est très lent. Le plus simple que j’ai trouvé, c’est de connecter le PICO sur un Raspberry et de connecter le tout sur mon PC via VNC. Je développe sur Notepad++ avec la coloration syntaxique et je fais un simple copier-coller dans Thonny pour le Python et dans un fichier pour le C++.
Page 27
J’ai juste eu sur Windows une grosse alerte de sécurité lorsque j’ai installé le fichier « pico-setup- windows-0.3.4-x64.exe » Ce fichier n’est pas validé par Microsoft et il faut passer outre à l’alerte. Attention à bien configurer le port COM qui est marqué Raspberry Pi Pico si vous voulez des sorties textes.
Page 28
J’ai testé les programmes « Blink « et « Fade » et cela fonctionne bien avec la LED interne. Il faut juste faire attention à mettre le PICO en mode programmation avant de téléverser un programme (en appuyant sur le bouton lorsqu’on le branche)
Page 29
5.3 Test avec impression Afin de vérifier l’impression, j’ai pris le programme « Temperature » des exemples du RP2040 qui est censé donner la température du cœur du processeur. J’ai modifié le programme afin de faire clignoter la LED pour vérifier visuellement le bon fonctionnement.
Page 30
Et l’affichage fonctionne très bien (j’ai plus de doute sur la validité de la valeur mesurée) Attention : Le programme est bloqué tant que le moniteur série n’est pas lancé. Donc pour un programme autonome, ne pas mettre d’instruction Serial...
Page 31
Une documentation des fonctionnalités et des fonctions est disponible ici. 5.5 Conclusion Le Pico fonctionne très bien avec l’IDE Arduino et cela évite la complexité (galère) du fichier makefile et de la syntaxe pas toujours évidente ainsi que des variables d’environnement parfois ésotérique.
Page 32
6 Les ports d’entrées-sorties Le Pico comporte un grand nombre de ports d’entrées-sorties lui permettant d’envoyer et de recevoir des informations Le plan du PICO standard est le suivant :...
Page 33
Le plan du PICO W est le suivant : Il est en tout point identique au PICO standard, excepté pour la LED interne qui passe du GPIO 25 au module Wifi.
Page 34
Attention : ne pas tirer plus de 300mA sur cette broche et ne jamais s’en servir pour alimenter un moteur ou un servo. RUN (broche 30). Cette broche permet de désactiver le Pico si elle est forcée à la masse. Pour que le Pico soit actif, cette broche doit être à 3.3V ou laissée en l’air.
Page 35
8 Gestion des entrées/sorties Afin de tester les entrées sorties de base, je vais brancher une LED sur l’une des sorties ainsi qu’un switch électronique sur une entré. Le switch électronique sera un TTP223. L’avantage de ce switch par rapport au bouton poussoir mécanique, c’est que la transition est très franche et qu’il n’y a pas de rebond entrainant des déclanchements parasites.
Page 37
8.1 Python 8.1.1 Entrées Ce programme va boucler et donner le nombre de boucles effectuées lorsque le bouton est pressé. import machine button = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_UP) compteur while True: button.value(): compteur print('Button pressed!', compteur) 8.1.2 Sorties Fait clignoter la LED import time from...
Page 38
8.1.3 Interruptions Ce programme fait changer d’état la LED à chaque appui sur le bouton from machine import flag True handle_interrupt(pin): global flag print('Interruption broche:', pin) flag: led.value(1) flag False else: led.value(0) flag True = Pin(16, Pin.OUT) = Pin(15, Pin.IN) pir.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt) while True:...
Page 39
8.2 IDE Arduino 8.2.1 Entrées Il suffit d’utiliser le programme exemple « Button » en modifiant les ports de sortie et d’entrée avec le bon numéro. La LED s’allume lorsque le bouton est actif. Suivant le paramétrage du TTP223, il est possible d’en faire un bouton poussoir ou un interrupteur, la LED s’allumera alors lorsqu’on appui sur le bouton ou changera d’état à...
Page 40
8.2.2 Sorties Il suffit d’utiliser le programme exemple « Blink » en modifiant le port de sortie avec le bon numéro. Blink Turns an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO it is attached to digital pin 13, on MKR1000 on pin 6.
Page 42
9 PWM Le pico possède 16 canaux PWM qui sont mappé sur une ou deux sorties GPIO suivant le tableau suivant. Ce qui donne le câblage suivant.
Page 43
Afin de faire fonctionner le programme, il faut recharger l’interpréteur Python puis charger le programme tel que défini dans le chapitre permettant de faire clignoter une LED. Ne pas oublier de le nommer main.py et de le stocker dans le Raspberry PICO si l’on veut que le programme démarre à l’allumage du PICO.
Page 44
9.1.2 C / C++ Le programme sera le programme exemple pwm_led_fade.c. Pour la compilation, voir celle du programme de clignotement de la LED...
Page 47
Et copie du programme pwm_led_fade.uf2 dans le PICO Le fonctionnement est beaucoup plus rapide avec un cycle de l’ordre d’une seconde et semble beaucoup plus progressif à visualiser.
Page 48
>= 255) { fadeAmount = -fadeAmount; // wait for 30 milliseconds to see the dimming effect delay(30); Sauf que ce programme n’a strictement rien à voir avec le PWM géré par le pico, c’est un PWM fait par programme.
Page 49
On utilise ici la broche 3V3(OUT) pour alimenter la LED. Attention, cette broche ne doit pas être utilisée pour fournir plus de 300mA ou pour alimenter un moteur ou un servo. Pour ce montage, le Pico peut encore être alimenté via le port USB B.
Page 51
9.3 Fonctionnement d’un servo 9.3.1 Python https://www.youngwonks.com/blog/How-to-use-a-servo-motor-with-the-Raspberry-Pi-Pico https://peppe8o.com/sg90-servo-motor-with-raspberry-pi-pico-and-micropython/...
Page 52
10 Convertisseur AD J’ai branché un simple potentiomètre de 10kΩ comme sur ce schéma sur la broche ADC0 (GP26) 10.1 Python Le programme lit en boucle le convertisseur. Attention à mettre une temporisation, sinon le convertisseur n’a pas le temps de faire les mesures. from machine import...
Page 53
10.1.1 Tension d’alimentation Il est possible de lire la tension d’alimentation (la tension d’entrée, celle du port USB ou de la broche VBus). import machine import time #Vsys Voltage #N.B. Can't use ADC(29). it crashes!!!! #to get around it we need to declare ADC(3), # getPads, setPads, readADC and then put back the original Pads #set or get GPIO pads settings.
Page 55
Pour avoir la pleine résolution du convertisseur, attention à bien positionner le nombre de bit du convertisseur (12 pour le pico) sinon les résultats seront comme sur un UNO standard entre 0 et 1023. /* Released into the public domain */...
Page 56
# put the device to sleep machine.deepsleep(9000) On se demande bien où est le mode deepsleep. Le PICO consomme 18.4mA au minimum avec une pointe au-dessus de 20mA toutes les neuf secondes pour allumer la LED.
Page 57
J’ai même lu que le mode deepsleep ne fonctionnait pas quand le PICO est alimenté en USB. Qu’à cela ne tienne, je vais l’alimenter en 3.3V via la broche VSYS. Le courant est alors un peu plus fort, pour une puissance quasi identique, mais pas l’ombre d’un mode...
Page 58
Par contre, le réveil se fait par un bouton sur la broche GP15 et non au bout d’un certain temps, mais c’est le principe du mode « dormant » A noter que 1mA semple être le minimum pour le PICO.
Page 59
12 Multicore Le processeur RP2040 possède deux cœurs. C’est-à-dire qu’il est capable de faire tourner deux programmes en parallèle. Il faut bien sûr faire attention à ne pas utiliser les mêmes ressources (port, périphérique, interface etc…) dans les deux threads. Si les deux threads utilisent les mêmes ressources, il faut dans ce cas utiliser les sémaphores tel que décrit afin d’éviter un plantage.
Page 60
12.2 IDE Arduino L’un des exemples décrit le programme de base pour faire fonctionner les deux cœurs.
Page 61
// Demonstrates a simple use of the setup1()/loop1() functions // for a multiprocessor run. // Will output something like, where C0 is running on core 0 and // C1 is on core 1, in parallel. // 11:23:07.507 -> C0: Blue leader standing by... // 11:23:07.507 ->...
Page 63
Utiliser le PICO W qui comporte directement un module WIFI. C’est cette solution que je vais utiliser. Attention : La LED interne du PICO W n’est plus câblé sur le GPIO 25 du processeur, mais sur le module Wifi. Elle peut toujours être commandée, mais avec une commande différente que celle du PICO standard.
Page 64
Lors de son démarrage dans Thonny, le programme indiquera l’adresse IP assignée au serveur web du PICO W Le serveur écoute 3 URL qui peuvent être appelées dans un navigateur : / La racine du site (ainsi que toutes les autres adresses sauf celles-ci-dessous)
Page 65
/light/on Qui allume la LED interne /light/off Qui éteint la LED interne...
Page 66
Créer d’abord un fichier secrets.py avec les informations de connexion de votre box. ssid = 'Livebox-xxxx' password = 'xxxxxxxxxxxxxxxxxxxx' Puis sauvegardez ce programme en le nommant main.py afin qu’il démarre automatiquement à l’allumage du PICO W import usocket socket import...
Page 67
"ON" ClientSocket.send(htmlresponse.format(Led)) ClientSocket.close() Lors de son démarrage dans Thonny, le programme indiquera l’adresse IP assigné au serveur web du PICO W Le serveur propose une page web avec 4 commandes : Attention : Le serveur écoute sur le port 8080.
Page 70
Paris ainsi que plusieurs informations annexes. Ce programme ayant besoin de se connecter à Internet, il ne fonctionne que sur un PICO W. Il lira l’API toutes les minutes. (Attention à ne pas lire trop rapidement une API sous peine de se faire bannir s’il y a trop de demandes rapprochées).
Page 72
15 Horloge 15.1 Horloge interne 15.1.1 Python Documentation sur la librairie RTC. 15.1.1.1 Réglage from machine import = RTC() rtc.datetime((2022, 5, 1, 0, 4, 0, 0, 0)) print ("La date et l'heure ont été réglées à:") print(rtc.datetime())
Page 73
15.1.1.2 Affichage from machine import from utime import sleep = RTC() while True: = rtc.datetime() print("{:02d}/{:02d}/{:04d} {:02d}:{:02d}:{:02d}".format(now[2],now[1],now[0],now[4],now[5],now[6])) sleep(1)
Page 76
Toutefois, je vais modifier le schéma en y ajoutant un module convertisseur de ligne pour adapter les tensions 3.3V et 5V sur le bus I2C. Même si cela semble fonctionner sans adaptateur, je n’ai pas envie de cramer mon PICO.
Page 77
Le schéma global sera donc le suivant :...
Page 78
15.2.1 Mise à l’heure manuel Mettre les 4 fichiers suivants dans le PICO Gestion du DS1307 à nommer ds1307.py from micropython import const DATETIME_REG = const(0) # 0x00-0x06 CHIP_HALT = const(128) CONTROL_REG = const(7) # 0x07 RAM_REG = const(8) # 0x08-0x3F...
Page 79
Gestion du lcd à nomme lcd_api.py import time class LcdApi: # Implements the API for talking with HD44780 compatible character LCDs. # This class only knows what commands to send to the LCD, and not how to get # them to the LCD. # It is expected that a derived class will implement the hal_xxx functions.
Page 80
def hide_cursor(self): # Causes the cursor to be hidden self.hal_write_command(self.LCD_ON_CTRL | self.LCD_ON_DISPLAY) def blink_cursor_on(self): # Turns on the cursor, and makes it blink self.hal_write_command(self.LCD_ON_CTRL | self.LCD_ON_DISPLAY | self.LCD_ON_CURSOR | self.LCD_ON_BLINK) def blink_cursor_off(self): # Turns on the cursor, and makes it no blink (i.e. be solid) self.hal_write_command(self.LCD_ON_CTRL | self.LCD_ON_DISPLAY | self.LCD_ON_CURSOR) def display_on(self):...
Page 81
def custom_char(self, location, charmap): # Write a character to one of the 8 CGRAM locations, available # as chr(0) through chr(7). location &= 0x7 self.hal_write_command(self.LCD_CGRAM | (location << 3)) self.hal_sleep_us(40) for i in range(8): self.hal_write_data(charmap[i]) self.hal_sleep_us(40) self.move_to(self.cursor_x, self.cursor_y) def hal_backlight_on(self): # Allows the hal layer to turn the backlight on.
Page 82
Gestion de l’interface I2C pour le lcd à nommer pico_i2c_lcd.py import utime from lcd_api import LcdApi from machine import # PCF8574 pin definitions MASK_RS 0x01 # P0 MASK_RW 0x02 # P1 MASK_E 0x04 # P2 SHIFT_BACKLIGHT # P3 SHIFT_DATA # P4-P7 class I2cLcd(LcdApi): #Implements a HD44780 character LCD connected via PCF8574 on I2C...
Page 84
Et le programme principale à nommer main.py si vous voulez qu’il se lance automatiquement, sinon comme vous voulez. Perso, je l’ai nommé horloge.py from machine import I2C, from ds1307 import DS1307 from pico_i2c_lcd import I2cLcd import utime i2c_lcd = I2C(id=1,scl=Pin(3),sda=Pin(2),freq=100000) = I2cLcd(i2c_lcd, 0x27, 2, 16) i2c_rtc I2C(0,scl...
Page 86
Pour éviter de saisir la date et l’heure, on va utiliser l’API qui donne la date et l’heure afin d’initialiser le DS1307. Il faut par contre utiliser un PICO W car on a besoin du Wifi. Il suffit de modifier le programme horloge.py de la façon suivante : Les autres fichiers restent identiques.
Page 88
16 Température 16.1 Thermomètre interne Le PICO possède un thermomètre branché sur la broche 4 du convertisseur AD interne. 16.1.1 Python import machine import utime thermometre = machine.ADC(4) while True: print - (thermometre.read_u16() * (3.3 / (65535)) - 0.706) / 0.001721) utime.sleep(2)
Page 89
16.1.2 C / C++ Le programme « thermometre » sera une modification de l’exemple « hello_adc » Copie de l’exemple « hello_adc » dans le répertoire « thermometre » pour modification Renommage du fichier source en « thermometre.c » Modification du fichier « CMakeLists.txt » add_executable(thermometre thermometre.c target_link_libraries(thermometre pico_stdlib hardware_adc)
Page 90
Modification du fichier « thermometre.c » * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. * SPDX-License-Identifier: BSD-3-Clause #include <stdio.h> #include "pico/stdlib.h" #include "hardware/adc.h" main() { stdio_init_all(); printf("ADC Example, measuring GPIO26\n"); adc_init(); // Select ADC input 4 thermometre adc_select_input(4); while (1) { // 12-bit conversion, assume max value == ADC_VREF == 3.3 V...
Page 91
16.1.3 IDE Arduino La lecture du thermomètre du Pico est directement incluse ans un exemple standard de l’IDE.
Page 92
/* Released into the public domain */ void setup() { Serial.begin(115200); delay(5000); void loop() { Serial.printf("Core temperature: %2.1fC\n", analogReadTemp()); delay(1000); Le thermomètre semble avoir une sensibilité de 0.4°, ce n’est pas terrible, mais au final largement aussi bon voire meilleur que les DHT11 DHT22 habituellement utilisés.
Page 93
Il a une sensibilité de 0.5°, consomme très peu et a un temps de mesure de 750ms pour la meilleure résolution de 12bits. Pour simplifier le câblage, j’ai utilisé un module Sunfounder pré- câblé. Le câblage est simple : PICO Module DS18B20 Sunfounder GP28 (34) 3V3 OUT (36) GND (33) 16.2.1 Python 16.2.1.1 Mesure simple...
Page 94
à ce serveur. J’utilise Mosquitto sur un Raspberry PI. Afin de créer le serveur et le tester, il faut juste appliquer les chapitres « Installation de Mosquitto », « Configuration du serveur » et « Test du serveur » en changeant dans ce chapitre le sujet (topic) «...
Page 95
pubtopicTemp : le nom du sujet écouté par le serveur ou la température sera envoyé Ce fichier sera nommé secretsmq.py sur le PICO W Puis, le programme lui-même qui enverra à l’agent MQTT la température mesurée par le DS18B20 toutes les 15s.
Page 96
from secretsmq import secrets from onewire import OneWire from ds18x20 import DS18X20 from umqtt.simple import MQTTClient from machine import #led declaration = machine.Pin('LED', machine.Pin.OUT) #sensor DS18b20 on pin 28 = DS18X20(OneWire(machine.Pin(28))) roms = ds.scan() #network declaration # Set country to avoid possible errors / https://randomnerdtutorials.com/micropython-mqtt-esp32-esp8266/ rp2.country('CA') wlan...
Page 99
Afin de tester l’I2C, je vais utiliser le petit convertisseur AD/DA PCF8591. Ce convertisseur 8 bits comporte 1 convertisseur digital analogique et 4 entrées vers un convertisseur analogique digital. Le module utilisé peut se trouver dans les kits pour Arduino ou Raspberry de chez Sunfounder. Vous trouverez également un exemple d’utilisation sur un Raspberry.
Page 101
17.1.2 Conversion digitale analogique Sur ce site, un petit programme qui permet de programmer le convertisseur digital analogique. Le code 72 correspond à l’adresse décimale du convertisseur (0x48) Les codes 0x40 et 0x00 permettent de programmer le périphérique en mode conversion digitale analogique avec une valeur à...
Page 102
17.1.3 Conversion analogique digitale Le convertisseur 0 est directement utilisable pour les tests car il est câblé sur l’alimentation du périphérique via un petit potentiomètre R4 qui permet de faire varier la tension. L’entrée peut également être câblé normalement à condition d’enlever le cavalier P3. import machine import...
Page 103
La librairie Wire permet d’accéder au bus I2C. Le Pico comportant de nombreuses broches faisant office de broche I2C, il faut soit utiliser les broches par défaut (SDA=6 et SCL=7) soit indiquer les broches utilisées tel qu’indiqué sur ce site.
Page 104
17.2.1 Scan du bus I2C #include <Wire.h> //include Wire.h library void setup() Wire.setSDA(16); Wire.setSCL(17); Wire.begin(); // Wire communication begin Wire.setClock(10000); Serial.begin(9600); // The baudrate of Serial monitor is set in 9600 while (!Serial); // Waiting for Serial Monitor Serial.println("\nI2C Scanner"); void loop() byte...
Page 105
17.2.2 Conversion digitale analogique #include <Wire.h> //include Wire.h library byte valeur = 0; void setup() Wire.setSDA(16); Wire.setSCL(17); Wire.begin(); Wire.setClock(10000); // Serial a 9600 bauds et attente d'initialisation Serial.begin(9600); while (!Serial); void loop() // Ecriture dans le convertisseur digital analogique Wire.beginTransmission(0x48); Wire.write(0x40);...
Page 106
17.2.3 Conversion analogique digitale #include <Wire.h> //include Wire.h library byte valeur = 0; void setup() Wire.setSDA(16); Wire.setSCL(17); Wire.begin(); Wire.setClock(10000); // Serial a 9600 bauds et attente d'initialisation Serial.begin(9600); while (!Serial); void loop() // Affiche les valeurs Wire.beginTransmission(0x48); Wire.write(0x44); Wire.endTransmission(); Wire.requestFrom(0x48, 5); valeur = Wire.read();...
Page 107
5kΩ, 10kΩ, 50kΩ ou 100kΩ. Afin de pouvoir vérifier le fonctionnement, les sorties des deux potentiomètres seront câblées sur les entrées analogique A0 et A1 du Pico. Le câblage ne requière aucun autre composant.
Page 108
Le registre TCON sert à connecter ou déconnecter les potentiomètres, cela peut être utile si l’un des deux n’est pas utilisé pour minimiser la consommation. Il sert également à connecter ou déconnecter la broche SHDN de shutdown. Par défaut, à l’allumage les potentiomètres sont connectés et la broche shutdown est déconnectée.
Page 109
Pour le registre STATUS, seul un bit est utilisable, indiquant l’état de la broche shutdown SHDN. A l’allumage, les potentiomètres se positionnent à la valeur du milieu soit environ 50kΩ pour moi (ma version est un 104, soit un 100kΩ).
Page 110
18.1 Python Le programme positionne le potentiomètre 0 au minimum et le potentiomètre 1 au maximum. Il fait ensuite varier les valeurs de min vers max puis inversement (l’inverse pour le potentiomètre 1). from machine import Pin, ADC, import time compteur sens True...
Page 112
18.2 IDE Arduino 18.2.1 Single Core Le programme positionne le potentiomètre 0 au minimum et le potentiomètre 1 au maximum. Il fait ensuite varier les valeurs de min vers max puis inversement (l’inverse pour le potentiomètre 1). #include <SPI.h> const uint8_t SPI_MISO = 16;...
Page 113
SPI.end(); compteur++; // 257 nombre de pas (voir datasheet) if(compteur == 257) { compteur = 0; sens = !sens; Serial.println("Changement sens"); delay(40);...
Page 115
18.2.2 Multicore Le même programme, mais en multicore. Un cœur gère la partie convertisseurs A/D et l’autre le SPI. #include <SPI.h> const uint8_t SPI_MISO = 16; const uint8_t SPI_CS = 17; const uint8_t SPI_SCK = 18; const uint8_t SPI_MOSI = 19; compteur = 0;...
Page 118
19 Fonctionnement d’un module ultrason HC-04 https://peppe8o.com/control-an-hc-sr04-ultrasonic-sensor-with-raspberry-pi-pico-and-micropython/...
Page 119
20 Communication Bluetooth grâce à un HC-05 https://circuitdigest.com/microcontroller-projects/how-to-use-bluetooth-on-raspberry-pi-pico-and- control-led-using-mobile...
Page 122
GND (3, 8, 13, 18, 23, 28, 33, 38) I2C0 SCL (2) Peut-être câblé sur n’importe quelle broche SCL du PICO en changeant la déclaration dans le programme I2C0 SDA (1) Peut-être câblé sur n’importe quelle broche SDA du PICO en changeant la déclaration dans le programme...
Page 123
23.1 Python J’ai essayé d’installer directement le plugin dans Thonny, mais ça ne fonctionne pas :...
Page 124
Donc, je récupère le fichier à l’URL indiqué dans la page d’accueil du plugin et je le copie comme fichier bme280.py dans le PICO...
Page 125
Puis le programme principal : from machine import Pin, #importing relevant modules & classes from time import sleep import bme280 #importing BME280 library i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000) #initializing the I2C method while True: = bme280.BME280(i2c=i2c) #BME280 object created #temperature = bme.temperature #humidity = bme.humidity #pression = bme.pressure valeurs...
Page 126
Pour l’explication de la valeur « delta » voir article. Comme j’ai un BMP280, l’humidité est à 0...
Page 127
24 SGP30 24.1 Python Test de cet article https://tutoduino.fr/tutoriels/qualite-air-interieur-raspberry-pi-pico-sgp30/ Attention à bien prendre le MicroPython avec la librairie pour le SGP30 Attention également, à bien cabler le port I2C en fonction de ce qui est déclaré en début de programme.
Page 129
25 Documentation Présentation générale https://www.framboise314.fr/raspberry-pi-pico-la-carte-microcontroleur-de-la-fondation/ Documentation officielle https://www.raspberrypi.org/documentation/rp2040/getting-started/ C / C++ SDK https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-c-sdk.pdf Exemples C / C++ https://github.com/raspberrypi/pico-examples https://github.com/raspberrypi/pico-sdk Une multitude d’exemples et de projets: http://electroniqueamateur.blogspot.com/2021/04/rasbperry-pi-pico-programmation-en.html Documentation pour l’utilisation de l’IDE Arduino https://arduino-pico.readthedocs.io/en/latest/index.html PICO W https://picockpit.com/raspberry-pi/everything-about-the-raspberry-pi-pico-w/ https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf https://www.hackster.io/news/low-cost-connectivity-for-the-iot-hands-on-with-the-raspberry-pi- pico-w-696b9f42011e https://peppe8o.com/new-raspberry-pi-pico-released-finally-the-wifi-came-hidding-bluetooth- capabilities/...