# WellBot

Le WellBot est un petit robot développé par la société Didel dans le but d'apprendre aux jeunes à faire un peu d'électronique et de micro-informatique.
Le kit peut être réalisé sans aucune notion de programmation, juste pour le plaisir de se "souder les doigts" et avoir un petit robot rigolo qu'on a eu le plaisir de faire soi-même. C'est déjà beaucoup, et certainement suffisant pour la plupart, mais en même temps on peut faire plus que cela : faire des premier pas en informatique embarquée et comprendre comment fonctionne un système informatique rudimentaire.
Il est vrai que l’on peut apprendre à programmer sur un ordinateur, c’est joli tout de suite, mais en même temps, les PC d'aujourd'hui sont des machines complexes, avec des OS complexes, des environnement de développement complexes, si bien qu’à la fin, tout est assez abstrait sur comment cela fonctionne.
Avec des kits comme le WellBot, on retourne aux débuts de l'informatique : un hardware minimaliste (même hyper simple puisque le WellBot utilise un PIC de la société Microchip.
Le but de ce cours est d'aller au delà de la documentation de Didel, pour essayer d'expliquer plus en détail le fonctionnement de ce Kit et de ce que l’on peut en faire. Comme toujours, faire un bon cours est long et n'est jamais achevé... d'où l’idée de le faire sur Wikiversité et que d'autres puissent corriger les erreurs et poursuivre l'effort.

# Hardware
## Le processeur

Le processeur est un PIC16f882, dont on trouve le databook ici

## Le Schéma du robot

Le schéma donné par Didel est le suivant:
On voit sur ce schéma que le cœur du système est un PIC 16F882. C'est à lui seul un petit ordinateur. On retrouve dans un PIC tous les concepts de base d'un ordinateur, mais en très simple.

## Les moteurs pas à pas

On voit que le PORTB est utilisé pour piloter deux moteurs pas à pas. On se reportera à la description de Didel sur les moteurs pas à pas.

## Les détecteurs de proximités

Le Robot peut avoir deux capteurs de distance IR.
Attention : pour une raison étrange, le pinning des capteurs ne correspond pas sur mon robot à celui des capteurs ; on voit sur la photo que j’ai dû croiser les pattes des capteurs (en mettant de la gaine thermo pour qu’elles ne se touchent pas). Le pinning des détecteurs est plus visible sur ce document.
On voit sur cette photo les deux connecteurs pour les détecteurs de distance. On voit aussi quelle I/O (RA0 et RA1) est responsable de quel détecteur. Le système adopté ici est d’utiliser la pin en sortie pour charger le condensateur, puis de la commuter en entrée et de regarder à quelle vitesse le condo se décharge via le photorécepteur IR. Plus il y a de lumière, plus la décharge est rapide et donc plus on est près d'un obstacle. La méthode complète pour lire les capteur est décrite ici.
Dans le code ci-dessous, on voit une implémentation simple de la lecture des capteurs. Cette routine doit être appelée régulièrement. La dernière distance lue se trouve dans DistGauche et DistDroite respectivement. On voit que cette implémentation n'est que partielle : elle ne tient pas compte de la lumière ambiante, ni du fait que la décharge du condensateur n’est pas linéaire avec la distance. Mais cela donne déjà des résultats corrects

# Cycle de développement

On se reportera à Bico64#Comprendre le cycle de développement pour une description du cycle de développement et des outils à installer

# Exemples de programmes
## Evite Les Bords

Ce programme est assez simple et minimaliste: il essaie d’éviter les bords d'un labyrinthe.
Il ne met en œuvre que les moteurs, les capteurs de distance et la Led.
La Led représente l'état du capteur de distance Gauche; elle clignote d'autant plus vite qu'on est près du mur.

# Autres Liens

Voici les liens vers les documents originaux de Didel, qui ne sont pas toujours très facile à trouver.
* Architecture des PICS
* Tout sur les PIC donne accès à plein de liens où l’on trouve de l'information
* Apprendre à programmer avec le 16F877A C'est un document pas à pas, expliquant le PIC, les instructions en CALM, mais pas fait explicitement pour le WellBot, mais plutôt pour d’autre kits.
* CALM pour PIC
* Utiliser les PIC 16F et 18F