Ceci est une ancienne révision du document !
For my latest project, I thought I’d try to create an Arduino-powered automatic chicken feeder. Initially, I had visions of great things for this, but it ended up being whittled down to something more basic. My initial plan was to have it loaded with sensors, hooked up to the Internet (WiFi/cable), and be able to control the feeder via internet and see the current conditions such as temperature. Well, that idea died quickly. For one, I was out of WiFi range, so I’d have to use a powerline adapter (if you’ve never seen/used a powerline adapter, see last month’s article on powerline adapters and IP cameras). Easy enough, but then I was running out of power sockets. In the end I dumped the idea of using the Internet, kept the sensors, and have them display on a colour LCD instead. Basically, here’s how it works: at certain times of each day, the servo should turn 90 degrees, thereby letting pellets drop for a short time, then turn back by 90 degrees to block more pellets from dropping. Meanwhile, the screen should show the current temperature, humidity, light level, current time, and time of the next automatic drop. It also has a button for a manual feeding.
Pour mon dernier projet, je pense essayer de créer un nourrisseur automatique de poulet piloté par Arduino.
Initialement, j'ai en vue de grandes solutions pour ça, mais ça s'est terminé par une réduction vers quelque chose de plus basique. Mon plan initial était de l'équiper de détecteurs, reliés à Internet (Wifi/câble) pour être capable ce contrôler le nourrisseur via Internet en voyant les conditions courantes comme la température.
Bon, cette idée est morte rapidement. Et d'un, j'étais hors e portée du Wifi ce qui veut dire que je devais utiliser un adaptateur CPL (si vous n'avez jamais vu un adaptateur CPL, lisez l'article sur ces adaptateurs et les caméras IP, dans le numéro précédent). C'est assez facile, mais j'étais à court de prises secteur. Finalement, j'ai laissé tomber l'idée d'utiliser Internet, gardé les capteurs et je les ai affiché sur un écran LCD couleur.
De base, voici comment ça marche : à certains moments de la journée, le servomoteur tournerait de 90 degrés, laissant des granulés tomber pendant un temps court, puis tournerait à rebours de 90 degrés pour empêcher plus de granulés de tomber. Entre-temps, l'écran afficherait la température courante, l'humidité, le niveau d'éclairage, l'heure courante et l'heure de la prochaine ouverture. Il comporte aussi un bouton pour une alimentation manuelle.
Here’s the circuit I ended up going with: We’ll get to code next month, but I had many hiccups along the way: • Time - I was using the DS3231 RTC (real-time clock) which is a great module, but is hellish to set. Initially when you first get it (from your supplier), it will inevitably be set to the wrong time and date. I tried many different things to set mine and just couldn’t get it. I ended up using a DS3231 I had used in a previous project, but it was set to -1 hour. So I had to keep adjusting for that in my code. • Alarm - Thankfully. the time library from the Arduino site comes with an alarm function, so that was a blessing. Otherwise, I’d have to keep checking the time to see if it was time to drop yet, and that would have been a nightmare! • False Positives - I’ve no idea why it kept happening, but it suddenly stopped. The servo would randomly trigger and open/close when it shouldn’t have been. For some unknown reason it fixed itself. • Screen Updates - There’s still a bit of a ‘bug’ on my display. The RTC, by default, returns values of single digits for 1 through 9, so when it displays (for example) 3 minutes past, it just displays 3 rather than 03. It means my time display is a bit weird-looking at times, and I couldn’t fix it… because… • Space - I wanted to use an Arduino Nano. Initially everything was fine, but as I was nearing the end of the project, I was really cutting it fine for space. My current code leaves only 200 bytes of space in the Nano’s memory. • Power - How would I power this thing when it’s nowhere near my laptop? Luckily I had an old power adapter that did 12V, 0.9A which would do just fine when wiring it up to the Arduino’s VIN pin. Next month I’ll show some of the code and discuss what it does.
Voici le circuit que j'ai fini par faire :
Nous regarderons le code le mois prochain, mais j'ai plusieurs tracas en cours : • Le temps - J'utilise le DS3231 RTC (real time clock - horloge temps réel) qui est un grand module,mais il est infernal à régler. Initialement, quand vous le recevez (de votre fournisseur), il sera inévitablement réglé sur les mauvais jour et heure. J'ai essayé différentes chose pour régler le mien mais je n'y arrive pas. J'ai fini par utiliser le DS3231 que j'avais dans le précédent projet, mais il était réglé avec -1 heure. Aussi, je dois faire un ajustement pour cela dans le code. • L'alarme - Dieu merci ! La bibliothèque des temps sur le site Arduino dispose d'une fonction alarme, qui était pain bénit. Autrement, j'aurai dû scrûter le temps pour voir si ce n'était pas le moment d'ouvrir , et ça aurait été un cauchemar ! • Faux positifs - Je n'ai aucune idée de ce qui arrivait, mais ça s'est arrêté soudainement. La servomoteur manœuvrait aléatoirement et ouvrait/fermait quand il ne fallait pas. Pour une raison inconnue, ça s'est résolu tout seul. • Mises à jour de l'écran - Il y a encore un peu d'« erreur » sur mon affichage. Le RTC, par défaut, retourne des valeurs à 1 digit de 1 à 9 ; ainsi, quand il affiche (par exemple) que 3 minutes sont passées, il affiche seulement 3 plutôt que 03. Ça signifie que mon affichage du temps semble un peu bizarre par moments, et je n'arrive pas à le résoudre … parce que .. • Espace - Je voulais utiliser Arduino Nano. Au début, tout allait bien, mais comme je m'approchais de la fin du projet, j'étais vraiment en train de finasser pour de la place. Mon code actuel laisse seulement 200 octets d'espace libre dans la mémoire du Nano. • Alimentation - Comment je vais alimenter cette chose qui est quelque part loin de mon portable ? Heureusement, j'avais un vielle alimentation 12 V, 0,9 A qui donnait juste ce qu'il fallait quand je l'ai branché sur le picot VIN de l'Arduino.
Le mois prochain, je vous montrerai quelques parties du code en vous expliquant ce qu'il fait.
• Tim