vittascience / microbit-libraries

This folder contains custom libraries for micro:bit in Python and the firmware used on the platform vittascience.com/microbit
3 stars 4 forks source link

DS18B20 micro:bit python #7

Open G-Boronad opened 2 years ago

G-Boronad commented 2 years ago

Bonjour, Je suis en train de mettre en place un certain nombre de TP avec la micro:bit en physique chimie. Je voudrais faire fonctionner le capteur de température DS18B20 avec une micro:bit V2. Savez vous si il existe une bibliothèque python pour cette carte? Cela nécessiterait d'implémenter le protocole one_wire qui pourrait a priori fonctionner sur cette carte. Malheureusement cela dépasse largement mes compétences. Peut être pourrez vous m'éclairer? Par avance merci. G.Boronad

leomlr commented 4 months ago

Bonjour M. Boronad,

Le capteur étanche DS18X20 ne fonctionne malheureusement pas simplement avec des commandes micropython classiques sur micro:bit comme avec les autres cartes type ESP32, STM32 ...

  1. Phil Hal a écrit une librairie en assembleur pour piloter le capteur mais elle ne fonctionne pas encore. D'après lui:

"The code doesn't work. It requires an oscilloscope to get the timings correct. The big number in the sleep sub routine (register 7) needs to be reduced and possibly also the number of register 0 needs to be reduced before calling the sleep sub routine"

Nous n'avons pas les compétences au sein de Vittascience pour faire de l'assembleur en micropython. En fait, c'est le même principe qu'avec le capteur DHT11 pour micro:bit, c'est de l'assembleur-micropython. Pourquoi ça marche bien avec les autres cartes mpy ? De ce que j'ai compris, les STM32 et ESP32 contiennent la librairie dht écrite en C avant build du firmware (dht11). Elles contiennent également onewire écrite en C avant build du firmware (ds18b20). En fait, micropython sur micro:bit est très lent, donc ne peut pas gérer les délais en microseconde pour lire et écrire sur la broches, donc tous les délais sont différents. Source: https://github.com/rhubarbdog/microbit-ds18b20

  1. C'est chose complexe d'ajouter onewire à micro:bit en micropython, cela nécessite également du travail, d'après Damien George:
Well, more so it was never turned on. Micro:bit v1 didn't have it and neither does v2.
To enable it and get the DS18x20 driver working requires a bit of work:
- ability for pins to be in OPEN_DRAIN mode
- implement mp_hal_pin_od_low, mp_hal_pin_od_high
- implement mp_hal_quite_timing_enter/exit, mp_hal_delay_us_fast
- enable MICROPY_PY_ONEWIRE
- freeze in the onewire.py bus driver
Then, the ds18x20.py driver in micropython-lib will work.

redirecting thread: https://github.com/microbit-foundation/micropython-microbit-v2/issues/162

Best regards, Léo Meillier

G-Boronad commented 4 months ago

Merci pour la réponse. En fouillant un peu, je vois que certains y sont parvenus: https://bxy.dfrobot.com.cn/bit_ds18b20 Merci encore Gwendal