<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gazelle</id>
		<title>Les Fabriques du Ponant - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gazelle"/>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Sp%C3%A9cial:Contributions/Gazelle"/>
		<updated>2026-05-16T06:24:48Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18027</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18027"/>
				<updated>2021-12-10T23:38:26Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL: Poke est un POCL communautaire interactif. Sa fonction est d'envoyer et recevoir un message, nommé &amp;quot;pokou&amp;quot; vers ou provenant des autres POCL: Poke.&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==Prototype réalisés ==&lt;br /&gt;
4 prototypes différents ont été réalisés, chacun apportant une évolution/modification supplémentaire.&lt;br /&gt;
* Le premier prototype est fait, en plus de l'électronique, de carton et de papier.&lt;br /&gt;
* Le deuxième prototype consiste en du bois découpé au laser pour remplacer le carton et mieux emprisonner le papier. Cette deuxième génération donnera la forme générale quasiment finale.&lt;br /&gt;
* Le troisième prototype a intégré un bouton dans la structure d'un couvercle pour pouvoir interagir réellement avec les autres POCL.&lt;br /&gt;
* Le quatrième et dernier prototype s'est vu octroyer trois boutons supplémentaires pour pouvoir envoyer plus de &amp;quot;pokous&amp;quot;, ainsi que d'un &amp;quot;maintien d'élégance&amp;quot; pour permettre aux fils d'en sortir sans détériorer le papier sur la durée.&lt;br /&gt;
==Fabrication d'un POCL: Poke==&lt;br /&gt;
La construction d'un POCL: Poke se fera sur la base du prototype le plus à jour, c'est-à-dire le quatrième.&amp;lt;br&amp;gt;&lt;br /&gt;
Attention, les photos du montage proviennent des deuxième et troisième prototypes&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou autre objet au choix permettant un stimulus sensoriel pour l'utilisateur&lt;br /&gt;
* 1 Bouton poussoir (4 s'il est prévu d'augmenter la capacité de pokous)&lt;br /&gt;
* Fils conducteurs&lt;br /&gt;
* Découpeuse laser&lt;br /&gt;
* Planches de bois de 5mm d'épaisseur (ou carton facile à découper)&lt;br /&gt;
* Papier fin (des feuilles A4 font parfaitement l'affaire)&lt;br /&gt;
* Colle à bois (optionnel)&lt;br /&gt;
* Connexion internet&lt;br /&gt;
* Ciseaux&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
Découper le bois à la découpeuse laser&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
Découper le papier en une bande large de 6 cm et longue de 28 cm (27.4 cm pour une feuille A4) &lt;br /&gt;
====Prélude====&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière de façon diffuse comme le papier.&amp;lt;br&amp;gt;&lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure. Le carton peut le remplacer si besoin.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour une meilleure apparence finale, les gravures des pièces doivent être orientées vers l'extérieur de l'objet.&amp;lt;br&amp;gt;&lt;br /&gt;
====Étape 1====&lt;br /&gt;
Prendre l'anneau troué, et enfoncer dedans les piliers dédiés, le côté épais orienté vers l'intérieur de la pièce&amp;lt;br&amp;gt;&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 2====&lt;br /&gt;
Enrouler la bande de papier autour de l'ossature précédemment créée.&amp;lt;br&amp;gt;&lt;br /&gt;
Un chevauchement des deux bouts est attendu, et utile pour la suite&amp;lt;br&amp;gt;&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 3====&lt;br /&gt;
Insérer les deux anneaux de renforts (les plus grands et fins) autour du papier afin de le pincer avec l'ossature. Les garder à un tier de la distance de chaque bord pour l'instant.&amp;lt;br&amp;gt;&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 4====&lt;br /&gt;
Insérer le disque troué sur les piliers pour entièrement bloquer le papier et fermer le cylindre d'un côté.&amp;lt;br&amp;gt;&lt;br /&gt;
Il s'agit de l'étape la plus délicate du montage, prendre son temps et y aller par petits pas est vivement recommandé.&amp;lt;br&amp;gt;&lt;br /&gt;
Note: la photo montre un anneau troué, mais la pièce est bien pleine dans le plan.&amp;lt;br&amp;gt;&lt;br /&gt;
Note: Il est conseillé pour des raisons de simplification de la tâche d'insérer préalablement les boutons poussoir dans les 4 trous centraux et de les raccorder à des fils pour faciliter les connexions futures.&amp;lt;br&amp;gt;&lt;br /&gt;
(Photo)&lt;br /&gt;
&lt;br /&gt;
====Électronique====&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Envoie un pokou&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'WikiTestDemo'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('Poke');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('Poke', 'pokou');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino===&lt;br /&gt;
Le code Arduino présenté correspond à celui du quatrième modèle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////&lt;br /&gt;
//      POCL Poke      //&lt;br /&gt;
/////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
 * Un POCL imaginé et réalisé au Hackathon POCL à l'Edulab Rennes 2 les 9 et 10 décembre 2021.&lt;br /&gt;
 * &lt;br /&gt;
 *                                      BROCHAGE                            &lt;br /&gt;
                                _________________                        &lt;br /&gt;
                               /     D1 mini     \                       &lt;br /&gt;
                           -  |[ ]RST        TX[ ]| -                    &lt;br /&gt;
                           -  |[ ]A0  -GPIO  RX[ ]| -                    &lt;br /&gt;
                              |[ ]D0-16    5-D1[ ]| -                    &lt;br /&gt;
                              |[ ]D5-14    4-D2[ ]| -                    &lt;br /&gt;
                    Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             &lt;br /&gt;
                           -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN          &lt;br /&gt;
                           -  |[ ]D8-15     GND[X]| - GND (Bouton, MP3-TF-16P)             &lt;br /&gt;
                           -  |[ ]3V3 .      5V[X]| - ruban de Led        &lt;br /&gt;
                              |       +---+       |                     &lt;br /&gt;
                              |_______|USB|_______|                      &lt;br /&gt;
&lt;br /&gt;
Matériel :&lt;br /&gt;
- des fils dupont.&lt;br /&gt;
- un ruban de led RGB WS28B12&lt;br /&gt;
- D1 mini (Wemos, LOLIN,...)&lt;br /&gt;
- bouton poussoir&lt;br /&gt;
- une alimentation 5V&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Un travail d'équipe de :&lt;br /&gt;
 * Alma Oskouei&lt;br /&gt;
 * Gaëlle Bescond&lt;br /&gt;
 * Tony Vanpoucke&lt;br /&gt;
 * Wing-Anh Luy&lt;br /&gt;
 * Antony Le Goïc-Auffret&lt;br /&gt;
   ___&lt;br /&gt;
 / ___ \&lt;br /&gt;
|_|   | |&lt;br /&gt;
     /_/ &lt;br /&gt;
     _   ___   _ &lt;br /&gt;
    |_| |___|_| |_&lt;br /&gt;
         ___|_   _|&lt;br /&gt;
        |___| |_|&lt;br /&gt;
Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// Programme inspiré de celui par Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/arduino-mqtt&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;ConditionalPrinter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFiMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowConnectionManager.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowDatabase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowEncryptionBroker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowProtocolInterpreter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowTransmitter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ExpiringTimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;FloodingMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HeapMonitor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonTranslator.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshBackendBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshCryptoInterface.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MessageData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MutexTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfoBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PeerRequestLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RequestData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ResponseData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Serializer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionOutcome.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionResult.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TypeConversionFunctions.h&amp;gt;&lt;br /&gt;
#include &amp;lt;UtilityFunctions.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;iPhone de Antony&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
//=============élément pour le ruban de led et le bouton===============&lt;br /&gt;
&lt;br /&gt;
// Broche de connexion du ruban de LED&lt;br /&gt;
#define PIN D3 // &lt;br /&gt;
&lt;br /&gt;
int brocheBouton = 12; //GPIO de la broche D6&lt;br /&gt;
&lt;br /&gt;
// Nombre de Led RDGB dans votre ruban&lt;br /&gt;
#define NUMPIXELS 13 &lt;br /&gt;
&lt;br /&gt;
// on configurer un riban nommé &amp;quot;pixels&amp;quot;&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define T 1 // temps pour gérer le fade du ruban&lt;br /&gt;
//==============================================================&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //connection au serveur MQTT : identifiant, canal, mot de passe&lt;br /&gt;
  while (!client.connect(&amp;quot;GAWELLE&amp;quot;, &amp;quot;pocl21&amp;quot;, &amp;quot;BauhTg9l28jam1lR&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// on s'abonne au sujet (topic) &amp;quot;Poke&amp;quot; &lt;br /&gt;
  client.subscribe(&amp;quot;/Poke&amp;quot;);&lt;br /&gt;
  // client.unsubscribe(&amp;quot;/hello&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  fade();&lt;br /&gt;
  Serial.println(&amp;quot;incoming: &amp;quot; + topic + &amp;quot; - &amp;quot; + payload);&lt;br /&gt;
  if (payload == &amp;quot;pokou&amp;quot;){&lt;br /&gt;
    Serial.println(&amp;quot;clic !&amp;quot;);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
    delay(100);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  // Note: Do not use the client in the callback to publish, subscribe or&lt;br /&gt;
  // unsubscribe as it may cause deadlocks when other things arrive while&lt;br /&gt;
  // sending and receiving acknowledgments. Instead, change a global variable,&lt;br /&gt;
  // or push to a queue and handle it in the loop after calling `client.loop()`.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fade() {&lt;br /&gt;
  for (int sig=0; sig&amp;lt;3; sig++){&lt;br /&gt;
  for (int b=0; b&amp;lt;255; b++){&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) {&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(150, b, 200));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // On allume les rubans&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int b=255; b&amp;gt;1; b--){ //boucle de gestion de la brillance&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  // n'oubliez pas que le premier pixel porte le Numéro 0&lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) { // Pour chaque pixel...&lt;br /&gt;
&lt;br /&gt;
    // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(b, 100, 100));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // on affiche les pixels&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pixels.begin(); //on initialise le ruban &amp;quot;pixels&amp;quot;&lt;br /&gt;
  pinMode(brocheBouton,INPUT_PULLUP);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
&lt;br /&gt;
  // on se connecte au client&lt;br /&gt;
  client.begin(&amp;quot;pocl21.cloud.shiftr.io&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  pixels.clear(); // Set all pixel colors to 'off'&lt;br /&gt;
  pixels.show();&lt;br /&gt;
  &lt;br /&gt;
  client.loop();&lt;br /&gt;
  delay(10);  // &amp;lt;- fixes some issues with WiFi stability&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message roughly every second.&lt;br /&gt;
&lt;br /&gt;
  if ( digitalRead(brocheBouton) == LOW ){&lt;br /&gt;
  Serial.println(&amp;quot;Appuis Bouton&amp;quot;); &lt;br /&gt;
  client.publish(&amp;quot;/Poke&amp;quot;, &amp;quot;pokou&amp;quot;);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18026</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18026"/>
				<updated>2021-12-10T23:33:51Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : /* Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL: Poke est un POCL communautaire interactif. Sa fonction est d'envoyer et recevoir un message, nommé &amp;quot;pokou&amp;quot; vers ou provenant des autres POCL: Poke.&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==Prototype réalisés ==&lt;br /&gt;
4 prototypes différents ont été réalisés, chacun apportant une évolution/modification supplémentaire.&lt;br /&gt;
* Le premier prototype est fait, en plus de l'électronique, de carton et de papier.&lt;br /&gt;
* Le deuxième prototype consiste en du bois découpé au laser pour remplacer le carton et mieux emprisonner le papier. Cette deuxième génération donnera la forme générale quasiment finale.&lt;br /&gt;
* Le troisième prototype a intégré un bouton dans la structure d'un couvercle pour pouvoir interagir réellement avec les autres POCL.&lt;br /&gt;
* Le quatrième et dernier prototype s'est vu octroyer trois boutons supplémentaires pour pouvoir envoyer plus de &amp;quot;pokous&amp;quot;, ainsi que d'un &amp;quot;maintien d'élégance&amp;quot; pour permettre aux fils d'en sortir sans détériorer le papier sur la durée.&lt;br /&gt;
==Fabrication d'un POCL: Poke==&lt;br /&gt;
La construction d'un POCL: Poke se fera sur la base du prototype le plus à jour, c'est-à-dire le quatrième.&amp;lt;br&amp;gt;&lt;br /&gt;
Attention, les photos du montage proviennent des deuxième et troisième prototypes&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou autre objet au choix permettant un stimulus sensoriel pour l'utilisateur&lt;br /&gt;
* 1 Bouton poussoir (4 s'il est prévu d'augmenter la capacité de pokous)&lt;br /&gt;
* Fils conducteurs&lt;br /&gt;
* Découpeuse laser&lt;br /&gt;
* Planches de bois de 5mm d'épaisseur (ou carton facile à découper)&lt;br /&gt;
* Papier fin (des feuilles A4 font parfaitement l'affaire)&lt;br /&gt;
* Colle à bois (optionnel)&lt;br /&gt;
* Connexion internet&lt;br /&gt;
* Ciseaux&lt;br /&gt;
===Assemblage de la boite===&lt;br /&gt;
====Prélude====&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière de façon diffuse comme le papier.&amp;lt;br&amp;gt;&lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure. Le carton peut le remplacer si besoin.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour une meilleure apparence finale, les gravures des pièces doivent être orientées vers l'extérieur de l'objet.&amp;lt;br&amp;gt;&lt;br /&gt;
Découper au préalable les pièces à la découpeuse laser&lt;br /&gt;
====Étape 1====&lt;br /&gt;
Prendre l'anneau troué, et enfoncer dedans les piliers dédiés, le côté épais orienté vers l'intérieur de la pièce&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 2====&lt;br /&gt;
Découper le papier en bandes larges de 6 cm et longues de 28 cm (27.4 cm pour une feuille A4) et l'enrouler autour de l'ossature précédemment créée.&amp;lt;br&amp;gt;&lt;br /&gt;
Un chevauchement des deux bouts est attendu, et utile pour la suite&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 3====&lt;br /&gt;
Insérer les deux anneaux de renforts (les plus grands et fins) autour du papier afin de le pincer avec l'ossature. Les garder à un tier de la distance de chaque bord pour l'instant.&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 4====&lt;br /&gt;
Insérer le disque troué sur les piliers pour entièrement bloquer le papier et fermer le cylindre d'un côté.&amp;lt;br&amp;gt;&lt;br /&gt;
Il s'agit de l'étape la plus délicate du montage, prendre son temps et y aller par petits pas est vivement recommandé.&amp;lt;br&amp;gt;&lt;br /&gt;
Note: la photo montre un anneau troué, mais la pièce est bien pleine dans le plan.&amp;lt;br&amp;gt;&lt;br /&gt;
Note: Il est conseillé pour des raisons de simplification de la tâche d'insérer préalablement les boutons poussoir dans les 4 trous centraux et de les raccorder à des fils pour faciliter les connexions futures.&lt;br /&gt;
(Photo)&lt;br /&gt;
&lt;br /&gt;
====Électronique====&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Envoie un pokou&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'WikiTestDemo'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('Poke');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('Poke', 'pokou');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Montage==&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
===Arduino===&lt;br /&gt;
Le code Arduino présenté correspond à celui du quatrième modèle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////&lt;br /&gt;
//      POCL Poke      //&lt;br /&gt;
/////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
 * Un POCL imaginé et réalisé au Hackathon POCL à l'Edulab Rennes 2 les 9 et 10 décembre 2021.&lt;br /&gt;
 * &lt;br /&gt;
 *                                      BROCHAGE                            &lt;br /&gt;
                                _________________                        &lt;br /&gt;
                               /     D1 mini     \                       &lt;br /&gt;
                           -  |[ ]RST        TX[ ]| -                    &lt;br /&gt;
                           -  |[ ]A0  -GPIO  RX[ ]| -                    &lt;br /&gt;
                              |[ ]D0-16    5-D1[ ]| -                    &lt;br /&gt;
                              |[ ]D5-14    4-D2[ ]| -                    &lt;br /&gt;
                    Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             &lt;br /&gt;
                           -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN          &lt;br /&gt;
                           -  |[ ]D8-15     GND[X]| - GND (Bouton, MP3-TF-16P)             &lt;br /&gt;
                           -  |[ ]3V3 .      5V[X]| - ruban de Led        &lt;br /&gt;
                              |       +---+       |                     &lt;br /&gt;
                              |_______|USB|_______|                      &lt;br /&gt;
&lt;br /&gt;
Matériel :&lt;br /&gt;
- des fils dupont.&lt;br /&gt;
- un ruban de led RGB WS28B12&lt;br /&gt;
- D1 mini (Wemos, LOLIN,...)&lt;br /&gt;
- bouton poussoir&lt;br /&gt;
- une alimentation 5V&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Un travail d'équipe de :&lt;br /&gt;
 * Alma Oskouei&lt;br /&gt;
 * Gaëlle Bescond&lt;br /&gt;
 * Tony Vanpoucke&lt;br /&gt;
 * Wing-Anh Luy&lt;br /&gt;
 * Antony Le Goïc-Auffret&lt;br /&gt;
   ___&lt;br /&gt;
 / ___ \&lt;br /&gt;
|_|   | |&lt;br /&gt;
     /_/ &lt;br /&gt;
     _   ___   _ &lt;br /&gt;
    |_| |___|_| |_&lt;br /&gt;
         ___|_   _|&lt;br /&gt;
        |___| |_|&lt;br /&gt;
Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// Programme inspiré de celui par Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/arduino-mqtt&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;ConditionalPrinter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFiMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowConnectionManager.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowDatabase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowEncryptionBroker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowProtocolInterpreter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowTransmitter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ExpiringTimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;FloodingMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HeapMonitor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonTranslator.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshBackendBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshCryptoInterface.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MessageData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MutexTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfoBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PeerRequestLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RequestData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ResponseData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Serializer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionOutcome.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionResult.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TypeConversionFunctions.h&amp;gt;&lt;br /&gt;
#include &amp;lt;UtilityFunctions.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;iPhone de Antony&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
//=============élément pour le ruban de led et le bouton===============&lt;br /&gt;
&lt;br /&gt;
// Broche de connexion du ruban de LED&lt;br /&gt;
#define PIN D3 // &lt;br /&gt;
&lt;br /&gt;
int brocheBouton = 12; //GPIO de la broche D6&lt;br /&gt;
&lt;br /&gt;
// Nombre de Led RDGB dans votre ruban&lt;br /&gt;
#define NUMPIXELS 13 &lt;br /&gt;
&lt;br /&gt;
// on configurer un riban nommé &amp;quot;pixels&amp;quot;&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define T 1 // temps pour gérer le fade du ruban&lt;br /&gt;
//==============================================================&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //connection au serveur MQTT : identifiant, canal, mot de passe&lt;br /&gt;
  while (!client.connect(&amp;quot;GAWELLE&amp;quot;, &amp;quot;pocl21&amp;quot;, &amp;quot;BauhTg9l28jam1lR&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// on s'abonne au sujet (topic) &amp;quot;Poke&amp;quot; &lt;br /&gt;
  client.subscribe(&amp;quot;/Poke&amp;quot;);&lt;br /&gt;
  // client.unsubscribe(&amp;quot;/hello&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  fade();&lt;br /&gt;
  Serial.println(&amp;quot;incoming: &amp;quot; + topic + &amp;quot; - &amp;quot; + payload);&lt;br /&gt;
  if (payload == &amp;quot;pokou&amp;quot;){&lt;br /&gt;
    Serial.println(&amp;quot;clic !&amp;quot;);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
    delay(100);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  // Note: Do not use the client in the callback to publish, subscribe or&lt;br /&gt;
  // unsubscribe as it may cause deadlocks when other things arrive while&lt;br /&gt;
  // sending and receiving acknowledgments. Instead, change a global variable,&lt;br /&gt;
  // or push to a queue and handle it in the loop after calling `client.loop()`.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fade() {&lt;br /&gt;
  for (int sig=0; sig&amp;lt;3; sig++){&lt;br /&gt;
  for (int b=0; b&amp;lt;255; b++){&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) {&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(150, b, 200));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // On allume les rubans&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int b=255; b&amp;gt;1; b--){ //boucle de gestion de la brillance&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  // n'oubliez pas que le premier pixel porte le Numéro 0&lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) { // Pour chaque pixel...&lt;br /&gt;
&lt;br /&gt;
    // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(b, 100, 100));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // on affiche les pixels&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pixels.begin(); //on initialise le ruban &amp;quot;pixels&amp;quot;&lt;br /&gt;
  pinMode(brocheBouton,INPUT_PULLUP);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
&lt;br /&gt;
  // on se connecte au client&lt;br /&gt;
  client.begin(&amp;quot;pocl21.cloud.shiftr.io&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  pixels.clear(); // Set all pixel colors to 'off'&lt;br /&gt;
  pixels.show();&lt;br /&gt;
  &lt;br /&gt;
  client.loop();&lt;br /&gt;
  delay(10);  // &amp;lt;- fixes some issues with WiFi stability&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message roughly every second.&lt;br /&gt;
&lt;br /&gt;
  if ( digitalRead(brocheBouton) == LOW ){&lt;br /&gt;
  Serial.println(&amp;quot;Appuis Bouton&amp;quot;); &lt;br /&gt;
  client.publish(&amp;quot;/Poke&amp;quot;, &amp;quot;pokou&amp;quot;);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18025</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18025"/>
				<updated>2021-12-10T23:27:40Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : /* Fabrication d'un POCL: Poke */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL: Poke est un POCL communautaire interactif. Sa fonction est d'envoyer et recevoir un message, nommé &amp;quot;pokou&amp;quot; vers ou provenant des autres POCL: Poke.&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==Prototype réalisés ==&lt;br /&gt;
4 prototypes différents ont été réalisés, chacun apportant une évolution/modification supplémentaire.&lt;br /&gt;
* Le premier prototype est fait, en plus de l'électronique, de carton et de papier.&lt;br /&gt;
* Le deuxième prototype consiste en du bois découpé au laser pour remplacer le carton et mieux emprisonner le papier. Cette deuxième génération donnera la forme générale quasiment finale.&lt;br /&gt;
* Le troisième prototype a intégré un bouton dans la structure d'un couvercle pour pouvoir interagir réellement avec les autres POCL.&lt;br /&gt;
* Le quatrième et dernier prototype s'est vu octroyer trois boutons supplémentaires pour pouvoir envoyer plus de &amp;quot;pokous&amp;quot;, ainsi que d'un &amp;quot;maintien d'élégance&amp;quot; pour permettre aux fils d'en sortir sans détériorer le papier sur la durée.&lt;br /&gt;
==Fabrication d'un POCL: Poke==&lt;br /&gt;
La construction d'un POCL: Poke se fera sur la base du prototype le plus à jour, c'est-à-dire le quatrième.&amp;lt;br&amp;gt;&lt;br /&gt;
Attention, les photos du montage proviennent des deuxième et troisième prototypes&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou autre objet au choix permettant un stimulus sensoriel pour l'utilisateur&lt;br /&gt;
* 1 Bouton poussoir (4 s'il est prévu d'augmenter la capacité de pokous)&lt;br /&gt;
* Fils conducteurs&lt;br /&gt;
* Découpeuse laser&lt;br /&gt;
* Planches de bois de 5mm d'épaisseur (ou carton facile à découper)&lt;br /&gt;
* Papier fin (des feuilles A4 font parfaitement l'affaire)&lt;br /&gt;
* Colle à bois (optionnel)&lt;br /&gt;
* Connexion internet&lt;br /&gt;
* Ciseaux&lt;br /&gt;
===Assemblage de la boite===&lt;br /&gt;
====Prélude====&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière de façon diffuse comme le papier.&amp;lt;br&amp;gt;&lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure. Le carton peut le remplacer si besoin.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour une meilleure apparence finale, les gravures des pièces doivent être orientées vers l'extérieur de l'objet.&amp;lt;br&amp;gt;&lt;br /&gt;
Découper au préalable les pièces à la découpeuse laser&lt;br /&gt;
====Étape 1====&lt;br /&gt;
Prendre l'anneau troué, et enfoncer dedans les piliers dédiés, le côté épais orienté vers l'intérieur de la pièce&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 2====&lt;br /&gt;
Découper le papier en bandes larges de 6 cm et longues de 28 cm (27.4 cm pour une feuille A4) et l'enrouler autour de l'ossature précédemment créée.&amp;lt;br&amp;gt;&lt;br /&gt;
Un chevauchement des deux bouts est attendu, et utile pour la suite&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 3====&lt;br /&gt;
Insérer les deux anneaux de renforts (les plus grands et fins) autour du papier afin de le pincer avec l'ossature. Les garder à un tier de la distance de chaque bord pour l'instant.&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 4====&lt;br /&gt;
Insérer le disque troué sur les piliers pour entièrement bloquer le papier et fermer le cylindre d'un côté.&amp;lt;br&amp;gt;&lt;br /&gt;
Il s'agit de l'étape la plus délicate du montage, prendre son temps et y aller par petits pas est vivement recommandé.&amp;lt;br&amp;gt;&lt;br /&gt;
Note: la photo montre un anneau troué, mais la pièce est bien pleine dans le plan.&amp;lt;br&amp;gt;&lt;br /&gt;
Note: Il est conseillé pour des raisons de simplification de la tâche d'insérer préalablement les boutons poussoir dans les 4 trous centraux et de les raccorder à des fils pour faciliter les connexions futures.&lt;br /&gt;
(Photo)&lt;br /&gt;
&lt;br /&gt;
====Électronique====&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Envoie un pokou&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'WikiTestDemo'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('Poke');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('Poke', 'pokou');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Montage==&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
===Arduino===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////&lt;br /&gt;
//      POCL Poke      //&lt;br /&gt;
/////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
 * Un POCL imaginé et réalisé au Hackathon POCL à l'édulab Rennes 2 les 9 et 10 décembre 2021.&lt;br /&gt;
 * &lt;br /&gt;
 *                                      BROCHAGE                            &lt;br /&gt;
                                _________________                        &lt;br /&gt;
                               /     D1 mini     \                       &lt;br /&gt;
                           -  |[ ]RST        TX[ ]| -                    &lt;br /&gt;
                           -  |[ ]A0  -GPIO  RX[ ]| -                    &lt;br /&gt;
                              |[ ]D0-16    5-D1[ ]| -                    &lt;br /&gt;
                              |[ ]D5-14    4-D2[ ]| -                    &lt;br /&gt;
                    Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             &lt;br /&gt;
                           -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN          &lt;br /&gt;
                           -  |[ ]D8-15     GND[X]| - GND (Bouton, MP3-TF-16P)             &lt;br /&gt;
                           -  |[ ]3V3 .      5V[X]| - ruban de Led        &lt;br /&gt;
                              |       +---+       |                     &lt;br /&gt;
                              |_______|USB|_______|                      &lt;br /&gt;
&lt;br /&gt;
Matériel :&lt;br /&gt;
- des fils dupont.&lt;br /&gt;
- un ruban de led RGB WS28B12&lt;br /&gt;
- D1 mini (Wemos, LOLIN,...)&lt;br /&gt;
- bouton poussoir&lt;br /&gt;
- une alimentation 5V&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Un travail d'équipe de :&lt;br /&gt;
 * Alma Oskouei&lt;br /&gt;
 * Gaëlle Bescond&lt;br /&gt;
 * Tony Vanpoucke&lt;br /&gt;
 * Wing-Anh Luy&lt;br /&gt;
 * Antony Le Goïc-Auffret&lt;br /&gt;
   ___&lt;br /&gt;
 / ___ \&lt;br /&gt;
|_|   | |&lt;br /&gt;
     /_/ &lt;br /&gt;
     _   ___   _ &lt;br /&gt;
    |_| |___|_| |_&lt;br /&gt;
         ___|_   _|&lt;br /&gt;
        |___| |_|&lt;br /&gt;
Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// Programme inspiré de celui par Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/arduino-mqtt&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;ConditionalPrinter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFiMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowConnectionManager.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowDatabase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowEncryptionBroker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowProtocolInterpreter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowTransmitter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ExpiringTimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;FloodingMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HeapMonitor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonTranslator.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshBackendBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshCryptoInterface.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MessageData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MutexTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfoBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PeerRequestLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RequestData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ResponseData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Serializer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionOutcome.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionResult.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TypeConversionFunctions.h&amp;gt;&lt;br /&gt;
#include &amp;lt;UtilityFunctions.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;iPhone de Antony&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
//=============élément pour le ruban de led et le bouton===============&lt;br /&gt;
&lt;br /&gt;
// Broche de connexion du ruban de LED&lt;br /&gt;
#define PIN D3 // &lt;br /&gt;
&lt;br /&gt;
int brocheBouton = 12; //GPIO de la broche D6&lt;br /&gt;
&lt;br /&gt;
// Nombre de Led RDGB dans votre ruban&lt;br /&gt;
#define NUMPIXELS 13 &lt;br /&gt;
&lt;br /&gt;
// on configurer un riban nommé &amp;quot;pixels&amp;quot;&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define T 1 // temps pour gérer le fade du ruban&lt;br /&gt;
//==============================================================&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //connection au serveur MQTT : identifiant, canal, mot de passe&lt;br /&gt;
  while (!client.connect(&amp;quot;GAWELLE&amp;quot;, &amp;quot;pocl21&amp;quot;, &amp;quot;BauhTg9l28jam1lR&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// on s'abonne au sujet (topic) &amp;quot;Poke&amp;quot; &lt;br /&gt;
  client.subscribe(&amp;quot;/Poke&amp;quot;);&lt;br /&gt;
  // client.unsubscribe(&amp;quot;/hello&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  fade();&lt;br /&gt;
  Serial.println(&amp;quot;incoming: &amp;quot; + topic + &amp;quot; - &amp;quot; + payload);&lt;br /&gt;
  if (payload == &amp;quot;pokou&amp;quot;){&lt;br /&gt;
    Serial.println(&amp;quot;clic !&amp;quot;);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
    delay(100);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  // Note: Do not use the client in the callback to publish, subscribe or&lt;br /&gt;
  // unsubscribe as it may cause deadlocks when other things arrive while&lt;br /&gt;
  // sending and receiving acknowledgments. Instead, change a global variable,&lt;br /&gt;
  // or push to a queue and handle it in the loop after calling `client.loop()`.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fade() {&lt;br /&gt;
  for (int sig=0; sig&amp;lt;3; sig++){&lt;br /&gt;
  for (int b=0; b&amp;lt;255; b++){&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) {&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(150, b, 200));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // On allume les rubans&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int b=255; b&amp;gt;1; b--){ //boucle de gestion de la brillance&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  // n'oubliez pas que le premier pixel porte le Numéro 0&lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) { // Pour chaque pixel...&lt;br /&gt;
&lt;br /&gt;
    // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(b, 100, 100));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // on affiche les pixels&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pixels.begin(); //on initialise le ruban &amp;quot;pixels&amp;quot;&lt;br /&gt;
  pinMode(brocheBouton,INPUT_PULLUP);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
&lt;br /&gt;
  // on se connecte au client&lt;br /&gt;
  client.begin(&amp;quot;pocl21.cloud.shiftr.io&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  pixels.clear(); // Set all pixel colors to 'off'&lt;br /&gt;
  pixels.show();&lt;br /&gt;
  &lt;br /&gt;
  client.loop();&lt;br /&gt;
  delay(10);  // &amp;lt;- fixes some issues with WiFi stability&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message roughly every second.&lt;br /&gt;
&lt;br /&gt;
  if ( digitalRead(brocheBouton) == LOW ){&lt;br /&gt;
  Serial.println(&amp;quot;Appuis Bouton&amp;quot;); &lt;br /&gt;
  client.publish(&amp;quot;/Poke&amp;quot;, &amp;quot;pokou&amp;quot;);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18024</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18024"/>
				<updated>2021-12-10T23:26:11Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : /* Fabrication d'un POCL: Poke */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL: Poke est un POCL communautaire interactif. Sa fonction est d'envoyer et recevoir un message, nommé &amp;quot;pokou&amp;quot; vers ou provenant des autres POCL: Poke.&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==Prototype réalisés ==&lt;br /&gt;
4 prototypes différents ont été réalisés, chacun apportant une évolution/modification supplémentaire.&lt;br /&gt;
* Le premier prototype est fait, en plus de l'électronique, de carton et de papier.&lt;br /&gt;
* Le deuxième prototype consiste en du bois découpé au laser pour remplacer le carton et mieux emprisonner le papier. Cette deuxième génération donnera la forme générale quasiment finale.&lt;br /&gt;
* Le troisième prototype a intégré un bouton dans la structure d'un couvercle pour pouvoir interagir réellement avec les autres POCL.&lt;br /&gt;
* Le quatrième et dernier prototype s'est vu octroyer trois boutons supplémentaires pour pouvoir envoyer plus de &amp;quot;pokous&amp;quot;, ainsi que d'un &amp;quot;maintien d'élégance&amp;quot; pour permettre aux fils d'en sortir sans détériorer le papier sur la durée.&lt;br /&gt;
==Fabrication d'un POCL: Poke==&lt;br /&gt;
La construction d'un POCL: Poke se fera sur la base du prototype le plus à jour, c'est-à-dire le quatrième.&amp;lt;br&amp;gt;&lt;br /&gt;
Attention, les photos du montage proviennent des deuxième et troisième prototypes&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou autre objet au choix permettant un stimulus sensoriel pour l'utilisateur&lt;br /&gt;
* 4 Boutons poussoir&lt;br /&gt;
* Fils conducteurs&lt;br /&gt;
* Découpeuse laser&lt;br /&gt;
* Planches de bois de 5mm d'épaisseur (ou carton facile à découper)&lt;br /&gt;
* Papier fin (des feuilles A4 font parfaitement l'affaire)&lt;br /&gt;
* Colle à bois (optionnel)&lt;br /&gt;
* Connexion internet&lt;br /&gt;
* Ciseaux&lt;br /&gt;
===Assemblage de la boite===&lt;br /&gt;
====Prélude====&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière de façon diffuse comme le papier.&amp;lt;br&amp;gt;&lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure. Le carton peut le remplacer si besoin.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour une meilleure apparence finale, les gravures des pièces doivent être orientées vers l'extérieur de l'objet.&amp;lt;br&amp;gt;&lt;br /&gt;
Découper au préalable les pièces à la découpeuse laser&lt;br /&gt;
====Étape 1====&lt;br /&gt;
Prendre l'anneau troué, et enfoncer dedans les piliers dédiés, le côté épais orienté vers l'intérieur de la pièce&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 2====&lt;br /&gt;
Découper le papier en bandes larges de 6 cm et longues de 28 cm (27.4 cm pour une feuille A4) et l'enrouler autour de l'ossature précédemment créée.&amp;lt;br&amp;gt;&lt;br /&gt;
Un chevauchement des deux bouts est attendu, et utile pour la suite&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 3====&lt;br /&gt;
Insérer les deux anneaux de renforts (les plus grands et fins) autour du papier afin de le pincer avec l'ossature. Les garder à un tier de la distance de chaque bord pour l'instant.&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 4====&lt;br /&gt;
Insérer le disque troué sur les piliers pour entièrement bloquer le papier et fermer le cylindre d'un côté.&amp;lt;br&amp;gt;&lt;br /&gt;
Il s'agit de l'étape la plus délicate du montage, prendre son temps et y aller par petits pas est vivement recommandé.&amp;lt;br&amp;gt;&lt;br /&gt;
Note: la photo montre un anneau troué, mais la pièce est bien pleine dans le plan.&amp;lt;br&amp;gt;&lt;br /&gt;
Note: Il est conseillé pour des raisons de simplification de la tâche d'insérer préalablement les boutons poussoir dans les 4 trous centraux et de les raccorder à des fils pour faciliter les connexions futures.&lt;br /&gt;
(Photo)&lt;br /&gt;
&lt;br /&gt;
====Électronique====&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Envoie un pokou&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'WikiTestDemo'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('Poke');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('Poke', 'pokou');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Montage==&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
===Arduino===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////&lt;br /&gt;
//      POCL Poke      //&lt;br /&gt;
/////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
 * Un POCL imaginé et réalisé au Hackathon POCL à l'édulab Rennes 2 les 9 et 10 décembre 2021.&lt;br /&gt;
 * &lt;br /&gt;
 *                                      BROCHAGE                            &lt;br /&gt;
                                _________________                        &lt;br /&gt;
                               /     D1 mini     \                       &lt;br /&gt;
                           -  |[ ]RST        TX[ ]| -                    &lt;br /&gt;
                           -  |[ ]A0  -GPIO  RX[ ]| -                    &lt;br /&gt;
                              |[ ]D0-16    5-D1[ ]| -                    &lt;br /&gt;
                              |[ ]D5-14    4-D2[ ]| -                    &lt;br /&gt;
                    Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             &lt;br /&gt;
                           -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN          &lt;br /&gt;
                           -  |[ ]D8-15     GND[X]| - GND (Bouton, MP3-TF-16P)             &lt;br /&gt;
                           -  |[ ]3V3 .      5V[X]| - ruban de Led        &lt;br /&gt;
                              |       +---+       |                     &lt;br /&gt;
                              |_______|USB|_______|                      &lt;br /&gt;
&lt;br /&gt;
Matériel :&lt;br /&gt;
- des fils dupont.&lt;br /&gt;
- un ruban de led RGB WS28B12&lt;br /&gt;
- D1 mini (Wemos, LOLIN,...)&lt;br /&gt;
- bouton poussoir&lt;br /&gt;
- une alimentation 5V&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Un travail d'équipe de :&lt;br /&gt;
 * Alma Oskouei&lt;br /&gt;
 * Gaëlle Bescond&lt;br /&gt;
 * Tony Vanpoucke&lt;br /&gt;
 * Wing-Anh Luy&lt;br /&gt;
 * Antony Le Goïc-Auffret&lt;br /&gt;
   ___&lt;br /&gt;
 / ___ \&lt;br /&gt;
|_|   | |&lt;br /&gt;
     /_/ &lt;br /&gt;
     _   ___   _ &lt;br /&gt;
    |_| |___|_| |_&lt;br /&gt;
         ___|_   _|&lt;br /&gt;
        |___| |_|&lt;br /&gt;
Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// Programme inspiré de celui par Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/arduino-mqtt&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;ConditionalPrinter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFiMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowConnectionManager.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowDatabase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowEncryptionBroker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowProtocolInterpreter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowTransmitter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ExpiringTimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;FloodingMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HeapMonitor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonTranslator.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshBackendBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshCryptoInterface.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MessageData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MutexTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfoBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PeerRequestLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RequestData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ResponseData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Serializer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionOutcome.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionResult.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TypeConversionFunctions.h&amp;gt;&lt;br /&gt;
#include &amp;lt;UtilityFunctions.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;iPhone de Antony&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
//=============élément pour le ruban de led et le bouton===============&lt;br /&gt;
&lt;br /&gt;
// Broche de connexion du ruban de LED&lt;br /&gt;
#define PIN D3 // &lt;br /&gt;
&lt;br /&gt;
int brocheBouton = 12; //GPIO de la broche D6&lt;br /&gt;
&lt;br /&gt;
// Nombre de Led RDGB dans votre ruban&lt;br /&gt;
#define NUMPIXELS 13 &lt;br /&gt;
&lt;br /&gt;
// on configurer un riban nommé &amp;quot;pixels&amp;quot;&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define T 1 // temps pour gérer le fade du ruban&lt;br /&gt;
//==============================================================&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //connection au serveur MQTT : identifiant, canal, mot de passe&lt;br /&gt;
  while (!client.connect(&amp;quot;GAWELLE&amp;quot;, &amp;quot;pocl21&amp;quot;, &amp;quot;BauhTg9l28jam1lR&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// on s'abonne au sujet (topic) &amp;quot;Poke&amp;quot; &lt;br /&gt;
  client.subscribe(&amp;quot;/Poke&amp;quot;);&lt;br /&gt;
  // client.unsubscribe(&amp;quot;/hello&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  fade();&lt;br /&gt;
  Serial.println(&amp;quot;incoming: &amp;quot; + topic + &amp;quot; - &amp;quot; + payload);&lt;br /&gt;
  if (payload == &amp;quot;pokou&amp;quot;){&lt;br /&gt;
    Serial.println(&amp;quot;clic !&amp;quot;);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
    delay(100);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  // Note: Do not use the client in the callback to publish, subscribe or&lt;br /&gt;
  // unsubscribe as it may cause deadlocks when other things arrive while&lt;br /&gt;
  // sending and receiving acknowledgments. Instead, change a global variable,&lt;br /&gt;
  // or push to a queue and handle it in the loop after calling `client.loop()`.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fade() {&lt;br /&gt;
  for (int sig=0; sig&amp;lt;3; sig++){&lt;br /&gt;
  for (int b=0; b&amp;lt;255; b++){&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) {&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(150, b, 200));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // On allume les rubans&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int b=255; b&amp;gt;1; b--){ //boucle de gestion de la brillance&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  // n'oubliez pas que le premier pixel porte le Numéro 0&lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) { // Pour chaque pixel...&lt;br /&gt;
&lt;br /&gt;
    // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(b, 100, 100));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // on affiche les pixels&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pixels.begin(); //on initialise le ruban &amp;quot;pixels&amp;quot;&lt;br /&gt;
  pinMode(brocheBouton,INPUT_PULLUP);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
&lt;br /&gt;
  // on se connecte au client&lt;br /&gt;
  client.begin(&amp;quot;pocl21.cloud.shiftr.io&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  pixels.clear(); // Set all pixel colors to 'off'&lt;br /&gt;
  pixels.show();&lt;br /&gt;
  &lt;br /&gt;
  client.loop();&lt;br /&gt;
  delay(10);  // &amp;lt;- fixes some issues with WiFi stability&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message roughly every second.&lt;br /&gt;
&lt;br /&gt;
  if ( digitalRead(brocheBouton) == LOW ){&lt;br /&gt;
  Serial.println(&amp;quot;Appuis Bouton&amp;quot;); &lt;br /&gt;
  client.publish(&amp;quot;/Poke&amp;quot;, &amp;quot;pokou&amp;quot;);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18023</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18023"/>
				<updated>2021-12-10T23:24:29Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL: Poke est un POCL communautaire interactif. Sa fonction est d'envoyer et recevoir un message, nommé &amp;quot;pokou&amp;quot; vers ou provenant des autres POCL: Poke.&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==Prototype réalisés ==&lt;br /&gt;
4 prototypes différents ont été réalisés, chacun apportant une évolution/modification supplémentaire.&lt;br /&gt;
* Le premier prototype est fait, en plus de l'électronique, de carton et de papier.&lt;br /&gt;
* Le deuxième prototype consiste en du bois découpé au laser pour remplacer le carton et mieux emprisonner le papier. Cette deuxième génération donnera la forme générale quasiment finale.&lt;br /&gt;
* Le troisième prototype a intégré un bouton dans la structure d'un couvercle pour pouvoir interagir réellement avec les autres POCL.&lt;br /&gt;
* Le quatrième et dernier prototype s'est vu octroyer trois boutons supplémentaires pour pouvoir envoyer plus de &amp;quot;pokous&amp;quot;, ainsi que d'un &amp;quot;maintien d'élégance&amp;quot; pour permettre aux fils d'en sortir sans détériorer le papier sur la durée.&lt;br /&gt;
==Fabrication d'un POCL: Poke==&lt;br /&gt;
La construction d'un POCL: Poke se fera sur la base du prototype le plus à jour, c'est-à-dire le quatrième.&lt;br /&gt;
Attention, les photos du montage proviennent du deuxième et du troisième prototypes&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou autre objet au choix permettant un stimulus sensoriel pour l'utilisateur&lt;br /&gt;
* 4 Boutons poussoir&lt;br /&gt;
* Fils conducteurs&lt;br /&gt;
* Découpeuse laser&lt;br /&gt;
* Planches de bois de 5mm d'épaisseur (ou carton facile à découper)&lt;br /&gt;
* Papier fin (des feuilles A4 font parfaitement l'affaire)&lt;br /&gt;
* Colle à bois (optionnel)&lt;br /&gt;
* Connexion internet&lt;br /&gt;
* Ciseaux&lt;br /&gt;
===Assemblage de la boite===&lt;br /&gt;
====Prélude====&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière de façon diffuse comme le papier. &lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure. Le carton peut le remplacer si besoin.&lt;br /&gt;
Pour une meilleure apparence finale, les gravures des pièces doivent être orientées vers l'extérieur de l'objet.&lt;br /&gt;
Découper au préalable les pièces à la découpeuse laser&lt;br /&gt;
====Étape 1====&lt;br /&gt;
Prendre l'anneau troué, et enfoncer dedans les piliers dédiés, le côté épais orienté vers l'intérieur de la pièce&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 2====&lt;br /&gt;
Découper le papier en bandes larges de 6 cm et longues de 28 cm (27.4 cm pour une feuille A4) et l'enrouler autour de l'ossature précédemment créée.&lt;br /&gt;
Un chevauchement des deux bouts est attendu, et utile pour la suite&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 3====&lt;br /&gt;
Insérer les deux anneaux de renforts (les plus grands et fins) autour du papier afin de le pincer avec l'ossature. Les garder à un tier de la distance de chaque bord pour l'instant.&lt;br /&gt;
(Photo)&lt;br /&gt;
====Étape 4====&lt;br /&gt;
Insérer le disque troué sur les piliers pour entièrement bloquer le papier et fermer le cylindre d'un côté.&lt;br /&gt;
Il s'agit de l'étape la plus délicate du montage, prendre son temps et y aller par petits pas est vivement recommandé.&lt;br /&gt;
Note: la photo montre un anneau troué, mais la pièce est bien pleine dans le plan.&lt;br /&gt;
Note: Il est conseillé pour des raisons de simplification de la tâche d'insérer préalablement les boutons poussoir dans les 4 trous centraux et de les raccorder à des fils pour faciliter les connexions futures.&lt;br /&gt;
(Photo)&lt;br /&gt;
&lt;br /&gt;
====Électronique====&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Envoie un pokou&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'WikiTestDemo'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('Poke');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('Poke', 'pokou');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Montage==&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
===Arduino===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////&lt;br /&gt;
//      POCL Poke      //&lt;br /&gt;
/////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
 * Un POCL imaginé et réalisé au Hackathon POCL à l'édulab Rennes 2 les 9 et 10 décembre 2021.&lt;br /&gt;
 * &lt;br /&gt;
 *                                      BROCHAGE                            &lt;br /&gt;
                                _________________                        &lt;br /&gt;
                               /     D1 mini     \                       &lt;br /&gt;
                           -  |[ ]RST        TX[ ]| -                    &lt;br /&gt;
                           -  |[ ]A0  -GPIO  RX[ ]| -                    &lt;br /&gt;
                              |[ ]D0-16    5-D1[ ]| -                    &lt;br /&gt;
                              |[ ]D5-14    4-D2[ ]| -                    &lt;br /&gt;
                    Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             &lt;br /&gt;
                           -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN          &lt;br /&gt;
                           -  |[ ]D8-15     GND[X]| - GND (Bouton, MP3-TF-16P)             &lt;br /&gt;
                           -  |[ ]3V3 .      5V[X]| - ruban de Led        &lt;br /&gt;
                              |       +---+       |                     &lt;br /&gt;
                              |_______|USB|_______|                      &lt;br /&gt;
&lt;br /&gt;
Matériel :&lt;br /&gt;
- des fils dupont.&lt;br /&gt;
- un ruban de led RGB WS28B12&lt;br /&gt;
- D1 mini (Wemos, LOLIN,...)&lt;br /&gt;
- bouton poussoir&lt;br /&gt;
- une alimentation 5V&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Un travail d'équipe de :&lt;br /&gt;
 * Alma Oskouei&lt;br /&gt;
 * Gaëlle Bescond&lt;br /&gt;
 * Tony Vanpoucke&lt;br /&gt;
 * Wing-Anh Luy&lt;br /&gt;
 * Antony Le Goïc-Auffret&lt;br /&gt;
   ___&lt;br /&gt;
 / ___ \&lt;br /&gt;
|_|   | |&lt;br /&gt;
     /_/ &lt;br /&gt;
     _   ___   _ &lt;br /&gt;
    |_| |___|_| |_&lt;br /&gt;
         ___|_   _|&lt;br /&gt;
        |___| |_|&lt;br /&gt;
Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// Programme inspiré de celui par Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/arduino-mqtt&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;ConditionalPrinter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFiMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowConnectionManager.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowDatabase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowEncryptionBroker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowProtocolInterpreter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowTransmitter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ExpiringTimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;FloodingMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HeapMonitor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonTranslator.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshBackendBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshCryptoInterface.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MessageData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MutexTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfoBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PeerRequestLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RequestData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ResponseData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Serializer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionOutcome.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionResult.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TypeConversionFunctions.h&amp;gt;&lt;br /&gt;
#include &amp;lt;UtilityFunctions.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;iPhone de Antony&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
//=============élément pour le ruban de led et le bouton===============&lt;br /&gt;
&lt;br /&gt;
// Broche de connexion du ruban de LED&lt;br /&gt;
#define PIN D3 // &lt;br /&gt;
&lt;br /&gt;
int brocheBouton = 12; //GPIO de la broche D6&lt;br /&gt;
&lt;br /&gt;
// Nombre de Led RDGB dans votre ruban&lt;br /&gt;
#define NUMPIXELS 13 &lt;br /&gt;
&lt;br /&gt;
// on configurer un riban nommé &amp;quot;pixels&amp;quot;&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define T 1 // temps pour gérer le fade du ruban&lt;br /&gt;
//==============================================================&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //connection au serveur MQTT : identifiant, canal, mot de passe&lt;br /&gt;
  while (!client.connect(&amp;quot;GAWELLE&amp;quot;, &amp;quot;pocl21&amp;quot;, &amp;quot;BauhTg9l28jam1lR&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// on s'abonne au sujet (topic) &amp;quot;Poke&amp;quot; &lt;br /&gt;
  client.subscribe(&amp;quot;/Poke&amp;quot;);&lt;br /&gt;
  // client.unsubscribe(&amp;quot;/hello&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  fade();&lt;br /&gt;
  Serial.println(&amp;quot;incoming: &amp;quot; + topic + &amp;quot; - &amp;quot; + payload);&lt;br /&gt;
  if (payload == &amp;quot;pokou&amp;quot;){&lt;br /&gt;
    Serial.println(&amp;quot;clic !&amp;quot;);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
    delay(100);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  // Note: Do not use the client in the callback to publish, subscribe or&lt;br /&gt;
  // unsubscribe as it may cause deadlocks when other things arrive while&lt;br /&gt;
  // sending and receiving acknowledgments. Instead, change a global variable,&lt;br /&gt;
  // or push to a queue and handle it in the loop after calling `client.loop()`.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fade() {&lt;br /&gt;
  for (int sig=0; sig&amp;lt;3; sig++){&lt;br /&gt;
  for (int b=0; b&amp;lt;255; b++){&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) {&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(150, b, 200));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // On allume les rubans&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int b=255; b&amp;gt;1; b--){ //boucle de gestion de la brillance&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  // n'oubliez pas que le premier pixel porte le Numéro 0&lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) { // Pour chaque pixel...&lt;br /&gt;
&lt;br /&gt;
    // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(b, 100, 100));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // on affiche les pixels&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pixels.begin(); //on initialise le ruban &amp;quot;pixels&amp;quot;&lt;br /&gt;
  pinMode(brocheBouton,INPUT_PULLUP);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
&lt;br /&gt;
  // on se connecte au client&lt;br /&gt;
  client.begin(&amp;quot;pocl21.cloud.shiftr.io&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  pixels.clear(); // Set all pixel colors to 'off'&lt;br /&gt;
  pixels.show();&lt;br /&gt;
  &lt;br /&gt;
  client.loop();&lt;br /&gt;
  delay(10);  // &amp;lt;- fixes some issues with WiFi stability&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message roughly every second.&lt;br /&gt;
&lt;br /&gt;
  if ( digitalRead(brocheBouton) == LOW ){&lt;br /&gt;
  Serial.println(&amp;quot;Appuis Bouton&amp;quot;); &lt;br /&gt;
  client.publish(&amp;quot;/Poke&amp;quot;, &amp;quot;pokou&amp;quot;);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18022</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18022"/>
				<updated>2021-12-10T23:23:13Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : /* Fabrication d'un POCL: Poke */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL: Poke est un POCL communautaire interactif. Sa fonction est d'envoyer et recevoir un message, nommé &amp;quot;pokou&amp;quot; vers ou provenant des autres POCL: Poke.&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==Prototype réalisés ==&lt;br /&gt;
4 prototypes différents ont été réalisés, chacun apportant une évolution/modification supplémentaire.&lt;br /&gt;
* Le premier prototype est fait, en plus de l'électronique, de carton et de papier.&lt;br /&gt;
* Le deuxième prototype consiste en du bois découpé au laser pour remplacer le carton et mieux emprisonner le papier. Cette deuxième génération donnera la forme générale quasiment finale.&lt;br /&gt;
* Le troisième prototype a intégré un bouton dans la structure d'un couvercle pour pouvoir interagir réellement avec les autres POCL.&lt;br /&gt;
* Le quatrième et dernier prototype s'est vu octroyer trois boutons supplémentaires pour pouvoir envoyer plus de &amp;quot;pokous&amp;quot;, ainsi que d'un &amp;quot;maintien d'élégance&amp;quot; pour permettre aux fils d'en sortir sans détériorer le papier sur la durée.&lt;br /&gt;
==Fabrication d'un POCL: Poke==&lt;br /&gt;
La construction d'un POCL: Poke se fera sur la base du prototype le plus à jour, c'est-à-dire le quatrième.&lt;br /&gt;
Attention, les photos du montage proviennent du deuxième et du troisième prototypes&lt;br /&gt;
&lt;br /&gt;
====Matériel====&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou autre objet au choix permettant un stimulus sensoriel pour l'utilisateur&lt;br /&gt;
* 4 Boutons poussoir&lt;br /&gt;
* Fils conducteurs&lt;br /&gt;
* Découpeuse laser&lt;br /&gt;
* Planches de bois de 5mm d'épaisseur (ou carton facile à découper)&lt;br /&gt;
* Papier fin (des feuilles A4 font parfaitement l'affaire)&lt;br /&gt;
* Colle à bois (optionnel)&lt;br /&gt;
* Connexion internet&lt;br /&gt;
* Ciseaux&lt;br /&gt;
====Assemblage de la boite====&lt;br /&gt;
=====Prélude=====&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière de façon diffuse comme le papier. &lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure. Le carton peut le remplacer si besoin.&lt;br /&gt;
Pour une meilleure apparence finale, les gravures des pièces doivent être orientées vers l'extérieur de l'objet.&lt;br /&gt;
Découper au préalable les pièces à la découpeuse laser&lt;br /&gt;
=====Étape 1=====&lt;br /&gt;
Prendre l'anneau troué, et enfoncer dedans les piliers dédiés, le côté épais orienté vers l'intérieur de la pièce&lt;br /&gt;
(Photo)&lt;br /&gt;
=====Étape 2=====&lt;br /&gt;
Découper le papier en bandes larges de 6 cm et longues de 28 cm (27.4 cm pour une feuille A4) et l'enrouler autour de l'ossature précédemment créée.&lt;br /&gt;
Un chevauchement des deux bouts est attendu, et utile pour la suite&lt;br /&gt;
(Photo)&lt;br /&gt;
=====Étape 3=====&lt;br /&gt;
Insérer les deux anneaux de renforts (les plus grands et fins) autour du papier afin de le pincer avec l'ossature. Les garder à un tier de la distance de chaque bord pour l'instant.&lt;br /&gt;
(Photo)&lt;br /&gt;
=====Étape 4=====&lt;br /&gt;
Insérer le disque troué sur les piliers pour entièrement bloquer le papier et fermer le cylindre d'un côté.&lt;br /&gt;
Il s'agit de l'étape la plus délicate du montage, prendre son temps et y aller par petits pas est vivement recommandé.&lt;br /&gt;
Note: la photo montre un anneau troué, mais la pièce est bien pleine dans le plan.&lt;br /&gt;
Note: Il est conseillé pour des raisons de simplification de la tâche d'insérer préalablement les boutons poussoir dans les 4 trous centraux et de les raccorder à des fils pour faciliter les connexions futures.&lt;br /&gt;
(Photo)&lt;br /&gt;
&lt;br /&gt;
====Électronique====&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Envoie un pokou&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'WikiTestDemo'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('Poke');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('Poke', 'pokou');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Montage==&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
===Arduino===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////&lt;br /&gt;
//      POCL Poke      //&lt;br /&gt;
/////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
 * Un POCL imaginé et réalisé au Hackathon POCL à l'édulab Rennes 2 les 9 et 10 décembre 2021.&lt;br /&gt;
 * &lt;br /&gt;
 *                                      BROCHAGE                            &lt;br /&gt;
                                _________________                        &lt;br /&gt;
                               /     D1 mini     \                       &lt;br /&gt;
                           -  |[ ]RST        TX[ ]| -                    &lt;br /&gt;
                           -  |[ ]A0  -GPIO  RX[ ]| -                    &lt;br /&gt;
                              |[ ]D0-16    5-D1[ ]| -                    &lt;br /&gt;
                              |[ ]D5-14    4-D2[ ]| -                    &lt;br /&gt;
                    Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             &lt;br /&gt;
                           -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN          &lt;br /&gt;
                           -  |[ ]D8-15     GND[X]| - GND (Bouton, MP3-TF-16P)             &lt;br /&gt;
                           -  |[ ]3V3 .      5V[X]| - ruban de Led        &lt;br /&gt;
                              |       +---+       |                     &lt;br /&gt;
                              |_______|USB|_______|                      &lt;br /&gt;
&lt;br /&gt;
Matériel :&lt;br /&gt;
- des fils dupont.&lt;br /&gt;
- un ruban de led RGB WS28B12&lt;br /&gt;
- D1 mini (Wemos, LOLIN,...)&lt;br /&gt;
- bouton poussoir&lt;br /&gt;
- une alimentation 5V&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Un travail d'équipe de :&lt;br /&gt;
 * Alma Oskouei&lt;br /&gt;
 * Gaëlle Bescond&lt;br /&gt;
 * Tony Vanpoucke&lt;br /&gt;
 * Wing-Anh Luy&lt;br /&gt;
 * Antony Le Goïc-Auffret&lt;br /&gt;
   ___&lt;br /&gt;
 / ___ \&lt;br /&gt;
|_|   | |&lt;br /&gt;
     /_/ &lt;br /&gt;
     _   ___   _ &lt;br /&gt;
    |_| |___|_| |_&lt;br /&gt;
         ___|_   _|&lt;br /&gt;
        |___| |_|&lt;br /&gt;
Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// Programme inspiré de celui par Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/arduino-mqtt&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;ConditionalPrinter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFiMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowConnectionManager.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowDatabase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowEncryptionBroker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowProtocolInterpreter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowTransmitter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ExpiringTimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;FloodingMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HeapMonitor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonTranslator.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshBackendBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshCryptoInterface.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MessageData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MutexTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfoBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PeerRequestLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RequestData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ResponseData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Serializer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionOutcome.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionResult.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TypeConversionFunctions.h&amp;gt;&lt;br /&gt;
#include &amp;lt;UtilityFunctions.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;iPhone de Antony&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
//=============élément pour le ruban de led et le bouton===============&lt;br /&gt;
&lt;br /&gt;
// Broche de connexion du ruban de LED&lt;br /&gt;
#define PIN D3 // &lt;br /&gt;
&lt;br /&gt;
int brocheBouton = 12; //GPIO de la broche D6&lt;br /&gt;
&lt;br /&gt;
// Nombre de Led RDGB dans votre ruban&lt;br /&gt;
#define NUMPIXELS 13 &lt;br /&gt;
&lt;br /&gt;
// on configurer un riban nommé &amp;quot;pixels&amp;quot;&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define T 1 // temps pour gérer le fade du ruban&lt;br /&gt;
//==============================================================&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //connection au serveur MQTT : identifiant, canal, mot de passe&lt;br /&gt;
  while (!client.connect(&amp;quot;GAWELLE&amp;quot;, &amp;quot;pocl21&amp;quot;, &amp;quot;BauhTg9l28jam1lR&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// on s'abonne au sujet (topic) &amp;quot;Poke&amp;quot; &lt;br /&gt;
  client.subscribe(&amp;quot;/Poke&amp;quot;);&lt;br /&gt;
  // client.unsubscribe(&amp;quot;/hello&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  fade();&lt;br /&gt;
  Serial.println(&amp;quot;incoming: &amp;quot; + topic + &amp;quot; - &amp;quot; + payload);&lt;br /&gt;
  if (payload == &amp;quot;pokou&amp;quot;){&lt;br /&gt;
    Serial.println(&amp;quot;clic !&amp;quot;);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
    delay(100);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  // Note: Do not use the client in the callback to publish, subscribe or&lt;br /&gt;
  // unsubscribe as it may cause deadlocks when other things arrive while&lt;br /&gt;
  // sending and receiving acknowledgments. Instead, change a global variable,&lt;br /&gt;
  // or push to a queue and handle it in the loop after calling `client.loop()`.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fade() {&lt;br /&gt;
  for (int sig=0; sig&amp;lt;3; sig++){&lt;br /&gt;
  for (int b=0; b&amp;lt;255; b++){&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) {&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(150, b, 200));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // On allume les rubans&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int b=255; b&amp;gt;1; b--){ //boucle de gestion de la brillance&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  // n'oubliez pas que le premier pixel porte le Numéro 0&lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) { // Pour chaque pixel...&lt;br /&gt;
&lt;br /&gt;
    // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(b, 100, 100));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // on affiche les pixels&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pixels.begin(); //on initialise le ruban &amp;quot;pixels&amp;quot;&lt;br /&gt;
  pinMode(brocheBouton,INPUT_PULLUP);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
&lt;br /&gt;
  // on se connecte au client&lt;br /&gt;
  client.begin(&amp;quot;pocl21.cloud.shiftr.io&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  pixels.clear(); // Set all pixel colors to 'off'&lt;br /&gt;
  pixels.show();&lt;br /&gt;
  &lt;br /&gt;
  client.loop();&lt;br /&gt;
  delay(10);  // &amp;lt;- fixes some issues with WiFi stability&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message roughly every second.&lt;br /&gt;
&lt;br /&gt;
  if ( digitalRead(brocheBouton) == LOW ){&lt;br /&gt;
  Serial.println(&amp;quot;Appuis Bouton&amp;quot;); &lt;br /&gt;
  client.publish(&amp;quot;/Poke&amp;quot;, &amp;quot;pokou&amp;quot;);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18021</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18021"/>
				<updated>2021-12-10T23:22:31Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL: Poke est un POCL communautaire interactif. Sa fonction est d'envoyer et recevoir un message, nommé &amp;quot;pokou&amp;quot; vers ou provenant des autres POCL: Poke.&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==Prototype réalisés ==&lt;br /&gt;
4 prototypes différents ont été réalisés, chacun apportant une évolution/modification supplémentaire.&lt;br /&gt;
* Le premier prototype est fait, en plus de l'électronique, de carton et de papier.&lt;br /&gt;
* Le deuxième prototype consiste en du bois découpé au laser pour remplacer le carton et mieux emprisonner le papier. Cette deuxième génération donnera la forme générale quasiment finale.&lt;br /&gt;
* Le troisième prototype a intégré un bouton dans la structure d'un couvercle pour pouvoir interagir réellement avec les autres POCL.&lt;br /&gt;
* Le quatrième et dernier prototype s'est vu octroyer trois boutons supplémentaires pour pouvoir envoyer plus de &amp;quot;pokous&amp;quot;, ainsi que d'un &amp;quot;maintien d'élégance&amp;quot; pour permettre aux fils d'en sortir sans détériorer le papier sur la durée.&lt;br /&gt;
===Fabrication d'un POCL: Poke===&lt;br /&gt;
La construction d'un POCL: Poke se fera sur la base du prototype le plus à jour, c'est-à-dire le quatrième.&lt;br /&gt;
Attention, les photos du montage proviennent du deuxième et du troisième prototypes&lt;br /&gt;
&lt;br /&gt;
====Matériel====&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou autre objet au choix permettant un stimulus sensoriel pour l'utilisateur&lt;br /&gt;
* 4 Boutons poussoir&lt;br /&gt;
* Fils conducteurs&lt;br /&gt;
* Découpeuse laser&lt;br /&gt;
* Planches de bois de 5mm d'épaisseur (ou carton facile à découper)&lt;br /&gt;
* Papier fin (des feuilles A4 font parfaitement l'affaire)&lt;br /&gt;
* Colle à bois (optionnel)&lt;br /&gt;
* Connexion internet&lt;br /&gt;
* Ciseaux&lt;br /&gt;
====Assemblage de la boite====&lt;br /&gt;
=====Prélude=====&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière de façon diffuse comme le papier. &lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure. Le carton peut le remplacer si besoin.&lt;br /&gt;
Pour une meilleure apparence finale, les gravures des pièces doivent être orientées vers l'extérieur de l'objet.&lt;br /&gt;
Découper au préalable les pièces à la découpeuse laser&lt;br /&gt;
=====Étape 1=====&lt;br /&gt;
Prendre l'anneau troué, et enfoncer dedans les piliers dédiés, le côté épais orienté vers l'intérieur de la pièce&lt;br /&gt;
(Photo)&lt;br /&gt;
=====Étape 2=====&lt;br /&gt;
Découper le papier en bandes larges de 6 cm et longues de 28 cm (27.4 cm pour une feuille A4) et l'enrouler autour de l'ossature précédemment créée.&lt;br /&gt;
Un chevauchement des deux bouts est attendu, et utile pour la suite&lt;br /&gt;
(Photo)&lt;br /&gt;
=====Étape 3=====&lt;br /&gt;
Insérer les deux anneaux de renforts (les plus grands et fins) autour du papier afin de le pincer avec l'ossature. Les garder à un tier de la distance de chaque bord pour l'instant.&lt;br /&gt;
(Photo)&lt;br /&gt;
=====Étape 4=====&lt;br /&gt;
Insérer le disque troué sur les piliers pour entièrement bloquer le papier et fermer le cylindre d'un côté.&lt;br /&gt;
Il s'agit de l'étape la plus délicate du montage, prendre son temps et y aller par petits pas est vivement recommandé.&lt;br /&gt;
Note: la photo montre un anneau troué, mais la pièce est bien pleine dans le plan.&lt;br /&gt;
Note: Il est conseillé pour des raisons de simplification de la tâche d'insérer préalablement les boutons poussoir dans les 4 trous centraux et de les raccorder à des fils pour faciliter les connexions futures.&lt;br /&gt;
(Photo)&lt;br /&gt;
&lt;br /&gt;
====Électronique====&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Envoie un pokou&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'WikiTestDemo'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('Poke');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('Poke', 'pokou');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Montage==&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
===Arduino===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////&lt;br /&gt;
//      POCL Poke      //&lt;br /&gt;
/////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
 * Un POCL imaginé et réalisé au Hackathon POCL à l'édulab Rennes 2 les 9 et 10 décembre 2021.&lt;br /&gt;
 * &lt;br /&gt;
 *                                      BROCHAGE                            &lt;br /&gt;
                                _________________                        &lt;br /&gt;
                               /     D1 mini     \                       &lt;br /&gt;
                           -  |[ ]RST        TX[ ]| -                    &lt;br /&gt;
                           -  |[ ]A0  -GPIO  RX[ ]| -                    &lt;br /&gt;
                              |[ ]D0-16    5-D1[ ]| -                    &lt;br /&gt;
                              |[ ]D5-14    4-D2[ ]| -                    &lt;br /&gt;
                    Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             &lt;br /&gt;
                           -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN          &lt;br /&gt;
                           -  |[ ]D8-15     GND[X]| - GND (Bouton, MP3-TF-16P)             &lt;br /&gt;
                           -  |[ ]3V3 .      5V[X]| - ruban de Led        &lt;br /&gt;
                              |       +---+       |                     &lt;br /&gt;
                              |_______|USB|_______|                      &lt;br /&gt;
&lt;br /&gt;
Matériel :&lt;br /&gt;
- des fils dupont.&lt;br /&gt;
- un ruban de led RGB WS28B12&lt;br /&gt;
- D1 mini (Wemos, LOLIN,...)&lt;br /&gt;
- bouton poussoir&lt;br /&gt;
- une alimentation 5V&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Un travail d'équipe de :&lt;br /&gt;
 * Alma Oskouei&lt;br /&gt;
 * Gaëlle Bescond&lt;br /&gt;
 * Tony Vanpoucke&lt;br /&gt;
 * Wing-Anh Luy&lt;br /&gt;
 * Antony Le Goïc-Auffret&lt;br /&gt;
   ___&lt;br /&gt;
 / ___ \&lt;br /&gt;
|_|   | |&lt;br /&gt;
     /_/ &lt;br /&gt;
     _   ___   _ &lt;br /&gt;
    |_| |___|_| |_&lt;br /&gt;
         ___|_   _|&lt;br /&gt;
        |___| |_|&lt;br /&gt;
Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// Programme inspiré de celui par Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/arduino-mqtt&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;ConditionalPrinter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFiMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowConnectionManager.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowDatabase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowEncryptionBroker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowProtocolInterpreter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowTransmitter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ExpiringTimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;FloodingMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HeapMonitor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonTranslator.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshBackendBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshCryptoInterface.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MessageData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MutexTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfoBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PeerRequestLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RequestData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ResponseData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Serializer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionOutcome.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionResult.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TypeConversionFunctions.h&amp;gt;&lt;br /&gt;
#include &amp;lt;UtilityFunctions.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;iPhone de Antony&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
//=============élément pour le ruban de led et le bouton===============&lt;br /&gt;
&lt;br /&gt;
// Broche de connexion du ruban de LED&lt;br /&gt;
#define PIN D3 // &lt;br /&gt;
&lt;br /&gt;
int brocheBouton = 12; //GPIO de la broche D6&lt;br /&gt;
&lt;br /&gt;
// Nombre de Led RDGB dans votre ruban&lt;br /&gt;
#define NUMPIXELS 13 &lt;br /&gt;
&lt;br /&gt;
// on configurer un riban nommé &amp;quot;pixels&amp;quot;&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define T 1 // temps pour gérer le fade du ruban&lt;br /&gt;
//==============================================================&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //connection au serveur MQTT : identifiant, canal, mot de passe&lt;br /&gt;
  while (!client.connect(&amp;quot;GAWELLE&amp;quot;, &amp;quot;pocl21&amp;quot;, &amp;quot;BauhTg9l28jam1lR&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// on s'abonne au sujet (topic) &amp;quot;Poke&amp;quot; &lt;br /&gt;
  client.subscribe(&amp;quot;/Poke&amp;quot;);&lt;br /&gt;
  // client.unsubscribe(&amp;quot;/hello&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  fade();&lt;br /&gt;
  Serial.println(&amp;quot;incoming: &amp;quot; + topic + &amp;quot; - &amp;quot; + payload);&lt;br /&gt;
  if (payload == &amp;quot;pokou&amp;quot;){&lt;br /&gt;
    Serial.println(&amp;quot;clic !&amp;quot;);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
    delay(100);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  // Note: Do not use the client in the callback to publish, subscribe or&lt;br /&gt;
  // unsubscribe as it may cause deadlocks when other things arrive while&lt;br /&gt;
  // sending and receiving acknowledgments. Instead, change a global variable,&lt;br /&gt;
  // or push to a queue and handle it in the loop after calling `client.loop()`.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fade() {&lt;br /&gt;
  for (int sig=0; sig&amp;lt;3; sig++){&lt;br /&gt;
  for (int b=0; b&amp;lt;255; b++){&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) {&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(150, b, 200));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // On allume les rubans&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int b=255; b&amp;gt;1; b--){ //boucle de gestion de la brillance&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  // n'oubliez pas que le premier pixel porte le Numéro 0&lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) { // Pour chaque pixel...&lt;br /&gt;
&lt;br /&gt;
    // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(b, 100, 100));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // on affiche les pixels&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pixels.begin(); //on initialise le ruban &amp;quot;pixels&amp;quot;&lt;br /&gt;
  pinMode(brocheBouton,INPUT_PULLUP);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
&lt;br /&gt;
  // on se connecte au client&lt;br /&gt;
  client.begin(&amp;quot;pocl21.cloud.shiftr.io&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  pixels.clear(); // Set all pixel colors to 'off'&lt;br /&gt;
  pixels.show();&lt;br /&gt;
  &lt;br /&gt;
  client.loop();&lt;br /&gt;
  delay(10);  // &amp;lt;- fixes some issues with WiFi stability&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message roughly every second.&lt;br /&gt;
&lt;br /&gt;
  if ( digitalRead(brocheBouton) == LOW ){&lt;br /&gt;
  Serial.println(&amp;quot;Appuis Bouton&amp;quot;); &lt;br /&gt;
  client.publish(&amp;quot;/Poke&amp;quot;, &amp;quot;pokou&amp;quot;);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18020</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18020"/>
				<updated>2021-12-10T23:18:24Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : /* Prototype réalisés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL communautaire.&lt;br /&gt;
&lt;br /&gt;
Ce POCL est interactif, on peut agir sur lui :&lt;br /&gt;
* tapoter&lt;br /&gt;
* appuyer&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==Prototype réalisés ==&lt;br /&gt;
4 prototypes différents ont été réalisés, chacun apportant une évolution/modification supplémentaire.&lt;br /&gt;
* Le premier prototype est fait, en plus de l'électronique, de carton et de papier.&lt;br /&gt;
* Le deuxième prototype consiste en du bois découpé au laser pour remplacer le carton et mieux emprisonner le papier. Cette deuxième génération donnera la forme générale quasiment finale.&lt;br /&gt;
* Le troisième prototype a intégré un bouton dans la structure d'un couvercle pour pouvoir interagir réellement avec les autres POCL.&lt;br /&gt;
* Le quatrième et dernier prototype s'est vu octroyer trois boutons supplémentaires pour pouvoir envoyer plus de &amp;quot;pokous&amp;quot;, ainsi que d'un &amp;quot;maintien d'élégance&amp;quot; pour permettre aux fils d'en sortir sans détériorer le papier sur la durée.&lt;br /&gt;
===Fabrication d'un POCL: Poke===&lt;br /&gt;
La construction d'un POCL: Poke se fera sur la base du prototype le plus à jour, c'est-à-dire le quatrième.&lt;br /&gt;
Attention, les photos du montage proviennent du deuxième et du troisième prototypes&lt;br /&gt;
&lt;br /&gt;
====Matériel====&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou autre objet au choix permettant un stimulus sensoriel pour l'utilisateur&lt;br /&gt;
* 4 Boutons poussoir&lt;br /&gt;
* Fils conducteurs&lt;br /&gt;
* Découpeuse laser&lt;br /&gt;
* Planches de bois de 5mm d'épaisseur (ou carton facile à découper)&lt;br /&gt;
* Papier fin (des feuilles A4 font parfaitement l'affaire)&lt;br /&gt;
* Colle à bois (optionnel)&lt;br /&gt;
* Connexion internet&lt;br /&gt;
* Ciseaux&lt;br /&gt;
====Assemblage de la boite====&lt;br /&gt;
=====Prélude=====&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière de façon diffuse comme le papier. &lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure. Le carton peut le remplacer si besoin.&lt;br /&gt;
Pour une meilleure apparence finale, les gravures des pièces doivent être orientées vers l'extérieur de l'objet.&lt;br /&gt;
Découper au préalable les pièces à la découpeuse laser&lt;br /&gt;
=====Étape 1=====&lt;br /&gt;
Prendre l'anneau troué, et enfoncer dedans les piliers dédiés, le côté épais orienté vers l'intérieur de la pièce&lt;br /&gt;
(Photo)&lt;br /&gt;
=====Étape 2=====&lt;br /&gt;
Découper le papier en bandes larges de 6 cm et longues de 28 cm (27.4 cm pour une feuille A4) et l'enrouler autour de l'ossature précédemment créée.&lt;br /&gt;
Un chevauchement des deux bouts est attendu, et utile pour la suite&lt;br /&gt;
(Photo)&lt;br /&gt;
=====Étape 3=====&lt;br /&gt;
Insérer les deux anneaux de renforts (les plus grands et fins) autour du papier afin de le pincer avec l'ossature. Les garder à un tier de la distance de chaque bord pour l'instant.&lt;br /&gt;
(Photo)&lt;br /&gt;
=====Étape 4=====&lt;br /&gt;
Insérer le disque troué sur les piliers pour entièrement bloquer le papier et fermer le cylindre d'un côté.&lt;br /&gt;
Il s'agit de l'étape la plus délicate du montage, prendre son temps et y aller par petits pas est vivement recommandé.&lt;br /&gt;
Note: la photo montre un anneau troué, mais la pièce est bien pleine dans le plan.&lt;br /&gt;
Note: Il est conseillé pour des raisons de simplification de la tâche d'insérer préalablement les boutons poussoir dans les 4 trous centraux et de les raccorder à des fils pour faciliter les connexions futures.&lt;br /&gt;
(Photo)&lt;br /&gt;
&lt;br /&gt;
====Électronique====&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Envoie un pokou&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'WikiTestDemo'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('Poke');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('Poke', 'pokou');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Montage==&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
===Arduino===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////&lt;br /&gt;
//      POCL Poke      //&lt;br /&gt;
/////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
 * Un POCL imaginé et réalisé au Hackathon POCL à l'édulab Rennes 2 les 9 et 10 décembre 2021.&lt;br /&gt;
 * &lt;br /&gt;
 *                                      BROCHAGE                            &lt;br /&gt;
                                _________________                        &lt;br /&gt;
                               /     D1 mini     \                       &lt;br /&gt;
                           -  |[ ]RST        TX[ ]| -                    &lt;br /&gt;
                           -  |[ ]A0  -GPIO  RX[ ]| -                    &lt;br /&gt;
                              |[ ]D0-16    5-D1[ ]| -                    &lt;br /&gt;
                              |[ ]D5-14    4-D2[ ]| -                    &lt;br /&gt;
                    Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             &lt;br /&gt;
                           -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN          &lt;br /&gt;
                           -  |[ ]D8-15     GND[X]| - GND (Bouton, MP3-TF-16P)             &lt;br /&gt;
                           -  |[ ]3V3 .      5V[X]| - ruban de Led        &lt;br /&gt;
                              |       +---+       |                     &lt;br /&gt;
                              |_______|USB|_______|                      &lt;br /&gt;
&lt;br /&gt;
Matériel :&lt;br /&gt;
- des fils dupont.&lt;br /&gt;
- un ruban de led RGB WS28B12&lt;br /&gt;
- D1 mini (Wemos, LOLIN,...)&lt;br /&gt;
- bouton poussoir&lt;br /&gt;
- une alimentation 5V&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Un travail d'équipe de :&lt;br /&gt;
 * Alma Oskouei&lt;br /&gt;
 * Gaëlle Bescond&lt;br /&gt;
 * Tony Vanpoucke&lt;br /&gt;
 * Wing-Anh Luy&lt;br /&gt;
 * Antony Le Goïc-Auffret&lt;br /&gt;
   ___&lt;br /&gt;
 / ___ \&lt;br /&gt;
|_|   | |&lt;br /&gt;
     /_/ &lt;br /&gt;
     _   ___   _ &lt;br /&gt;
    |_| |___|_| |_&lt;br /&gt;
         ___|_   _|&lt;br /&gt;
        |___| |_|&lt;br /&gt;
Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// Programme inspiré de celui par Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/arduino-mqtt&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;ConditionalPrinter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFiMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowConnectionManager.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowDatabase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowEncryptionBroker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowProtocolInterpreter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowTransmitter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ExpiringTimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;FloodingMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HeapMonitor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonTranslator.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshBackendBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshCryptoInterface.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MessageData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MutexTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfoBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PeerRequestLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RequestData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ResponseData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Serializer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionOutcome.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionResult.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TypeConversionFunctions.h&amp;gt;&lt;br /&gt;
#include &amp;lt;UtilityFunctions.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;iPhone de Antony&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
//=============élément pour le ruban de led et le bouton===============&lt;br /&gt;
&lt;br /&gt;
// Broche de connexion du ruban de LED&lt;br /&gt;
#define PIN D3 // &lt;br /&gt;
&lt;br /&gt;
int brocheBouton = 12; //GPIO de la broche D6&lt;br /&gt;
&lt;br /&gt;
// Nombre de Led RDGB dans votre ruban&lt;br /&gt;
#define NUMPIXELS 13 &lt;br /&gt;
&lt;br /&gt;
// on configurer un riban nommé &amp;quot;pixels&amp;quot;&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define T 1 // temps pour gérer le fade du ruban&lt;br /&gt;
//==============================================================&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //connection au serveur MQTT : identifiant, canal, mot de passe&lt;br /&gt;
  while (!client.connect(&amp;quot;GAWELLE&amp;quot;, &amp;quot;pocl21&amp;quot;, &amp;quot;BauhTg9l28jam1lR&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// on s'abonne au sujet (topic) &amp;quot;Poke&amp;quot; &lt;br /&gt;
  client.subscribe(&amp;quot;/Poke&amp;quot;);&lt;br /&gt;
  // client.unsubscribe(&amp;quot;/hello&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  fade();&lt;br /&gt;
  Serial.println(&amp;quot;incoming: &amp;quot; + topic + &amp;quot; - &amp;quot; + payload);&lt;br /&gt;
  if (payload == &amp;quot;pokou&amp;quot;){&lt;br /&gt;
    Serial.println(&amp;quot;clic !&amp;quot;);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
    delay(100);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  // Note: Do not use the client in the callback to publish, subscribe or&lt;br /&gt;
  // unsubscribe as it may cause deadlocks when other things arrive while&lt;br /&gt;
  // sending and receiving acknowledgments. Instead, change a global variable,&lt;br /&gt;
  // or push to a queue and handle it in the loop after calling `client.loop()`.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fade() {&lt;br /&gt;
  for (int sig=0; sig&amp;lt;3; sig++){&lt;br /&gt;
  for (int b=0; b&amp;lt;255; b++){&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) {&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(150, b, 200));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // On allume les rubans&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int b=255; b&amp;gt;1; b--){ //boucle de gestion de la brillance&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  // n'oubliez pas que le premier pixel porte le Numéro 0&lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) { // Pour chaque pixel...&lt;br /&gt;
&lt;br /&gt;
    // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(b, 100, 100));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // on affiche les pixels&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pixels.begin(); //on initialise le ruban &amp;quot;pixels&amp;quot;&lt;br /&gt;
  pinMode(brocheBouton,INPUT_PULLUP);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
&lt;br /&gt;
  // on se connecte au client&lt;br /&gt;
  client.begin(&amp;quot;pocl21.cloud.shiftr.io&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  pixels.clear(); // Set all pixel colors to 'off'&lt;br /&gt;
  pixels.show();&lt;br /&gt;
  &lt;br /&gt;
  client.loop();&lt;br /&gt;
  delay(10);  // &amp;lt;- fixes some issues with WiFi stability&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message roughly every second.&lt;br /&gt;
&lt;br /&gt;
  if ( digitalRead(brocheBouton) == LOW ){&lt;br /&gt;
  Serial.println(&amp;quot;Appuis Bouton&amp;quot;); &lt;br /&gt;
  client.publish(&amp;quot;/Poke&amp;quot;, &amp;quot;pokou&amp;quot;);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18019</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=18019"/>
				<updated>2021-12-10T23:00:19Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL communautaire.&lt;br /&gt;
&lt;br /&gt;
Ce POCL est interactif, on peut agir sur lui :&lt;br /&gt;
* tapoter&lt;br /&gt;
* appuyer&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==Prototype réalisés ==&lt;br /&gt;
4 prototypes différents ont été réalisés, chacun apportant une évolution/modification supplémentaire.&lt;br /&gt;
* Le premier prototype est fait, en plus de l'électronique, de carton et de papier.&lt;br /&gt;
* Le deuxième prototype consiste en du bois découpé au laser pour remplacer le carton et mieux emprisonner le papier. Cette deuxième génération donnera la forme générale quasiment finale.&lt;br /&gt;
* Le troisième prototype a intégré un bouton dans la structure d'un couvercle pour pouvoir interagir réellement avec les autres POCL.&lt;br /&gt;
* Le quatrième et dernier prototype s'est vu octroyé trois boutons supplémentaires pour pouvoir envoyer plus de &amp;quot;pokous&amp;quot;, ainsi que d'un &amp;quot;maintien d'élégance&amp;quot; pour permettre aux fils d'en sortir sans détériorer le papier sur la durée.&lt;br /&gt;
===technologie===&lt;br /&gt;
La construction d'un POCL: Poke se fera sur la base du prototype le plus à jour, c'est-à-dire le quatrième.&lt;br /&gt;
Attention, les photos du montage proviennent du deuxième et du troisième prototypes&lt;br /&gt;
====Boite====&lt;br /&gt;
je découpe un truc pour faire rentrer les machins.&lt;br /&gt;
&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière comme le plexiglas ou le papier. &lt;br /&gt;
&lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure&lt;br /&gt;
&lt;br /&gt;
====Matériel====&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou autre objet au choix permettant un stimulus sensoriel pour l'utilisateur&lt;br /&gt;
* 1 Bouton poussoir&lt;br /&gt;
* Fils conducteurs&lt;br /&gt;
* Découpeuse laser&lt;br /&gt;
* Planches de bois de 5mm d'épaisseur (ou carton facile à découper)&lt;br /&gt;
* Papier fin (des feuilles A4 font parfaitement l'affaire)&lt;br /&gt;
* Colle à bois (optionnel)&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Envoie un pokou&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'WikiTestDemo'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('Poke');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('Poke', 'pokou');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Montage==&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
===Arduino===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////&lt;br /&gt;
//      POCL Poke      //&lt;br /&gt;
/////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
 * Un POCL imaginé et réalisé au Hackathon POCL à l'édulab Rennes 2 les 9 et 10 décembre 2021.&lt;br /&gt;
 * &lt;br /&gt;
 *                                      BROCHAGE                            &lt;br /&gt;
                                _________________                        &lt;br /&gt;
                               /     D1 mini     \                       &lt;br /&gt;
                           -  |[ ]RST        TX[ ]| -                    &lt;br /&gt;
                           -  |[ ]A0  -GPIO  RX[ ]| -                    &lt;br /&gt;
                              |[ ]D0-16    5-D1[ ]| -                    &lt;br /&gt;
                              |[ ]D5-14    4-D2[ ]| -                    &lt;br /&gt;
                    Bouton -  |[X]D6-12    0-D3[X]| - ruban de leds             &lt;br /&gt;
                           -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN          &lt;br /&gt;
                           -  |[ ]D8-15     GND[X]| - GND (Bouton, MP3-TF-16P)             &lt;br /&gt;
                           -  |[ ]3V3 .      5V[X]| - ruban de Led        &lt;br /&gt;
                              |       +---+       |                     &lt;br /&gt;
                              |_______|USB|_______|                      &lt;br /&gt;
&lt;br /&gt;
Matériel :&lt;br /&gt;
- des fils dupont.&lt;br /&gt;
- un ruban de led RGB WS28B12&lt;br /&gt;
- D1 mini (Wemos, LOLIN,...)&lt;br /&gt;
- bouton poussoir&lt;br /&gt;
- une alimentation 5V&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Un travail d'équipe de :&lt;br /&gt;
 * Alma Oskouei&lt;br /&gt;
 * Gaëlle Bescond&lt;br /&gt;
 * Tony Vanpoucke&lt;br /&gt;
 * Wing-Anh Luy&lt;br /&gt;
 * Antony Le Goïc-Auffret&lt;br /&gt;
   ___&lt;br /&gt;
 / ___ \&lt;br /&gt;
|_|   | |&lt;br /&gt;
     /_/ &lt;br /&gt;
     _   ___   _ &lt;br /&gt;
    |_| |___|_| |_&lt;br /&gt;
         ___|_   _|&lt;br /&gt;
        |___| |_|&lt;br /&gt;
Les petits Débrouillards - décembre 2021 CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// Programme inspiré de celui par Joël Gähwiler&lt;br /&gt;
// https://github.com/256dpi/arduino-mqtt&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;ConditionalPrinter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EncryptedConnectionLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFiMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowConnectionManager.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowDatabase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowEncryptionBroker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowProtocolInterpreter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EspnowTransmitter.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ExpiringTimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;FloodingMesh.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HeapMonitor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonTranslator.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshBackendBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MeshCryptoInterface.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MessageData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MutexTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;NetworkInfoBase.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PeerRequestLog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RequestData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ResponseData.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Serializer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpMeshBackend.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TcpIpNetworkInfo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TimeTracker.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionOutcome.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TransmissionResult.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TypeConversionFunctions.h&amp;gt;&lt;br /&gt;
#include &amp;lt;UtilityFunctions.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;iPhone de Antony&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
//=============élément pour le ruban de led et le bouton===============&lt;br /&gt;
&lt;br /&gt;
// Broche de connexion du ruban de LED&lt;br /&gt;
#define PIN D3 // &lt;br /&gt;
&lt;br /&gt;
int brocheBouton = 12; //GPIO de la broche D6&lt;br /&gt;
&lt;br /&gt;
// Nombre de Led RDGB dans votre ruban&lt;br /&gt;
#define NUMPIXELS 13 &lt;br /&gt;
&lt;br /&gt;
// on configurer un riban nommé &amp;quot;pixels&amp;quot;&lt;br /&gt;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define T 1 // temps pour gérer le fade du ruban&lt;br /&gt;
//==============================================================&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //connection au serveur MQTT : identifiant, canal, mot de passe&lt;br /&gt;
  while (!client.connect(&amp;quot;GAWELLE&amp;quot;, &amp;quot;pocl21&amp;quot;, &amp;quot;BauhTg9l28jam1lR&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// on s'abonne au sujet (topic) &amp;quot;Poke&amp;quot; &lt;br /&gt;
  client.subscribe(&amp;quot;/Poke&amp;quot;);&lt;br /&gt;
  // client.unsubscribe(&amp;quot;/hello&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  fade();&lt;br /&gt;
  Serial.println(&amp;quot;incoming: &amp;quot; + topic + &amp;quot; - &amp;quot; + payload);&lt;br /&gt;
  if (payload == &amp;quot;pokou&amp;quot;){&lt;br /&gt;
    Serial.println(&amp;quot;clic !&amp;quot;);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
    delay(100);&lt;br /&gt;
    digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
  // Note: Do not use the client in the callback to publish, subscribe or&lt;br /&gt;
  // unsubscribe as it may cause deadlocks when other things arrive while&lt;br /&gt;
  // sending and receiving acknowledgments. Instead, change a global variable,&lt;br /&gt;
  // or push to a queue and handle it in the loop after calling `client.loop()`.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void fade() {&lt;br /&gt;
  for (int sig=0; sig&amp;lt;3; sig++){&lt;br /&gt;
  for (int b=0; b&amp;lt;255; b++){&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) {&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(150, b, 200));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // On allume les rubans&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (int b=255; b&amp;gt;1; b--){ //boucle de gestion de la brillance&lt;br /&gt;
  pixels.setBrightness(b);&lt;br /&gt;
  &lt;br /&gt;
  // n'oubliez pas que le premier pixel porte le Numéro 0&lt;br /&gt;
  for(int i=0; i&amp;lt;NUMPIXELS; i++) { // Pour chaque pixel...&lt;br /&gt;
&lt;br /&gt;
    // pixels.Color() prends les valeurs RGB de 0,0,0 jusqu'à 255,255,255&lt;br /&gt;
    pixels.setPixelColor(i, pixels.Color(b, 100, 100));&lt;br /&gt;
  }&lt;br /&gt;
  pixels.show();   // on affiche les pixels&lt;br /&gt;
  delay(T);&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  pixels.begin(); //on initialise le ruban &amp;quot;pixels&amp;quot;&lt;br /&gt;
  pinMode(brocheBouton,INPUT_PULLUP);&lt;br /&gt;
  &lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
&lt;br /&gt;
  // on se connecte au client&lt;br /&gt;
  client.begin(&amp;quot;pocl21.cloud.shiftr.io&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  pixels.clear(); // Set all pixel colors to 'off'&lt;br /&gt;
  pixels.show();&lt;br /&gt;
  &lt;br /&gt;
  client.loop();&lt;br /&gt;
  delay(10);  // &amp;lt;- fixes some issues with WiFi stability&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message roughly every second.&lt;br /&gt;
&lt;br /&gt;
  if ( digitalRead(brocheBouton) == LOW ){&lt;br /&gt;
  Serial.println(&amp;quot;Appuis Bouton&amp;quot;); &lt;br /&gt;
  client.publish(&amp;quot;/Poke&amp;quot;, &amp;quot;pokou&amp;quot;);&lt;br /&gt;
  delay(250);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17986</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17986"/>
				<updated>2021-12-10T10:32:37Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL communautaire.&lt;br /&gt;
&lt;br /&gt;
Ce POCL est interactif, on peut agir sur lui :&lt;br /&gt;
* tapoter&lt;br /&gt;
* appuyer&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==membres du projet==&lt;br /&gt;
&lt;br /&gt;
Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
==Prototype qu'on souhaite réaliser ==&lt;br /&gt;
au moins deux POCL Poke pour montrer les interactions&lt;br /&gt;
===technologie===&lt;br /&gt;
&lt;br /&gt;
====Boite====&lt;br /&gt;
je découpe un truc pour faire rentrer les machins.&lt;br /&gt;
&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière comme le plexiglas ou le papier. &lt;br /&gt;
&lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure&lt;br /&gt;
&lt;br /&gt;
====matériel====&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou &lt;br /&gt;
* 1 Bouton poussoir&lt;br /&gt;
* &lt;br /&gt;
*&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Click Me&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'ANTONY'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('hello');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('hello', 'leMonde');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Montage==&lt;br /&gt;
===Découpe du bois===&lt;br /&gt;
===Découpe papier===&lt;br /&gt;
===Arduino===&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17985</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17985"/>
				<updated>2021-12-10T10:30:46Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL communautaire.&lt;br /&gt;
&lt;br /&gt;
Ce POCL est interactif, on peut agir sur lui :&lt;br /&gt;
* tapoter&lt;br /&gt;
* appuyer&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Le projet a été réalisé par Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==membres du projet==&lt;br /&gt;
&lt;br /&gt;
Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
==Prototype qu'on souhaite réaliser ==&lt;br /&gt;
au moins deux POCL Poke pour montrer les interactions&lt;br /&gt;
===technologie===&lt;br /&gt;
&lt;br /&gt;
====Boite====&lt;br /&gt;
je découpe un truc pour faire rentrer les machins.&lt;br /&gt;
&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière comme le plexiglas ou le papier. &lt;br /&gt;
&lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure&lt;br /&gt;
&lt;br /&gt;
====matériel====&lt;br /&gt;
* 1 D1 Mini&lt;br /&gt;
* 1 Ruban de LED ou &lt;br /&gt;
* 1 Bouton poussoir&lt;br /&gt;
* &lt;br /&gt;
*&lt;br /&gt;
====MQTT====&lt;br /&gt;
L'interaction entre les POCL passe par un serveur MQTT (Message Queuing Telemetry Transport)&lt;br /&gt;
* Service proposé par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Click Me&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'ANTONY'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('hello');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('hello', 'leMonde');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17981</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17981"/>
				<updated>2021-12-10T10:17:50Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : /* membres du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL communautaire.&lt;br /&gt;
&lt;br /&gt;
Ce POCL est interactif, on peut agir sur lui :&lt;br /&gt;
* tapoter&lt;br /&gt;
* appuyer&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==membres du projet==&lt;br /&gt;
&lt;br /&gt;
Alma, Wing-Anh, Tony, Antony, Gaelle&lt;br /&gt;
&lt;br /&gt;
==prototype qu'on souhaite réaliser ==&lt;br /&gt;
au moins deux POCL Poke pour montrer les interactions&lt;br /&gt;
===technologie===&lt;br /&gt;
====Boite====&lt;br /&gt;
je découpe un truc pour faire rentrer les machins.&lt;br /&gt;
&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière comme le plexiglas ou le papier. &lt;br /&gt;
&lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure&lt;br /&gt;
&lt;br /&gt;
====matériel====&lt;br /&gt;
* D1 Mini&lt;br /&gt;
* ruban de LED&lt;br /&gt;
* bouton poussoir&lt;br /&gt;
*...&lt;br /&gt;
====MQTT====&lt;br /&gt;
* service proposés par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Click Me&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'ANTONY'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('hello');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('hello', 'leMonde');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17979</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17979"/>
				<updated>2021-12-10T10:12:50Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : /* Boite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL communautaire.&lt;br /&gt;
&lt;br /&gt;
Ce POCL est interactif, on peut agir sur lui :&lt;br /&gt;
* tapoter&lt;br /&gt;
* appuyer&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==membres du projet==&lt;br /&gt;
&lt;br /&gt;
==prototype qu'on souhaite réaliser ==&lt;br /&gt;
au moins deux POCL Poke pour montrer les interactions&lt;br /&gt;
===technologie===&lt;br /&gt;
====Boite====&lt;br /&gt;
je découpe un truc pour faire rentrer les machins.&lt;br /&gt;
&lt;br /&gt;
La boîte est un cylindre dont le matériau laisse passer la lumière comme le plexiglas ou le papier. &lt;br /&gt;
&lt;br /&gt;
Les extrémités du cylindre sont faites de bois découpé au laser afin de renforcer la structure&lt;br /&gt;
&lt;br /&gt;
====matériel====&lt;br /&gt;
* D1 Mini&lt;br /&gt;
* ruban de LED&lt;br /&gt;
* bouton poussoir&lt;br /&gt;
*...&lt;br /&gt;
====MQTT====&lt;br /&gt;
* service proposés par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Click Me&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'ANTONY'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('hello');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('hello', 'leMonde');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17974</id>
		<title>POCL : Poke</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=POCL_:_Poke&amp;diff=17974"/>
				<updated>2021-12-10T10:03:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gazelle : /* Résumé du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Résumé du Projet==&lt;br /&gt;
Le POCL communautaire.&lt;br /&gt;
&lt;br /&gt;
Ce POCL est interactif, on peut agir sur lui :&lt;br /&gt;
* tapoter&lt;br /&gt;
* appuyer&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Il envoie un message à la communauté de ses homomorphes, qui réagissent par une ou des actions perceptibles par leurs possesseurs (signal lumineux, vibration etc...)&lt;br /&gt;
&lt;br /&gt;
==membres du projet==&lt;br /&gt;
&lt;br /&gt;
==prototype qu'on souhaite réaliser ==&lt;br /&gt;
au moins deux POCL Poke pour montrer les interactions&lt;br /&gt;
===technologie===&lt;br /&gt;
====Boite====&lt;br /&gt;
je découpe un truc pour faire rentrer les machins.&lt;br /&gt;
====matériel====&lt;br /&gt;
* D1 Mini&lt;br /&gt;
* ruban de LED&lt;br /&gt;
* bouton poussoir&lt;br /&gt;
*...&lt;br /&gt;
====MQTT====&lt;br /&gt;
* service proposés par https://cloud.shiftr.io/welcome&lt;br /&gt;
* voir [[MQTT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Example&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/mqtt/dist/mqtt.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;quot;button&amp;quot;&amp;gt;Click Me&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      const client = mqtt.connect('wss://pocl21:BauhTg9l28jam1lR@pocl21.cloud.shiftr.io', {&lt;br /&gt;
        clientId: 'ANTONY'&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('connect', function() {&lt;br /&gt;
        console.log('connected!');&lt;br /&gt;
        client.subscribe('hello');&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      client.on('message', function(topic, message) {&lt;br /&gt;
        console.log(topic + ': ' + message.toString());&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      document.querySelector('button').addEventListener('click', function() {&lt;br /&gt;
        client.publish('hello', 'leMonde');&lt;br /&gt;
      });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;iframe src=&amp;quot;https://pocl21.cloud.shiftr.io/embed?widgets=1&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;400&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==premier diaporama : Alors ? Comment ça se passe ?==&lt;br /&gt;
Diaporama type '''Alors ?''': [[media:DiaporamaSuperBrest2021-Alors.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
==second diaporama : Et voilà !==&lt;br /&gt;
Diaporama type '''Et Voilà !''' : [[media:DiaporamaSuperBrest2021-EtVoila.odp|Téléchargez et adaptez-le !]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:POCL]]&lt;/div&gt;</summary>
		<author><name>Gazelle</name></author>	</entry>

	</feed>