I was having trouble making my SIM800 hat work with my Raspberry Pi Zero W; I thought it could be because of burnt gpios... So I tried with my Raspberry Pi 3. Same trouble.
I then found this solution and it works on my RPI III (I have not tried on Zero):
https://www.modmypi.com/blog/how-to-connect-your-raspberry-pi-to-a-3g-network
In this tutorial we will show you how to connect your Raspberry Pi to
a 3G network using the Itead Raspberry Pi GSM Board (SIM800). This
breakout board communicates to the Pi over serial, but as we know the
serial ports of the Pi are initally already in use, so we will need to
do a bit of jiggery pokery to free up the serial ports.
Free up your serial ports
First we need to edit the /boot/config.txt file
sudo nano /boot/config.txt
Add the following lines
dtoverlay=pi3-miniuart-bt
enable_uart=1
force_turbo=1
Now we need to edit the /boot/cmdline.txt file
sudo nano /boot/cmdline.txt
Remove all references of "console=", for example, if the line reads:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Change it to:
dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Next, we need to edit the /lib/systemd/system/hciuart.service file:
sudo nano /lib/systemd/system/hciuart.service
Comment out the After= line (by adding the # symbol at the begining of the line) and add the following on a new line
After = dev-ttyS0.device
Comment out the ExecStart= line (by adding the # symbol at the begining of the line) and add the following on a new line
ExecStart = /usr/lib/hciattach /dev/ttyS0 bcm43xx 460800 noflow -
I hope it helps someone!!