Inhoudsopgave:

HackerBox 0058: Coderen: 7 stappen
HackerBox 0058: Coderen: 7 stappen

Video: HackerBox 0058: Coderen: 7 stappen

Video: HackerBox 0058: Coderen: 7 stappen
Video: Digital Certificate Mastery: Empowering IT Professionals 2024, Juli-
Anonim
HackerBox 0058: Coderen
HackerBox 0058: Coderen

Groeten HackerBox Hackers over de hele wereld! Met HackerBox 0058 verkennen we informatiecodering, streepjescodes, QR-codes, het programmeren van de Arduino Pro Micro, ingebouwde LCD-schermen, het integreren van het genereren van streepjescodes in Arduino-projecten, exploits van menselijke invoerapparaten en meer.

HackerBoxes is de maandelijkse abonnementsservice voor liefhebbers van elektronica en computertechnologie - Hardware Hackers - The Dreamers of Dreams.

Er is een schat aan informatie voor huidige en toekomstige leden in de HackerBoxes FAQ. Bijna alle niet-technische ondersteunings-e-mails die we ontvangen, worden daar al beantwoord, dus we stellen het zeer op prijs dat u een paar minuten de tijd neemt om de veelgestelde vragen te lezen.

Benodigdheden

Deze Instructable bevat informatie om aan de slag te gaan met HackerBox 0058. De volledige inhoud van de doos staat op de productpagina voor HackerBox 0058, waar de doos ook te koop is zolang de voorraad strekt. Als je elke maand automatisch zo'n HackerBox met een korting van $15 in je mailbox wilt ontvangen, kun je je abonneren op HackerBoxes.com en meedoen aan de revolutie!

Een soldeerbout, soldeer en basis soldeergereedschap zijn over het algemeen nodig om aan de maandelijkse HackerBox te werken. Een computer voor het uitvoeren van softwaretools is ook vereist. Bekijk de HackerBox Deluxe Starter Workshop voor een set basistools en een breed scala aan inleidende activiteiten en experimenten.

Het belangrijkste is dat je gevoel voor avontuur, hackergeest, geduld en nieuwsgierigheid nodig hebt. Het bouwen van en experimenteren met elektronica, hoewel zeer de moeite waard, kan soms lastig, uitdagend en zelfs frustrerend zijn. Het doel is vooruitgang, niet perfectie. Als je volhoudt en geniet van het avontuur, kan er veel voldoening uit deze hobby worden gehaald. Neem elke stap langzaam, let op de details en wees niet bang om hulp te vragen

Stap 1: Coderen:

codering
codering

Voor het communiceren, opnemen of manipuleren van informatie is codering vereist. Aangezien het verwerken, opslaan en communiceren van informatie de essentie is van moderne elektronica, hebben we veel zorgen over codering.

Als een heel eenvoudig voorbeeld van codering, zou men kunnen weergeven hoeveel ogen of oren ze hebben door twee vingers op te steken, of door de cijfers "2" of "][" te gebruiken of de woorden "twee" of "dos" of " te gebruiken. Er" of "zwei". Eigenlijk niet zo eenvoudig, toch? Codering die in menselijke taal wordt gebruikt, vooral met betrekking tot onderwerpen als emoties of abstractie, kan zeer complex worden.

NATUURKUNDE

Ja, alles begint altijd met natuurkunde. In elektronische systemen beginnen we met het weergeven van de eenvoudigste waarden door elektrische signalen, meestal spanningsniveaus. NUL kan bijvoorbeeld worden weergegeven als aarde (ongeveer 0V) en EEN als ongeveer 5V (of 3,3V, enz.) om een binair systeem van nullen en enen te vormen. Zelfs met slechts NUL en EEN, is er vaak onduidelijkheid om op te lossen. Als de knop wordt ingedrukt, is dat NUL of EEN? Hoog of laag? Is het chipselectiesignaal "actief hoog" of "actief laag"? Op welk tijdstip kan een signaal worden uitgelezen en hoe lang is het geldig? In communicatiesystemen wordt dit "lijncodering" genoemd.

