First, get things working on a breadboard:
- Solder straight header pins to the Feather Fona
- All pins except: RST and 3V
- To get the right fit in the final build, these two pins won't be aligned with solder pads on the Perma-proto
- Solder a length of 22AWG at least 3 in. long to 3V
- Preferably "red" for +V!
- You can make it longer if you want, it will be cut later and soldered to the Smalls Perma-proto board +V rail
- You can also solder a wire to the RST if you want to use it for manually resetting. I did not.
- Solder straight header pins to the SSD1306 OLED
- Attach 7 female to male jumper wires to the 3x4 dialpad
- With the back of the dialpad facing towards you, from left-to-right, the first pin is not used (NC)
- The next four pins from left-to-right are the rows
- The next three pins, after that, are the columns
- Solder black-red-green 22AWG solid wire to the NeoPixel Jewel GND/+V/IN pads
- Insert wires through the back of the Jewel (LEDs down) and solder the connections on the front of the Jewel (LEDs up)
- These should be at least 3 in. long, can be longer, will be cut to fit in final build
- Connect the sticker-style antenna plug to its tiny jack
- I found this extremely challenging; I smashed one jack and had to solder the antenna on
- Try to position the antenna wire plug flat over the jack and "gently but firmly" press down
- Test by twisting the antenna - when attached properly it will move, but give some resistance
- Place the components on the Breadboard and wire them according to the diagram below with jumper wire
Since the Speaker and Microphone wire leads are cut-to-fit, I don't recommend wiring them up until the final build.
Download the Feather Fona sketch here. For setting up the Arduino IDE for the Feather, refer to Adafruit's tutorial.
With the DieselPunk Cellphone sketch uploaded to the Feather Fona, you should be able to:
- See the LED Sequins and NeoPixel Jewel should light up
- Don't stare at the LEDs too long - my vision is just starting to return...
- The LED Sequins are tied to GND/+V, so they're always on
- See text on the OLED screen
- Date and Time may not show correctly - see notes below
- Signal Strength and Battery Level should show
- Test the dial pad
- Flashlight should work by pressing "*" - hella bright!
- Press "1" for Dialing: enter some numbers, press "#" to go back
Troubleshoot if these things are not working. Refer to the sketch code to make sure you have the jumper wires placed correctly.
Time and date is available from the carrier network. To get the time and date working, you need to save some settings to the SIM800 module on the Feather Fona (FF) with Serial commands. A version of the Adafruit example sketch Fona Test is included in the downloads. This is the standard Fona Test with changes for pins on the FF. You can enter serial commands with the "S" option after you load this sketch and start the serial monitor in the Arduino IDE. In my environment (Ubuntu 16.04LTS), I found it a little tricky to get the Serial Monitor running with the FF, sometimes taking two or three tries. I found it connected better immediately after a sketch upload finished - maybe a reset and connect, waiting for the red light to stop flashing first, works as well.
The following worked on the T-Mobile network. The TING network was not tested. For reference, see the forum post on this. From poster tonyz, here are the steps to set the date/time from the network:
- By default the Local TImestamp mode of my SIM800 was disabled. You can check this with:
- You will get this if it is disabled:
- +CLTS: 0
- To enable it enter this:
- CLTS=1 must be saved in the SIM800's nonvolatile memory so it will be enabled when the module powers up and registers on the network.Since this setting is not automatically saved in nonvolatile memory, you must save it with:
- AT&W (This saves all writeable settings)
- Now restart your SIM800 (restart your FF)
- After it registers AT+CCLK? will respond with the correct time, as in my case:
- +CCLK: "14/08/08,02:25:43-16"
The code for the DieselPunk Cellphone is formatting the date and time to US-style: MM/DD/YYYY, 12-hour time. Change this for your location if applicable.
The final build is layered - one thing on top of another. Work slowly and test frequently as you assemble! Once you start stacking things up, it will be difficult or impossible to fix a problem lower down in the stack.