Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Old-School-Zwei-Wege-Pager mit Arduino

Komponenten und Verbrauchsmaterialien

Hologramm Globale IoT-SIM-Karte
× 1
Arduino UNO
× 1
Arduino GSM Shield V2
× 1
Adafruit LCD Shield Kit mit 16x2 Zeichenanzeige - Nur 2 Pins Gebraucht! - BLAU UND WEISS
× 1
Hammond Project Box 4,7 x 2,6 x 1,4 durchscheinend Blau
× 1

Apps und Onlinedienste

Hologramm-Datenrouter

Über dieses Projekt

Einführung

Um den Ruhm der späten 90er und frühen 2000er nachzubilden, dachte ich, ich würde versuchen, meinen eigenen Zwei-Wege-Pager zu entwickeln, genau wie Jay-Z es früher verwendet hat! Aber ich fand diese Idee nützlicher als auf den ersten Blick – ich habe sie so entworfen, dass sie von Kindern anstelle eines echten Mobiltelefons verwendet werden kann, oder sie kann als „SOS“-Taste für jemanden verwendet werden, der alleine im Freien arbeitet oder sogar trainieren (wenn es etwas kleiner wäre). Und in den letzten Wochen war dieses Gerät immer in meinem Wohnzimmer, wo meine Frau und ich uns gegenseitig dumme Nachrichten hinterlassen.

Zusammenfassung:Dieses Projekt sendet und empfängt Textnachrichten (SMS) über ein Arduino mit Mobilfunkmodem, das in ein kleines Gehäuse mit LCD-Display und einfachen Bedientasten eingebaut ist.

Beachten Sie, dass der Code für dieses Projekt die Möglichkeit enthält, das System über die serielle Schnittstelle auszuführen, sodass Sie eine Version dieses Projekts erstellen und verwenden können, auch wenn Sie kein LCD-Schild haben!

Hardwareauswahl

Ich hatte ein Arduino GSM Shield, das ich mit diesem Projekt zusammen mit einer SIM-Karte von Hologram verwenden wollte, also hatte ich die Kombination mit einem Arduino UNO sehr sinnvoll gemacht. Adafruit stellt ein LCD-Display mit integrierten Tasten her, und da es den I2C-Bus verwendet, verwendet es nur zwei Pins auf dem Arduino für das Display und fünf Tasten, was viel Platz für zukünftige Anpassungen lässt.

Das LCD hat eine schöne blaue Hintergrundfarbe, daher dachte ich, dass es gut aussehen würde, es mit einem durchscheinenden blauen Gehäuse zu kombinieren. Das Stapeln der drei Platinen übereinander sorgte für einige sehr saubere Verbindungen und war elektrisch kein Problem, da die beiden Abschirmungen unterschiedliche Pins verwenden.

  • LCD-Abschirmung:Analoge 4 und 5 Pins für den I2C-Bus (zusammen mit +5V Strom und Masse [aber nur die Masse neben dem Vin-Pin, nicht der neben dem 5V-Pin])
  • GSM-Schild:Pins 2 und 3 für die serielle Software und Pin 7 als Power-Reset (plus Strom und Masse natürlich, obwohl ich in der Dokumentation nie Details dazu gesehen habe)

Alles andere ist noch frei erweiterbar! Andere Geräte könnten sogar noch zum I2C-Bus hinzugefügt werden.

Während der Entwicklung lief das System nur mit USB-Strom von meinem Laptop zum Senden und Empfangen von SMS einwandfrei, obwohl ich vermute, dass es mehr Strom benötigt, um GPRS-Mobilfunkdaten zuverlässig zu verwenden.

Mobilfunkkommunikation

Hologram bietet einen mobilen Datendienst, der mit jedem Gerät funktioniert, das eine SIM-Karte akzeptiert. Nachdem ich meine SIM-Karte für den Service registriert hatte, konnte ich ihr mit nur einem zusätzlichen Klick eine Telefonnummer in meiner Vorwahl zuweisen. Ein weiteres Merkmal, das dieses Projekt zum Beispiel als Kommunikator für Kinder großartig macht, ist, dass es so kostengünstig ist, den Dienst aktiv zu halten (0,40 USD / Monat) und ich es jederzeit pausieren kann, wenn ich das Gerät nicht mehr benutze. Wie bei den meisten Handytarifen ist das Empfangen von Texten kostenlos und das Senden kostet jeweils 0,19 USD. In Zukunft können diese Kosten noch weiter gesenkt werden, indem eine Datenverbindung zum Cloud-Dienst von Hologram verwendet wird, wo eine Nachricht automatisch an einen kostenlosen SMS-Dienst weitergeleitet wird. $0,60 für ein Megabyte an Daten bringt dir viele kleine Textnachrichten.

