Croquettes
[vc_row parallax= »content-moving » parallax_image= »2151″ el_class= »text-center align-center » thb_video_overlay_color= »rgba(198,80,11,0.7) » css= ».vc_custom_1572201920982{padding-top: 100px !important;padding-bottom: 100px !important;background-image: url(https://www.alexiscamper.com/wp-content/uploads/2019/06/screencap-2019-10-27-at-14.38.24-copy.png?id=2321) !important;background-position: center;background-repeat: no-repeat !important;background-size: contain !important;} »][vc_column thb_color= »thb-light-column » offset= »vc_col-lg-8 vc_col-md-10″][vc_column_text]
Croquettes
Électronique – Robot
[/vc_column_text][/vc_column][/vc_row][vc_row el_class= »align-center » css= ».vc_custom_1490812464967{padding-top: 7vh !important;padding-bottom: 7vh !important;} »][vc_column offset= »vc_col-lg-7 vc_col-md-9″][vc_empty_space height= »30px »][vc_column_text]Le Chat part avec nous au Canada, et les restriction de poids pour l’emener en avion, imposent qu’il fasse un rĂ©gime (un peu costaud, le Chat).
Le veto nous a indiquĂ© qu’il Ă©tait prĂ©fĂ©rable de lui donner sa dose de croquettes en plusieurs fois, rĂ©partie en petites portions, Ă©talĂ©es sur la journĂ©e.
Facile quand on est Ă la maison, mais ce n’est pas le cas tous les jours. Je me suis donc mis en quĂŞte d’une machine qui remplirait ce rĂ´le. J’en ai trouvĂ©, mais souvent très chères, et peu flexibles en terme de dose/programation.[/vc_column_text][/vc_column][/vc_row][vc_row el_class= »align-center »][vc_column offset= »vc_col-lg-10″][thb_image alignment= »aligncenter » image= »2326″][/thb_image][/vc_column][/vc_row][vc_row el_class= »align-center » css= ».vc_custom_1490812321760{padding-top: 7vh !important;padding-bottom: 7vh !important;} »][vc_column offset= »vc_col-lg-10″][vc_column_text]Avec mes recherches, je me sentais Ă l’aise pour fabriquer une machine moi-mĂŞme. Le design que j’ai testĂ© en premier, est basĂ© sur du tuyaux de PVC. Facile Ă trouver, et peu onĂ©reux.[/vc_column_text][/vc_column][/vc_row][vc_row el_class= »align-center »][vc_column el_class= »align-center »][vc_row_inner][vc_column_inner width= »1/4″][thb_image alignment= »alignright » lightbox= »true » image= »2327″ img_size= »120×503″][/thb_image][/vc_column_inner][vc_column_inner width= »3/4″][vc_column_text]Le système consiste en un silo rempli de croquettes, et d’une balle, qui sert Ă fermer et Ă doser en mĂŞme temps. La balle est montĂ©e sur un servomoteur, qui est activĂ© par un micro-contrĂ´leur, Ă intervalles rĂ©guliers.
Les colliers, la balles et le système de couplage au servo, sont imprimés en 3D. Toutes les parties en contact avec les croquettes ont été poncées et enduites de Mod Podge. Ça a pour effet de boucher les petites crevasses entre les couches de PLA, et ça rend le nettoyage plus simple.
4 tuyaux de PVC plus fins font office de pieds, et soutiennent toute la structure. Des vis directement dans les colliers permettent de régler la hauteur du silo par rapport au sol/bol.[/vc_column_text][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row el_id= »3Dmodel »][vc_column][vc_row_inner][vc_column_inner]
[3D model= »COLLIER.obj » width= »100% » height= »500″ background= »BDBDBD » opacity= »0,3″ camera= »50,50,300″ modelposition= »2,2,2″ modelscale= »2,2,2″ ambient= »945757″]
[/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]Le code n’est probablement pas des plus Ă©lĂ©gants, mais ça fonctionne pour prototyper 🙂 et je suis ouvert Ă toute suggestion[/vc_column_text][vc_empty_space height= »12px »][/vc_column][/vc_row][vc_row el_class= »coderow »][vc_column][vc_column_text el_id= »codecode » el_class= »codecodecode »]
// CAT FOOD DISPENSER
#include <Servo.h>
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
Servo myServo; // create myServo object to control a myServo
int pos = 10; // variable to store the myServo position
void setup()
{
Â
Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
pinMode(11, OUTPUT);
delay(1000);
digitalWrite(11, LOW);
myServo.attach(9); // attaches the myServo on pin 9 to the myServo object
}
void loop() {
DateTime now = rtc.now();
// Serial.print(now.year(), DEC);
// Serial.print('/');
// Serial.print(now.month(), DEC);
// Serial.print('/');
// Serial.print(now.day(), DEC);
// Serial.print(" (");
// Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
// Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
/*------------------------------------------------------------------------------------------------------------------*/
if (now.hour() == 7 and now.minute() == 00 and now.second() <= 10 )
{ digitalWrite(11, HIGH);
myServo.write(160);
delay(3000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
}
if (now.hour() == 7 and now.minute() == 00 and now.second() <= 21 )
{ digitalWrite(11, HIGH);
myServo.write(10);
delay(3000);
digitalWrite(11, LOW);
delay(3000);
}
/*------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------*/
if (now.hour() == 9 and now.minute() == 30 and now.second() <= 10 )
{ digitalWrite(11, HIGH);
myServo.write(160);
delay(3000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
}
if (now.hour() == 9 and now.minute() == 30 and now.second() <= 21 )
{ digitalWrite(11, HIGH);
myServo.write(10);
delay(3000);
digitalWrite(11, LOW);
delay(3000);
}
/*------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------*/
if (now.hour() == 12 and now.minute() == 00 and now.second() <= 10 )
{ digitalWrite(11, HIGH);
myServo.write(160);
delay(3000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
}
if (now.hour() == 12 and now.minute() == 00 and now.second() <= 21 )
{ digitalWrite(11, HIGH);
myServo.write(10);
delay(3000);
digitalWrite(11, LOW);
delay(3000);
}
/*------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------*/
if (now.hour() == 14 and now.minute() == 30 and now.second() <= 10 )
{ digitalWrite(11, HIGH);
myServo.write(160);
delay(3000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
}
if (now.hour() == 14 and now.minute() == 30 and now.second() <= 21 )
{ digitalWrite(11, HIGH);
myServo.write(10);
delay(3000);
digitalWrite(11, LOW);
delay(3000);
}
/*------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------*/
if (now.hour() == 17 and now.minute() == 00 and now.second() <= 10 )
{ digitalWrite(11, HIGH);
myServo.write(160);
delay(3000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
}
if (now.hour() == 17 and now.minute() == 00 and now.second() <= 21 )
{ digitalWrite(11, HIGH);
myServo.write(10);
delay(3000);
digitalWrite(11, LOW);
delay(3000);
}
/*------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------*/
if (now.hour() == 19 and now.minute() == 30 and now.second() <= 10 )
{ digitalWrite(11, HIGH);
myServo.write(160);
delay(3000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
}
if (now.hour() == 19 and now.minute() == 30 and now.second() <= 21 )
{ digitalWrite(11, HIGH);
myServo.write(10);
delay(3000);
digitalWrite(11, LOW);
delay(3000);
}
/*------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------*/
if (now.hour() == 22 and now.minute() == 00 and now.second() <= 10 )
{ digitalWrite(11, HIGH);
myServo.write(160);
delay(3000);
digitalWrite(11, LOW);
delay(500);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
}
if (now.hour() == 22 and now.minute() == 00 and now.second() <= 21 )
{ digitalWrite(11, HIGH);
myServo.write(10);
delay(3000);
digitalWrite(11, LOW);
delay(3000);
}
/*------------------------------------------------------------------------------------------------------------------*/
}
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_row_inner][vc_column_inner][vc_empty_space][vc_single_image image= »2254″ img_size= »full » alignment= »center »][vc_empty_space][vc_column_text]J’ai Ă©galement créé un PCB pour relier mon arduino aux diffĂ©rents composants. Cette Ă©tape sera dĂ©taillĂ©e dans un autre post.
Pour conclure, entre les diffĂ©rentes Ă©tapes d’apprentissage et de prototypage, ce projet m’a pris un bon mois et demi. Entre temps, j’ai nourri mon chat manuellement.[/vc_column_text][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row el_class= »align-center » css= ».vc_custom_1490812336919{padding-top: 8vh !important;padding-bottom: 8vh !important;} »][vc_column offset= »vc_col-lg-10″][thb_portfolio_attribute style= »style2″][/vc_column][/vc_row]