Arduino gebaseerde Blue Box (telefoon Phreaking) (3 / 9 stap)

Stap 3: Code voor schematische 1

Programmering

De code voor dit nieuwe schema in zijn geheel kan worden gevonden hier op mijn pastebin.com profiel. Omwille van deze tutorial gaan we de meeste van de belangrijkste concepten van de syntaxis die ik heb gebruikt. Allereerst de Arduino gebruikt een programmeertaal die object-georiënteerde is; C++. Deze taal is vrij krachtig en bevoegdheden van een heleboel hedendaagse website logica, micro-controllers en nog veel meer!

Toetsenblok

Eerst maken we een twee dimensionale matrix van gehele getallen die wij gebruiken voor het houden van de frequenties zoals aangegeven per cijfer door de Blue Box van de Wikipedia-pagina. We stellen ook een duur als een matrix typedef geheel getal zonder voorteken. Deze gehele getallen zijn afspelen duur perioden.

 int bb[16][2] = { // MF 0,1,2,3,4,5,6,7,8,9,kp,st,2400+2600,kp2,st2,ss4 super<br> {1300,1500},{700,900},{700,1100}, // 0,1,2 {900,1100},{700,1300},{900,1300}, // 3,4,5 {1100,1300},{700,1500},{900,1500}, // 6,7,8 {1100,1500},{1100,1700},{1500,1700}, // 9,kp,st {2600,2400},{1300,1700},{900,1700}, // 2400+2600,kp2,st2 {2400,2040}, // ss4 Supervisory }; <p>uint8_t bbdur[2] = {60,100};</p> 

Vervolgens maken we een matrix matrix van sleutels als tekens. Deze tekens zal worden gebruikt telkens wanneer die een knop op het toetsenbord wordt ingedrukt. We stellen ook de rijen en pinnen integer matrices.

 char keys[4][4] = {<br> {'1','2','3','a'}, {'4','5','6','b'}, {'7','8','9','c'}, {'#','0','*','d'} }; <p>byte rowPins[4] = {5,4,3,2}; //connect to the row pinouts of the keypad<br>byte colPins[4] = {9,8,7,6}; //connect to the column pinouts of the keypad</p> 

Vervolgens maken we een toetsenbord-object en een eenvoudige matrix van Toon objecten. Aangezien wij tegelijk tonen uit twee pinnen spelen, maakt dit enkel ons leven eenvoudiger wanneer schrijven en debuggen van de code.

 Tone freq[2]; // array of Tone objects, now we can play as freq[0].play(); etc<br>Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,4,4); 

Knoppen lezen en afspelen van tonen

In de Setup -functie moeten we de freq [0] en freq [1] pennen voor uitvoer ingesteld. Dit is eenvoudig. Wij ook stelt de "pin modus" voor de 2600-knop en een gebeurtenislistener, die is een procButton() knop verwerking aangepaste functie-aanroep. Dit is event-driven programmeren. Dit betekent in feite dat we "Luister" voor de toetsen ingedrukt worden, die zou een "gebeurtenis". De belangrijkste loop -functie is wat behandelt de gebeurtenissen en de listeners voor ons.

 freq[0].begin(11); // Initialize our first tone generator<br>freq[1].begin(12); // Initialize our second tone generator pinMode(10, INPUT); // 2600 button keypad.addEventListener(procButton); 

We hebben onze belangrijkste loop methode eenvoudig gehouden, dat is goed omdat het voortdurend wordt aangeroepen. De eerste regel,

 char button = keypad.getKey(); 

eigenlijk roept de methode van de getKey() van het toetsenbord-object om te zien of en welke toets werd ingedrukt. De code,

 if(digitalRead(10)==HIGH){ // play 2600Hz if top button pressed<br> super(); // supervisory signalling } 

gewoon luistert voor spanning op pin 10 en indien gevonden, speelt de 2600 hz frequentie door te bellen naar de aangepaste toezichthoudende super() signaalfunctie. Dit is de allereerste functie gedefinieerd net onder de loop -functie. Het is ook de eerste aan te roepen van de aangepaste enkele frequentie spelen sf() functie als, functie

 sf(2600,750); 

De argumenten die we aan deze functie doorgeeft zijn de frequentie worden gespeeld, en de duur. Na lexicaal toewijzen van de frequentie en duur aan geheelvariabelen van dezelfde namen, de aangepaste sf() -functie alleen een methode wordt aangeroepen enkel spelen op een enkele pin als,

 freq[0].play(frequency,duration); 

Dit is onze eerste blik op de Toon synthese play methode van de Tone library. Dus, als u zich spelen twee tonen, voorstellen kunt voor multi-frequency zou lijken, maar met twee pinnen, zoals

 freq[0].play(frequency,duration);<br>freq[0].play(frequency,duration); 

En dat is precies wat de aangepaste multi-frequency spelen mf() functie heeft.

Dus hoe verwerken we elke toetsaanslag in de procButton() functie? Met behulp van een geval-schakel-logica. De constanten "RELEASED," "PRESSED," en "houden," (niet "HELD" om wat vreemde reden), zijn onderdeel van de bibliotheek van het toetsenblok en we kunnen gebruiken het in een geval-schakel-logica blok als,

 switch (keypad.getState()){<br>case RELEASED: // drop right away // do some stuff break; case PRESSED: // momentary // do some stuff break; case HOLD: // HELD (special functions) // do some stuff break; } 

En dat is precies wat we doen. Aangezien de procButton() -functie een gebeurtenis-handler aangeroepen door de loop -functie is, krijgen we een keypadevent-object doorgegeven aan de handler procButton(). Dit object kan worden behandeld als een eenvoudige teken - en we doen dat door eenvoudig het gehele getal 48 hieruit te verkrijgen welke toets werd ingedrukt uit 0-9 af te trekken.

 void procButton(KeypadEvent b){<br> b -= 48; 

Nu we weten welke toets werd ingedrukt en doorgeven aan de functie mf() die gebruik maakt van de multidimensionale array bb [] in te stellen die we eerder te spelen de mf tonen. Je misschien hebt gemerkt dat de KP (*) en de ST (#) niet 0-9 zijn. Dat is juist, als ze via komen en na het aftrekken zijn respectievelijk-13 en -6. De mf() functie vervolgens behandelt deze als,

 }else if(digit==-13){<br> digit = 12; // * }else if(digit==-6){ digit = 14; // # 

Dan speelt de tonen zoals ze zijn toegewezen in de multi-dimensionale array van bb [] .

We hebben nu bedekt alle van de belangrijkste concepten programmatisch met dit schema (1), laten we gaan naar het tweede schema en hoe we de WAV-bestanden die een volledig ander geluid aan onze blauwe dozen bieden kunt spelen.

Extra functies

Deze code voorziet in een enorme hoeveelheid extra eigenschappen met inbegrip van opname van de cijfers in en matrix afspelen, en verschillende bewerkingsmodi. De code is zeer ongecompliceerd Arduino C++-code. Druk lang op 'A' doorlopen van de verschillende modi. Telkens wanneer we gewijzigd modi die de notifyMode() functie zal pulse uit een code van 440 hz piept te laten weten welke modus die we momenteel gebruiken. Alle modi worden volledig beschreven op mijn weblog hier of op de Wikipedia-pagina voor de specificaties van de blauwe doos.

Gerelateerde Artikelen

ProjectMF installatie (telefoon Phreaking)

ProjectMF installatie (telefoon Phreaking)

IntroductieEen anonieme vriend in een IRC-kanaal terug in 2006 gaf mij de mp3 van de verbazingwekkende ProjectMF hoop presentatie gegeven door Mark Abene (Phiber Optik). Ik heb sindsdien gefascineerd door het project, maar ontbrak de technische kenni
Arduino 12-modus Blue Box - introductie

Arduino 12-modus Blue Box - introductie

FIRMWARE-UPDATE!! -10/2/2015 - zie laatste stap voor meer informatieHier gepresenteerd is een Arduino-based "Blue Box". Het produceert de "traditionele" blauwe doos 2600 Hz Toon en MF (Multi-Frequency) tonen, maar doet nog veel meer! H
Maak kennis met Climaduino - de Arduino gebaseerde thermostaat die u van uw telefoon controleren!

Maak kennis met Climaduino - de Arduino gebaseerde thermostaat die u van uw telefoon controleren!

Update:Er is een nieuwe versie van de Climaduino en de Climaduino Controller met enkele zeer belangrijke wijzigingen.Ondersteunt meerdere zonesDe Yún van de Arduino gebruiktWerken met centrale airconditioningCommuniceert met het MQTT -protocol (kunt
Draadloze BT stopcontact (Arduino gebaseerd) + Android App

Draadloze BT stopcontact (Arduino gebaseerd) + Android App

Dit apparaat zal toestaan u om een elektrisch apparaat van uw Android smartphone (of tablet) te controleren.Een Bluetooth-module voor draadloze communicatie wordt gebruikt om te controleren de schakelaar ingebouwd relais.Het circuit gebruikt de ATmeg
Sla voor Life - 101 Arduino gebaseerd geautomatiseerd Controller voor Aeroponics, Aquaponics, hydrocultuur, enz.  Intel Curie

Sla voor Life - 101 Arduino gebaseerd geautomatiseerd Controller voor Aeroponics, Aquaponics, hydrocultuur, enz. Intel Curie

SAMENVATTINGEen apparaat dat kan worden gebruikt voor het besturen van tot 4 verschillende Hydroponic/Aeroponic systemen tegelijk. Het apparaat zal bepalen van de componenten van het systeem en zal melding naar een LCD-scherm weergegeven en kan de ge
Arduino gebaseerde Smart Home IOT systeem

Arduino gebaseerde Smart Home IOT systeem

Hallo, ik ben Michalis Vasilakis uit Ardumotive.com en in deze handleiding Instructables zal ik u tonen hoe kunt u gemakkelijk maken uw eigen smart home systeem op basis van Arduino uno en een Ethernet-module (of schild).U zal zitten kundig voor gebr
Arduino gebaseerde afstand maatregel vak

Arduino gebaseerde afstand maatregel vak

Hallo, in dit project zal ik u tonen hoe te bouwen uw eigen doos meter afstand met Arduino uno en een ultrasone sensor.Voordat u begint, zorg ervoor dat u hebt:Arduino unoHC-SR04 ultrasone SensorLCD 16 x 2Officiële website: http://www.ardumotive.com/
ARDUINO gebaseerde MPPT SOLAR CHARGE CONTROLLER

ARDUINO gebaseerde MPPT SOLAR CHARGE CONTROLLER

ARDUINO GEBASEERDE MPPT SOLAR CHARGE CONTROLLERGa naar mijn Website voor schema en code ARDUINO gebaseerde MPPT SOLAR CHARGE CONTROLLERWat is Mppt (Maximum power point bijhouden)?"we gebruiken MPPT algoritme om de maximum beschikbare energie van de f
Hoe maak je een Arduino gebaseerde nacht licht met infrarood afstandsbediening!

Hoe maak je een Arduino gebaseerde nacht licht met infrarood afstandsbediening!

Hier is een Instructable die u hoe tonen zal te bouwen van een licht met een Arduino gebaseerd-nachteen kleine infrarood afstandsbediening waarmee u doorlopen 10 pre set kleuren, en een willekeurige fadingkleur routine die voor eeuwig lussen.Dit inst
Arduino gebaseerd Encrypter

Arduino gebaseerd Encrypter

We willen allemaal dat cool Arduino project, dat is niet echt over de harware, maar meer over de software te maken. Nou is hier een - Arduino gebaseerde codering Over seriële Monitor. Het was echt leuk om te ontwerpen. Kan er talloze toepassingen van
Arduino gebaseerd Lap Timer

Arduino gebaseerd Lap Timer

Onlangs kregen we greep van een "Crazy Cart", een ernstig koele winkelwagen race rond met. Zoals we alleen een hebben, wilde ik iets te maken het rijden een beetje concurrerender, zodat ik het opbouwen van een Arduino gebaseerd Lap Timer.De Lap
InPace - een Arduino gebaseerde GPS gegevens vastleggen van fitness armband met bluetooth en een iOS-app

InPace - een Arduino gebaseerde GPS gegevens vastleggen van fitness armband met bluetooth en een iOS-app

InPace is een Arduino gebaseerde fitness armband, met een begeleidende iOS applicatie, die live kan feedback over hoe de gebruiker pacing zelf tijdens een run, lopen of fietsen route. Zij sporen GPS-locaties en huidige tijden de huidige prestaties va
DIY Smart Volg mij Drone met Camera (Arduino gebaseerd)

DIY Smart Volg mij Drone met Camera (Arduino gebaseerd)

Drones zijn zeer populair speelgoed en hulpprogramma's deze dagen. U vindt professionele en zelfs beginner drones en vliegende gadgets op de markt. Ik heb vier drones (quadcopters en hexcopters), omdat ik hou van alles wat vliegt, maar de 200e vlucht
Arduino gebaseerd Bi-color LED Matrix Audio Spectrum Visualizer

Arduino gebaseerd Bi-color LED Matrix Audio Spectrum Visualizer

Nadat we met de Bi-color LED Matrix Driver Module kit kwamen, we hebben ons gebogen rond voor interessante projecten te werken.Bent u wellicht geïnteresseerd in een aantal van de projecten die we hebben opgemaakt op instructables met behulp van deze