Op dit laagste niveau gaan de representaties grotendeels over de fysica van het systeem. Welke spanningen kan het ondersteunen, hoe snel kan het overgaan, hoe wordt de laser in- en uitgeschakeld, hoe moduleren informatiesignalen een radiofrequentiedrager, wat is de bandbreedte van het kanaal, of zelfs hoe genereren ionenconcentraties actiepotentialen in een neuron. Voor elektronica staat deze informatie vaak in de imposante tabellen van de datasheet van de fabrikant.

De fysieke laag (PHY) of laag 1 is de eerste en laagste laag in het zevenlaagse OSI-model van computernetwerken. De fysieke laag definieert de middelen voor het verzenden van onbewerkte bits via een fysieke datalink die netwerkknooppunten verbindt. De fysieke laag biedt een elektrische, mechanische en procedurele interface naar het transmissiemedium. De vormen en eigenschappen van de elektrische connectoren, de frequenties waarop moet worden uitgezonden, de lijncode die moet worden gebruikt en vergelijkbare parameters op laag niveau, worden gespecificeerd door de fysieke laag.

NUMMERS

We kunnen niet veel doen met slechts EEN en NUL, anders zouden we zijn geëvolueerd om te "spreken" door met onze ogen naar elkaar te knipperen. Binaire waarden zijn echter een goed begin. In computer- en communicatiesystemen combineren we binaire cijfers (bits) tot bytes en "woorden" die bijvoorbeeld 8, 16, 32 of 64 bits bevatten.

Hoe komen deze binaire woorden overeen met getallen of waarden? In een eenvoudige 8-bits byte is 00000000 over het algemeen nul en 11111111 is over het algemeen 255 om 2-naar-de-8 of 256 verschillende waarden te bieden. Daar stopt het natuurlijk niet, want er zijn veel meer dan 256 getallen en niet alle getallen zijn positieve gehele getallen. Zelfs vóór computersystemen, vertegenwoordigden we numerieke waarden met behulp van verschillende getalsystemen, talen, basen en gebruikmakend van technieken zoals negatieve getallen, denkbeeldige getallen, wetenschappelijke notatie, wortels, verhoudingen en logaritmische schalen met verschillende basen. Voor numerieke waarden in computersystemen hebben we te maken met zaken als machine-epsilon, endianness, fixed-point en floating point-representaties.

TEKST(CETERA)

Naast getallen of waarden kunnen binaire bytes en woorden letters en andere tekstsymbolen vertegenwoordigen. De meest voorkomende vorm van tekstcodering is American Standard Code for Information Interchange (ASCII). Natuurlijk kunnen verschillende soorten informatie als tekst worden gecodeerd: een boek, deze webpagina, een xml-document.

In sommige gevallen, zoals e-mail- of Usenet-berichten, willen we misschien bredere informatietypes (zoals algemene binaire bestanden) als tekst coderen. Het proces van uuencoding is een veel voorkomende vorm van binair-naar-tekstcodering. U kunt afbeeldingen zelfs als tekst "coderen": ASCII Art of beter nog ANSI Art.

CODERING THEORIE

Codeertheorie is de studie van de eigenschappen van codes en hun respectievelijke geschiktheid voor specifieke toepassingen. Codes worden gebruikt voor datacompressie, cryptografie, foutdetectie en -correctie, datatransmissie en dataopslag. Codes worden door verschillende wetenschappelijke disciplines bestudeerd om efficiënte en betrouwbare datatransmissiemethoden te ontwerpen. Voorbeelden van disciplines zijn informatietheorie, elektrotechniek, wiskunde, taalkunde en informatica.

GEGEVENSCOMPRESSIE (redundantie verwijderen)

Gegevenscompressie, broncodering of verlaging van de bitsnelheid is het proces waarbij informatie wordt gecodeerd met minder bits dan de oorspronkelijke weergave. Elke bepaalde compressie is ofwel lossy of lossless. Lossless compressie vermindert bits door statistische redundantie te identificeren en te elimineren. Bij lossless compressie gaat geen informatie verloren. Compressie met verlies vermindert bits door onnodige of minder belangrijke informatie te verwijderen.

De Lempel-Ziv (LZ)-compressiemethoden behoren tot de meest populaire algoritmen voor verliesvrije opslag. Halverwege de jaren tachtig werd het Lempel-Ziv-Welch (LZW)-algoritme, na werk van Terry Welch, al snel de voorkeursmethode voor de meeste compressiesystemen voor algemeen gebruik. LZW wordt gebruikt in GIF-afbeeldingen, programma's zoals PKZIP en hardwareapparaten zoals modems.

