The SIM800xPIC18 API, part of the WWM (Wireless WAN Modems Access APIs package), is a piece of reusable software developed at #Firmware Engineers as part of the #IoT Solution Demo initiative. It is intended to provide comprehensive, low memory footprint and fully tested framework that exposes the complete functionalities of SIM800 series modems, to be used in IoT applications that may be using PIC18 architectures for implementing devices or lighweight gateways.
The current version of this software includes the following APIs:
- HTTP
- GPRS
- IP
- Modem control
- ID number
- Some 3GPP TS 27.005/7 API functions
Subsequent versions targeting AVR and STM32 architectures will be created overtime. All source files are self-documenting and doxygen compatible, so a full and efficient API documentation can be generated. The diagram below shows the API architecture.

To use this software you need to:
- Install MPLAB X IDE: https://www.microchip.com/en-us/tools-resources/archives/mplab-ecosystem
- C compiler for PIC 18 microcontrollers (ex. XC8): https://www.microchip.com/en-us/tools-resources/archives/mplab-ecosystem
- Doxygen generator, to generate documentation from source code (optional): https://www.doxygen.nl/download.html
This repository includes a demo Data Logger application (by implementing a lightweight REST API Client), that illustrate the usage of the SIM800x API, with a SIM800L modem and a PIC18F452. Following is a simplified diagram of it's operation.

- SIMCOM SIM800L-based board (ex. SIM800L EVB)
- PIC18F based board (I used a custom-made prototyping board on which I mounted the PIC18F452 controller)
- A USB to UART/USART converter (I used a FTDI 232R board)
- PIC programmer/debugger (ex. PICkit 3)
-
Debug channel
- Baudrate: 9600, fixed
- Transmit Pin: PORTB[3]
- Receive Pin: PORTB[0]
-
Control channel
- Baudrate: Configurable via SIM800xInit() function
- Transmit Pin: USART module PORTC[6]
- Receive Pin: USART module PORTC[7] More details are specified in the self-documenting source files.
This file is currently being developed by the #Firmware-Engineers team. Contributions, recommendations and any sort of feedback are more than welcome.
