Skip to content
reichart edited this page Aug 31, 2023 · 12 revisions

8 dépôts github : exemples-de-montages festisol CROUS-micro-python piano visio anumby jouets developpement-voiture raspberry-pico Blog ateliers numériques Repair Café d'Orsay

image

Le raspberry pico

Le raspberry pico est très économique (4 euros environ). Un clone existe pour 2 euros !

image

Le clone a 3 boutons et une diode LED tricolore

image

Il est très économique. Jouons avec pour réparer ou refaire de nouveaux jouets avec ce module plein de boutons et une drôle de led qui prend toutes les couleurs

ws2812.mp4

plan constructeur du module

Ce modèle est peu documenté ; la diode multicolore est pin 23 ; documentation ici

image

Pour ce clone de Pico, la diode n'est pas toujours activée. Pour accéder à la led colorée une soudure entre les 2 plots RGB suffit pour donner l'accès à la pin 23 pour avoir des couleurs

image

En appuyant sur BOOT : cliquez sur BOOT tout en le branchant sur la prise USB pour faire apparaître le contenu du pico

image

Le contenu version constructeur est réduit à 2 fichiers ; ajouter au minimum le logiciel micropython ou circuitpython

image

La diode led bleue interne de ce modèle est sur l'entrée 25 au lieu de 2 sur les modèles britanniques (Pin 25). En ajoutant micropython comme dans les raspberry pico , je fais clignoter la diode led interne

# clignote

from machine import Pin
import time

led = Pin(25, Pin.OUT)
led.value(1)

while True:
      led.value(1)
      time.sleep(2)
      led.value(0)
      time.sleep(1)

Comment avoir la température ? le pico possède un capteur de température interne dans la puce. J'utilise le convertisseur analogique vers digital ( ADC ) ; je peux avoir sa valeur ( 0 à 65535 )

# lire la température
from machine import ADC

while True:
     sensor_temp = ADC(4)
     temperature = sensor_temp.read_u16() 
     print (temperature)

La valeur de sortie du convertisseur est brute ; il faut l'étalonner pour avoir des degrés ; pour rajouter un écran j'ai ajouté un affichage ici

image

Une bibliothèque est nécessaire pour la diode LED. Le fichier ws2812.py est disponible ici à charger dans le pico

image

from ws2812 import WS2812
import utime
import machine
power = machine.Pin(11,machine.Pin.OUT)
power.value(1)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
YELLOW = (255, 150, 0)
GREEN = (0, 255, 0)
CYAN = (0, 255, 255)
BLUE = (0, 0, 255)
PURPLE = (180, 0, 255)
WHITE = (255, 255, 255)
COLORS = (BLACK, RED, YELLOW, GREEN, CYAN, BLUE, PURPLE, WHITE)

 #led = WS2812(12,1)#WS2812(pin_num,led_count)
led = WS2812(23,1)#WS2812(pin_num,led_count)

while True:
     print("Beautiful color")
     for color in COLORS: 
         led.pixels_fill(color)
         led.pixels_show()
         utime.sleep(0.2)

Premier montage sans composant Big Ben

Comment réaliser avec ce module un montage sans composant pour donner la température ? Big Ben sonne des coups d'horloge pour les heures. Nous allons utiliser la led bleue "power" pour afficher la température par le nombre de flash des unités : 1 pour 1 degré ou 21 degrés , 2 pour 2 degrés ou 21 degrés

image

Nous utilisons la led de couleur : nous pouvons faire varier la couleur avec une roue de couleur ( wheel) variant du rouge chaud au bleu froid.

image

Le programme utilise la librairie de la led (ws2812) : wheel() varie de 0 à 255 et retourne une matrice (R,G,B) avec les trois couleurs

 # roue de couleur de rouge > vert > bleu
 for pos in range (255):
     led.pixels_fill(led.wheel(pos))
     led.pixels_show()

Pico pour lire la température avec des bips pour les unités (3 pour 23 degrés ) et la couleur (rampe de couleur ) sur la LED code ici

temperature.mp4

Le schéma complet de ce clone

