Live Instructables Followers Zähler

Live Instructables Followers Counter: 8 Schritte (mit Bildern)

Hallo! Vor einiger Zeit habe ich dieses Projekt gesehen, es ist ziemlich großartig und du solltest es dir ansehen. Mir hat es gefallen, aber mein YouTube-Kanal ist nicht so beliebt (zumindest noch nicht: D) ​​und ich wollte andere Daten als nur YT-Abonnenten anzeigen.Bekathwia verwendete in ihrem Projekt eine Youtube-API, mit der das Abrufen von Subcibers-Ansichten und anderen Informationen sehr einfach ist. Und was ist, wenn ich Informationen von anderen Seiten (wie instructables, instagram oder meiner eigenen Website) anzeigen möchte. Ich dachte, dass wir mit einem sehr einfachen und kurzen PHP-Skript diese Informationen von jeder Website erhalten können, selbst wenn es keine API dafür gibt. Dann können wir mit arduino und ENC28J60 diese Informationen vom Server erhalten. Der größte Nachteil ist natürlich, dass wir einen Server benötigen, um dieses PHP-Skript zu handhaben, aber keine Sorge, ich werde Ihnen einige kostenlose Hostings zeigen. Weil ich Instructable so sehr mag, habe ich mich entschlossen, Live Counter für anweisbare Follower zu machen. Da ich schon immer Holzarbeiten machen wollte, habe ich mich dazu entschlossen, meinen eigenen Rahmen dafür zu fertigen. In diesem Projekt werden wir das Ethernet-Modul ENC28J60 verwenden, das sehr einfach und gut zu handhaben ist. Der größte Vorteil dieses Moduls ist, dass Sie kein Passwort oder Benutzernamen für Ihr WI-FI ändern müssen. Sie können es einfach einstecken und Ihren Counter genießen. Wenn Sie also Ihren Router oder Ihr Passwort ändern, müssen Sie sich nicht um die Neuprogrammierung Ihres Arduino kümmern.

Das ist das perfekte Projekt für Anfänger, nicht nur mit Arduino, sondern auch mit Holzbearbeitung und Löten!


Morgen werde ich mein Youtube-Video hinzufügen. Es tut mir so leid, aber ich habe momentan kein Mikrofon, um Ton aufzunehmen. Also werde ich es morgen tun. Wenn Sie möchten, können Sie meinen YouTube-Kanal abonnieren, um über dieses und andere meiner Videos auf dem Laufenden zu bleiben.

Ich habe gerade meine Facebook-Seite erstellt. Wenn Sie über neue Projekte informiert werden möchten und sehen möchten, was ich tue, können Sie es gerne tun:

http://www.facebook.com/Nikodem-Bartnik-1891157704439330/

Vielen Dank! :)

Zubehör:

Schritt 1: Was benötigen Sie?