We gebruiken voortdurend gecomprimeerde gegevens voor dvd's, streaming MPEG-video, MP3-audio, JPEG-afbeeldingen, ZIP-bestanden, gecomprimeerde tar-ballen, enzovoort.

FOUTDETECTIE EN CORRECTIE (toevoegen van nuttige redundantie)

Foutdetectie en -correctie of foutcontrole zijn technieken die een betrouwbare levering van digitale gegevens via onbetrouwbare communicatiekanalen mogelijk maken. Veel communicatiekanalen zijn onderhevig aan kanaalruis, en dus kunnen er fouten worden geïntroduceerd tijdens de transmissie van de bron naar een ontvanger. Foutdetectie is het detecteren van fouten veroorzaakt door ruis of andere stoornissen tijdens de transmissie van de zender naar de ontvanger. Foutcorrectie is het opsporen van fouten en het reconstrueren van de originele, foutloze gegevens.

Foutdetectie wordt het eenvoudigst uitgevoerd met behulp van herhalingsverzending, pariteitsbits, checksums of CRC's of hash-functies. Een fout in de verzending kan worden gedetecteerd (maar meestal niet gecorrigeerd) door de ontvanger, die vervolgens kan verzoeken om de gegevens opnieuw te verzenden.

Foutcorrectiecodes (ECC) worden gebruikt voor het controleren van fouten in gegevens via onbetrouwbare of luidruchtige communicatiekanalen. Het centrale idee is dat de afzender het bericht codeert met redundante informatie in de vorm van een ECC. De redundantie stelt de ontvanger in staat om een beperkt aantal fouten te detecteren die overal in het bericht kunnen voorkomen, en vaak om deze fouten te corrigeren zonder opnieuw te verzenden. Een simplistisch voorbeeld van ECC is om elke databit 3 keer te verzenden, wat bekend staat als een (3, 1) herhalingscode. Hoewel alleen 0, 0, 0 of 1, 1, 1 worden verzonden, kunnen fouten binnen het ruiskanaal elk van de acht mogelijke waarden (drie bits) aan de ontvanger presenteren. Hierdoor kan een fout in een van de drie steekproeven worden gecorrigeerd door "meerderheidsstemming" of "democratische stemming". Het corrigerende vermogen van deze ECC is dus het corrigeren van 1 foutbit in elk verzonden triplet. Hoewel eenvoudig te implementeren en veel gebruikt, is deze drievoudige modulaire redundantie een relatief inefficiënte ECC. Betere ECC-codes onderzoeken doorgaans de laatste tientallen of zelfs de laatste honderden eerder ontvangen bits om te bepalen hoe het huidige handjevol bits moet worden gedecodeerd.

Bijna alle tweedimensionale streepjescodes, zoals QR-codes, PDF-417, MaxiCode, Datamatrix en Aztec Code, gebruiken Reed-Solomon ECC om correct te kunnen lezen, zelfs als een deel van de streepjescode is beschadigd.

CRYPTOGRAFIE

Cryptografische codering is ontworpen rond aannames van rekenhardheid. Dergelijke coderingsalgoritmen zijn opzettelijk moeilijk te doorbreken (in praktische zin) door een tegenstander. Het is theoretisch mogelijk om zo'n systeem te doorbreken, maar het is onhaalbaar om dit te doen met bekende praktische middelen. Deze schema's worden daarom computationeel veilig genoemd. Er bestaan informatietheoretisch veilige schema's die aantoonbaar niet kunnen worden verbroken, zelfs niet met onbeperkte rekenkracht, zoals de one-time pad, maar deze schema's zijn in de praktijk moeilijker te gebruiken dan de beste theoretisch breekbare maar rekenkundig veilige mechanismen.

