Outils pour utilisateurs

Outils du site


issue92:arduino

This month I begin creating a project that may well come in useful, and practical! My dad has just bought some chickens and wants an automatic way to open and close a coop (sliding) door when it gets light or dark. Enter the Arduino! Rather than dismantle my precious laser trip wire, I’m using one of several Arduino Nano’s that I bought from China via eBay. They were only a couple of pounds each, and do the exact same job as the Arduino Uno, except they need to be mounted on breadboard or veroboard as they have no sockets for wires, only bare pins. So, basically what I need is to pull a wire (to open the sliding door) when it gets daylight and release the wire (to close the door) when it gets dark. That means I definitely need a servo, a 100uF capacitor, a light dependent resistor (LDR with a 10k ohm pull-down resistor), and I’ll probably use a couple of LED’s (one red, and one green with a 220 ohm pull-down resistor each) to signal the door status.

Ce mois-ci, je commence à créer un projet qui pourrait s'avérer utile et pratique ! Mon père vient d'acheter quelques poules et veut une solution automatique pour ouvrir et fermer la porte coulissante du poulailler, suivant qu'il fait jour ou nuit. Et voilà Arduino !

Plutôt que de démonter mon précieux détecteur de mouvement à laser, je vais utiliser un des Arduino Nano que j'ai achetés en Chine via eBay. Ils n'ont coûté qu'à peine deux livres chacun et font la même chose que l'Arduino Uno, sauf qu'ils ont besoin d'être montés sur une plaque d'essai ou un circuit imprimé, car il n'ont pas de connecteurs pour les fils, seulement des picots nus.

Ainsi, pour commencer, j'ai besoin de tirer un fil (pour ouvrir la porte coulissante) quand il fait jour et de le relâcher (pour fermer la porte) quand il fait nuit. Cela signifie qu'il me faut absolument un servomoteur, un condensateur de 100 pF, une photo-résistance (une LDR avec une résistance série de 10k) et j'utiliserai probablement une paire de LED (une rouge et une verte, chacune avec une résistance série de 220 ohms) pour indiquer l'état de la porte.

My main problems thus far are: • the servo is always on when the door is open. I need to find a way to hold the wire but stop the servo from whirring as it will inevitably burn out the servo. • the day/night settings are hardwired into the code. It’d be nice if there was maybe a pot to adjust the settings The code (at: http://pastebin.com/wNMaXNkC) isn’t too complex. Pre-setup(), I’m initialising the servo, my settings for sun-up and sun-down (for the LDR), the servo angle for the door open/closed, and the pins for the LEDs. The setup() is assigning the servo pin number and setting it to zero, gives the pin modes for the LEDs (and what to initially set them at), and then uses the serial port so that I can get the LDR values. My loop() is to read the LDR, then check to see IF the light is near the sun-up value, and, if it is, to open the door, turn the red LED on, the green LED off, and delay for two seconds. Same idea, but in reverse, for sun-down. I’ll keep you updated as to whether I can fix the servo problem, or if I move onto a new project next month.

Les problèmes rencontrés jusqu'à présent :

• Le servomoteur est toujours alimenté quand la porte est ouverte. J'ai besoin de trouver une solution pour maintenir le fil en l'état, mais en arrêtant d'alimenter le servomoteur qui va finir par « cramer ».

• Les réglages jour/nuit sont en dur dans le code. Ce serait bien s'il y avait un potentiomètre pour ajuster les seuils.

Le code (sur : http://pastebin.com/wNMaXNkC) n'est pas trop compliqué. Pre-setup() : initialise le servomoteur, les seuils des lever et coucher du jour (pour la LDR), l'angle du servomoteur pour que la porte soit ouverte ou fermée et affecte les picots pour les LED.

Setup() : affecte un picot au servomoteur et le met à zéro, déclare les modes des picots pour les LED (et affecte leur état initial) et ouvre le port série pour acquérir les valeurs de la LDR.

Loop() : lit la LDR, puis vérifie SI la valeur est proche du seuil de lever du jour et, si c'est le cas, ouvre la porte, allume la LED rouge, éteint la LED verte et attend deux secondes. Même raisonnement à l'inverse pour le coucher du soleil.

Je vous tiendrai au courant si je trouve une solution pour le servomoteur ou si je passe à un nouveau projet le mois prochain.

issue92/arduino.txt · Dernière modification : 2015/03/02 09:04 de auntiee