Aus welchem ​​Grund auch immer, obwohl das GSM-Schild letztendlich richtig funktionierte, würde es den GSMScanner nicht korrekt ausführen und GSMModem getIMEI() Funktionen für die Ersteinrichtung und Fehlerbehebung. Ziemlich irreführend! SMS- und GPRS-Datenfunktionen funktionierten einwandfrei. Wenn also jemand weiß, warum das Modem mir immer noch nicht seine eigene IMEI-Nummer mitteilen kann, würde ich gerne Ihre Ideen hören.

Code und Schnittstelle

Adafruit hat ausgezeichnete Anweisungen, um das LCD-Schild in Aktion zu zeigen, und Arduino hat eine gute Anleitung für den Einstieg in das GSM-Schild, die die wichtigen Funktionen zeigt Benutzeroberfläche.

Ich hatte noch nie zuvor eine Benutzeroberfläche programmiert, die nicht die Eingabe eines Buchstabens in eine Befehlszeile mit einer Tastatur war, also wollte ich es einfach halten. Ich beschloss, eine Auswahl an vorgefertigten Nachrichten zu erstellen, die ich mit den Auf- und Ab-Tasten durchblättern konnte – eigentlich einfacher als ich dachte!

Wenn Sie die drei Boards einfach mit einer funktionierenden SIM-Karte (sogar von Ihrem eigenen Telefon!)

  • Schalten Sie es ein, es fährt hoch und informiert Sie, sobald das Netzwerk verbunden ist
  • Linke Taste:Gehe zum "Startbildschirm"
  • Rechte Taste:Bei eingehender Nachricht quittieren, damit die nächste Nachricht eingehen kann, falls vorhanden. Dimmt auch den Bildschirm, wenn keine aktuelle Nachricht vorhanden ist.
  • Auf-/Ab-Tasten:Blättern durch die Auswahl der vorprogrammierten Nachrichten zum Senden. Ich denke, Sie könnten so viele in den Code einfügen, wie Sie möchten; Ich habe mit vier angefangen.
  • Auswählen-Schaltfläche:Senden Sie die aktuell ausgewählte Nachricht

Das ist es! Eingehende Nachrichten werden automatisch angezeigt, egal welches Menü auf dem Gerät aktiv ist, und schaltet sogar die Hintergrundbeleuchtung ein, wenn sie ausgeschaltet war.

Der nächste logische Schritt könnte darin bestehen, ein Menü mit Zielnummern für die ausgehenden Nachrichten hinzuzufügen oder einfach automatisch auf die letzte empfangene Nachricht antworten zu lassen (mithilfe von remoteNumber() Funktion).

Endgültiger Build

