This project is submitted for

This project was
created on 05/20/2016
and last updated 10 months ago.

Description

We live in a connected world where we expect to always have access to communications but even in the UK there are still areas of black spots where we can't get phone signal. Your car breaks down when you're returning from a hiking trip, you can fix it but it's going to take some time. Unfortunately you have no reception so you can't update your family. The problem isn't just limited to remote areas, even travelling between the two largest Scottish cities of Edinburgh and Glasgow I loose reception on my mobile phone, and we all know smart phone batteries are prone to run out just when you really need them.
MyComm is a portable device that allows users to send messages from anywhere on Earth. Using the Iridium satellite system it works far beyond the reach of GSM and Wifi networks. A standalone device it has a touch screen interface and is powered by solar so no need to worry about battery, just shove it in your bag and forget about it-until you need it.

Details

The MyComm project consists of two main parts - the MyComm Handheld and the MyComm Server. The communication between the Handheld and the Server is via the Iridium Satellite network.

MyComm Handheld:

This is the portable device someone would carry around with them. Powered by battery which can be charged via solar it is roughly the size of a large smart phone with a 2.8” TFT touch screen as the user interface. A Teensy 3.1 micro controller is the main brains of the unit handling user input, contacts, message content and control of the satellite modem. The satellite modem is an Iridium 9602/3 Transceiver, allowing two way communication over the Iridium Satellite Network using the Iridium Short Burst Data Service.

MyComm Server:

The MyComm Server is a Node.js web application with two main functions - interfacing to the Iridium network and user configuration via a web interface. Iridium provide a full API allowing access to satellite network data, handling of message sending and receiving and other network configuration. The MyComm Server utilises these APIs to correctly handle MyComm Handheld device communications preferences for individual users. Users can configure preferences via the web interface. Here they can select how messages are broken out from the satellite network selecting preconfigured options like email, SMS, twitter or alternatively allowing a user to directly access the data via an API which offers the possibility for some interesting applications.

The stock Teensy 3.2 connects Vin with VUSB. This means that the Teensy can't be powered by Battery and re-programmed at the same time. If you want to be able to reprogramme the Teensy under battery power you either need to cut the 5V line on a usb cable or cut the Vin-VUSB trace on the underside of the Teensy:

Veroboard Build:

Follow the wiring schematics in order to build a veroboard to attach devices. This is my first run at building the MyComm prototype so there may be easier ways to achieve the build but this is the documentation first build;

To keep the instructions page clean I'm creating individual logs for the Prototype build and linking it in the instructions page. This log describes the software preparations you need to take to be able to program the MyComm.

Code Preperation:

In order to program the Teensy you'll require a compatible version of the Arduino IDE (Arduino.cc version) and the latest version of Teensyduino from here: https://www.pjrc.com/teensy/td_download.html . (As of writing Teensyduino V1.3 is compatible with Arduino V1.6.11)

Clone or download the repository using your standard git package or through your browser. The folder contains all of the library files required so open the main file "MyComm_Main.ino" in the Arduino IDE. Do a "Verify" check to make sure everything is working before continuing.

If everything is installed correctly you should see the following bellow:

Code Test:

To make sure your IDE is setup correctly open the standard "blink.ino" file in arduino.

Select the options from the drop down menu in Arduino for Teensy 3.1/3.2. Set "USB Type" to "Serial" and set the "CPU Speed" to "96MHz optimised".

Upload this code to your Teensy and you should see the LED on pin 13 blinking!*

Keep the blinking code on the Teensy as it'll come in handy when we move to the hardware build.

JW

*If you haven't reprogrammed the Teensy since buying it (so it's completely fresh) you may need to press the hardware button on the Teensy before windows recognises it. Press the button on the Teensy and press "upload" on the Arduino IDE you should hear windows "beeping" to show USB connections are happening. Any issues please see the Teensy forum for further help.

At the heart of our prototype MyComm is a RockBlock which handles the Iridium communication. The RockBlock is made by Rock Seven, an Iridium value added reseller. Their aim is to make satellite communications accessible to everybody in a simple and easy to understand way and they manufacture a range of Iridium-based satellite tracking & communication systems and airtime contracts.

The RockBlock is basically a break out board for the Iridium 9602 modem, providing it with an antenna and its power supply requirements. It exposes the modem’s serial interface via a breakout connector over serial, or USB. The Rock Seven management system can be used for managing your devices and configuring API access. There is also an Arduino library - IridiumSBD by Mikal Hart, that has made development quick and relatively painless.

