Inhoudsopgave:

Mobiele telefoon met draaiknop in retrostijl - Ajarnpa
Mobiele telefoon met draaiknop in retrostijl - Ajarnpa

Video: Mobiele telefoon met draaiknop in retrostijl - Ajarnpa

Video: Mobiele telefoon met draaiknop in retrostijl - Ajarnpa
Video: Deze smartphone rol je op met een swipe! 2024, Juni-
Anonim
Mobiele telefoon met draaiknop in retrostijl
Mobiele telefoon met draaiknop in retrostijl

Dit project werd gedreven door zowel praktische behoefte als wens om iets leuks te doen.

Zoals de meeste moderne gezinnen, hebben we vele jaren geleden geen echte "thuis" -telefoon (met snoer) meer. In plaats daarvan hebben we een extra simkaart die is gekoppeld aan ons "oude" huisnummer, dat ik in mijn dual-sim mobiele telefoon had. Dit was meestal prima als setup, maar het werkte in sommige gevallen niet het beste, zoals toen we onze ouders op bezoek hadden (ze zijn van de oude generatie - zonder mobiele telefoons, en ik kon ze niet bij ons thuis bellen als ik weg was omdat onze "thuis" -telefoon bij mij was). Dit werd ook versterkt toen ik van telefoon wisselde (nieuwe telefoon met één sim-slot). Het leek dus een goed idee om een manier te vinden om een "thuis"-telefoon te hebben die onze extra simkaart zou kunnen gebruiken.

Wat het leuke is, de meeste kinderen hebben tegenwoordig niet veel idee hoe oude telefoons met draaischijf werkten, of dat ze zelfs als zodanig bestonden. In een deel van de wereld waar mijn vrouw en ik vandaan komen, gebruiken we de uitdrukking "draai het nummer om" om te bellen, wat verwarrend is voor de jongere bevolking, aangezien "waarom zou iemand de telefoon omdraaien om te bellen". Daarom dacht ik dat het cool zou zijn om mijn zoon (die actief deelnam aan dit project) ervaring op te laten doen met een roterende telefoon.

Natuurlijk was ik er ook zeker van dat deze "nieuwe" telefoon een leuk gespreksonderwerp zou zijn als we vrienden en familieleden hebben. Of nog beter, de telefoon meenemen als we vrienden bezoeken, mensen verrassen met een volledig functionele retro-ogende mobiele telefoon.

Tijdens het project hebben we enkele van de oorspronkelijke ontwerpdoelen gewijzigd. Ik zat bijvoorbeeld te denken aan het inbouwen van een oplaadbare externe batterij in de telefoon zodat deze gemakkelijk kan worden meegenomen, maar realiseerde me uiteindelijk dat dit niet nodig is (omdat dit type telefoon natuurlijk altijd op één plaats blijft, dus het kan altijd in het stopcontact zitten). Er waren enkele andere "snelkoppelingen" die we konden nemen, waardoor het project relatief eenvoudig en niet te complex was.

================

