À propos de S4A

S4A est une modification de Scratch qui permet de programmer facilement la plateforme hardware open-source Arduino. Elle propose de nouveaux blocs pour gérer les senseurs et actuateurs connectés à l'Arduino. Il y a aussi un tableau de bord pour monitorer les senseurs similaire à celui de la PicoBoard.

Le but principal de ce projet est d'attirer les gens dans le monde de la programmation. Le but est aussi de fournir une interface de haut niveau aux programmeurs d'Arduino avec des fonctions permettant d'interagir avec un ensemble de cartes à partir d'évènements utilisateurs.

L'interface

Un programme S4A pour controller un capteur de lumière Theremin, avec la possibilité d'enregistrer et rejouer les valeurs lues

Les objets Arduino offrent des blocs pour les fonctionnalités de base du microcontrôleur, lectures et écritures analogiques et numérique, et également pour celles de haut niveau. Vous retrouverez ainsi des blocs pour gérer les servomoteurs standards et à rotation continue :

Dans S4A, une carte Arduino est représentée par un type spécial de lutin. Le lutin Arduino va automatiquement trouver le port USB sur lequel la carte est connectée.

Il est possible de se connecter à plusieurs cartes en même temps, simplement en ajoutant un nouveau lutin Arduino.

Détails techniques

Cartes supportées

S4A fonctionne avec les Arduino Diecimila, Duemilanove et Uno. Les autres cartes n'ont pas été testées, mais pourraient aussi fonctionner.

Connectivité

Les composants doivent être connectés d'une façon particulière. S4A autorise 6 entrées analogiques (pins analogiques), 2 entrées numériques (pins numériques 2 et 3), 3 sorties analogiques (pins numériques 5, 6 et 9), 3 sorties numériques (pins numériques 10, 11 et 13) et 4 sorties spéciales pour connecter les servomoteurs à rotation continue Parallax (pins numériques 4, 7, 8 et 12).

Il est possible de contrôler une carte avec une connexion sans fil en lui ajoutant un module RF, un Xbee par exemple.

S4A vous permet de contrôler autant de cartes qu'il y a de ports USB disponibles sur votre machine.

Compatibilité

S4A est rétro-compatible avec Scratch, et vous pouvez donc ouvrir des projets Scratch avec. Par contre, vous ne pourrez pas partager vos projets sur le site communautaire de Scratch car cela enfrendrait les conditions d'utilisation de Scratch.

Notez bien que cette compatibilité ne fonctionne pas dans les deux sens, ce qui fait que vous ne pourrez pas ouvrir un projet S4A dans le Scratch original.

Utiliser une PicoBoard avec une Arduino est également supporté.

Protocole

S4A interagit avec l'Arduino en envoyant les états des actuateurs et en recevant les états des senseurs toutes les 75 ms, la largeur de l'impulsion doit être plus grande que cette période de temps. L'échange de données suit le protocole de la PicoBoard et nécessite un programme spécifique (firmware) sur la carte. Référez-vous à la section Téléchargement pour avoir de plus amples informations sur comment procéder.

Documentation et exemples

Vous trouverez ici toute la documentation, les vidéos, les exemples et les exercices que nous avons créés.

Atelier

Une archive ZIP contenant tout le matériel et les exercices nécessaires pour un atelier peuvent être téléchargé ici :

Elisava Workshop Materials 2011 (EN)

Ce matériel a été créé et utilisé par notre équipe dans un cours de S4A à la Elisava School of Design (Barcelone) en 2011.

Exemples basiques

Vous trouverez ici des exemples S4A basiques, avec le schéma Arduino et un fichier de projet .sb pour Scratch à télécharger.

Bouton et LED

Un exemple qui montre comment allumer une LED en appuyant sur un bouton.

Code

LED RGB

Utiliser une LED RGB depuis Scratch.

Code

Bouton, LED et état

Une LED qui change d'état lorsqu'on appuie un bouton.

Code

Photorésistance et LED

Utiliser l'entrée d'une photorésistance pour contrôler une LED.

Code

Vidéos

Certaines des démos suivantes sont en catalan ou espagnol, mais les images parlent assez bien d'elles-mêmes. Certaines des vidéos ont également des sous-titres en français.

Un robot complet