A RockBlock can be purchased from Rock Sevens store and currently costs £159. Line rental is paid in blocks of one month at £8 per month. You only pay for months in which you wish to use the RockBlock and no annual contract is required. Credits are used each time you transmit. One credit is used per 50 bytes (or part thereof) of message sent or received. One credit is also used if you check your mailbox and there are no messages waiting (A mailbox check). Credits do not expire, even if you are paying no line rental. Costs for credits depend on what bundle you buy ranging from £6.00 for a 50 credit bundle to £800 for 20000.

We’ve uploaded the RockBlock data sheet and other useful documents to the files list above. All in all we’ve found that working with the RockBlock is really fun and easy. It opens up a whole range of interesting applications and we look forward to seeing what other people do with it!

After putting our server online we were lucky enough to get a user signed up and they sent us a message to the MyComm. This was a great oppertunity to show the MyComm pulling down messages and saving them so I thought I'd put up a quick video to show our progress with the Rockblock modem. Thanks again to aamarsh for the message!JW

Building things is fun! Writing it all down sometimes takes a back seat when you're on a creative roll. Today I've been putting together documentation to try and flesh out our Hackaday project page. Here's a list of what I've added:

I’ve now got the prototype server running in a way I’m pretty happy with so thought this would be a good time to share some info about how it’s set-up, where you can find the code and what it’s doing.

The application itself is built using Django - "a high-level Python Web framework that encourages rapid development and clean, pragmatic design.” I chose it because I wanted to use Python - it’s popular, robust, flexible and also easy to use and learn - I like using it. Also I find Django pretty intuitive, it has good documentation and seems very well supported on things like stackoverflow.com. Overall I’m happy with the choices.

All the code is stored in a GitHub repository: https://github.com/johngrantuk/myCommServer it’s (fairly well?) commented and should be relatively self-explanatory. Anyone should be able to just download the code from there if they wanted to set-up their own server.

Our prototype app is currently hosted by Heroku which is a cloud application platform that handles hosting, deployment, etc. The app is currently running on one of the free dynos, which is basically a Linux container. And yeah that’s free as in free! One reason I like Heroku is because of how easy they make it to deploy an app. I connected the dyno to my GitHub repository then whenever I want to deploy updated code I just hit the Deploy Branch button, it’s very cool.

The app itself has three main tasks:

Display a page showing messages sent between the server and our MyComm prototype.

Handle API requests to/from the Iridium service - for sending and receiving messages over satellite.

Allow users to register and login to send a message to our MyComm prototype - we thought this could be fun for people to try as well as helping us to test the functionality

You should be able to see how these tasks are handled by looking at the functions in the views.py file. Hopefully this code makes sense to anyone trying to set-up their own version but if there are questions just post in the comments.

So that should give everyone an overview of how things are set-up. Now with some trepidation we invite you to visit the site at: https://mycommserver.herokuapp.com/ and feel free to register and send us some test messages!

A lot of work has gone into the programming side of the MyComm recently. If you happen to check out our BitBucket repo you'll see a good number of commits over the past few days. A major part of this programming has been spent on interfacing with the Rockblock Iridium Modem. We now have the ability to send messages out! John's been working on the web-end of things too so we have a very basic page up and running that receives the messages sent from the MyComm. Very cool! Check it out in our latest video log -

Global communication is great when you want to send a message in a hurry or just to remind family you're safe and sound. However, in a worst case scenario, global communication could potentially be vital. An idea we've had from the start is to have an "Emergency" button on the MyComm. The plan is to get a "pre-canned" message to a number of contacts to tell them you're in trouble and you need help. Joining this with GPS data also allows for your emergency contacts to know exactly where you are in the world. When first setting up the MyComm you'll be asked to setup this emergency functionality so that you can create a pre-recorded message that will go out to a number of contacts that you define. Initially the idea is that this setup will be done on web-end of the MyComm service. There are a number of reasons we've considered this:

Ease of data input - Writing a long message and defining multiple contacts can be cumbersome on the latest smartphones, by going through a pc web service it will make things easy and quick. It will also allow easy access to edit contacts or messages when the user requires.

Reliability of data - By entering directly to the web service it means the MyComm doesn't have to sync the message or contacts to the webserver; Saving on cost and ensuring the functionality is setup correctly.

Reduction in emergency data - By having the web services handle the emergency message and contacts it means that the MyComm only has to send gps position and an encoded flag to say that the message is an emergency. There's no need to send multiple messages over the satellite network; One message as simple as possible helps ensure the message gets out without worries of data loss or multiple messages not sending.

