Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DS18B20 micro:bit python #7

Open
G-Boronad opened this issue May 24, 2022 · 2 comments
Open

DS18B20 micro:bit python #7

G-Boronad opened this issue May 24, 2022 · 2 comments

Comments

@G-Boronad
Copy link

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
Copy link
Member

leomlr commented Feb 24, 2024

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: microbit-foundation/micropython-microbit-v2#162

Best regards,
Léo Meillier

@G-Boronad
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants