Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Le Chat de Pavlov : minuteur IoT pour dresser votre chat

Composants et fournitures

Kit Arduino MKR IoT Bundle ×1

Applications et services en ligne

À propos du projet

Note : Ce tutoriel pourrait être obsolète, consultez ce lien pour une version plus récente.

Si vous avez déjà essayé de dresser un chat, vous savez à quel point c'est difficile. Les chats sont leurs propres maîtres, mais maintenant vous avez la chance de les faire obéir grâce à cet appareil IoT.

Bienvenue dans l'expérience du Chat de Pavlov !

Dans ce projet, vous apprendrez à enseigner à votre chat quand c'est (et quand ce n'est pas) l'heure du dîner, en utilisant uniquement les composants du MKR IoT Bundle et du carton. Et on sait tous que les chats adorent les boîtes en carton !

À chaque fois que le chat entend une certaine mélodie, il reçoit de la nourriture. Un capteur de lumière détecte la présence du chat. Une autre mélodie ne fait rien. Voyez le principe ?

Vous pourrez suivre la progression de votre chat dans le temps, et régler le taux de distribution de nourriture depuis votre téléphone. Une fois des statistiques satisfaisantes atteintes, le capteur peut être transformé en dispositif portable. Votre chat devrait alors vous suivre si vous émettez ce bip sonore.

Avertissement : Aucun chat n'a été blessé pendant le développement de cette expérience. Aucune garantie que le chat mangera la nourriture, mais vous avez compris l'idée, non ?

En résumé

Vous construirez votre propre distributeur de nourriture en suivant ces instructions simples. C'est essentiellement du carton et un servomoteur avec un peu de magie Arduino.

Via le service de messagerie Telegram, vous pouvez régler la quantité de nourriture distribuée et déclencher les mélodies jouées par le buzzer.

Un capteur de lumière (phototransistor) détecte si le chat a réagi à la mélodie et s'est approché de la nourriture.

Astuce Pro : Vous pouvez héberger une page web sur le MKR1000 et afficher les données collectées dans un tableau pratique.

Composants du distributeur

Objectifs d'apprentissage

Astuces Pro : étapes utiles mais non strictement nécessaires, ajoutant une couche de complexité.

Envie d'en savoir plus ?

Ce tutoriel fait partie d'une série d'expériences pour se familiariser avec le MKR1000 et l'IoT. Tous les projets utilisent les composants du MKR IoT Bundle :

Telegram et Arduino

Telegram est une appli de messagerie populaire (mobile et desktop) qui permet de créer de puissants chat-bots ! La bibliothèque TelegramBot pour Arduino offre un moyen facile d'implémenter la logique du bot.

Pour apprendre à créer un bot et gérer les fonctions de base, voir le tutoriel "Oreiller Je t'aime".

Créer votre clavier personnalisé

Telegram permet de créer un clavier personnalisé pour des réponses rapides. Quand vous parlez au bot, une sélection de boutons s'affiche au lieu du clavier par défaut. Vous pouvez personnaliser ces boutons pour améliorer l'expérience utilisateur.

Notre clavier personnalisé :

La première ligne déclenche la mélodie et la distribution, la seconde règle la vitesse du servo (donc la quantité).

Création du clavier dans le code :

TelegramKeyboard keyboard_one;

const char* row_one[] = {MusicAndFood, MusicNoFood};
const char* row_two[] = {OnePortion, TwoPortion, ThreePortion};

keyboard_one.addRow(row_one, 2);
keyboard_one.addRow(row_two, 3);

Les émojis s'envoient en UNICODE, ex: cœur = \U00002764. Liste complète ici.

const char* MusicAndFood = "\U0001F3B6 + \U0001F36A"; // Note + Cookie
const char* MusicNoFood = "\U0001F3B6 NO \U0001F36A"; // Note NO Cookie
const char* OnePortion = "\U0001F408"; // Chat
const char* TwoPortion = "\U0001F408 \U0001F408"; // 2 Chats
const char* ThreePortion = "\U0001F408 \U0001F408 \U0001F408"; // 3 Chats

Sketch complet (base)

#include <WiFi101.h>
#include <SPI.h>
#include <TelegramBot.h>

const char* ssid = SECRET_SSID;
const char* password = SECRET_PSWD;
const char BotToken[] = SECRET_BOT_TOKEN;

WiFiSSLClient client;
TelegramBot bot(BotToken, client);
TelegramKeyboard keyboard_one;
String OldChatId = "";

void setup() {
  Serial.begin(115200);
  delay(3000);
  Serial.print("Connecting Wifi: "); Serial.println(ssid);
  while (WiFi.begin(ssid, password) != WL_CONNECTED) {
    Serial.print("."); delay(500);
  }
  Serial.println(""); Serial.println("WiFi connected");
  
  // Définition émojis et clavier (voir ci-dessus)
  bot.begin();
}

void loop() {
  message m = bot.getUpdates();
  if (m.chat_id != 0) {
    OldChatId = m.chat_id;
    Serial.println(m.text);
    bot.sendMessage(m.chat_id, "Hello !", keyboard_one);
  }
  delay(1000);
}

Important : Le format des émojis reçus diffère de celui envoyé. Utilisez l'exemple EchoBot pour voir comment les recevoir. Exemples reçus :

Détecter le chat !

On utilise un phototransistor (avec résistance 220 Ω) pour mesurer l'intensité lumineuse et détecter un passage.

Lecture simple : analogRead(A6).

Logique de détection (uniquement après la mélodie, pendant 2 minutes max) :

unsigned long timer;
bool startDetecting = true;
int threshold = 200; // valeur arbitraire

void setup() {
  timer = millis();
  Serial.begin(9600);
}

void loop() {
  if (startDetecting) {
    int value = analogRead(A6);
    if (value < threshold) {
      Serial.println("chat détecté !");
      startDetecting = false;
    } else if (millis() - timer > 120000) {
      Serial.println("pas de chat détecté dans les 2 dernières minutes");
      startDetecting = false;
    }
  }
}

On utilise millis() pour le timer (temps en ms depuis le démarrage). Le seuil est arbitraire, à ajuster selon vos conditions d'éclairage.

Jouer la mélodie

Utilisez le buzzer et la fonction tone(). Basé sur l'exemple standard toneMelody (Fichiers > Exemples > Digital > toneMelody), légèrement modifié.

Ajouter le servomoteur

Le servo ouvre la boîte pour distribuer la nourriture. Variable int PortionAmount = 1; pour régler le temps d'ouverture (90°). Cette valeur sera modifiable via Telegram.

Servo sur broche 7. Code de test :

#include <Servo.h>
Servo myservo;
int pos = 0;
int PortionAmount = 1;

void setup() { myservo.attach(7); }

void loop() { moveServo(); delay(2000); }

void moveServo() {
  Serial.println("moving servo");
  for (pos = 0; pos <= 90; pos += 1) { myservo.write(pos); delay(15); }
  delay(PortionAmount * 300); // temps d'ouverture selon portions
  for (pos = 90; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); }
}

#AstucePro : Ajouter un serveur web

Le MKR1000 supporte le mode Point d'Accès (AP) : héberger une page web accessible via l'IP de la carte sur le même réseau.

On l'utilise pour afficher les données collectées. Déclenché par l'envoi du mot "Server" au bot Telegram, qui répond avec le lien. Le client Telegram se déconnecte, le serveur web démarre.

else if (m.text == "Server") {
  IPAddress ip = WiFi.localIP();
  web_server_mode = true;
  String message = "To see the webpage go to https://" + IpToString(ip);
  bot.sendMessage(m.chat_id, message, keyboard_one);
  telegram_client.stop();
  delay(1000);
  server.begin(); // démarre serveur web sur port 80
}

La page web inclut un bouton pour quitter le mode serveur et revenir au bot Telegram. Chaque fin de détection ajoute une cellule au tableau de données : nourriture distribuée ? chat venu ? temps de réaction.

AddTableCell(food/noFood, Yes/No, TimeValue);
table_cells += cell;
html = html_1 + table_cells + html_2;

Connaissances de base HTML/CSS requises (ou confiance dans l'exemple). Voir exemple de base : Exemples > WiFi101 > AP_SimpleWebServer.

Astuce : Pour que les données survivent à un reset, regardez la bibliothèque FlashStorage ou le projet "Le Geek" !

Code

Pièces personnalisées et boîtiers

Carton 2 mm : pavlovcase_ShVm1OJRIF.dxf

Schématiques

Schéma de câblage joint dans les fichiers du projet.

Processus de fabrication

  1. La science et l'industrie des légumes surgelés : de la récolte à l'assiette
  2. Les plats cuisinés surgelés : histoire, production et innovations futures
  3. Scanners CT (CAT) : Évolution, Conception et Avenir de l'Imagerie Médicale 3D
  4. Histoire et impact de la litière pour chat : de l'argile à l'industrie
  5. Le guide complet des aliments lyophilisés : conservation, production et tendances futures
  6. Shop.Cat.Com : Votre ressource unique pour équipements, accessoires et outils
  7. Optimiser machines Cat® : guide ultime My.Cat.com
  8. Distributeurs alimentaires polyvalents : des snacks aux sandwichs frais
  9. Accélérer la production alimentaire en toute sécurité grâce à l'automatisation