{"id":307,"date":"2011-05-30T21:15:07","date_gmt":"2011-05-30T19:15:07","guid":{"rendered":"http:\/\/www.alkannoide.com\/?p=307"},"modified":"2011-05-30T21:56:44","modified_gmt":"2011-05-30T19:56:44","slug":"tweet-via-larduino-et-un-pc","status":"publish","type":"post","link":"https:\/\/www.alkannoide.com\/2011\/05\/30\/tweet-via-larduino-et-un-pc\/","title":{"rendered":"Tweet via l’Arduino et un PC"},"content":{"rendered":"

Dans ma d\u00e9couverte de l’Arduino, ma premi\u00e8re envie f\u00fbt de r\u00e9aliser un tweet avec l’Arduino gr\u00e2ce \u00e0 la d\u00e9tection de courant via une de ses entr\u00e9es (ou changement d’\u00e9tat). On s’amusera par la m\u00eame occasion \u00e0 faire allumer une LED. Pour cela, nous aurons besoin d’une plaque de pratique, de diff\u00e9rents composants \u00e9lectronique (LED, transistors, r\u00e9sistance), d’un Ethernet Shield et bien entendu de l’Arduino.<\/p>\n

 <\/p>\n

L’Arduino en lui m\u00eame n’est pas capable de faire un tweet, en revanche, il est tout \u00e0 fait \u00e0 m\u00eame de faire un appel r\u00e9seau via un Ethernet Shield<\/a> et la librairie Ethernet<\/a>. Il vous faudra donc un ordinateur \u00e9galement reli\u00e9 au r\u00e9seau et sur lequel sera pr\u00e9sent le code permettant de faire le tweet. Je me suis bas\u00e9 sur ce tutoriel: Envoyer un tweet simplement en PHP avec OAuth<\/a> pour tweetter. Le montage donne le r\u00e9sultat suivant :<\/p>\n

\"\"<\/a><\/p>\n

Pour vous aider, voici une vision plus claire gr\u00e2ce un petit sch\u00e9ma. J’ai utilis\u00e9 un transistor PNP\u00a0BC32725<\/a>, trois r\u00e9sistances de 110 Ohms, une LED.\u00a0Attention au sens du transistor, vous risquez d’avoir des surprises \ud83d\ude09<\/p>\n

\"\"<\/a><\/p>\n

Pour les \u00e9lectroniciens, le sch\u00e9ma suivant vous donnera une meilleure vision du montage :<\/p>\n

\"\"<\/p>\n

Pour rappel, notre objectif est de faire un tweet depuis un changement d’\u00e9tat (\u00e9lectrique) via une des entr\u00e9es de l’Arduino. Dans le sch\u00e9ma ci-dessus, j’ai utilis\u00e9 un interrupteur pour simuler le changement d’\u00e9tat. Je vous laisse voir pour les utilisations possibles en modifiant l’interrupteur par un capteur \ud83d\ude09<\/p>\n

Maintenant, passons au code qui sera dans l’Arduino :<\/p>\n

#include <Ethernet.h>\r\n#include <SPI.h>\r\n\r\nbyte mac[] = {  0xzz, 0xzz, 0xzz, 0xzz, 0xzz, 0xzz }; \/\/ l'adresse MAC est indiqu\u00e9 sur l'Ethernet Shield\r\nbyte ip[] = { xxx, xxx, xxx, xxx }; \/\/ l'adresse ip pour le shield\r\nbyte server[] = { yyy, yyy, yyy, yyy }; \/\/ l'adresse ip de la cible (qui permettra le tweet)\r\n\r\n\/\/ Cette variable permet de savoir si un tweet a d\u00e9j\u00e0 \u00e9t\u00e9 effectu\u00e9e\r\nbool tweet = false;\r\n\r\nClient client(server, 80);\r\n\r\nvoid setup()  {\r\n  pinMode(7, OUTPUT); \/\/ on d\u00e9finit le pin 7 en sortie (qui servira pour allumer la LED)\r\n  Serial.begin(9600);\r\n  Ethernet.begin(mac, ip); \/\/ on configure l'ethernet\r\n  delay(1000);\r\n} \r\n\r\nvoid loop()  {\r\n  Serial.print(\"Etat pin 2 : \");\r\n  int val = analogRead(2); \/\/ on lit l'\u00e9tat de l'entr\u00e9e Analogique 2\r\n  Serial.println(val);\r\n  if(val >= 900 && !tweet) { \/\/ si la valeur du pin A2 est sup\u00e9rieur \u00e0 900 on consid\u00e8re un changement d'\u00e9tat et donc on lance le tweet\r\n    analogWrite(7, 255);\r\n    sendTweet();\r\n    analogWrite(7, 0);\r\n  }else{ \/\/ sinon on attends 2 sec\r\n    delay(2000);\r\n  }\r\n}\r\n\/\/ l'envoi du tweet via le code PHP se fait ici\r\nbool sendTweet() {\r\n  Serial.println(\"connecting...\");\r\n  if (client.connect()) {\r\n    Serial.println(\"connected\");\r\n    client.println(\"GET \/tweet.php HTTP\/1.0\");\r\n    client.println();\r\n    delay(2000);\r\n    do { \/\/ on fait \"tourner\" le script pour r\u00e9cup\u00e9rer tout l'appel HTTP\r\n      char c = client.read();\r\n      Serial.print(c);\r\n    } while((client.available()));\r\n\r\n    if (!client.connected()) { \/\/ on cl\u00f4t la connexion une fois la requ\u00eate HTTP faite\r\n      Serial.println();\r\n      Serial.println(\"disconnecting.\");\r\n      client.stop();\r\n      tweet = true; \/\/ on bloque ici les tweets potentiels suivants\r\n    }\r\n  }\r\n}<\/pre>\n

Une fois embarqu\u00e9e sur l’Arduino, vous pouvez effectuer vos premiers tests. En fermant l’interrupteur, l’Arduino lancera un appel r\u00e9seau sur le serveur que vous aurez d\u00e9fini et effectuera le tweet. Et voil\u00e0 le tour est jou\u00e9. Pour refaire un tweet, il vous faudra faire un reset sur l’Arduino.<\/p>\n

Bon amusement \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"

Dans ma d\u00e9couverte de l’Arduino, ma premi\u00e8re envie f\u00fbt de r\u00e9aliser un tweet avec l’Arduino gr\u00e2ce \u00e0 la d\u00e9tection de courant via une de ses entr\u00e9es (ou changement d’\u00e9tat). On s’amusera par la m\u00eame occasion \u00e0 faire allumer une LED. Pour cela, nous aurons besoin d’une plaque de pratique, de diff\u00e9rents composants \u00e9lectronique (LED, transistors, […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[42,43],"tags":[],"_links":{"self":[{"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/posts\/307"}],"collection":[{"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/comments?post=307"}],"version-history":[{"count":13,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/posts\/307\/revisions"}],"predecessor-version":[{"id":323,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/posts\/307\/revisions\/323"}],"wp:attachment":[{"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/media?parent=307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/categories?post=307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/tags?post=307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}