Traditionele coderingscodering is gebaseerd op een transpositiecodering, die de volgorde van letters in een bericht herschikt (bijv. 'hallo wereld' wordt 'ehlol owrdl' in een triviaal eenvoudig herschikkingsschema), en substitutiecijfers, die systematisch letters of groepen van letters door andere letters of groepen letters (bijv. 'vlieg tegelijk' wordt 'gmz bu podf' door elke letter te vervangen door de letter die erop volgt in het Latijnse alfabet). Eenvoudige versies van beide hebben nooit veel vertrouwelijkheid geboden aan ondernemende tegenstanders. Een vroeg substitutiecijfer was het Caesarcijfer, waarbij elke letter in de leesbare tekst werd vervangen door een letter op een vast aantal posities verderop in het alfabet. ROT13 is a is een eenvoudig lettervervangingscijfer dat een letter vervangt door de 13e letter erachter, in het alfabet. Het is een speciaal geval van het Caesarcijfer. Probeer het hier!

Stap 2: QR-codes

QR-codes
QR-codes

QR-codes (wikipedia) of "Quick Response Codes" zijn een soort matrix of tweedimensionale streepjescode die voor het eerst werd ontworpen in 1994 voor de auto-industrie in Japan. Een streepjescode is een machineleesbaar optisch label dat informatie bevat over het item waaraan het is bevestigd. In de praktijk bevatten QR-codes vaak gegevens voor een locator, identifier of tracker die naar een website of applicatie verwijst. Een QR-code gebruikt vier gestandaardiseerde coderingsmodi (numeriek, alfanumeriek, byte/binair en kanji) om gegevens efficiënt op te slaan.

Het Quick Response-systeem werd populair buiten de auto-industrie vanwege de snelle leesbaarheid en grotere opslagcapaciteit in vergelijking met standaard UPC-barcodes. Toepassingen zijn onder meer producttracering, artikelidentificatie, tijdregistratie, documentbeheer en algemene marketing. Een QR-code bestaat uit zwarte vierkanten die zijn gerangschikt in een vierkant raster op een witte achtergrond, die kunnen worden gelezen door een beeldapparaat zoals een camera en verwerkt met behulp van Reed-Solomon-foutcorrectie totdat de afbeelding op de juiste manier kan worden geïnterpreteerd. De vereiste gegevens worden vervolgens geëxtraheerd uit patronen die aanwezig zijn in zowel horizontale als verticale componenten van het beeld.

Moderne smartphones lezen meestal automatisch QR-codes (en andere barcodes). Open gewoon de camera-app, richt de camera op de streepjescode en wacht een seconde of twee totdat de camera-app aangeeft dat deze op de streepjescode is vergrendeld. De app geeft soms de inhoud van de barcone direct weer, maar meestal vereist de app de selectie van de streepjescodemelding om de informatie weer te geven die uit de streepjescode is gehaald. Tijdens de maand juni 2011 hebben 14 miljoen Amerikaanse mobiele gebruikers een QR-code of een streepjescode gescand.

Heb je je smartphone gebruikt om de berichten te lezen die aan de buitenkant van HackerBox 0058 zijn gecodeerd?

Interessante video: Kun je een heel spel in een QR-code passen?

Oldtimers herinneren zich misschien de Cauzin Softstrip uit computertijdschriften uit de jaren 80. (videodemo)

Stap 3: Arduino Pro Micro 3.3V 8MHz

Arduino Pro Micro 3.3V 8MHz
Arduino Pro Micro 3.3V 8MHz

De Arduino Pro Micro is gebaseerd op de ATmega32U4-microcontroller die een ingebouwde USB-interface heeft. Dit betekent dat er geen FTDI, PL2303, CH340 of een andere chip is die als tussenpersoon fungeert tussen uw computer en de Arduino-microcontroller.

We raden aan om de Pro Micro eerst te testen zonder de pinnen op hun plaats te solderen. U kunt de basisconfiguratie en testen uitvoeren zonder de header-pinnen te gebruiken. Ook geeft het uitstellen van het solderen aan de module een minder variabele om te debuggen als u complicaties tegenkomt.

Als je de Arduino IDE niet op je computer hebt geïnstalleerd, begin dan met het downloaden van het IDE-formulier arduino.cc. WAARSCHUWING: Zorg ervoor dat u de 3.3V-versie selecteert onder tools > processor voordat u de Pro Micro programmeert. Als dit is ingesteld op 5V, werkt het één keer en dan lijkt het apparaat nooit verbinding te maken met uw pc totdat u de instructies voor "Reset to Bootloader" in de hieronder besproken gids volgt, wat een beetje lastig kan zijn.