Test Service - An option we could have during setup is to send your emergency contacts a message to say "Hey, you've been chosen by --User-- as an emergency contact for their MyComm messaging device. If you receive a message from our service please be aware that --User-- may require your help. We'll include their GPS position as well as a customised message that they have setup. Thank you for being a trusted contact!" - By going through the webserver directly the cost of satellite data can be removed from this test message.

Setup Trusted Users - This will be discussed further down, however, an additional idea for emergency use is to have the MyComm reply to queries from trusted users. This will allow someone to query where the MyComm is and receive GPS data and status.

So how will it work?

The key factors of the emergency use are to be simple and reliable. By having a hardware button on the device this allows for use without the touch screen; reducing the power consumption and avoiding any issues if the touch screen is cracked or non-functional. Further consideration means that we'll need a 2 step verification for emergency usage; we don't want a message going out because the button is pressed in a bag or pocket. One way to ensure this is to have the power switch with multiple positions; Off, On, Low Power, and Emergency. Placing the power button into emergency and holding the emergency button for 4 seconds allows the MyComm to be sure an emergency message is intended. Once placed into emergency mode the MyComm will continually attempt to send the message out. The RGB LED on the top will flash to show the message is trying to send. Once sent, a message will appear on the screen (depending on battery level) and the LED will change colour/flash pattern. The MyComm will go into a low power mode and display any reply messages. The message could be sent out again by activating the emergency button again.

--MyComm Emergency Button Render--

Trusted Users

We're still working on the details of the trusted user idea but the main plan is to give trusted users the ability to ping the MyComm device with a message requesting the current location and status of the device. This would be particularly useful in a scenario where someone is...

Things have been a little slow on the MyComm front. We've had other projects taking our time. However, after winning 2 of the Hackaday monthly categories we've been able to use some of the funds to get some 3d prints! Video below shows what they look like:

I was able to get the screen easily fitted to the "Consumer Mock-Up" - This case is the one we're hoping to produce for actual users. It'll likely make some design iterations depending on how custom PCB designs go and component selection. However, there's nothing quite like holding a project in your hands! The 3d prints came out well. They were done by a contact that has his own Cube 3 printer. He was kind enough to send some pics through of the build in progress.

When the Iridium service delivers a message an HTTP POST request to the MyComm server URL. As well as the message data other parameters such as device serial number and imei number are included. Also included is the approximate latitude and longitude of the device at the time it transmitted.

This location data could be used to automatically track location of a remote sensor unit along with the sensor data, the MyComm device can be programmed to automatically send the sensor data say every hour or every day. We’ve used the POST data/location along with the Google Maps API to show a nice reporting page on the MyComm server:

PV (solar) panel. :- Epoxy are junk (due to C-C bond energy) - avoid at all costs.- PET laminated panels are bearable if not in all-day every day exposure to sun. Many years of steady but not continual use if well made.- ETFE batter again. Getting people with experience harder.- Glass + EVA laminated is 'the way to go' but heavier and more fragile. Gorilla glass or similar and c areful mounting may be OK.

At minimum monocrystalline silicon cells. These come in a t\range of efficinecies and difference for top ones is not so vast that using less makes little sense in a premium product. 17-18% efficiency for top cells. Better again are Suntech rear-electrode cells which gives 21%+ efficiency but are harder to work with and far fewer people can do so.

Some use a single large cell and an upconverter (boost converter) which has shading immunity and best packing density - but converter efficiencies are low with very low resultant voltage. People who follow this path seem to break area into 4 cells ~= 2V . Boost efficiency is better and voltage is high enough to self start electronics with care. Alternative is to have enough smaller cells for direct battery charging in most light levels and results are not as inferior to boosted systems as the boost converter people may claim. You can use Vpv > Vbattery and use buck converter but gains may be minimal, if any.

Hi, I took a look at the uGFX library. What a cool library! I'm looking more towards the sd storage and iridium functionality but i'll revisit the lib when I get a chance. Might be a worthwile upgrade in the future!

Hi, first off thanks for the interest. To answer your questions; Iridium directly is not DIY-friendly. Resellers provide the back end system and decide on data chargers and available devices. For the hacker community, Rockseven provide a nice easy to use board which hosts an iridium modem. We're going to go over the Rockblock module soon, we've had experience in the past with it and are confident in our ability to get it working so the main issues have been interfacing and power to begin with. In the future to make a final product we'll likely have to work with Iridium directly but that's a way off yet. You can see Rockblocks pricing for messages on their site, they work on a "credit" basis.