All Projects → ricmoo → Qrcode

ricmoo / Qrcode

Licence: other
QR code generation library in C, optimized for low-power devices, such as Arduino.

Projects that are alternatives of or similar to Qrcode

Espui
A simple web user interface library for ESP32 and ESP8266
Stars: ✭ 330 (-5.98%)
Mutual labels:  arduino, arduino-library
Md parola
Library for modular scrolling LED matrix text displays
Stars: ✭ 282 (-19.66%)
Mutual labels:  arduino, arduino-library
QR Attendance
This project is an attendance system which provides attendance on scanning QR code. The attendance is stored in Excel sheet named with the date of attendance taken. In this folder a file named Generate.py is used to generate the QR code for given input file. Attend.py file is for scanning the QR code
Stars: ✭ 17 (-95.16%)
Mutual labels:  qrcode, qr-code
Rf24mesh
OSI Layer 7 Mesh Networking for RF24Network & nrf24L01+ devices
Stars: ✭ 329 (-6.27%)
Mutual labels:  arduino, arduino-library
Ds3232rtc
Arduino Library for Maxim Integrated DS3232 and DS3231 Real-Time Clocks
Stars: ✭ 320 (-8.83%)
Mutual labels:  arduino, arduino-library
QrCodeGenerator
QR Code Generator for .NET
Stars: ✭ 66 (-81.2%)
Mutual labels:  qrcode, qr-code
ZATCA
An unofficial package maintained by Salla to help developers to implement ZATCA (Fatoora) QR code easily which required for e-invoicing
Stars: ✭ 77 (-78.06%)
Mutual labels:  qrcode, qr-code
vk-qr
VK QR Code generator library
Stars: ✭ 43 (-87.75%)
Mutual labels:  qrcode, qr-code
Xbee Arduino
Arduino library for communicating with XBee radios in API mode
Stars: ✭ 294 (-16.24%)
Mutual labels:  arduino, arduino-library
Jc button
Arduino library to debounce button switches, detect presses, releases, and long presses
Stars: ✭ 289 (-17.66%)
Mutual labels:  arduino, arduino-library
quagga2-reader-qr
Quagga2 sample external reader for QR codes
Stars: ✭ 20 (-94.3%)
Mutual labels:  qrcode, qr-code
Ssd1306
Driver for SSD1306, SSD1331, SSD1351, IL9163, ILI9341, ST7735, PCD8544, Nokia 5110 displays running on Arduino/ESP32/Linux (Rasperry) platforms
Stars: ✭ 303 (-13.68%)
Mutual labels:  arduino, arduino-library
python
Build Python extension with Dynamsoft Barcode Reader.
Stars: ✭ 35 (-90.03%)
Mutual labels:  qrcode, qr-code
qrcode
A flutter plugin for scanning QR codes. Use AVCaptureSession in iOS and zxing in Android.
Stars: ✭ 69 (-80.34%)
Mutual labels:  qrcode, qr-code
nova-qrcode-field
A Laravel Nova field to generate QR Code
Stars: ✭ 28 (-92.02%)
Mutual labels:  qrcode, qr-code
covidpass
Scan your vaccination, test and recovery certificates in QR code representation and save them to your Apple Wallet
Stars: ✭ 137 (-60.97%)
Mutual labels:  qrcode, qr-code
WeChatQRCode
⛄ 基于OpenCV开源的微信二维码引擎移植的Android扫码识别库
Stars: ✭ 250 (-28.77%)
Mutual labels:  qrcode, qr-code
paper-store
Cold store small files on paper as QR codes -- PGP keys, Bitcoin keys, Tox keys or any other small files in general.
Stars: ✭ 28 (-92.02%)
Mutual labels:  qrcode, qr-code
Rf24network
OSI Layer 3 Networking for nRF24L01(+) Radios on Arduino and Raspberry Pi
Stars: ✭ 278 (-20.8%)
Mutual labels:  arduino, arduino-library
Adafruit Pwm Servo Driver Library
Adafruit PWM Servo Driver Library
Stars: ✭ 300 (-14.53%)
Mutual labels:  arduino, arduino-library

QRCode

A simple library for generating QR codes in C, optimized for processing and memory constrained systems.

Features:

  • Stack-based (no heap necessary; but you can use heap if you want)
  • Low-memory foot print (relatively)
  • Compile-time stripping of unecessary logic and constants
  • MIT License; do with this as you please

Installing

To install this library, download and save it to your Arduino libraries directory.

Rename the directory to QRCode (if downloaded from GitHub, the filename may be qrcode-master; library names may not contain the hyphen, so it must be renamed)

API

Generate a QR Code

// The structure to manage the QR code
QRCode qrcode;

// Allocate a chunk of memory to store the QR code
uint8_t qrcodeBytes[qrcode_getBufferSize()];

qrcode_initText(&qrcode, qrcodeBytes, 3, ECC_LOW, "HELLO WORLD");

Draw a QR Code

How a QR code is used will vary greatly from project to project. For example:

  • Display on an OLED screen (128x64 nicely supports 2 side-by-side version 3 QR codes)
  • Print as a bitmap on a thermal printer
  • Store as a BMP (or with a some extra work, possibly a PNG) on an SD card

The following example prints a QR code to the Serial Monitor (it likely will not be scannable, but is just for demonstration purposes).

for (uint8 y = 0; y < qrcode.size; y++) {
    for (uint8 x = 0; x < qrcode.size; x++) {
        if (qrcode_getModule(&qrcode, x, y) {
            Serial.print("**");
        } else {
            Serial.print("  ");
        }
    }
    Serial.print("\n");
}

What is Version, Error Correction and Mode?

A QR code is composed of many little squares, called modules, which represent encoded data, with additional error correction (allowing partially damaged QR codes to still be read).

The version of a QR code is a number between 1 and 40 (inclusive), which indicates the size of the QR code. The width and height of a QR code are always equal (it is square) and are equal to 4 * version + 17.

The level of error correction is a number between 0 and 3 (inclusive), or can be one of the symbolic names ECC_LOW, ECC_MEDIUM, ECC_QUARTILE and ECC_HIGH. Higher levels of error correction sacrifice data capacity, but allow a larger portion of the QR code to be damaged or unreadable.

The mode of a QR code is determined by the data being encoded. Each mode is encoded internally using a compact representation, so lower modes can contain more data.

  • NUMERIC: numbers (0-9)
  • ALPHANUMERIC: uppercase letters (A-Z), numbers (0-9), the space (), dollar sign ($), percent sign (%), asterisk (*), plus (+), minus (-), decimal point (.), slash (/) and colon (:).
  • BYTE: any character

Data Capacities

Version Size Error Correction Mode
Numeric Alphanumeric Byte
1 21 x 21 LOW 41 25 17
MEDIUM 34 20 14
QUARTILE 27 16 11
HIGH 17 10 7
2 25 x 25 LOW 77 47 32
MEDIUM 63 38 26
QUARTILE 48 29 20
HIGH 34 20 14
3 29 x 29 LOW 127 77 53
MEDIUM 101 61 42
QUARTILE 77 47 32
HIGH 58 35 24
4 33 x 33 LOW 187 114 78
MEDIUM 149 90 62
QUARTILE 111 67 46
HIGH 82 50 34
5 37 x 37 LOW 255 154 106
MEDIUM 202 122 84
QUARTILE 144 87 60
HIGH 106 64 44
6 41 x 41 LOW 322 195 134
MEDIUM 255 154 106
QUARTILE 178 108 74
HIGH 139 84 58
7 45 x 45 LOW 370 224 154
MEDIUM 293 178 122
QUARTILE 207 125 86
HIGH 154 93 64
8 49 x 49 LOW 461 279 192
MEDIUM 365 221 152
QUARTILE 259 157 108
HIGH 202 122 84
9 53 x 53 LOW 552 335 230
MEDIUM 432 262 180
QUARTILE 312 189 130
HIGH 235 143 98
10 57 x 57 LOW 652 395 271
MEDIUM 513 311 213
QUARTILE 364 221 151
HIGH 288 174 119
11 61 x 61 LOW 772 468 321
MEDIUM 604 366 251
QUARTILE 427 259 177
HIGH 331 200 137
12 65 x 65 LOW 883 535 367
MEDIUM 691 419 287
QUARTILE 489 296 203
HIGH 374 227 155
13 69 x 69 LOW 1022 619 425
MEDIUM 796 483 331
QUARTILE 580 352 241
HIGH 427 259 177
14 73 x 73 LOW 1101 667 458
MEDIUM 871 528 362
QUARTILE 621 376 258
HIGH 468 283 194
15 77 x 77 LOW 1250 758 520
MEDIUM 991 600 412
QUARTILE 703 426 292
HIGH 530 321 220
16 81 x 81 LOW 1408 854 586
MEDIUM 1082 656 450
QUARTILE 775 470 322
HIGH 602 365 250
17 85 x 85 LOW 1548 938 644
MEDIUM 1212 734 504
QUARTILE 876 531 364
HIGH 674 408 280
18 89 x 89 LOW 1725 1046 718
MEDIUM 1346 816 560
QUARTILE 948 574 394
HIGH 746 452 310
19 93 x 93 LOW 1903 1153 792
MEDIUM 1500 909 624
QUARTILE 1063 644 442
HIGH 813 493 338
20 97 x 97 LOW 2061 1249 858
MEDIUM 1600 970 666
QUARTILE 1159 702 482
HIGH 919 557 382
21 101 x 101 LOW 2232 1352 929
MEDIUM 1708 1035 711
QUARTILE 1224 742 509
HIGH 969 587 403
22 105 x 105 LOW 2409 1460 1003
MEDIUM 1872 1134 779
QUARTILE 1358 823 565
HIGH 1056 640 439
23 109 x 109 LOW 2620 1588 1091
MEDIUM 2059 1248 857
QUARTILE 1468 890 611
HIGH 1108 672 461
24 113 x 113 LOW 2812 1704 1171
MEDIUM 2188 1326 911
QUARTILE 1588 963 661
HIGH 1228 744 511
25 117 x 117 LOW 3057 1853 1273
MEDIUM 2395 1451 997
QUARTILE 1718 1041 715
HIGH 1286 779 535
26 121 x 121 LOW 3283 1990 1367
MEDIUM 2544 1542 1059
QUARTILE 1804 1094 751
HIGH 1425 864 593
27 125 x 125 LOW 3517 2132 1465
MEDIUM 2701 1637 1125
QUARTILE 1933 1172 805
HIGH 1501 910 625
28 129 x 129 LOW 3669 2223 1528
MEDIUM 2857 1732 1190
QUARTILE 2085 1263 868
HIGH 1581 958 658
29 133 x 133 LOW 3909 2369 1628
MEDIUM 3035 1839 1264
QUARTILE 2181 1322 908
HIGH 1677 1016 698
30 137 x 137 LOW 4158 2520 1732
MEDIUM 3289 1994 1370
QUARTILE 2358 1429 982
HIGH 1782 1080 742
31 141 x 141 LOW 4417 2677 1840
MEDIUM 3486 2113 1452
QUARTILE 2473 1499 1030
HIGH 1897 1150 790
32 145 x 145 LOW 4686 2840 1952
MEDIUM 3693 2238 1538
QUARTILE 2670 1618 1112
HIGH 2022 1226 842
33 149 x 149 LOW 4965 3009 2068
MEDIUM 3909 2369 1628
QUARTILE 2805 1700 1168
HIGH 2157 1307 898
34 153 x 153 LOW 5253 3183 2188
MEDIUM 4134 2506 1722
QUARTILE 2949 1787 1228
HIGH 2301 1394 958
35 157 x 157 LOW 5529 3351 2303
MEDIUM 4343 2632 1809
QUARTILE 3081 1867 1283
HIGH 2361 1431 983
36 161 x 161 LOW 5836 3537 2431
MEDIUM 4588 2780 1911
QUARTILE 3244 1966 1351
HIGH 2524 1530 1051
37 165 x 165 LOW 6153 3729 2563
MEDIUM 4775 2894 1989
QUARTILE 3417 2071 1423
HIGH 2625 1591 1093
38 169 x 169 LOW 6479 3927 2699
MEDIUM 5039 3054 2099
QUARTILE 3599 2181 1499
HIGH 2735 1658 1139
39 173 x 173 LOW 6743 4087 2809
MEDIUM 5313 3220 2213
QUARTILE 3791 2298 1579
HIGH 2927 1774 1219
40 177 x 177 LOW 7089 4296 2953
MEDIUM 5596 3391 2331
QUARTILE 3993 2420 1663
HIGH 3057 1852 1273

Special Thanks

A HUGE thank you to Project Nayuki for the QR code C++ library which was critical in development of this library.

License

MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].