Un robot avec une caméra rotative, un capteur de distance et contrôlable à distance. Il utilise deux cartes Arduino (contrôle à distance + robot), un module sans-fil XBee, trois capteurs infrarouge, un module caméra et trois servomoteurs.

Introduction à l'atelier S4A

Cette vidéo sert d'introduction pour les ateliers S4A donné au Citilab, mais vous y trouverez quelques démos de ce qui peut être réalisé avec notre logiciel.

Exercises

Musique: Un instrument du style Thérémine (EN)

Domotique: Un contrôleur pour un rideau (EN)

Robotique: Une voiture contrôlée par un clavier (EN)

Pour les développeurs

Spécifications du protocole S4A (EN)

Android

Hi Scratch pour Arduino!

Nous avons développé une simple application Android qui peut communiquer avec S4A par HTTP à l'aide du protocole pour senseurs distants de Scratch. Vous pouvez la télécharger ici ou en scannant le QR code ci-dessous :

Pour l'utiliser, suivez les instructions ci-dessous :

  • Dans S4A, activez les senseurs distants (clic droit sur n'importe quel bloc de type "Senseur")
  • Dans HiS4A (Android), entrez l'adresse IP locale de la machine sur laquelle tourne S4A (vous pouvez la trouver par le menu Édition > Montrer l'adresse IP), et le préfixe (seulement nécessaire si vous vous connectez depuis plusieurs clients Android)
  • Les boutons correspondent aux messages et le pavé tactile et slider aux senseurs distants
IMPORTANT ! S4A et HiS4A doivent tous les deux être connectés sur le même réseau local !

API HTTP

L'application Android utilise un très simple protocole construit sur le protocole de messages HTTP de Scratch, tel qu'il est aussi possible d'interagir avec S4A à partir d'un navigateur ou toute autre application qui a accès au réseau.

Il faut avant tout activer l'option des senseurs distants dans S4A (clic droit sur n'importe quel bloc de type "senseur").

Spécification des messages

Diffuse un message :
http://[IP]:42001/broadcast=[nom-du-message]

Envoie la valeur à un senseur distant (par exemple, l'accéléromètre du client, la position de la souris, etc.) :
http://[IP]:42001/sensor-update=[nom-du-senseur]=[valeur]

Met à jour une variable de S4A :
http://[IP]:42001/vars-update=[nom-de-variable]=[valeur]

Application web de test

Si vous voulez voir l'API HTTP en action, vous pouvez le faire depuis notre application web de test :

Hi S4A! from the Web

Utiliser l'application web d'exemple :

  • Les variables S4A dont le nom commence avec un signe plus (par exemple +playerName) sont visibles et modifiables depuis le client web
  • Les variables S4A dont le nom commence avec un signe moins (par exemple -playerScore) sont seulement visibles (non modifiable) depuis le client web
  • Les variables S4A dont le nom ne commence ni avec un signe plus, ni avec un signe moins ne sont pas visibles depuis le client web
  • Les messages S4A dont le nom commence avec un signe plus (par exemple +startGame) sont visibles depuis le client web
  • Les messages S4A dont le nom ne commence pas avec un signe plus ne sont pas visibles depuis le client web

Historique des modifications

Version 1.6

    S4A:

  • Résolution d'un bug avec les blocs moniteurs affichant %t au lieu du nom du senseur
  • Résolution d'un bug lorsqu'une erreur d'une entrée analogique ne diparaissait pas
  • Résolution d'une bug lors de la création d'un nouvel objet Arduino avec la sélection d'une connexion existante (merci à Vaner Anampa, Erik Bartmann et beaucoup d'autres pour avoir signalé ce bug)
  • Changement des pins par défaut et de leur ordre sur les blocs Arduino (comme avant)
  • Fusion des blocs servo, les pins 8, 7 et 4 pouvant maintenant être utilisé pour les servomoteurs standards et CR.
  • Ajout d'un bloc HTTP (méthode GET) comme demandé par l'IMI ("Institut Municipal d'Informatica") de Barcelone
  • Mise à jour de certains fichiers de traduction. Merci à :
    • Frederique Pinson - Français (fr.po)
    • Miguel Bouzada - Galicien (gl.po)
    • Fabio Albanese - Italien (it.po)
    • Sungkuk Lim - Coréen (ko.po)
    • Jan Van den Bergh - Néerlandais (nl.po)
    • Vadim Litvenko - Russe (ru.po)
    • Johan Solve - Suédois (sv.po)

    Firmware :

  • Refactoring des pins reset
  • Fusion des codes pour les servos standard et CR
  • Fusion du patch pour Leonardo de Peter Mueller (mille mercis pour ça !)