Sparkfun heeft een geweldige Pro Micro Hookup Guide. De Hookup Guide heeft een gedetailleerd overzicht van het Pro Micro-bord en vervolgens een sectie voor "Installeren: Windows" en een sectie voor "Installeren: Mac & Linux". Volg de aanwijzingen in de juiste versie van die installatie-instructies om uw Arduino IDE te configureren om de Pro Micro te ondersteunen. Meestal gaan we aan de slag met een Arduino-bord door de standaard Blink-schets te laden en/of aan te passen. De Pro Micro heeft echter niet de gebruikelijke LED op pin 13. Gelukkig kunnen we de RX/TX LED's aansturen. Sparkfun heeft een leuke kleine schets gemaakt om te laten zien hoe. Dit staat in het gedeelte van de Hookup Guide getiteld "Voorbeeld 1: Blinkies!" Controleer of je deze Blinkies! bijvoorbeeld op de Pro Micro voordat u verder gaat.

Zodra alles lijkt te werken om de Pro Micro te programmeren, is het tijd om de header-pinnen voorzichtig op de module te solderen. Test het bord na het solderen opnieuw zorgvuldig uit.

Ter info: dankzij de geïntegreerde USB-transceiver kan de Pro Micro eenvoudig worden gebruikt om een human interface-apparaat (HID) zoals een toetsenbord of muis te emuleren, en te spelen met toetsaanslaginjectie.

Stap 4: QR-codes op LCD-kleurenscherm

QR-codes op LCD-kleurenscherm
QR-codes op LCD-kleurenscherm

Het LCD-scherm heeft 128 x 160 Full Color Pixels en heeft een diagonaal van 1,8 inch. De ST7735S Driver Chip (datasheet) kan worden aangesloten vanaf bijna elke microcontroller met behulp van een Serial Peripheral Interface (SPI)-bus. De interface is gespecificeerd voor 3.3V signalering en voeding.

De LCD-module kan rechtstreeks op de 3.3V Pro Micro worden aangesloten met behulp van 7 FF-jumpers:

LCD ---- Pro Micro

GND ---- GND VCC ---- VCC SCL ----15 SDA ----16 RES ----9 DC -----8 CS -----10 BL ----- Geen verbinding

Met deze specifieke pintoewijzing kunnen de bibliotheekvoorbeelden standaard werken.

De bibliotheek genaamd "Adafruit ST7735 en ST7789" is te vinden in de Arduino IDE via menu Extra > Bibliotheken beheren. Tijdens de installatie zal de bibliotheekbeheerder enkele afhankelijke bibliotheken voorstellen die bij die bibliotheek horen. Laat het deze ook installeren.

Zodra die bibliotheek is geïnstalleerd, opent u Bestanden > Voorbeelden > Adafruit ST7735 en ST7789 Bibliotheek > graphicstest

Compileren en uploaden graphicstest. Het genereert een grafische demo op het LCD-scherm, maar met enkele rijen en kolommen met "lawaaierige pixels" aan de rand van het scherm.

Deze "lawaaierige pixels" kunnen worden verholpen door de TFT-init-functie die bovenaan de setup (void)-functie wordt gebruikt, te wijzigen.

Geef commentaar op de regel code:

tft.initR(INITR_BLACKTAB);

En uncomment de regel een paar regels naar beneden:

tft.initR(INITR_GREENTAB);

Herprogrammeer de demo en alles zou er goed uit moeten zien.

Nu kunnen we het LCD-scherm gebruiken om QR-codes weer te geven

Terug naar het Arduino IDE-menu Extra > Bibliotheken beheren.

Zoek en installeer de bibliotheek QRCode.

Download de QR_TFT.ino-schets die hier is bijgevoegd.

Compileer en programmeer QR_TFT in de ProMicro en kijk of u de camera-app van uw telefoon kunt gebruiken om de gegenereerde QR-code op het LCD-scherm te lezen.

Sommige projecten die QR-codegeneratie gebruiken voor inspiratie

Toegangscontrole

QR-klok

Stap 5: Flexibele platte kabel

Flexibele platte kabel
Flexibele platte kabel

