I now have a functioning WiFi to serial adaptor built from three components that are freely available as ready made modules. All that is required are a few wires to connect them together and to load the software onto the WiFi module using a USB cable and the Arduino IDE. I'll be putting together a complete description and a list of the components once I put the Arduino sketch on github.
The adaptor uses a NodeMCU WiFi development kit to supply the WiFi access point and to run the sketch that provides the connectivity. This is then connected to the MegaSquirt ECU via an UART to RS232 adaptor module. In order for the complete module to run from the 5V supply from the MegaSquirt serial port, it needs to use a 5v to 3.3v dropper module in the TX line from the RS232 module to the NodeMCU.
There are a number of advantages to using this unit over the RN and WiFly devices in addition to the obvious price advantage (a fraction of the price of those modules)...
- The module (via the firmware) provides a web interface to allow it to be configured for MS1 or MS2 (change baud rates).
- You can define the WiFi Access point name and also secure it with your own password.
- You can continue to use the internet via 3G while connected to the access point.
- The open source firmware will allow those who want to to add their own functionality to the link.
- Total cost for the complete module is around £12 GBP from Amazon
Things are moving on gradually...
I've fixed all the problems with the architecture of the app and it's now working as fast as a PC connected via a serial cable when it comes to creating log files, in the region of 16 lines per second on an MS1/Extra. I have 2 more screens to update to iOS7+ compatible and I'll be looking, finally, at a release. The new architecture has opened up a number of possibilities as well as removing many of the stumbling blocks that were limiting it's performance.
One of the more recent problems being experienced is a practical one since MicroChip bought out Roving Networks and pulled the rug out from underneath the simplest and cheapest connection option. Obviously one solution to this has been to start looking at BlueTooth interfaces but in tandem to that I've also been looking at a much lower cost WiFi option that uses a couple of "off the shelf" modules hooked together. Initial results have been good and it would bring the cost of a WiFi adaptor down to less than £12 ($15USD) but it will need to be flashed with some simple custom code that I'm going to release as an open source project. The software to compile and upload the software to the module is free and you just need a USB cable to flash the module.
This is actually a much better solution than the RN134 as it offers a secure, password protected, connection and a customisable web interface to configure it and, being so much cheaper, will be a good option.
I may be adding banner advertising to the app in an attempt to help it pay for itself. Although the donation model worked initially it's not covered the costs of developing the app or hosting this web site, let alone the cost of MegaSquirt ECUs to test against. Banner advertising has proved reasonably successful in my other apps as a way of generating a small but steady revenue that might, at least, help offset some of the costs.
When Apple started supporting Bluetooth LE in iOS 5, giving the possibility for apps to use bluetooth devices without the need to be tested and approved before it could be used with an app (along with the associated costs of that), it offered the first glimpses of a Bluetooth solution. The downside was that, getting it working, required a custom "stack" to be embedded in the Bluetooth device, limiting the real world availability.
Since that time however Bluetooth LE devices have matured and it has become possible to buy an "off the shelf" module with an embedded stack that will allow the app to communicate with it. I'm currently evaluating one such device for use with the app and, if it works as documented, will offer this as an option within the app and add the steps required to configure the module to the manual pages.
The two items in the picture are the Bluefruit LE UART Friend and a generic RS232 to UART convertor which should just need a few interconnecting wires between them to connect a MegaSquirt ECU to Bluetooth LE. Total cost for the two was just under £27 delivered. Thanks to Christian for the "heads-up" regarding this module as it's cheaper and more widely available than the ones I'd previously been evaluating.
I've completed the architecture changes I've been working on and the first test version of the app is being distributed to testers now. If you haven't already signed up and are using iOS 8 or later, use the contact form to let me know you would like to become a tester. The new Apple TestFlight system allows for up to 1000 testers and the more people testing it the better !
The architecture changes offer far more flexibility and improved speed of logging by recording the data into a database, including logging sessions. As well as the improved speed it opens up new possibilities, such as a graph view of the data in both realtime and logged data environments. Data from the MS ECU is also stored with log sessions, allowing easier transfer of log data between devices in the future. At some point I will also leverage this mechanism to provide iCloud support for your logging sessions.
Updates to the latest iOS SDKs and methods mean an updated layout that should cope better with different device screen sizes and native support for 64 bit devices will improve performance on those devices.
The one feature that has been lost as part of this restructuring is the ability to transfer log files from the device using iTunes. On the plus side though the email facility allowing log files to be emailed has been updated to support the iOS7 and later action facility. This allows log files to be emailed as before but also allows them to be transferred via AirDrop or any other method that your device is configured for (Facebook, Messages etc...) or opened directly in another app on your device that supports the file type. For Mac users this means you can quickly send log files directly to your Mac over WiFi.
With the new data format it is possible for full log files, with all the MS ECU config data, to be sent between iOS devices and imported into other copies of MobiSquirt at some point in the future.
Following a sabbatical which included driving around Australia in my Land Rover. I've started to tidy up the code base that I was working on for the next release version.
A lot has changed since the last release with new iOS releases, new iOS devices, new beta testing options and Roving Networks being consumed by MicroChip.
The iOS changes have at least resolved a few issues - the problems I was having supporting new versions of iOS without alienating users who wanted to use the app on old devices have been resolved.
The new release will be an iOS 8 app, it will run on iOS 7 and should be OK on iOS 7 but it will not be possible to test on iOS 7.
I will be using Apple's TestFlight to ship test versions of the app to "beta testers" and with this in mind anyone wanting to test the app will need to apply using the contact form.
Sadly this project has fallen victim to a lack of time and priority compared to all the other things that take up my spare time.
There has been some progress as, yet again, I embarked on another architecture change, this time around the way the logs are created and stored and the way the incoming data is analysed. This is aimed at streamlining the data capture process and, hopefully, this will speed up the entries per second for the logs which have been down on where they should be, particularly on the MS2/MS2-Extra devices.
The iPhone 5 question has been resolved once and for all as Apple will no longer accept apps or updates to apps that don't support iPhone 5. Anyone still using an iPhone with an iOS version prior to 4.3 will no longer be supported through the app store although I will continue to support older versions in the test version of the app for a while at least.
At the moment I'm not sure when I'll get any real time to devote to this project but I'm optimistic that in the next couple of months I will at least be able to get the current test version into a state where it can be submitted to the app store.
While the test versions of the app work quite happily on both the iPhone 5 and the iPhone 3G and earlier it seems that the App Store version can't have that luxury unfortunately. At some point soon I'll need to make a final decision on how to handle it but my current thinking is that I may create a new version of MobiSquirt on the App store that will support legacy hardware and iOS versions while at the same time allowing the "main" app to take advantage of the latest and greatest iOS developments. Of the current user base of around 800 active users there are 10 users that have devices that don't support iOS 4.3 and later according to the analytics.
Going down the legacy app route will have the advantage that, when and if I can no longer update the legacy version at least the legacy version will remain on the App Store should an older device need a factory reset or similar and lose the app.
The next App Store release will not support iPhone 5 natively as I want to get the RPM fix out while I pontificate further and see how other developers handle the iPhone 5/iPhone 3G problem.
I've been contacted by a few people concerned about the possibility of dropping iPhone 3G and earlier device support. As a result and after some experimentation I've found I can, for the time being, support all the existing devices that are supported and also support the new iPhone 5 by using an older compiler.
I've been trying to get to the bottom of the problems some people have been experiencing with incorrect RPM readings on MS1Extra. After analysing files supplied by those experiencing the problem and running the configurations up in my test environment I've finally got to the bottom of the problem and the latest test version contains a fix. It turned out to be a problem with the way the app was determining the number of cylinders and this was then leading to rogue calculations.
I'll release this version to the app store after testing is complete.
I've got some test logs and configurations from people experiencing odd displays/logging on MS1-Extra versions. In particular this seems to effect the hi res rpm calculation and I currently think it's related to installations where the spark table isn't being used. I'm going to load one of the supplied configurations on a spare ECU and see if I can reproduce the problem.
The launch of the iPhone 5 with it's new processor and screen size has left me in a bit of a quandry. To fully support the iPhone 5 (which I want to do) I'll need to drop support for the iPhone 3G and iPod Touch gen 2 and earlier and any devices running iOS version prior to iOS 4.3. The stats I have suggest this shouldn't be a problem BUT if it is a problem for you, please let me know.
Obviously I'm looking to support the iPhone 5's new screen size in the next release.
I now have a working MegaJolt Lite Jr that has been lent to me for testing and development so I'm beginning work on the connection and logging classes to support it. Not sure yet which versions of MegaJolt it will be compatible with initially but hopefully that will become apparent as development progresses and I work my way through the tech notes.
The outstanding MegaSquirt version support (MS2 B&G code) is also on my list of things to add. I may end up adding them both as part of a single update or add and release each one as a subsequent release. I'm not sure how many users there are of the MS2 firmware but no doubt there will be some.
As always I'm open to any other suggestions and/or bug reports for the current release versions or the test versions. Feedback from users always gives a boost to the development effort, if only because it lets me know I'm not the only one using the app ! Version 1.1 now has over 200 users since it was released so hopefully some of those users are using it for logging and display !