While each of the products mentioned in the previous section provides an interesting product that simplifies whether Electronics or programming, all of them tend to be very specific. They focus whether on HW only or SW only. Even if a HW product comes with its developing environment, it still requires advanced programming knowledge. The objective in this paper is to link the features of existing HW & SW products and combine them to get a better platform that offers the user the possibility to create hardware prototypes and program them quickly without needing technical knowledge especially in programming. An electrical board named IOIO is used as the hardware part, while the App Inventor platform is used as the software platform. Therefore, the contribution of this paper is to bring support for this electrical board to App Inventor. This way, it will be possible to easily create Android Apps that control the IOIO board without technical knowledge. Making it possible for kids and beginners to initiate to the electronics and programming fields. The targeted audience is quite large especially that Android market share has reached 86.1% . CodeShoppy
In order to call an app, it must be identified first, the two elements that allow a unique App identification are the package name and the class name. that is the role of the first two groups of blocks: setActivityPackage and setActivityClass•When AppInventor calls an application, the equivalent code in Android is startActivityForResult, which means that it expects something in return, this scenario is needed especially when desiring to read the value of IOIO’s analog and digital pins. The developed IOIOAI Service will store that result inside a variable called “ai” and send it back to the app Inventor App. That’s the role of the setResultName block •When AppInventor wants to execute an IOIO command, it needs first to send the command to IOIOAI Service, the two applications will communicate between themselves using intents, which is an Android method to exchange data between and inside Apps. The setExtraKey and setExtraValue are used to transmit the command in a variable called “key_command”, the “value_command” is a parameter that is passed when calling the IOIO function For example, in order to set the digital pin 1 to the HIGH state, call the IOIO function and pass the parameter “digitalWrite,1,true”,
Though the prototype seems simple and other better alternatives may exist, the plus here is that coming with an idea and concretize it has become a lot faster and easier. This demo featured a speaker to control, but an enthousiast can consider replacing it with a propulsion system that pushes the bike in the opposite direction and maintain the equilibrum, getting therefore one step closer to a self balancing bike and more importantly, to creative thinking . VI.CONCLUSION The final objective of IoT is to leverage abstraction as much as possible, with electronics and programming considered as main disciplines of IoT, several efforts are made to make them accessible for everyone. This paper presents an initiative that facilitates the process of creating Android Apps capable of controlling electrical systems. IOIO and App Inventor already exist, but do not coexist, the idea then is to develop an Android service that links the two existing solutions and get the best of both worlds. This has added an abstraction level to program the IOIO board, allowing its control via App Inventor’s graphical blocks, thus simplifying the programming side. For the HW side, dealing with electronics can be simpler by using existingHW modules, so it is actually possible to start exploring the embedded systems field with the proposed tools. The developed Android IOIO service supports so far the DigitalWrite command. The service is still under development and other commands such as Digital & Analog and PWM will be added, making it possible to interface additional electrical components and read data from sensors connected to the IOIO board.