Een flexibele platte kabel (FFC) is elke elektrische kabel die zowel plat als flexibel is, met platte massieve geleiders. Een FFC is een kabel gevormd uit, of vergelijkbaar met, een Flexible Printed Circuit (FPC). De termen FPC en FFC worden soms door elkaar gebruikt. Deze termen verwijzen over het algemeen naar een extreem dunne platte kabel die vaak wordt aangetroffen in elektronische toepassingen met een hoge dichtheid, zoals laptops en mobiele telefoons. Ze zijn een geminiaturiseerde vorm van lintkabel die meestal bestaat uit een platte en flexibele plastic filmbasis, met meerdere platte metalen geleiders die aan één oppervlak zijn gebonden.

FFC's zijn er in verschillende pin-afstanden, waarbij 1,0 mm en 0,5 mm twee veelvoorkomende opties zijn. Het meegeleverde FPC-breakoutboard heeft sporen voor beide pitches, één aan elke kant van de PCB. Afhankelijk van de gewenste steek wordt slechts één zijde van de printplaat gebruikt, in dit geval 0,5 mm. Zorg ervoor dat u de nummering van de headerpin gebruikt die op dezelfde 0,5 mm-zijde van de printplaat is afgedrukt. De pinnummering op de 1.0 mm zijde komt niet overeen en wordt voor een andere toepassing gebruikt.

De FFC-connectoren op zowel de breakout als de barcodescanner zijn ZIF-connectoren (zero insertion force). Dit betekent dat de ZIF-connectoren een mechanische schuif hebben die open scharniert voordat de FFC wordt ingebracht en vervolgens scharnierend wordt gesloten om de connector op de FFC vast te zetten zonder kracht op de kabel zelf te zetten en in te brengen. Twee belangrijke dingen om op te merken over deze ZIF-connectoren:

1. Ze zijn beide "bottom contact", wat betekent dat de metalen contacten op de FFC naar beneden (naar de PCB) moeten wijzen wanneer ze worden geplaatst.

2. De scharnierende schuif op de breakout bevindt zich aan de voorkant van de connector. Dit betekent dat de FFC onder/door de scharnierende schuif gaat. De scharnierende schuifregelaar op de barcodescanner bevindt zich daarentegen aan de achterkant van de connector. Dit betekent dat de FFC de ZIF-connector vanaf de andere kant binnenkomt en niet via de scharnierende schuifregelaar.

Houd er rekening mee dat andere typen FFC/FPC ZIF-connectoren laterale schuifregelaars hebben in tegenstelling tot de scharnierende schuifregelaars die we hier hebben. In plaats van op en neer te scharnieren, glijden zijschuiven in en uit binnen het vlak van de connector. Kijk altijd goed voordat u een nieuw type ZIF-connector gebruikt. Ze zijn vrij klein en kunnen gemakkelijk worden beschadigd als ze buiten hun beoogde bereik of bewegingsvlak worden gedwongen.

Stap 6: Barcodescanner

Streepjescodescanner
Streepjescodescanner

Zodra de barcodescanner en FPC-breakout zijn verbonden door de flexibele platte kabel (FFC), kunnen vijf vrouwelijke jumperdraden worden gebruikt om de breakout-PCB aan te sluiten op de Arduino Pro Micro:

FPC ---- Pro Micro

3------GND 2------VCC 12-----7 4------8 5------9

Eenmaal verbonden, programmeert u de schetsbarscandemo.ino in de Pro Micro, opent u de seriële monitor en scant u alle dingen! Het kan verrassend zijn hoeveel objecten in onze huizen en kantoren barcodes hebben. Misschien ken je zelfs iemand met een barcode-tatoeage.

De bijgevoegde handleiding voor de streepjescodescanner bevat codes die kunnen worden gescand om de in de scanner ingebouwde processor te configureren.

Stap 7: Hack de planeet

Hack de planeet
Hack de planeet

We hopen dat je geniet van het HackerBox-avontuur van deze maand op het gebied van elektronica en computertechnologie. Reik uit en deel uw succes in de opmerkingen hieronder of op andere sociale media. Onthoud ook dat je [email protected] op elk moment kunt e-mailen als je een vraag hebt of hulp nodig hebt.

Wat is het volgende? Doe mee met de revolutie. Leef het HackLife. Ontvang elke maand een koelbox met hackbare uitrusting rechtstreeks in je mailbox. Surf naar HackerBoxes.com en meld u aan voor uw maandelijkse HackerBox-abonnement.

Aanbevolen: