Notecard Interfaces
Requests can be issued to the Notecard over USB
, UART
, or I2C
. The Serial
UART
interface is fixed at a baud rate of 9600, with eight data bits, no
parity bit, and one stop bit (9600/N-8-1
).
The Notecard I2C
interface is available at address 0x17
, but can be
reconfigured using a
card.io
request. This
interface implements a straightforward serial over I2C
protocol.
Using the Notecard Interface with a Firmware Library
The simplest way to initiate a connection with the Notecard from firmware is with one of our firmware libraries. Using this approach, you can initialize the Notecard over the appropriate interfacing using a few lines of code. For instance, with Serial:
#include <Notecard.h>
Notecard notecard;
notecard.begin(Serial1, 9600);
import notecard
import serial
port = serial.Serial("/dev/serial0", 9600)
card = notecard.OpenSerial(port)
Or with I2C
:
#include <Notecard.h>
Notecard notecard;
notecard.begin();
import notecard
from periphery import I2C
port = I2C("/dev/i2c-1")
card = notecard.OpenI2C(port, 0, 0)
Using the Notecard Interface with Simple Serial I/O
Alternatively, it's possible to manually communicate with the Notecard over
Serial in firmware using language-equivalent print()
and read()
functions.
#define txRxPinsSerial Serial1
// Initialize the Notecard
txRxPinsSerial.begin(9600);
txRxPinsSerial.println("\n");
// Send a hub.set request
txRxPinsSerial.println("{\"req\":\"hub.set\",\"product\":\""myProductID "\"}");
import json
import serial
serial = serial.Serial('/dev/ttyS0', 9600)
serial.write(b'\n')
req = {"req": "hub.set"}
req["product"] = myProductID
serial.write(bytearray(json.dumps(req), 'utf8'))
serial.write(b'\n')
When reading and writing directly to the Notecard, there are important timing considerations that are performed for you by the firmware libraries. To learn more about raw Notecard communication, please refer to our guide for Notecard Communication Without a Library.
The Notecard Serial-over-I2C Protocol
If, on the other hand, you wish to use I2C
without one of our firmware
libraries, you'll need to write your own logic for writing to and reading from
the bus. Your approach will vary from one language to the next, but you should
use the existing implementations and the
Serial-over-I2C Protocol Guide
for reference.