image

installation

installation de l'interface Thonny

Pas très facile d'avoir la dernière version ; pour pico j'ai eu besoin d'installer la version 4

image

Pour Linux https://projects.raspberrypi.org/en/projects/getting-started-with-the-pico/2 nous n'avons pas acces au numero de version et Python n'est pas installé sur le pico ; pour les fans du libre et en attendant que Thonny prenne en compte le RP2040, il faut installer manuellement le dépot UF2 rp2-pico-20210902-v1.17 en le copiant dans le répertoire du RP2040 ; procéder à un reboot RP2040 en appuyant sur le bouton BOOTSEL pour tester le blink sous linux ou le micropython RP2040 pour allumer un feu tricolore. Sur internet de nombreux projets sont portés ou décrits sous forme de vidéos mais sans accéder aux sources : nous proposons de créer ensemble un dépôt avec les fichiers UF2 pour les projets que nous avons testés ou créés

image

installation des "paquets"

Pas facile pour un nouvel utilisateur à trouver ; les librairies sont dans outils > gérer les paquets ; très pratique pour ajouter des composants

image

Je rentre le nom du composant (ici neopixel)

image

Je peux installer à partir d'un fichier

image

installation de l'interface Arduino1

image

installation de l'interface Arduino2

image

feux

réaliser un feu tricolore README

image

compteur-tricolore.mp4

console

image

amusez vous à transformer le pico en une console de jeux avec les codes ici

console de jeux

affichage de la température

Un pico relié à un affichage pour lire la température. Pas de capteur : nous utilisons le capteur interne du pico. Pas de soudure : l'afficheur basse consommation OLED se branche directement sur le pico avec une rallonge de câble Dupont femelle-femelle

image

code ici

affichage de la température avec un montage sans soudure !

IR

télécommande sans fil "IR remote" code ici

code py_irremote ici

image

USB

amusez vous à transformer votre pico en un périphérique USB pour faire une souris, un clavier ou un piano ! Choisissez la bibliothèque USBHID (human interface device) et amusez vous avec les exemples.

image

le pico prend le contrôle de la souris et la déplace de 100 pixels toutes les secondes : c'est perturbant !

image

accès aux codes

Distance

calcul de la distance sans soudure

Nous utilisons le capteur à ultrason raspberry-pi-pico-ultrasonic-sensor. Le montage est sans fil : il suffit de placer le capteur GND devant GND, echo pin 21, trig pin 20

image

from machine import Pin, time_pulse_us
import time

SOUND_SPEED=340 # Vitesse du son dans l'air
TRIG_PULSE_DURATION_US=10


echo_pin = Pin(21, Pin.IN)

trig_pin = Pin(20, Pin.OUT)

plus = Pin(19, Pin.OUT)


plus.value(1)



while True:
 # Prepare le signal
 trig_pin.value(0)
 time.sleep_us(5)
 # Créer une impulsion de 10 µs
 trig_pin.value(1)
 time.sleep_us(TRIG_PULSE_DURATION_US)
 trig_pin.value(0)

 ultrason_duration = time_pulse_us(echo_pin, 1, 30000) # Renvoie le temps de propagation de l'onde (en µs)
 distance_cm = SOUND_SPEED * ultrason_duration / 20000

 print(f"Distance : {distance_cm} cm")
 time.sleep_ms(500)

calcul de la distance sans soudure avec un affichage par couleur

nous utilisons la diode colorée !

accès aux codes

documentation en pdf

Périphériques USB sous PICO

Des lutins pour programmer des jeux sur esp32

un caméleon avec 3 méthodes de colorimétrie

une voiture pour suivre une ligne blanche

réaliser un afficheur à distance avec un vieil écran VGA

mesurer un courant sur place ou à distance

Une manette de jeux pour jouer avec la souris sous arduino

Une guirlande de Noel sous arduino

références

jouer à des jeux vidéos

lire Rendering And Display Composition Doom

image

  1. Zéro déchet
  2. Derniers projets
  3. Visio
  4. Video
  5. Archives

Proto 204