Es gibt nicht so viele Dinge, die wir brauchen, damit es funktioniert. Liste mit Links:

  • Arduino uno (oder andere) - Da ich meinen Rahmen etwas zu klein gemacht habe, muss ich Arduino Pro Mini anstelle von Uno verwenden. Sie können auch pro mini verwenden, es ist kleiner und billiger, aber Sie benötigen einen USB-> UART-Konverter, um ein Programm auf pro mini hochzuladen. Diese Arduinos sind nicht original, aber sie sind viel billiger. Sie benötigen außerdem einen 3,3-V-Stabilisator, da es für arduino pro mini keinen gibt. Arduino pro mini: GearBest Arduino UNO: GearBest
  • Ethernet-Modul ENC28J60 -das ist ein sehr einfaches und sehr beliebtes Ethernet-Modul, mit dem Gearbest problemlos umgehen kann
  • LCD-7-Segment-Anzeige mit 4 Zeichen (Farbe spielt keine Rolle, aber weil instructeble gelb ist, kaufte ich gelb
  • Einige Kabel - Sie können Computer Twisted Pair kaufen und Kabel daraus beziehen
  • Ethernet-Kabel und Telefon-Ladegerät - normales Etherent-Kabel und altes Smartphone-Ladegerät - jeder hat einen Gearbest
  • Etwas Holz oder Fotorahmen - dies wird ein Gehege für unser Projekt sein
  • Einige Werkzeuge

Schritt 2: Verbindung

Zu den meisten meiner Projekte habe ich PCB (Printable Circuit Borad) gemacht, aber dieses Mal dachte ich, dass es für Anfänger viel einfacher sein wird, es mit Arduino Uno und einigen Kabeln zu machen. Sie können es mit Steckdosenkabeln verbinden oder löten, wenn Sie möchten, aber es ist nicht notwendig. Die Widerstände in der obigen Schaltung haben 100 Ohm. Denken Sie daran, die ENC28J60 an anzuschließen 3,3 V nicht bis 5 V.

Da ich mein Gehäuse für Arduino Uno etwas zu klein fand, habe ich mich für Pro Mini entschieden. Es ist kleiner und billiger, das ist auch ein großes Plus. Oben finden Sie beide Verbindungsschemata

Schritt 3: PHP Script

Sie können sagen, dass dieses Skript nicht optimiert ist, und ich könnte etwas Besseres tun, beispielsweise das Finden eines span-Elements anhand der ID oder des DOM. Aber ich wollte es so einfach wie möglich halten. Ich hoffe, Sie werden es verstehen. Ich habe einige Kommentare geschrieben, um es transparenter zu machen. Es sucht einfach in der Quelle der Website nach einer bestimmten Zeichenfolge und durchsucht deren Positionen und gibt dann die Follower-Nummer mit $% # vor der Nummer zurück, um es Arduino zu erleichtern, die Nummer in der HTTP-Antwort zu finden. Sie müssen lediglich den Link zu einem Ihrer instructables in file_get_contents () ändern.

<? php

<? php

$ html = file_get_contents ('http://www.instructables.com/id/555-Useless-Machine/'); // hier kannst du einen link zu deinem instructable hinzufügen, egal welche $ startposition = strpos ($ html, ""); // hier suchen wir nach span-Elementen in der Seitenquelle, die die Nummer $ endposition = strpos ($ html,"", $ startposition + 37); echo" $% # "; // wir drucken dies als Startreferenzpunkt echo substr ($ html, $ startposition +37, $ endposition - $ startposition -37); // hier drucken wir unser Follower-Nummer echo "$% #"; // wir geben dies als Endreferenzpunkt aus

?>

Schritt 4: Einige Worte zum Hosting

Viele von Ihnen haben möglicherweise Probleme damit, einen Speicherort für PHP-Skripte zu finden. Wenn Sie eine Website haben, legen Sie diese einfach dort ab. Wenn nicht, lesen Sie weiter. Die einfachste und billigste (aber nicht die beste) Option ist das kostenlose Hosting auf Hostinger. Es ist nicht das beste Hosting in diesem Universum, aber es ist kostenlos und funktioniert einwandfrei für nur ein Skript (selbst für eine kleine Website hatte ich meine Website über ein Jahr lang genau dort). Das große Plus ist auch, dass sie kostenlose Subdomains anbieten, sodass Sie kein Geld für eine Domain ausgeben müssen. Hier ist der Link zu Hostinger:

Link zum Hostinger

Es ist völlig kostenlos und Sie müssen nur ein Konto erstellen. Wenn Sie Probleme haben, verschwenden Sie keine Zeit damit, sich an die Hilfe zu wenden, und posten Sie stattdessen direkt dort einen Kommentar (dies sollte viel schneller gehen). Trotz aller Nachteile denke ich, dass dieses Hosting die beste Option für dieses Projekt ist.

Schritt 5: Arduino-Code

Arduino-Code liest Daten aus PHP-Skripten, dank unserer Marker, die wissen, wo die Follower-Nummer beginnt und wo sie endet. Es hat auch sehr einfachen Code für die Segmentanzeige. Um Ihre anweisbare Nummer zu erhalten, müssen Sie meinen Link in einen Ihrer anweisbaren ändern. Denken Sie auch daran, den Link zu Ihrem Server im Arduino-Code (am Anfang) und in der Mitte des Arduino-Codes zu ändern:

ether.browseUrl (PSTR ("/"), "counter.php", Website, my_callback)

"counter.php" zu Ihrem PHP-Skriptnamen.

Hier ist der ganze Code und auch in .zip unten

// Demo mit DHCP und DNS zum Ausführen einer Webclient-Anforderung.
// 08.06.2011 http://opensource.org/licenses/mit-license.php

#umfassen

# LED_A definieren A0 # LED_B definieren A1 # LED_C definieren A2 # LED_D definieren 2 # LED_E definieren 3 # LED_F definieren 4 # LED_G definieren 5 // # LED_DP definieren 7

#define LED_CHAR1 6 #define LED_CHAR2 7 #define LED_CHAR3 8 #define LED_CHAR4 9

String Anhänger;

// Die MAC-Adresse der Ethernet-Schnittstelle muss im statischen LAN-Byte eindeutig sein. mymac [] = {0x74,0x69,0x69,0x2D, ​​0x30,0x31};

Byte Ethernet :: Buffer [500]; statischer uint32_t Timer; // füge www vor dem Domainnamen ohne Subdomain hinzu // const char website [] PROGMEM = "www.nikodembartnik.pl";

// Wenn Sie eine Subdomain verwenden, verwenden Sie nicht www vor dem Subdomainnamen const char website [] PROGMEM = "livecounter.esy.es";

// wird aufgerufen, wenn die Client-Anforderung abgeschlossen ist. static void my_callback (Byte-Status, Wort aus, Wort len) {Ethernet :: buffer [off + 400] = 0; String res = (const char *) Ethernet :: buffer + off; Serial.println (res); int start_position = res.indexOf ("$% #"); String followers_number = res.substring (start_position + 3); followers_number = followers_number.substring (0, followers_number.indexOf ("$% #")); followers_number.trim (); followers = followers_number; Serial.print (followers_number); Serial.println ();

//Serial.println ("..."); }

void setup () {

PinMode (LED_A, OUTPUT); PinMode (LED_B, OUTPUT); PinMode (LED_C, OUTPUT); PinMode (LED_D, OUTPUT); PinMode (LED_E, OUTPUT); PinMode (LED_F, OUTPUT); PinMode (LED_G, OUTPUT); PinMode (LED_CHAR1, OUTPUT); PinMode (LED_CHAR2, OUTPUT); PinMode (LED_CHAR3, OUTPUT); Serial.begin (57600);

if (ether.begin (Größe von Ethernet :: buffer, mymac) == 0) Serial.println ("Zugriff auf enc28j60 fehlgeschlagen"); if (! ether.dhcpSetup ()) Serial.println (F ("DHCP failed"));

ether.printIp ("IP:", ether.myip); ether.printIp ("GW:", ether.gwip); ether.printIp ("DNS:", ether.dnsip);

// # if 1 // DNS verwenden, um die IP-Adresse der Website aufzulösen if (! ether.dnsLookup (website)) Serial.println ("DNS failed"); Serial.println ("# 1"); / * #elif 2 // Wenn die Website eine Zeichenfolge ist, die eine IP-Adresse anstelle eines Domänennamens enthält, // verwenden Sie sie direkt. Hinweis: Die Zeichenfolge kann nicht in PROGMEM sein. char websiteIP [] = "95.211.80.4"; ether.parseIp (ether.hisip, websiteIP); Serial.println ("# 2"); #else // oder geben Sie eine numerische IP-Adresse anstelle eines String-Bytes an hisip [] = {95,211,80,4}; ether.copyIp (ether.hisip, hisip); Serial.println ("# 3"); #endif * / ether.printIp ("SRV:", ether.hisip); }

void loop () {ether.packetLoop (ether.packetReceive ()); if (millis ()> timer) {// alle 5 Minuten aktualisieren timer = millis () + 1000 * 60 * 5; ether.browseUrl (PSTR ("/"), "counter.php", Website, my_callback); } for (int a = 0; a <4; a ++) {show_number (a + 1, followers.substring (a, a + 1) .toInt (), 0); Verzögerung (1); }}

void show_number (int char_number, int number, int decimal_point) {

// Alle Anzeigesegmente ausschalten

digitalWrite (LED_A, HIGH); digitalWrite (LED_B, HIGH); digitalWrite (LED_C, HIGH); digitalWrite (LED_D, HIGH); digitalWrite (LED_E, HIGH); digitalWrite (LED_F, HIGH); digitalWrite (LED_G, HIGH);

digitalWrite (LED_CHAR1, LOW); digitalWrite (LED_CHAR2, LOW); digitalWrite (LED_CHAR3, LOW);

// LEDs einschalten

if (nummer == 0 || nummer == 2 || nummer == 3 || nummer == 5 || nummer == 6 || nummer == 7 || nummer == 8 || nummer == 9) { digitalWrite (LED_A, LOW); } if (nummer == 0 || nummer == 1 || nummer == 2 || nummer == 3 || nummer == 4 || nummer == 7 || nummer == 8 || nummer == 9) {digitalWrite (LED_B, LOW); } if (number == 0 || number == 1 || number == 3 || number == 4 || number == 5 || number == 6 || number == 7 || number == 8 | | number == 9) {digitalWrite (LED_C, LOW); } if (nummer == 0 || nummer == 2 || nummer == 3 || nummer == 5 || nummer == 6 || nummer == 8 || nummer == 9) {digitalWrite (LED_D, LOW ); } if (Nummer == 0 || Nummer == 2 || Nummer == 6 || Nummer == 8) {digitalWrite (LED_E, LOW); } if (nummer == 0 || nummer == 4 || nummer == 5 || nummer == 6 || nummer == 8 || nummer == 9) {digitalWrite (LED_F, LOW); } if (nummer == 2 || nummer == 3 || nummer == 4 || nummer == 5 || nummer == 6 || nummer == 8 || nummer == 9) {digitalWrite (LED_G, LOW ); } / * if (Dezimalpunkt> 0) {LED_DP_PORT & = ~ LED_DP; } * / if (char_number == 1) {digitalWrite (LED_CHAR1, HIGH); } else if (char_number == 2) {digitalWrite (LED_CHAR2, HIGH); } else if (char_number == 3) {digitalWrite (LED_CHAR3, HIGH);

} else if (char_number == 4) {digitalWrite (LED_CHAR4, HIGH);

} }

Schritt 6: Holzbearbeitung

Ich habe noch nie etwas in Holz gemacht, ich erwarte Vogelhäuschen, aber es ist so lange her. Aus diesem Grund habe ich beschlossen, einen Holzrahmen für dieses Projekt zu entwerfen. Dazu kommt das Aussehen von rohem Holz, es ist so wunderschön! Und diese Holzart passt zu allem :)

Ich begann damit, alles Holz, das ich für dieses Projekt habe, auszuschleifen. Dieser Rahmen war in keiner Weise entworfen. Ich schnappe mir nur etwas Holz und überprüfe, wie groß es sein sollte, um alle Dinge hinein zu passen. Es ist sehr einfach, nur 4 Kanteln bei 45 Grad geschnitten und zusammengeklebt. Dann habe ich oben ein Stück 4mm Sperrholz gelegt, aber vorher habe ich ein Loch gefräst, das sich nicht im Auslass befindet. Ich habe gerade hier so wenig Holz gelebt, dass das Display durchleuchtet. Es war so einfach, mit CNC-Fräsen zu arbeiten, aber wenn Sie keine haben und manuell talentiert sind, können Sie versuchen, es mit einem Dremel-Werkzeug oder ähnlichem zu machen, aber ich denke, es wird sehr schwierig sein (mehr über meine CNC Maschine können Sie hier lesen). Als alles fertig war, klebte ich Sperrholz, um das Display und die gesamte Elektronik einzurahmen und darin zu platzieren. Am Ende klebe ich einen anweisbaren Streifen auf das Sperrholz, sieht toll aus: D

Balg ist GCODE zum Fräsen. Sie können ein Loch für die Anzeige fräsen, wenn Sie möchten. Ich benutze 4mm Sperrholz und die Frästiefe beträgt 3,6mm. X = 0 und Y = 0 befindet sich in der Mitte der Anzeige.

Während dieses kleinen Holzprojekts waren für mich die nützlichsten Werkzeuge Dremel, Drill und Saw. Auch diese Plastiksache, um perfekte 45-Grad-Winkel zu schneiden, ohne sie kann es ziemlich knifflig werden

Schritt 7: Fertigstellen

Über dem Display füge ich dieses anweisbare Aufnähabzeichen hinzu, das ich im Wettbewerb gewonnen habe (Dank anweisbar). Weil ich rohes Holz liebe, habe ich beschlossen, es nicht mit irgendetwas zu bemalen und es so zu lassen, wie es ist. Dieses anweisbare Logo auf der Oberseite sieht so gut aus :) Ich habe auch kleine Löcher in die Unterseite meines Rahmens gebohrt, um Ethernet- und Stromkabel darin unterzubringen. Das Loch für das Display ist so eng, dass ich keinen Kleber oder ähnliches verwendet habe, um es zu platzieren. Arduino und ENC28J60 liegen einfach im Rahmen.

Schritt 8: Fazit

Zum Schluss möchte ich mich nur fürs Lesen bedanken. Denken Sie daran, einen Kommentar zu hinterlassen, folgen Sie mir und stimmen Sie für mein Projekt! Ich danke dir sehr! Wenn Sie Fragen haben, hinterlassen Sie einen Kommentar oder schreiben Sie eine Nachricht an mich und ich werde es so schnell wie möglich wiederholen.