Sixfab Pico LTE Message Printer

Overview

This was an embedded programming project that allowed sending messages to a thermal printer anywhere that it had a cellular connection. I think in this case the device used either a T-Mobile or AT&T network, but I’m not sure at this point.

Sources

The source code for this project is available here!

Code Samples

Connecting to the cellular network wasn’t too bad, but it was also inconsistent at times.

# Get LTE system ready
print("run_initial_setup: Registering LTE network... ****")
picoLTE.network.register_network()
picoLTE.http.set_context_id()
picoLTE.network.get_pdp_ready()
picoLTE.http.set_server_url()

Actually getting a simple web request out and reading the response was a bit more involved, and was even less consistent than connecting to the network.

while True:
	USER_LED.on()
	# Reset the HTTP context before making a new request
	picoLTE.http.set_context_id()
	picoLTE.network.get_pdp_ready()
	picoLTE.http.set_server_url()
	print("main_loop: Sending web request... ****")
	result = picoLTE.http.get()
	time.sleep(readDelay)
 
	# After the delay, read response. This gives the Sixfab LTE time to process the request
	result = picoLTE.http.read_response()
	debug.info(result)
	...

Actually printing the parsed web response was the easiest and most consistent part. I was pretty pleased at how well the printer worked when it was all set up.

from machine import UART, Pin
import time
 
USER_LED = Pin(22, mode=Pin.OUT)
    
def printMessage(message):
    print("\n****************************")
    print("**** PRINT JOB STARTING ****")
    print("****************************")
    USER_LED.on()
    uart = UART(1)
    uart.init(baudrate=19200, tx=Pin(4), rx=Pin(5))
    uart.write("\n")
    uart.write("\n")
    uart.write("\n")
    uart.write("\n")
    uart.write((str(message)).encode('cp437', 'ignore'))
    uart.write("\n")
    uart.write("\n")
    uart.write("\n")
    uart.write("\n")
    uart.write("\n")
    uart.write("\n")
    uart.write("\n")
    uart.write("\n")
    uart.write("\n")
    time.sleep(2);
    USER_LED.off()
    print("\n****************************")
    print("**** PRINT JOB COMPLETED ***")
    print("****************************")
 
#printMessage("Hello there!")
#printMessage("General Kenobi!")

development embedded projects 3d_printing