Um die Öffnungen in der Projektbox zu schneiden, habe ich einen Bohrer für normale Löcher und dann einen Dremel Mehrzweck-Schneider (#561) mit Führung (#565) für die größeren Ausschnitte verwendet. Die Verwendung einiger zusätzlicher Bretter und Klemmen zur Herstellung einer Vorrichtung zur Führung des Dremel hätte für sauberere Linien gesorgt, aber ich bin zufrieden genug mit dem, was ich freihändig gemacht habe. Das Bit wollte definitiv mehr wandern, als ich erwartet hatte!

Die einzigen tatsächlichen Kabel im Projekt sind für die Stromversorgung zum Hinzufügen einer 9-V-Batterie und eines Schalters - ohne Batterie kann es über USB oder einen Wandstecker mit Strom versorgt werden und fertig!

Eine 9-V-Batterie und ein Clip passen gut neben das Arduino und unter das GSM-Schild (das ungefähr die gleiche Größe wie ein Arduino Mega hat). Ich habe Drähte an einige Header-Pins gelötet, um das Anschließen des Stromanschlusses zu erleichtern.

Zum Glück hatte der GSM-Schild extra lange und biegsame Leitungen an den Pins. Ich konnte sie leicht einbiegen, so dass sie die Buchsen des Arduino verfehlten und diese Anschlüsse für meinen Power-Header frei ließen. Ich vermute, deshalb sind die Pins so! Die LCD-Abschirmung oben hat kurze und kräftige Stifte ohne weibliche Anschlüsse auf der Vorderseite, daher ist das Wegbiegen der Stifte die einzige Methode, die ich gefunden habe, um andere Dinge als die Abschirmungen in diesem Setup zu verbinden.

Durch das Abklemmen der Lötkabel des USB-Anschlusses und einiger anderer an der Unterseite des Arduino kann es flach im Gehäuse auf einem Doppelklebeband sitzen. Dann stapeln sich die Platinen so, dass das LCD und die Tasten nur knapp über die Oberseite des Gehäuses hinausragen – perfekt!

Fazit

Ich bastle weiter an diesem System und lasse sogar meinen 4-jährigen Neffen ein wenig rumfummeln. Ich finde, es funktioniert ganz gut als Messenger, aber ich war überrascht, dass es mir noch besser gefällt als eine kleine Werbetafel in meinem Haus, um Nachrichten anzuzeigen. Ich bin mit der Ästhetik zufrieden, die da hilft.

Weitere Arbeiten könnten ein zweites Menü zur Auswahl des Empfängers einer Nachricht sein, das Display automatisch dimmen, um Strom zu sparen, Lichter / Summer / Pager-Motoren für Benachrichtigungen hinzufügen oder jedes andere bevorzugte Verhalten der Benutzeroberfläche, das Sie wünschen könnten!

Das System könnte auch grundlegend geändert werden, um Benachrichtigungen von einem Dienst wie IFTTT anzuzeigen, beispielsweise wenn Sie ein Paket geliefert haben oder die neuesten Tweets von jemandem. Was baust du? Wie würden Sie das System verbessern?

Viel Spaß!

-Mike

Du kannst mehr über mich und meine Projekte in meinem Blog lesen, auch mehr über dieses Projekt.

(Dieses Projekt wurde ermöglicht im Rahmen von Hologramm Hacker-In-Residence-Programm. Für weitere Informationen kontaktieren Sie Sheena, die Inhaltskoordinatorin von Hologram, unter [email protected])

Code

  • Systemcode für Arduino
Systemcode für ArduinoArduino
/** * Zwei-Wege-Pager-System mit Arduino- und Hologramm-Mobilfunkdienst * Mike Schaus * 28. Dez. 2016 * Erstellt im Rahmen des Hologram Hacker-In-Residence-Programms * * Dieses Projekt sendet und empfängt Text (SMS) Nachrichten über * ein Arduino mit Mobilfunkmodem in einem kleinen Gehäuse * mit LCD-Display und einfachen Bedientasten. * * Beachten Sie, dass der Code enthalten ist, um über das LCD-Schild ODER * den seriellen Monitor zu funktionieren, sodass Sie diesen Code auch ohne * LCD-Schild verwenden können. */#include #define PINNUMBER ""// Enthalten Sie den LCD-Bibliothekscode:#include #include #include // Das Schild verwendet die I2C SCL- und SDA-Pins. Bei klassischen Arduinos // ist dies Analog 4 und 5, sodass Sie diese nicht mehr für analogRead () verwenden können // Sie können jedoch andere I2C-Sensoren an den I2C-Bus anschließen und // den I2C-Bus teilen. Adafruit_RGBLCDShield lcd =Adafruit_RGBLCDShield( );// Diese #defines machen es einfach die Hintergrundbeleuchtungsfarbe einzustellen#define OFF 0x0#define ON 0x1// machen den Pfeil als Sonderzeichen auf dem LCDconst Byte arrow[8] ={ B00000, B00000, B01000, B01100, B01110, B01100, B01000, B00000}; // Initialisieren der GSM-BibliotheksinstanzGSM gsmAccess(false); // füge einen 'true'-Parameter für debug enabledGSM_SMS sms ein;// char-Array der Telefonnummer zum Senden von SMS // Ändern Sie die Nummer 12125551212 in eine Nummer // Sie haben Zugriff aufchar remoteNumber[20]="12125551212";// Array, um die Nummer zu speichern, die eine SMS erhalten wird vonchar senderNumber[20]; // char Array der möglichen ausgehenden Nachrichten zur Auswahl aus dem Menüchar* Antworten[]={"Mike=Awesome!", "Yes", "No", "Howdy!"};//#define NUMRESPONSES 4 // falls jemand weiß, wie man das stattdessen berechnet, bin ich ganz Ohr#define NUMRESPONSES (sizeof(responses)/sizeof(char *)) // danke an Steve Kemps Kommentar !int position=-1; // Auf diese Weise wird beim ersten Tastendruck immer die erste Option des Menüs angezeigtint inByte =0; // eingehendes serielles Byte für TastaturschnittstelleBoolesche Hintergrundbeleuchtung =true; // Status der Hintergrundbeleuchtung zum Umschalten verfolgenunsigned long previousMillis =0; // speichert die letzte Überprüfung der Nachrichten #define CHECKINTERVAL 1500 // wie oft auf Textnachrichten überprüft werden sollvoid setup () { // Geben Sie Ihren Setup-Code hier ein, um ihn einmal auszuführen:// serielle Kommunikation initialisieren Serial.begin (9600); Serial.println (F ("SMS-Nachrichtensender - wird gestartet ...")); // die Anzahl der Spalten und Zeilen des LCD einrichten:lcd.begin (16, 2); // Eine Nachricht auf dem LCD ausgeben lcd.print(F("Hallo, Hologramm!")); lcd.setCursor(0, 1); lcd.print(F("Startet...")); lcd.setBacklight (EIN); // Einrichten des Pfeilzeichens für die Anzeige lcd.createChar(0, arrow); // Verbindungsstatus boolean notConnected =true; // GSM-Schild starten // Wenn Ihre SIM-Karte eine PIN hat, übergeben Sie sie als Parameter von begin() in Anführungszeichen while(notConnected) { if(gsmAccess.begin(PINNUMBER)==GSM_READY) { notConnected =false; Serial.println (F ("GSM ist verbunden, weil du so toll bist")); Serial.println (F("Warten auf Nachrichten oder senden mit \"s\"")); Serial.println(); lcd.clear(); lcd.setCursor(0,0); Startbildschirm(); aufrechtzuerhalten. Sonst {Serial.println (F ("Nicht verbunden")); lcd.clear(); lcd.setCursor(0,0); lcd.print (F ("Nicht verbunden")); Verzögerung (1000); } }} // Dies ist die Menüsystemfunktionvoid showResponses () {// Serial.println (position); // nur zum Debuggen des Menüsystems lcd.clear(); lcd.setCursor(0,0); // Stellen Sie sicher, dass die Cursorposition zulässig ist if (position<0) position=0; if (position>NUMRESPONSES-1) Position =NUMRESPONSES-1; // Schreibe die aktuelle Auswahl und die nächste Option, wenn es eine andere Option gibt lcd.write (0); //Pfeilzeichen lcd.print(position+1); lcd.print("-"); lcd.print (Antworten [Position]); if (position  0) { inByte =Serial.read (); // Eingehendes Byte abrufen if (inByte =='s') { printResponseOptions(); while (Serial.available ()> 0) {// den Tastaturpuffer löschen für den Fall, dass char Junk =Serial.read (); } while (Seriell.verfügbar() ==0); // Hier warten, bis der Eingabepuffer ein Zeichen hat inByte =Serial.parseInt(); // würde hier auf gültige Auswahl prüfen wollen, um robuster zu sein sendSMS(responses[inByte]); } } // Nur alle paar Sekunden auf neue Nachrichten prüfen, damit die Schnittstelle schneller reagiert unsigned long currentMillis =millis(); if (currentMillis - previousMillis>=CHECKINTERVAL) { previousMillis =currentMillis; empfangeSMS(); // dauert ungefähr 26 ms, wenn keine Nachrichten vorliegen }}

Schaltpläne

Die Montage ist eigentlich viel einfacher, als der Schaltplan vermuten lässt – die meisten Verbindungen werden einfach durch Stapeln der beiden Schilde auf dem Arduino hergestellt! Alles darüber hinaus ist optional für Batteriebetrieb.

Herstellungsprozess

  1. CO2-Überwachung mit K30-Sensor
  2. taubblinde Kommunikation mit 1Sheeld/Arduino
  3. Münzprüfer mit Arduino steuern
  4. Arduino mit Bluetooth zur Steuerung einer LED!
  5. Kapazitiver Fingerabdrucksensor mit einem Arduino oder ESP8266
  6. Mit Nextion Display spielen
  7. Nunchuk-gesteuerter Roboterarm (mit Arduino)
  8. Messung der Sonneneinstrahlung mit Arduino
  9. Mini-Radar mit Arduino
  10. Wie man mit einem Arduino Musik macht