Version 1.5

  • Résolution d'un bug de collision d'objets (Arduino et non Arduino)
  • Résolution d'un bug lié à des messages d'erreur persistants lorsque la connexion à la carte est arrêtée puis reprise
  • Changement des primitives indexées en nommées pour avoir une meilleure compatibilité avec les nouvelles VMs Squeak (merci à Miriam Ruiz pour le patch)
  • Changement de la pin 12 du servo standard à une sortie numérique normale
  • Changement des pins par défaut dans les blocs numérique on/off de 13 à 10
  • Ajout de blocs de reset des actuateurs
  • Amélioration des traductions ecatalane et espagnole

Version 1.4

  • Ajout de la compatibilité complète avec le protocole HTTP (POST et GET), vous pouvez maintenant envoyer des messages à S4A et monitorer/modifier les valeurs des variables depuis un navigateur web (entre autre). Voir la section Android.
  • Ajout d'une option "Vérifier les mises à jour" dans le menu "Aide", de sorte qu'il ne faille plus visiter le site web pour vérifier s'il y a de nouvelles versions
  • La langue est maintenant détectée lors du premier démarrage (lorsque le fichier Scratch.ini n'existe pas). Également sauvegardée dans le même fichier si modifiée depuis le menu langue
  • Le port série où une carte est connectée s'ouvre correctement lorsque S4A est lancé
  • Résolution d'un bug dans la version Windows, où la barre de titre ne montrait pas le nom et la version de S4A une fois lancé

Version 1.3

  • Résolution de la compatibilité avec les Arduino UNO sous Linux (merci à Jorge Gómez). Vous devrez charger le nouveau firmware, en plus de mettre à jour le bootloader pour certaines cartes
  • Changement des noms des senseurs de la carte et des blocs Arduino correspondants pour montrer les vrais numéros de pins
  • Ajout de commandes serveur au menu "Édition" pour gérer la communication par socket
  • Ajout de la compatibilité pour les applications Android (HiS4A)
  • Amélioration des traductions catalane et espagnole
  • Plusieurs résolutions de bugs

Téléchargement et installation

Installer S4A nécessite l'installation d'un logiciel sur sa machine et sur la carte Arduino. Vous trouverez ici les étapes détaillées pour installer et exécuter le logiciel.

Installer S4A sur votre machine

S4A fonctionne sur les trois systèmes d'exploitation principaux. Téléchargez et installez celui qui correspond à votre machine :

Installer le firmware sur l'Arduino

Ce firmware est un logiciel que vous devez installer dans la carte Arduino pour pouvoir communiquer avec depuis S4A.

  • Téléchargez et installez l'environnement Arduino en suivant les instructions sur http://arduino.cc/en/Main/Software. Notez que Arduino Uno nécessite au moins la version 0022.
  • Téléchargez notre firmware ici
  • Connectez votre carte Arduino à un port USB sur votre machine
  • Ouvrez le fichier du firmware (S4AFirmware16.ino) depuis l'environnement Arduino
  • Dans le menu Outils, sélectionnez la version de votre carte et le port série sur lequel elle est connectée
  • Chagez le firmware sur la carte via le menu Fichier > Téléverser

Pilotes Arduino

Si vous êtes un utilisateur de Microsoft Windows, vous pourriez devoir installer les pilotes Arduino sur votre machine:

Pilotes Arduino pour Microsoft Windows

Pour les développeurs

S4A est un logiciel libre distribué sous une licence MIT.

Since Scratch est en fait une image Smalltalk Squeak, tout son code est en fait distribué avec la version utilisateur finale. Pour y accéder, faites un clic gauche tout en maintenant la touche SHIFT sur le menu "Fichier" de S4A et sélectionnez "Sortir du monde utilisateur". Vous êtes maintenant en face d'une image Squeak 2.8 classique, et vous avez accès au Browser, Workspace et à tous les outils que vous connaissez.

Cependant, dans la version utilisateur finale, certaines portions de code ont été compilées et certaines variables et noms d'arguments de message manquent, et c'est pourquoi nous vous fournissons aussi une image spécifique pour développeurs avec un code source clair, téléchargeable ici :

Édition développeur de S4A

Site alternatif de téléchargement

Étant donné que notre fournisseur VPS pourrait parfois être indisponible, nous avons mis en place un site alternatif vous proposant tous les fichiers, ainsi que les anciennes version, au téléchargement :

Dossier dropbox de S4A

Kit S4A

Bientôt !

Suite à plusieurs requêtes de la communauté S4A, de plusieurs de nos étudiants, et d'utilisateurs à travers le monde, nous développons une série de kits qui contiendront le hardware nécessaire pour commencer à utiliser S4A, avec le firmware préinstallé et de la documentation.

Ces kits seront composés de manière incrémentale de sorte que vous ne deviez pas payer pour les composants dont vous n'avez pas besoin pour vos projets.

Restez informés !

Questions fréquemment posées

Questions générales

Le firmware S4A peut-il abimer la carte ?

En fait, notre "firmware" est juste un sketch Arduino et il n'y a donc aucun risque. Vous pouvez bien entendu téléverser d'autres sketchs sur la carte et ensuite remettre notre firmware autant de fois que vous voulez.

Les programmes S4A peuvent-ils être envoyés sur la carte Arduino ?

Il n'y a actuellement aucun moyen de compiler le code en un binaire Arduino. Il faut savoir que S4A a été conçu comme une amélioration des anciennes version de Scratch (celles qui étaient développées en Smalltalk), pour rendre plus facile pour tout le monde l'apprentissage de la programmation d'objets réels, en particulier pour les enfants, en interagissant avec ces objets comme ils le font avec des "objets normaux" Scratch. En d'autres mots, notre logiciel n'a pas été fait pour programmer directement la carte, mais pour aider à apprendre la programmation et l'électronique en même temps.

Enfin, si ce que vous voulez est de vous débarrasser du câble USB, nous vous recommandons d'utiliser un dispositif sans fil comme la XBee.

Puis-je changer la configuration des pins ?

Malheureusement non. La configuration des pins est hardcodée autant dans le firmware que dans le code source de S4A et la manière avec laquelle S4A a été conçue fait qu'il n'est pas possible de modifier le code "à la volée". Donc, jusqu'à ce qu'on trouve une meilleure manière ou qu'on améliore le protocole de communication entre la carte et le programme, la seule manière de modifier la configuration des pins et de la changer dans les codes sources de S4A et du firmware. Il y a un guide non officiel en espagnol disponible ici (merci à Borja Pérez).

Quelles cartes sont supportées par S4A ?

S4A fonctionne avec les Arduino Diecimila, Duemilanove et Uno. Les autres cartes n'ont pas été testées, mais pourraient aussi fonctionner.

Est-ce-que S4A fonctionnera sur mon PC ?

S4A fonctionne sur les trois systèmes d'exploitation principaux : Microsoft Windows, GNU/Linux et MacOS. Donc oui, il fonctionnera très probablement sur votre PC.

Problèmes à l'installation

Je ne parviens pas à l'installer sur une Ubuntu/Debian 64-bit

La version Debian de S4A est packagée uniquement pour les systèmes i386. Pour la faire fonctionner sur un système 64-bit, vous devez suivre les étapes suivantes (dans un terminal, en tant que root) :

Tout d'abord, activez les packages i386 et installez ia32-libs :

dpkg --add-architecture i386
apt-get update
apt-get install ia32-libs

Installez ensuite S4A :

dpkg -i --force-architecture S4A16.deb

J'ai des problèmes pour l'installer sur MacOS

Depuis MacOS 10.8 (Mountain Lion), Gatekeeper est configuré par défaut pour n'autoriser que les applications téléchargées depuis "Mac App Store et développeurs identifiés". Pour installer S4A, vous devez changer cette option en "N'importe où".

Plus d'informations ici.

Problèmes lors de la connexion de la carte

J'ai connecté la carte et S4A ne la détecte pas

Vérifiez que vous avez bien téléversé le dernier firmware S4A sur la carte avant de démarrer S4A. Pour cela, il vous faut l'IDE Arduino officiel.

Suivez pour cela les instructions de la section Téléchargement de ce site.

Malgré tout cela, ma carte n'est toujours pas détectée

Il s'agit d'un problème commun et connu sur les systèmes d'exploitation Windows. Essayez d'arrêter la connexion avec la carte (clic droit sur le tableau de bord des senseurs dans S4A), débranchez le câble USB, rebranchez-le et redémarrez la connexion. Si le programme ne détecte toujours pas la carte, cela peut venir d'un conflit avec le port série COM avec pour conséquence que S4A décroche lorsqu'il tente de l'ouvrir. Pour éviter cela, essayez de l'ouvrir directement (clic droit sur le tableau de bord des senseurs et sélection de port série) ou de changer le port affecté à l'Arduino depuis le gestionnaire de périphériques de Windows. Pour plus d'aide par rapport à ce problème, visitez ce guide.

L'équipe

S4A a été développé au Citilab par le groupe de recherche Edutec, avec l'aide du groupe de programmation Smalltalk.cat et de collaborateurs tels que Jorge Gómez, qui conduit le projet éducatif hardware et software Miscela.

Marina Conde

Marina Conde a obtenu son diplôme de bachelier en sciences informatique à la Technical University of Catalonia (UPC) en 2009, et a obtenu son diplôme d'ingénieur en informatique en 2012 de la même université.

Lorsqu'elle travaillait à Citilab, elle a développé son premier travail de fin d'étude, qui consistait en le développement d'un framework pour travailler avec des cartes Arduino depuis l'environnement Smalltalk Pharo. Plus tard, elle a utilisé ce projet comme base sur laquelle S4A a été écrit.

Víctor Casado

Víctor a choisi d'étudier les sciences informatiques à la Autonomous University of Barcelona (UAB), mais après deux années il a changé pour la Castelldefels School of Technology (EPSC) pour suivre une formation technique en télécommunication.

Alors qu'il était là-bas, l'opportunité de rentrer au Citilab via un stage s'est offerte à lui. Il y a développé S4A, comme travail de fin d'étude.

Joan Güell

Joan est un biologiste qui, à ses débuts, a travaillé dans le domaine de l'écologie. Le besoin d'analyser les informations générées et les données collectées l'a conduit vers une approche informatique. Il s'inscrit à son premier cours de programmation en 1975, alors que les ordinateurs étaient encore programmés avec des cartes perforées.

Son travail principal à Citilab était en lien avec l'apprentissage dans deux directions : enseigner la programmation avec Scratch, en particulier aux enfants, et enseigner des compétences informatiques aux jeunes citoyens adultes.

Jose García

Jose a fait des études en ingénierie avancée en télécommunications, mais il a commencé a travailler dans une firme de publication avant de terminer ses études. Durant ce temps dans cette compagnie, il a travaillé sur la programmation de diverses applications.

À Citilab, il a découvert Scratch et Smalltalk, prenant à nouveau part au travail de programmation. Plus tard, il rejoint différents projets dont le but était de rapprocher les utilisateurs et la programmation. Il dirige maintenant l'équipe de recherche en technologie de l'éducation Edutec.

Bernat Romagosa

En 2009, Bernat a obtenu un diplôme d'ingénieur technique en sciences informatique de la Open University of Catalonia (UOC). Il a appris Smalltalk grâce au cours donné par Jordi Delgado à Citilab en 2008, où il a été plus tard engagé pour construire une école de programmation en ligne.

Depuis lors, il a été impliqué dans plusieurs projets de programmation à Citilab, dont un système de gestion de connaissances sociales et plusieurs applications éducatives différentes.

Jordi Delgado

Jordi est chargé de cours au Software Department de la Technical University of Catalonia (Universitat Politècnica de Catalunya). Il appartient au groupe de recherche LARCA et enseigne à la Barcelona School of Informatics.

Il passe la plupart de son temps à divulguer, diffuser et programmer en Smalltalk, un langage de programmation étonnant que, vous savez, tout le monde devrait utiliser. Il est membre du conseil d'administration du European Smalltalk Users Group (ESUG) et dirige le groupe local Smalltalk.cat.

Nous contacter

Vous pouvez nous atteindre à scratch@citilab.eu pour signaler des bugs ou pour toute suggestion que vous pourriez avoir.