Voor materiaal hoopte ik oorspronkelijk dat we de oude draaitelefoon van mijn ouders zouden kunnen krijgen en de meeste onderdelen ervan zouden kunnen gebruiken (telefoonbehuizing, draaiknop, headset, enz.), wat de kosten van het totale project zou verlagen. Dat gebeurde uiteindelijk niet vanwege COVID-19, wat onze geplande reis naar Europa (bezoek aan familie) verhinderde, en in plaats daarvan hebben we zojuist de nieuwe draaischijftelefoon op Amazon gevonden en gekocht (ik was niet blij met opties en prijzen op eBay). Dit was OK, omdat het een aantal interessante extra functionaliteiten bood, aangezien we een telefoon met draaischijf met extra belopties (* en #) vonden, die normaal niet beschikbaar zijn op oude telefoons.

Het belangrijkste onderdeel van het project was GSM/GPRS HAT die direct beschikbaar is (we hadden geen 4G-versie nodig) en die direct kan worden bestuurd met elke Raspberry Pi of soortgelijke borden. In ons geval hadden we een klein Raspberry Pi Zero-bord dat we niet actief gebruikten (van het oudere project van mijn zoon).

Het is interessant dat de meeste denk- en ontwerpwijzigingen werden gedaan rond een relatief eenvoudig en klein deel van het project - het creëren van belactie. Zoals degenen die bekend zijn met oude telefoons weten, werd het kenmerkende rinkelen in oude stijl geproduceerd door "bellen" aangedreven door 40-60 VAC, wat lastig was om te doen als onderdeel van dit project. Ik besloot uiteindelijk om dat deel van het project te vereenvoudigen en eindigde met een relatief eenvoudige oplossing door een opneembare geluidsmodule te gebruiken die meestal deel uitmaakt van de wenskaarten. Er waren enkele andere opties, maar dit werkte echt geweldig en was een relatief goedkope oplossing.

Benodigdheden

  • Raspberry Pi Zero W
  • Waveshare GSM/GPRS/GNSS/Bluetooth HAT
  • Opneembare geluidsmodule, drukknop geactiveerd
  • (Oude) Draaitelefoon
  • Micro SD-kaart (voor Raspberry Pi), kabels/pinnen, oude koptelefoon, etc.

Stap 1: De telefoon voorbereiden

De telefoon voorbereiden
De telefoon voorbereiden

Vaste telefoons in oude stijl zijn relatief eenvoudige apparaten. Zoals te zien is op de foto met de originele telefoon uit elkaar gehaald, zijn herbruikbare onderdelen de hoofdtelefoonbehuizing inclusief draaiknop en basis, headset en de schakelaar, terwijl de rest werd verwijderd - bel en besturingskaart.

Wat erg leuk was aan dit specifieke telefoonmodel, is dat we niet alleen de draaiknop konden hergebruiken, maar ook de connector, die rechtstreeks op de header op de Raspberry Pi kon worden aangesloten. Opgemerkt moet worden dat deze connector 3 draden heeft, één ter referentie en 2 naar discrete ingangen op Raspberry Pi. Met de juiste logica (vastgelegd in bijgevoegde code), maakt dit detectie mogelijk voor wanneer aan de knop wordt gedraaid en welk nummer is geselecteerd.

Hetzelfde gold voor de headset-schakelaar, die een connector heeft die direct op de header kan worden aangesloten. Het is eenvoudige logica, omdat het slechts een referentie en één discrete ingang vereist.

Zoals verwacht heeft de headsetkabel 4 draden, met elk 2 voor luidspreker en microfoon met laag vermogen. Omdat de HAT die we gebruikten een 3,5 mm audio-aansluiting voor een hoofdtelefoon had, sluit ik die 4 draden gewoon aan op een van de oude 3,5 mm mannelijke audiopluggen voor de hoofdtelefoon.

Nog een interessant ding dat nuttig was bij dit specifieke telefoonmodel, waren het monteren van palen van de telefoonbasis. Hoewel we sommige ervan moesten afsnijden om ruimte te maken voor planken, konden we andere nog steeds hergebruiken en onze planken vastzetten. Dit was een leuke vakantie, en bespaar ons wat tijd.

Stap 2: dingen samenbrengen

Dingen samenbrengen
Dingen samenbrengen
Dingen samenbrengen
Dingen samenbrengen
Dingen samenbrengen
Dingen samenbrengen

Voor een eenvoudige proof-of-concept is het voldoende om Raspberry Pi en GSM HAT rechtstreeks aan te sluiten en een gewone hoofdtelefoon op GSM HAT aan te sluiten. Ik kon die setup gebruiken in combinatie met de MiniCom-applicatie (aansturende Raspberry Pi-seriële poort, die rechtstreeks is verbonden met GSM HAT) om snel te controleren of mijn simkaart werkt en dat ik met die setup kan bellen en sms-berichten kan verzenden/ontvangen.

Aangezien anderen misschien geïnteresseerd zijn om dat te doen (het is leuk om snel een nieuwe setup te testen), volgen hier de tips hoe dat te doen (uiteraard, gebaseerd op de aanname van dezelfde/soortgelijke borden):

- Installeer en configureer het besturingssysteem op Raspberry Pi (ik gebruikte de Lite OS-versie, die zonder GUI wordt geleverd).

- Sluit GSM HAT (met SIM-kaart geïnstalleerd) aan op Raspberry Pi (zorg ervoor dat GSM HAT de juiste UART-schakelaarselectie heeft op basis van verbindingstype, zie onderstaande link voor HAT-handleiding). Voor deze stap heb je misschien de Raspberry Pi-versie nodig waarop de header-connector al is geïnstalleerd, in ons geval moest ik hem solderen (aangezien ik Pi zero gebruikte, die standaard zonder header wordt geleverd). Als alternatief is het een betere optie om een micro-USB-kabel te gebruiken om beide kaarten aan te sluiten (zowel Raspberry Pi als GSM HAT hebben micro-USB)

- Schakel het gebruik van de Raspberry Pi-seriële poort in als de GSM HAT via de seriële poort wordt aangesloten (standaard wordt de Raspberry Pi-poort gebruikt voor de console). Om dat te doen, moet u de instructies volgen voor raspi-config (zie bovenstaande "configure"-link), interface-opties - SSH- en seriële opties inschakelen. Als u de Lite OS-versie gebruikt, moet u mogelijk ook "verbinden met draadloos netwerk" en SSH inschakelen (zie instructies van de bovenstaande "configure"-link).

- Sluit de Raspberry Pi aan op de monitor en het toetsenbord (of open deze via externe ssh)

- Gebruik MiniCom of een vergelijkbare seriële app om HAT handmatig te bedienen via de juiste poort (voor mijn setup-poort was "/dev/ttyS0", het zal anders zijn als micro-USB wordt gebruikt). Installeer MiniCom met "sudo apt-get install minicom", en eenmaal geïnstalleerd start u het met "minicom -D /devtyS0" (of welke poort dan ook wordt gebruikt).

- Gebruik de GSM HAT-handleiding of AT Command-handleiding om verschillende HAT-functies aan te sturen (sms verzenden, oproep plaatsen, enz.). Eenmaal correct aangesloten, zal GSM HAT antwoorden met "OK" wanneer gevraagd door "AT" commando. Om te controleren of de SIM-kaart correct is geregistreerd, gebruikt u het commando "AT+CREG?", dat ook "OK" moet retourneren. U kunt de netwerkprovider ook verifiëren met "AT+COPS?", of uw eigen telefoonnummer controleren met "AT+CNUM"

Om de rest van de benodigde onderdelen te integreren, hebben we een aangepaste 16-pins kabel voor Raspberry Pi naar GSM HAT gemaakt, omdat we een aantal andere algemene IO-pinnen nodig hadden om de draaiknop, de status van de headset-schakelaar te lezen en om de bel te laten rinkelen (ook om automatisch te starten GSM HAT tijdens opstarten / initialisatie). Ik probeerde voor dat doel een aantal kant-en-klare breakout-draden voor Raspberry Pi te gebruiken, en hoewel dat prima werkte voor snel aansluiten en testen, was ik niet erg blij met de kwaliteit en maakte ik uiteindelijk mijn eigen 16-pins connector.

Een andere manier om de verbinding tussen Raspberry Pi en GSM HAT tot stand te brengen is via de micro-USB-poorten van beide kaarten (en nogmaals, u moet de juiste UART-schakelaar op GSM HAT instellen), en dat kan een snellere en veel eenvoudigere oplossing zijn. U kunt dat gemakkelijk doen als u de juiste kabel aanschaft (dat zou u tijd en moeite besparen bij het maken van een kabel) - vergeet alleen niet de poort te wijzigen die door de software/toepassing wordt gebruikt.

Na het aansluiten van boards (met micro-USB), is de rest eenvoudig. Volg gewoon het bovenstaande diagram, waar de pinnen die daar worden gepresenteerd, zijn gekoppeld aan de code die aan het einde van deze instructable is bevestigd. specifiek:

- Pinnen 35, 37 en 39 (geassocieerd met Raspberry Pi GPIO 19, 26 en aarde) worden gebruikt om verbinding te maken met de wijzerplaat (invoerpinnen). De telefoon die we kozen, had al een connector met 3 draden gebouwd, waarbij rode en zwarte draad werden geassocieerd met NO- en NC-pinnen en gele draad gebruikelijk was.

- Pinnen 23 en 25 (Raspberry Pi GPIO 11 en aarde) worden gebruikt voor het aansluiten van de headset-schakelaar (invoer - detecteren wanneer de headset wordt opgetild of neergelaten)

- Pinnen 22 en 20 (Raspberry Pi GPIO 25 en aarde) worden gebruikt voor aansluiting op de geluidsmoduleschakelaar (uitgang - ringactie)

- Bovendien moet pin 19 (GPIO 10) mogelijk worden gesoldeerd aan de GSM HAT-stroomschakelaar, aangezien sommige versies van HAT niet kunnen worden gestart door alleen aan te zetten, maar dat iemand handmatig op de "aan/uit"-schakelaar op HAT moet drukken.

- Aan de telefoonzijde hebben we de 4-aderige kabel van de interne headset verwijderd en aangesloten op de 3,5 mm audio-aansluiting van de oude koptelefoon. Rood/groene draden zijn voor headset-microfoon en geel/zwart zijn voor headset-luidspreker. Afhankelijk van de gebruikte 3,5 mm jack-kant, moet je misschien de juiste draad vinden (volgens bovenstaande extract voor GSM HAT-hoofdtelefooningang), maar in ons geval was de microfoon aangesloten op schild en rood, terwijl luidsprekerdraden groen en blauw waren. Sluit ten slotte de 3,5 mm-aansluiting aan op de ingang van de GSM HAT-hoofdtelefoon.

Stap 3: Definitieve verpakking en gesimuleerd "beleffect" toevoegen

Eindverpakking en gesimuleerd toevoegen
Eindverpakking en gesimuleerd toevoegen

Hoewel de uiteindelijke interne verpakking, zoals te zien op bovenstaande foto, er relatief netjes uitziet, vergde het wel veel knutselen en verschillende opties uitproberen. De belangrijkste beperkingen waren de ruimte onder de draaiknop en stijve connectoren, en het hele proces was als puzzelen.

Het was heel gelukkig dat we verschillende berichten konden gebruiken die al in de telefoon bestonden (we hebben andere berichten verwijderd met de Dremel-tool) en om borden en luidsprekers te beveiligen. Maar dat beperkte ook de rest van de beschikbare ruimte, wat er uiteindelijk toe leidde dat we het oorspronkelijke idee om een interne oplaadbare stroombron toe te voegen, lieten varen.

Wat "ring" betreft, hebben we uiteindelijk een op batterijen werkende opneembare geluidsmodule gekocht. Als optie (bij het aansluiten van boards via micro-USB) is er een versie zonder batterij die rechtstreeks kan worden gevoed door Raspberry Pi-header 5V.

In beide gevallen moet de externe besturingsschakelaar van de geluidsmodule worden verwijderd en moeten de draden worden aangesloten op een van de GPIO-pin + aarde. En het programmeren van de beltoon in de module is heel eenvoudig, sluit hem gewoon aan op de pc en download het mp3-bestand dat u wilt gebruiken voor de belactie. Hier is de link naar een mooie site met veel oude belgeluiden.

Stap 4: Software en definitieve integratie

Software en definitieve integratie
Software en definitieve integratie
Software en definitieve integratie
Software en definitieve integratie

Bovenstaand blokschema geeft alle hoofdcomponenten en hun relaties weer. In wezen heeft de implementatie 3 discrete inputs nodig, en minstens 1 discrete output (we gebruikten 2 DO's sinds de versie van GSM HAT die we kregen, kan niet automatisch starten zonder op de HAT-knop te drukken, dus moesten we draad naar die knop solderen om te forceren het starten van de HAT wanneer de telefoon is ingeschakeld).

Wat de code betreft, deze is geschreven in Python 2.7, dus als u versie 3.x en hoger installeert/gebruikt, kunnen er enkele dingen zijn die moeten worden gewijzigd (deze is duidelijk de "print"-instructie). Om code goed te laten werken, zijn er een aantal Python-bibliotheken die eerst moeten worden toegevoegd, zoals:

- gpiozero (nodig voor Raspberry Pi GPIO-interface)

- re (bibliotheek met reguliere expressies - voor het ontleden van inkomende sms-berichten, installeer indien niet onderdeel van de standaard Python-installatie)

- serieel (voor verbinding met GSM HAT - nodig zelfs bij verbinding via micro-USB, installeren als dit geen onderdeel is van de standaard Python-installatie)

Ook zijn er 2 plaatsen in bijgevoegde code die moeten worden aangepast/aangepast afhankelijk van de uiteindelijke implementatie (of 3 plaatsen, als verschillende GPIO-pinnen worden gebruikt). De eerste is gerelateerd aan het nummer dat u zou willen gebruiken voor het doorsturen van berichten:

# ***********************************FORWARDING_NUMBER = "5551234567" # plaats hier de telefoon waar u uw berichten wilt hebben doorgestuurd worden

# ***********************************

En de tweede is voor het instellen van de seriële poort:

# ***********************************

# SIM868 initialisatie en rutinessim868 = serial. Serial("/dev/ttyS0", 115200)

# zorg ervoor dat /dev/ttyS0 geschikt is voor uw setup

# ***********************************

Code is gebouwd als een toestandsmachine, beschreven in het bovenstaande diagram. Meestal bevindt de telefoon zich in de status IDLE, wachtend op gebeurtenissen:1. Inkomende oproep (waardoor de telefoon naar de RING-status gaat)

2. Inkomend SMS-bericht - dat automatisch wordt/kan worden doorgestuurd naar een andere telefoon

3. Headset optillen, ter voorbereiding op uitbellen (zet de telefoon in DIAL-status)

4. Een speciaal teken kiezen zonder de headset op te nemen (volgens de huidige code, het kiezen van "#" uitgeschakelde telefoon) …

Er zijn veel opmerkingen ingebed in de code, die zouden moeten helpen bij het lezen en begrijpen ervan. We hebben sommige dingen niet afgemaakt, zoals het toevoegen van een snelkiesoptie of het verzenden van een statusbericht, of …

Wat betreft hoe code automatisch wordt uitgevoerd wanneer stroom wordt toegepast, hebben we ervoor gekozen om het als service te implementeren, wat kan worden gedaan zoals hier beschreven. Doe eenvoudig het volgende:

- download de bijgevoegde bestanden "rotaryPhoneStateMachine.txt" en "myphone.txt" en hernoem ze in "rotaryPhoneStateMachine.py" en "myphone.service" (om de een of andere vreemde reden staat de Instructables-server het uploaden van bepaalde bestandstypen niet toe)

- plaats "rotaryPhoneStateMachine.py" in de map /home/pi

- plaats "myphone.service" in /etc/systemd/system

- schakel de service in met het commando "sudo systemctl enable myphone.service" (na alles getest te hebben)

Aanbevolen: