Afa Malu Bob VanLonkhuyzen KJ Yoo Nathan Snippe Engr 339/340 Senior Design Project Calvin College 05/08/2013 © 2013, Team 10 and Calvin College Executive Summary Übercaster is an innovative new personal broadcaster for those who want to broadcast their music, ideas, or translations. By utilizing the range of Wi-Fi and the speed of UDP protocol, Übercaster was able to broadcast any audio signal connected via a 3.5mm jack. It was able to provide a quick and high quality connection to at least ten Smartphone clients. The Smartphone users were able to download the free Übercaster app and stream the audio at rate of 320kbps. We anticipated a delay in the stream of at most a hundred milliseconds, which is barely noticeable by the human ear. One of our design philosophies was to make the experience as clear as possible, so it was paramount for us to make everything transparent to our users, thereby gaining trust of our product. Because as engineers, it is easy to add features that doesn’t make sense to the users. Ultimately our goal is to produce a device that reflects the goodness of God’s creation. Thereby being good stewards. The market for Übercaster is focused on a few main groups: public events, tour guides, museums, translation services and street performers. With these groups, we estimated about 10,000 buyers in our first year. With this estimated quantity and manufacturing and production research, we were able to get a quote for about $84 per device from a “one stop shop” manufacturing company called Arcadia Concepts. At the end of the school year we had a proof of concept working on a development board with power modules. We designed and produced our own enclosure and smartphone apps. Table of Contents 1 INTRODUCTION 1 1.1 DEVICE OVERVIEW 1.2 TEAM INFORMATION 1.2.1 NATE SNIPPE 1.2.2 AFA MALU 1.2.3 K.J YOO 1.2.4 BOB VANLONKHUYZEN 1.3 REPORT OVERVIEW 1 1 2 2 3 3 3 2 SYSTEM ARCHITECTURE 5 2.1 OVERALL SYSTEM DESIGN 2.1.1 BLOCK DIAGRAM 2.2 ÜBERCASTER 2.2.1 BROADCASTER 2.3 WEB APPS 2.4 GOALS 2.4.1 DESIGN 2.4.2 FUNCTIONALITY 5 6 9 9 16 19 20 22 3 REQUIREMENTS 25 3.1 FUNCTIONAL REQUIREMENTS 3.2 ELECTRICAL REQUIREMENTS 3.3 SOFTWARE REQUIREMENTS 3.4 PHYSICAL REQUIREMENTS 3.4.1 PRODUCT WEIGHT 3.4.2 PRODUCT SIZE 3.4.3 PRODUCT MATERIALS 3.4.4 PRODUCT DESIGN 3.5 POWER REQUIREMENTS 25 25 26 26 27 27 27 27 28 4 ELECTRICAL SYSTEM SPECIFICATION 29 4.1 DEVELOPMENT BOARD CHOICE 4.2 CUSTOM PRINTED CIRCUIT BOARD 4.3 POWER SUPPLY SELECTION 29 30 34 5 PHYSICAL DESIGN SPECIFICATION 36 5.1 SYSTEM ENCLOSURE 5.1.1 CASE DESIGN 5.1.2 MATERIAL SELECTION 36 36 37 ii 6 PROTOTYPE AND YEAR END DELIVERABLES 39 7 SYSTEM INTEGRATION TESTING 40 7.1 7.2 7.3 7.4 7.5 7.6 7.7 40 41 42 45 45 48 49 ÜBERCASTER ÜBERCASTER LATENCY TEST ÜBERCASTER CLIENT APP ÜBERCASTER WEB APP ÜBERCASTER PHYSICAL STRUCTURE ÜBERCASTER CURRENT DRAW TEST FCC REGULATION TEST 8 BUSINESS PLAN 51 8.1 VISION AND MISSION STATEMENT 8.2 INDUSTRY PROFILE AND OVERVIEW 8.2.1 COMPETITION 8.2.2 LIMITATIONS AND REGULATIONS 8.2.3 TRENDS IN SOCIETY 8.2.4 THE COST OF ENTRY 8.2.5 NECESSITIES FOR SUCCESS 8.2.6 PROJECTIONS FOR THE FUTURE 8.3 BUSINESS STRATEGY 8.3.1 SWOT ANALYSIS 8.4 MARKETING STRATEGY 8.4.1 TARGET CUSTOMERS 8.4.2 CUSTOMER BENEFITS 8.4.3 MARKET SIZE 8.4.4 LOGO DISPLAY 8.4.5 PRICING 8.4.6 ADVERTISING 8.4.7 PRODUCTION 8.4.8 DISTRIBUTION 8.5 FINANCIAL ANALYSIS 8.5.1 FORECASTING 8.5.2 KEY ASSUMPTIONS 8.5.3 FINANCIAL STATEMENT 8.5.4 BREAK-­‐EVEN, REVENUE, AND PROFIT ANALYSIS 51 51 51 51 52 52 52 52 53 53 53 53 54 54 55 55 55 55 55 56 56 56 56 58 9 PROJECT MANAGEMENT 59 9.1 TEAM ORGANIZATION 9.1.1 DIVISION OF WORK 9.1.2 TEAM ADVISORS AND SUPPORT 9.1.3 TEAM MEETINGS 59 59 60 61 iii 9.1.4 FILE MANAGEMENT 9.2 SCHEDULE 9.2.1 SCHEDULE MANAGEMENT 9.2.2 CRITICAL PATH 9.2.3 END OF THE YEAR SCHEDULE ASSESSMENT 9.3 OPERATIONAL BUDGET 61 62 62 63 65 66 10 CONCLUSIONS 68 10.1 ACCOMPLISHMENTS 10.2 LESSONS LEARNED 10.3 CREDITS AND ACKNOWLEDGMENTS 68 68 68 11 REFERENCES 70 Table of Figures FIGURE 1-­‐1: ÜBERCASTER TEAM FROM LEFT TO RIGHT: ROBERT, AFA, KJ, NATE ................................................................... 2 FIGURE 2-­‐1: TOP-­‐LEVEL BLOCK DIAGRAM .................................................................................................................................. 6 FIGURE 2-­‐2: ÜBERCASTER SYSTEM BLOCK DIAGRAM ................................................................................................................. 7 FIGURE 2-­‐3: SMARTPHONE AND MOBILE APP BLOCK DIAGRAM ................................................................................................. 8 FIGURE 2-­‐4: BROADCASTER SOFTWARE BLOCK DIAGRAM ..................................................................................................... 10 FIGURE 2-­‐5: IPHONE 5 CONNECTING TO THE ÜBERCASTER WIFI CHANNEL .......................................................................... 12 FIGURE 2-­‐6: THE MAIN SCREEN OF THE ÜBERCASTER CLIENT APP, ONCE IT HAS CONNECTED TO THE INCOMING STREAM .. 13 FIGURE 2-­‐7: UML BLOCK DIAGRAM OF THE FIRSTVIEWCONTROLLER AND SECONDVIEWCONTROLLER ............................. 15 FIGURE 2-­‐8: THE WEB VIEWER TAB OF THE ÜBERCASTER CLIENT APP ................................................................................. 16 FIGURE 2-­‐9: PYTHON ADMIN WEB APP .................................................................................................................................. 17 FIGURE 2-­‐10: PYTHON ADMIN WEB APP LANDING PAGE ...................................................................................................... 17 FIGURE 2-­‐11: PYTHON ADMIN WEB APP LOGIN SCREEN ....................................................................................................... 18 FIGURE 2-­‐12: PYTHON ADMIN WEB APP CONTROL PAGE ..................................................................................................... 18 FIGURE 2-­‐13: PUBLIC WEBPAGE POWERED BY NGINX WEBSERVER ...................................................................................... 19 FIGURE 2-­‐14: NGINX LOAD TEST SIMULATION RESULT ......................................................................................................... 19 FIGURE 2-­‐15: A STUDY DONE BY ANDROID TO COLLECT DATA ON HOW WIDE SPREAD THE VERSIONS OF ANDROID ARE. ... 20 FIGURE 2-­‐16: SUMMARIZATION OF APP MOVEMENT SHOWING SIMPLICITY. .......................................................................... 22 FIGURE 2-­‐17: START UP SCREEN FOR THE ANDROID VERSION OF THE ÜBERCASTER APP. .................................................... 23 FIGURE 2-­‐18: MAKING SURE THE USER GETS CONNECTED TO THE ÜBERCASTER NETWORK BEFORE TRYING TO STREAM. .. 23 FIGURE 2-­‐19: THE STREAMING VIEW OF THE ANDROID APP. ................................................................................................. 24 FIGURE 4-­‐1: CUSTOM ÜBERCASTER PCB ................................................................................................................................ 31 FIGURE 4-­‐2: CUSTOM ÜBERCASTER PCB ................................................................................................................................ 32 FIGURE 4-­‐3: ÜBERCASTER PCB SCHEMATIC ........................................................................................................................... 33 FIGURE 5-­‐1: PROTOTYPE ÜBERCASTER (FRONT) ................................................................................................................... 36 FIGURE 5-­‐2: PROTOTYPE ÜBERCASTER (BACK) ..................................................................................................................... 36 FIGURE 5-­‐3: CAD DRAWING OF ÜBERCASTER ........................................................................................................................ 37 FIGURE 7-­‐1: THE LATENCY MEASUREMENT ............................................................................................................................ 42 iv FIGURE 7-­‐2: STRESS EXPERIENCED AT DROPPED HEIGHT ..................................................................................................... 47 FIGURE 7-­‐3: DISPLACEMENT EXPERIENCED AT DROPPED HEIGHT ........................................................................................ 47 FIGURE 7-­‐4: SIMULATED DROPPED ENCLOSURE ..................................................................................................................... 48 FIGURE 7-­‐5: THE CURRENT DRAW TEST SETUP ..................................................................................................................... 49 FIGURE 9-­‐1: THE TOP LEVEL ORGANIZATION OF OUR FILE SHARING STRUCTURE UTILIZING DROPBOX. ............................... 61 FIGURE 9-­‐2: ORGANIZING AND SCHEDULING TASKS THROUGH SMARTSHEET. ....................................................................... 62 FIGURE 9-­‐3: EXAMPLE OF HOW WE UTILIZE TRELLO.COM ....................................................................................................... 63 FIGURE 9-­‐4: DESIRED CRITICAL PATH FROM FIRST SEMESTER ............................................................................................. 64 FIGURE 9-­‐5: DESIRED VERSIONS OF ÜBERCASTER TO BE ACHIEVED BY END OF YEAR. .......................................................... 64 Table of Tables TABLE 2-­‐1: SIGNAL IDENTIFICATION FOR FIGURE 2.1 ............................................................................................................... 6 TABLE 2-­‐2: SIGNAL IDENTIFICATION FOR FIGURE 2.2 ............................................................................................................... 7 TABLE 2-­‐3: SIGNAL IDENTIFICATION FOR FIGURE 2.3 ............................................................................................................... 8 TABLE 2-­‐4: DESIGN DECISIONS FOR CHOOSING STREAMING PROTOCOL RELATING TO OUR GOALS FOR THE APP. ................ 20 TABLE 4-­‐1: DIFFERENT BOARD SPECIFICATIONS .................................................................................................................... 29 TABLE 4-­‐2: DIFFERENT BOARD SPECIFICATIONS .................................................................................................................... 31 TABLE 4-­‐3: FACTS ABOUT THE CUSTOM PCB .......................................................................................................................... 34 TABLE 4-­‐4: BATTERY COMPARISON ........................................................................................................................................ 34 TABLE 7-­‐1: INSIDE RANGE TESTING DATA ............................................................................................................................... 41 TABLE 7-­‐2: OUTSIDE RANGE TESTING DATA ............................................................................................................................ 41 TABLE 7-­‐3: DROP TEST RESULTS ............................................................................................................................................. 47 TABLE 7-­‐4: FCC REGULATION TEST RESULTS .......................................................................................................................... 49 TABLE 8-­‐1:ÜBERCASTER FINANCIAL STATEMENT .................................................................................................................. 57 TABLE 8-­‐2: ANALYSIS AND JUSTIFICATION OF BREAK-­‐EVEN, REVENUE, AND PROFIT .......................................................... 58 TABLE 9-­‐1: SUMMARY OF HOURS FOR ENTIRE YEAR. .............................................................................................................. 65 TABLE 9-­‐2: OPERATING BUDGET FOR ÜBERCASTER THROUGHOUT THE YEAR. ..................................................................... 67 v 1 Introduction Have you ever been to a church service that offers translations through the use of FM transmitters? Even though these systems can be effective, they are unnecessarily expensive and bulkyi. Maybe you’ve also noticed during museum tours, the guide is barely audible due to ambient noises in the area. Using Übercaster can solve these problems and more. Übercaster is a small, portable way to broadcast any audio signal for people to hear better and clearer. It works by taking the audio signal that goes into a normal headphone jack and broadcasting that signal on a Wi-Fi network to any Smartphone users within range who have downloaded the free Übercaster app. Imagine the convenience of going to a church service in a different language and using your phone to receive a translation and getting meaning out of what the pastor has to say. Or taking a tour at a museum and hearing everything the guide has to say about your favorite piece of art. One of the motivating goals for this project is to simplify the current method and implement the less-is-more design. The functionality of the transmitter and receiver system is not reduced using WiFi, but made more intuitive and is enhanced. Doing so creates every one with a smartphone to potentially connect and stream. We believe this makes the broadcasting process more transparent to our users. We believe as engineers, it is our job to make sense of the world through science, experimentation and mathematics for those who don’t understand. Our goal is to produce a device that resembles and praises our creator. 1.1 Device Overview Übercaster is a simple-to-use device with a design comparable to Apple products. The device has limited buttons and knobs while still achieving its intended purpose being user friendly and recognizable. The two components to the project are: a router that broadcasts audio through a 3.5mm jack and a Smartphone app (iPhone and Android). Besides receiving the broadcasted audio, the apps also include features such as the ability to change the quality and volume of the stream as well as choose between different available streams. The enclosure of the device provides a 3.5mm jack input for the ability to connect devices like a microphone, guitar pick-up, mp3 player, etc. The router is easily transported and is fully portable with the option to plug in to a normal power outlet. It also survives basic weather changes and in case it is dropped, it survives a 4-foot fall. 1.2 Team Information Team Übercaster is composed of three electrical engineering students and one mechanical engineering student (pictured below). 1 Figure 1-1: Übercaster team from left to right: Robert, Afa, KJ, Nate 1.2.1 Nate Snippe Snippe is an Engineering student with an Electrical & Computer concentration and a German minor. He loves to travel and experience different cultures and lifestyles. In his free time, Snippe loves to go for a run or spend time reading a good book. He has been known to collect and attempt repair of several different kinds of electronics (mainly Xboxes and laptops). After his internship with the United Nations Scientific Committee on the Effects of Atomic Radiation in Vienna, Austria, he used his learned skills of programming and group organization and management to help turn Übercaster into reality. Snippe lead the Android app development and helped organize and manage the team. Snippe is still looking for work post graduation. 1.2.2 Afa Malu Malu is an Engineer with a Mechanical concentration and a Math minor and was responsible for all the mechanical aspects of Übercaster. Even though there are no moving parts to Übercaster, he had a lot to bring to the table when it comes to material selection and circuit area optimization. His understanding of electrical components comes from producing office receptacles for Haworth Furniture during his internship at Innotec located in Zeeland Michigan. Malu’s passion lies in design and analysis of systems, especially in the automotive industry. He hopes to work in the United States after graduation in order to further his knowledge, which would eventually be beneficial for his native homeland, Nigeria. Being the only mechanical engineer in the group, Malu’s efforts were focused mainly on the design of the enclosure and optimization of the space within the device. 2 1.2.3 K.J Yoo Yoo is an Engineering student with an Electrical & Computer concentration and German minor. Yoo has a diverse interest in business, music, languages, technology, and philosophy. He has lived in Stuttgart, Germany, Seoul, South Korea, and Grand Rapids, Michigan. This past summer, Yoo developed a TV scheduler using an Arduino and Google Calendar for Calvin Engineering Department. He also has interned for Porsche Development Center in Weissach, Germany and also at MoNET (The Laboratory of Molecular Neuroimaging Technology) at Severance Hospital in Seoul, South Korea. He enjoys playing piano, violin, and guitar in his free time and plays soccer extensively. After graduation, he hopes to work in the U.S. 1.2.4 Bob VanLonkhuyzen VanLonkhuyzen is an Engineering student in the Electrical & Computer concentration who is passionate about using engineering for missions. He is looking forward to designing the hardware at the heart of Übercaster, and expanding his knowledge of mobile operating system software. He eagerly put to use the knowledge and experience he gained from both of his previous internships: the research on mobile technology for the Christian Reformed Church in North America, and his work with Radio Frequency theory and circuit board layout at the HCJB Global Technology Center. After graduation, VanLonkhuyzen shall be entering the Calvin Seminar, pursuing a Master of Arts in Missions and Evangelism. His efforts for the Übercaster team were focused on designing the software for Apple’s mobile operating system. 1.3 Report Overview This report explains in detail the Übercaster system and what this device requires with respect to electrical and power specifications, physical design specifications, system testing, business and marketing plan for product production, and the management that went into the project. Chapter 2 covers the system architecture of Übercaster giving a technical explanation of how the device functions. The product requirements in chapter 3 contain the customer-driven specifications with respect to all aspects of the device. The electrical system section in chapter 4 contains the different subsystems in detail including design decisions. The power section in chapter 5 explains the power management solution. The physical design section in chapter 6 includes a description of the enclosure, the type of materials, and estimation of the printed circuit board size and layout for Übercaster. The system integration testing section in chapter 7 describes how the design of Übercaster is evaluated compared to the goals we had previously set. The business plan section in chapter 8 includes the market information 3 and the team’s financial estimates for feasibility in starting a business. The project management section in chapter 9 explains each team member’s division of work based on individual expertise, and how the organization has kept the team on track. The helpful advice given to the team by faculty, staff, and mentors is also explained in this section. And finally, the conclusion of the project is detailed in chapter 10 explaining the accomplishments and lessons learned. All references will be included in chapter 11. 4 2 2.1 System Architecture Overall System Design The Übercaster system consists of three distinct, but related elements: (a) the Übercaster, a physical device that accepts an audio signal through an audio jack and broadcasts the signal over WiFi, (b) the Web App, a web page that allows remotely turning on and off the Übercaster, and (c) the Übercaster Client App, a mobile software application that connects to the WiFi signal of the Übercaster and plays the streaming audio to the user. The app accepts the audio stream, decodes it, plays, and presents the user with a webpage that the administrator of the Übercaster can create. We decided on this organization of elements by breaking the entire system down into parts that could be separated without causing serious problems in the workflow of each individual of the team. We began with the whole system: the Übercaster and the apps. Already we found that there was a natural division between the Übercaster itself and the apps that run on separate devices. This gave us two categories of work to distribute. Since there are four members of the team, we could split both of these two elements into two more sections to have an evenly distributed workload. The apps could be divided between operating system, with iOS and Android being the top two operating systems in use.ii The last division had to be in the Übercaster itself. Since there was a lack of mechanical work as of yet, it made sense to divide the Übercaster into an electrical system and a mechanical system. The mechanical system could either be the board layout itself or an enclosure to surround the board. We eliminated the possibility of designing the board ourselves as this would be outside the scope of our project, and be beyond the experience and expertise of our team members. The resulting divisions of the project were therefore two mobile apps, one for iOS and one for Android, the electronics of the Übercaster, and an enclosure to surround the electronics. Now that the project was divided up, we could investigate the specifics of each subsystem and create block diagrams for each. Figure 2.1 shows the block diagram of the overall system’s architecture. Figures 2.2 and 2.3 break down Übercaster and the Client app into their respective system block diagrams. Table 2.1 describes the connections between the blocks in Figure 2.1. Table 2.2 describes the same for Figure 2.2, and the same for Table 2.3 and Figure 2.3, and Table 2.4 and Figure 2.4. 5 2.1.1 Block Diagram Figure 2-1: Top-level block diagram Table 2-1: Signal identification for Figure 2.1 Signal Name Connection Type Number of Signals Protocol Voice Audio 2 (stereo) Analog audio in Copper wire 2 Mp3 data frames Digital audio over WiFi Wireless UDP packets on 1 PCM data frames Mp3 data frames a WiFi channel Analog audio out Copper wire 2 Sound Audio 1 (mono) Configuration UDP packets on a WiFi 1 channel 6 Figure 2-2: Übercaster system block diagram Table 2-2: Signal identification for Figure 2.2 Signal Name Connection Type Number of Signals Protocol Power Signal Copper wire 1 Digital high Analog Audio In Copper wire 2 Mp3 data frames Mp3 over http over udp Copper trace on board 1 Mp3 data frames Digital Audio Over WiFi Wireless UDP packets on 1 PCM data frames a WiFi channel Encode command Copper trace on board 1 Assembly command Host command Copper trace on board 1 Assembly command Html data Copper trace on board 1 HTML document comprised of 7 character stream Configuration Wireless UDP packets on 1 Python command a WiFi channel Store new settings Copper trace on board 1 Assembly command Update settings Copper trace on board 1 Assembly command Figure 2-3: Smartphone and mobile app block diagram Table 2-3: Signal identification for Figure 2.3 Signal Name Connection Type Number of Signals Protocol Digital Audio Over WiFi Wireless UDP packets on 1 PCM data frames a WiFi channel Datagram Copper trace in phone 1 PCM data frames Received data frame Copper trace in phone 1 PCM data frames Saved data frame Copper trace in phone 1 Mp3 data frames Digital audio Flash memory 1 Mp3 data frames Amplified audio Flash memory 1 Mp3 data frames Analog audio out Copper wire 2 Mp3 data frames Connection status Flash memory 1 Cocoa command 8 Html data 2.2 Flash memory 1 HTML document Übercaster The Übercaster receives an audio signal input via a microphone input jack, encodes the data, and transmits that signal over WiFi to other devices. The device sends live audio over the WiFi channel up to 10 connected signals via Smartphones. For simplicity, our device shall be referred to as the Übercaster throughout this document. 2.2.1 Broadcaster The Übercaster was developed using a development board called the Miniand Hackberry A10. A custom built version of the Linux operating system Linaro 12.06 was installed on the board. While the board had more components than we need, it fits our needs very well due to a fast CPU, WiFi module, relatively small size, relatively cheap and an audio input. The software of the broadcaster was developed in the following way. We custom compiled a Linux OS: Linaro Ubuntu. Linaro is group that is seeking to optimize Linux OS for ARM System-on-Chips (SoCs). To save memory on the board, we disabled several functions such as the USB ports and HDMI port so that the CPU doesn’t need to poll. Now that there was an operating system, we needed to make it a HotSpot so that smartphones or laptops can connect to it. So we created a DHCP server and installed Hostapd, which is a user space daemon for wireless access point and authentication servers. So up to this point, any WiFi capable device can connect to the dev board. It is important to note that for the future, when there will be multiple Übercasters in close proximity, to avoid congestion, we will use multiple WiFi channels. The default channel is 6; it is recommended that to avoid congestion a degree of 5 channels be suggested. (i.e. channel 1, 6, 11). We then wrote a small AVSERVER that took in stream from AVCONV and connected it with clients. In Figure 2.4, we see the software stack of the Übercaster system. 9 Figure 2-4: Broadcaster Software Block Diagram It is important to note that the future development of the Übercaster will be based on the Open-Source development board, Olinuxino A13. Later in Chapter 4, it will be discussed in much detail. The operation of the Übercaster follows: an external power button turns on the board. When it boots up, an init script runs automatically setting up the DHCP server, turning on the HotSpot feature, Nginx web server and the Python Admin web app. This script sets up the various programs used by the Übercaster, which will be discussed shortly An audio input such as a microphone, mp3 player, or electric guitar, can be connected to the Übercaster via a standard 3.5mm audio jack on the board. The audio signal is encoded into MP3 format through an open source command line tool called AVCONV. The application layer of the stream uses HTTP, the Hypertext Transfer Protocol. Originally, we wanted to use the RTP, or Real-time Transport Protocol. Our goal for the transport stream was to minimize the latency of data communication between the Übercaster and the client mobile app. We found that RTP achieved the lowest latency of many other protocols. This is because RTP is unidirectional communication: the datagrams are sent from the source with only a timestamp to determine what order 10 the datagrams are to be arranged. There is no communication back to the source to ensure that all the datagrams were received, or for requests of additional data. The protocol focuses on sending the data and does not care what happens after the data is sent. Because of the lack of extra safeguards and informational data, the essential data is transferred much faster. However, because of problems that will be discussed in the next section, we decided to use HTTP instead. This choice sacrifices some latency to gain better usability and integration with mobile operating systems. An HTTP connection is initiated with an IP address and a port number. In our case, we also opened the connection with path to the streaming mp3 file in the Übercaster. The client app sends a request to the Übercaster consisting of ascii characters in a document and terminated with both a carriage return and a line feed character. As dictated by the protocol, the Übercaster responds with a byte stream of ascii characters that make up a message in HTML.iii The data stream is finally sent to the WiFi module on the board, where it is transmitted over a WiFi channel. The Übercaster continuously streams the audio packets, but the connection with the mobile device is initiated when the mobile app opens. The Client App has the source port of the Übercaster hardcoded into it, to effectively require the app to be the only method of accessing the stream. Once connected, the app receives the datagram packets. The connection is terminated when the user either disconnects from the WiFi channel or disconnects from the stream within the app. The software for the users to interact with runs on smartphones using the Google Android operating system or Apple iOS. The smartphone connects to the WiFi channel just as it would to any WiFi channel, as shown in Figure 2.4. The difference is that the user will not receive content from the World Wide Web, but rather audio data transmitted over the channel. 11 Figure 2-5: iPhone 5 connecting to the Übercaster WiFi channel When the user opens up the Übercaster app on iOS, the app initializes and waits for the user to tell the app to connect. The app connects to the Übercaster stream using a predefined IP address and port number. Figure 2.6 shows the main user interface the user interacts with. It is not possible to accidentally connect to multiple streams at once if there are several Übercasters in the vicinity, as each Übercaster broadcasts a different WiFi channel, with unique SSIDs. Since smartphones can only connect to one WiFi channel at a time, the smartphones are by nature limited to connecting to one Übercaster at a time. 12 Figure 2-6: The main screen of the Übercaster client app, once it has connected to the incoming stream Once the smartphone is connected to the WiFi channel and the user opens the app, the app imports libraries including MediaPlayer and AudioToolbox that include functionality for controlling the volume of the audio and building audio queues that are used for all the streaming functions. The app then sets up and builds the user interface. Once this process is complete, the app waits for user input. The user can press the connect button to begin receiving the audio stream, or change views to either the Web Viewer or the About page, which are discussed later. Figure 2.7 shows a block diagram of the code that will now be discussed. When the user presses the connect button, the app constructs the AudioStreamer. The app takes the hard coded url containing the IP 13 address of the Übercaster, the port number of the stream, and the location of the mp3 streaming file in the Übercaster and creates an AudioStreamer object. After this, a message is sent to the AudioStreamer object to start streaming the incoming data. When this happens, the app builds an audio queue that fetches the data, delivers it to the decoder, and then sends the decoded data to the audio player. The amount of data that is fetched and decoded is calculated based on the bit rate of the stream. The queue constantly grabs more data from the stream and delivers it to the decoder until the user presses the disconnect button in the main UI. At this point, the data coming from the stream is pulse code modulated data. It is a raw audio waveform described by digital bits. When the audio queue’s buffer fills, a full frame of audio data has been received. The queue calls the AudioFileStream callback function to deliver the full frame of data to the decoder. The decoder processes the frame of data as mp3 data and pushes it to the speakers, where the user hears it. When the user presses the disconnect button in the main UI, the streaming process is terminated and the streamer object and the audio queue are destroyed. The app also lets the user interact with the stream, as shown in Figure 2.8. The app displays a webpage if the administrator of the Übercaster has created one. The user can press the “Web Viewer” tab at the bottom of the screen to view the web page. When the user taps this tab, the second view controller sets up a web view and sends a load request for the location of the webpage, using the Übercaster’s IP address. The user can then view the web page and browse whatever content the administrator has published. The last tab that the user can access is the “About” page. This page displays some information on who made the app and attributes borrowed code to those who created it. The idea of transparency played a large role in the development of the iOS app. The interface is very simple so that the user is not confused about what information the app is relating. At a glance, the user knows if the app is connected to the stream or not. The user does not need to be bombarded with a lot of technical jargon, so all of the background information is left out, and only the developer knows this information by reading the output of the debugging console. There are no confusing extraneous features, only the web view, which presents the user with useful, and possibly interactive information, enriching the users experience. 14 Figure 2-7: UML block diagram of the FirstViewController and SecondViewController 15 Figure 2-8: The Web Viewer tab of the Übercaster client app 2.3 Web Apps Since the Übercaster has no user interface to configure settings such as making the device private or public, or changing the bit rate of the broadcast. It was necessary to have an Admin control application to change the bit rate of the broadcast. Rather than developing a separate app for Admin control. We decided 16 to implement a secure webserver, which allows anyone connected to the Übercaster to login with an id and password to control the device. This web was built using a python micro framework called Flask. The block diagram of the admin app flow is shown in Figure 2.9. Access Admin Page (http:// 10.0.0.1:5000) Login by typing custom set I.D and P.W Control the device Figure 2-9: Python Admin Web App When a secure connection between the admin controller and the device has been established, the admin controller can then freely turn on and off the stream and set the bit rate. There are pros and cons to building a web app. The pros are it is inexpensive and very easy to setup. It also keeps our philosophy of keeping the design of the Übercaster as simple as possible. The web app enables any device connected to it to be potentially an admin control device. It is important to note, even though universal admin control potential might be convenient, it can pose some serious vulnerability issues if the device lacks secure login sessions. A hacker might easily take over and cause a denial of service attack. It was very important when the web app was created to have a secure login mechanism. This was done by Flask by using the Werkzeug providing a 'secure cookie' as session system. In Figure 2.8, 2.9, 2.10 show the user interface of the Python Admin web app. Figure 2-10: Python Admin Web App Landing Page 17 Figure 2-11: Python Admin Web App Login Screen Figure 2-12: Python Admin Web App Control Page Some other feature of the web app is the public webpage. An Nginx webserver was setup to serve simple html pages as demonstrated in Figure 2.11. Since the web page must handle at least 10 clients, a server load simulation was done using the Apache Benchmarking tool to prove that the webserver is able to handle it. Just as a safety factor I tested the server by having 30 simultaneous requests 10 times. In Figure 2.12 shows the simulation result. The results show that the average time handling the requests is 995ms. 18 Figure 2-13: Public webpage powered by Nginx Webserver Figure 2-14: Nginx Load Test Simulation Result 2.4 2.4.1 Android Goals The drive behind Übercaster is to empower anybody to broadcast anywhere. In order to do this, Übercaster has been designed to be transparent to easily facilitate a person’s approach to technology. Therefore, the Übercaster Android app, like the iOS app, has a simple and basic UI design to provide an easy understanding of its functionality. 19 Keeping in mind each potential user, Übercaster must also be caring by providing making sure broadcasters do not have unnecessary limitation to their broadcasting audience. It is important to include as many people as possible in the ability to receive the broadcast. This means that it is ideal for the app to be functional on Android devices that run at least Android version 2.3.3 of Gingerbread (API 10) and above since it is currently the most used version of Android (Figure 2.15). The final goal is to provide a trust to the user by designing a reliable app. This includes extensive testing of the main functions like limiting the latency of the stream at much as possible. Many applications of Übercaster require live streaming which therefore requires a fast latency of around 100ms. Übercaster was designed keeping this in mind so that people with live streaming applications can trust that Übercaster will provide what they need. This goal proved to be the hardest to achieve and in the end, the latency requirement could not be met with the time allotted. Figure 2-15: A study done by Android to collect data on how wide spread the versions of Android are.iv 2.4.2 Design The design process of this app can be seen as very iterative. Table 2-4 shows different internet protocols relating to the goals of the device. A ‘1’ represents a correspondence with the goal while a ‘0’ means that 20 the goal could not be achieved under those implementations. Initially, the design called for receiving an RTP stream because it was researched to be the best in each of the three different types of protocols. Unfortunately, this was later found out to be false. The Version Availability requirement could not be met with the RTP library for Android (android.net.rtp) since it was released for API level 12 and above (Version 3.1 for Honeycomb). From the study done by Android shown in Figure 2-15, implementing this would mean not being able to reach 39.7% of the android population. Loosing this chunk of the population would not be caring to the users so we either had to spend valuable time trying to implement third party source code or change the communicating protocol. We decided that it is better to sacrifice the latency and have a working app than to have to take the chance that the app would not be functioning at all by the end of the semester. Table 2-4: Design Decisions for choosing streaming protocol relating to our goals for the app. Req. RTP w/ 3rd Party Lib RTP w/ Native Lib Goal RTSP 100ms Speed/Latency 1 1 0 -­‐ Easily Implemented 0 0 1 Version Availability ≤2.3.3 1 0 1 -­‐ User Ease of Use Not Effected Not Effected Not Effected HTTP 0 1 1 Not Effected Once we made this design decision, we moved forward with the Android app development using Android’s native library android.net.rtp. It wasn’t long before we discovered problems while trying to use this library. An app was programmed with android.net.rtp to receive, decode, and play the RTP stream, but nothing could be heard. After hours of debugging and consulting other Android developers, we found that the problem was with the mp3 codec which the audio is encoded with by the Übercaster device. The codec is not supported by the RTP library in Android and the only potential way to build an Android app that receives an mp3 encoded RTP stream is to download the data into a local buffer and converting it to the right codec. Doing this will significantly increase the latency of Übercaster and it will lose the “live” characteristic which we desirev as well as become significantly more difficult to implement. In order to stay true to our deadline, we decided to switch from using RTP to using RTSP to stream the audio signal since the latency in the stream was already compromised. As Table 2-4 shows, we expected it to be easily implemented with the native Android library as well as available with all Android versions. Losing the ability to live stream effectively was the sacrifice we had to make in order to get the app completed in time. After switching to RTSP, Android's native media player library was able to be implemented in order to receive and decode the stream. 21 2.4.3 Functionality A summarizing block diagram of the movement within the app can be seen in Figure 2-16. When the user opens the app on their Android device, a screen with the Übercaster logo appears with two buttons at the top right of the screen called “Connect” and “About” (Figure 2-17) where the user can choose to connect to a broadcasted stream or connect to the Übercaster web server and read whatever the broadcaster has posted whether it be a biography or a donation page. When choosing “Connect”, the user will be asked to connect to the Übercaster network before calling the streaming class (Figure 2-18). If the user already connected, the “Connect” button brings them straight into the streaming activity. If connected to a broadcasting network, the app will then begin streaming whatever is being broadcasted when the ‘play’ button is pushed which gives the application the hard-coded URL which has the broadcasted audio (Figure 2-19). When in the streaming screen, the user has the option to go back or to pause (which turns into a play button after being pressed), stop, or refresh the signal. Each signal calls the build in function of the android MediaPlayer corresponding to each application. The user can also push the “Change Network!” button and be able to go back into the WiFi settings to change the stream that is received if multiple networks are available. Figure 2-16: Summarization of app movement showing simplicity. 22 Figure 2-17: Start up screen for the Android version of the Übercaster app. Figure 2-18: Making sure the user gets connected to the Übercaster network before trying to stream. 23 Figure 2-19: The streaming view of the Android app. 24 3 Requirements For a clear summary of what the Übercaster is capable of, the following requirement sections details the project’s goals. 3.1 Functional Requirements REQ 3.1a: The device shall have a power on/off button The users can easily turn on and off the device within 5 seconds REQ 3.1b: The device shall broadcast audio The audio quality is better than radio. The users can comfortably listen to high quality audio REQ 3.1c: The device shall be able to last at least 4 hours of broadcast time In most situations, we believe that the broadcasting time will fall below the 4-hour mark REQ 3.1d: The device shall be able to connect at least 10 clients REQ 3.1d: The device shall have delay of no more than 100ms It is very hard to listen when there is a delay more than 500ms due to the mismatch in visual and auditory. We believe that 100ms is small enough that the users will not notice the delay. REQ 3.1e: The device shall be water resistant (to rain not immersion) The device will be used outside extensively, so it is important that it is weather resistant to rain or snow. 3.2 Electrical Requirements REQ 3.2.1a: The device shall have a 3.5mm audio input and a power adapter plug. 3.5mm audio is widely used so it is important that this is used. Power adapter plug is needed to recharge the battery. REQ 3.2.1b: The device shall use WiFi communications and the content shall be sent via the UDP REQ 3.2.1c: The device shall be able to withstand a drop from 4ft onto a concrete surface. Since the device will be carried around or used outside extensively, the device should be durable just in case the users drop or step on the device. 25 REQ 3.2.1d: The device shall be able to remain operational in temperatures ranging from -20oC to 60oC The device potentially can be used in various scenarios and environment. It is important that the device functions well in both extreme cases. REQ 3.2.1e: The device shall not radiate more than what is said on the FCC guideline To be sure that the WiFi radiation will not hinder the users and surrounding public, FCC makes sure that that radiation emission is below their limits. 3.3 Software Requirements REQ 3.2.3a: The app shall decode the UDP packets from the Übercaster. The device sends the data using UDP, so it is paramount that the app is able to decode it. REQ 3.2.3b: There shall be a separate iPhone and Android app for the Übercaster. The market for iPhone and Android is large for both, so the potential reach of Übercaster can be significantly increased by developing for both platforms REQ 3.2.3c: The app shall have a volume control and be able to choose a different channel. The app should be simple, but the simple functions should be very functional. Different channel choice can allow a user to switch Übercaster network’s to stream different audio. REQ 3.2.3d: The device shall run a custom Linux distribution. Linux is very malleable in the sense that it is easy to develop upon. It is free and has a large development community that is very active. Linux also allows a sensitive control in the hardware system. REQ 3.2.3e: There shall be a web app for the Übercaster The owner of the Übercaster should be able to control his or her device easily. By implementing a web app, anyone can easily control the device with the right information 3.4 Physical Requirements The physical design of Übercaster is to provide easy portability and durability for the user. 26 3.4.1 Product Weight REQ 3.4.1: The device should weigh no more than 0.50 lbs. The ideal device would eliminate any excess weight for greater portability comfort and safety. 0.50 lbs. is low enough that minimal injuries would occur if dropped on a foot. 0.50 lbs. is high enough for the combined weight of the interior components. A study conducted by Team 10 showed that 0.50 lbs. could be comfortably carried for 4 hours. Having 20 individuals, 10 males and 10 females of varying age, Team 10 carried out the test where a cardboard that rendered to the liking of the device weighing 0.50lbs to be carried around for 4 hours. After the 4 hours, they evaluated the comfort and overall feel of carrying the device. 3.4.2 Product Size REQ 3.4.2: The device should be easily portable (4.0±0.2in. by 2.5±0.1in. by 1.0±0.2in.) The product size should be small enough to fit into a small backpack or carrying case. It is important that Übercaster be portable for street performers who do a lot of moving around. The device is recommended to have similar dimensions to an iPhone but thicker. Dimensions set are as Height: 4.1 in. Width: 2.4 in, and Thickness: 1.2 in. The defined size requires that the layout and size of interior components be minimized as much as possible. 3.4.3 Product Materials REQ 3.4.3a: The device should be durable (refer to REQ 3.2.1c) REQ 3.4.3b: The device should be water resistant (refer to REQ 3.1f) REQ 3.4.3c: At least 70% of the device should be recyclable REQ 3.4.3d: The device should be UV resistant 3.4.4 Product Design Both the interior and exterior design of Übercaster was done in Solidworks. All team members were responsible for designing what they thought Übercaster should look like. The options were considered and the best one (potential component fit, and aesthetical appeal) was chosen. The interior components were not fully determined (size and geometry) when the external design was made. Solidworks rendering of the parts were made once they were determined. The parts were then laid out to fit in the previous external enclosure designed. 27 REQ 3.4.4: One part of the device should not be substantially heavier than the other. It is important that there is even weight distribution within the device for comfort. The component l 3.5 ayout can be assembled to optimize the space available. Power Requirements REQ 3.5a: The device should last a minimum of 4 hours. Übercaster is built to last a minimum of 4 hours. The longest activity projected is street performing. The 4-hour minimum would be sufficient for a performer who takes breaks and can charge the device during that time. REQ 3.5b: The device must have an in-built rechargeable battery and an attachable power cord. REQ 3.5c: Übercaster should also be usable on battery only or when plugged in. 28 4 Electrical System Specification The electrical system specification will concern the development process of the Übercaster device. 4.1 Development Board Choice Our development board was chosen from the following aspects: fast CPU, WiFi module, audio input feature, presence of a development community, reasonably priced and relatively small. While iterating our design specifications for what we decided Übercaster needed, several different development boards were considered for developing our prototype. We started with boards made by Mini-Box and Olimex and after using these boards we realized that the Mini-Box and Olimex boards did not provide the functionality and performance as we expected it to. After a long search and knowing the required performance, the Miniand’s Hackberry A10 was the choice because it beat the others in CPU and WiFi performance and of course the presence of an audio input, which were the three main required components, needed for the Übercaster. From Table 4.1, it is seen that the Hackberry’s A10 has all the necessary components with a faster processor, more memory, a smaller size, and consumes less power than our other choices. Unlike the other boards, the Hackberry has a built-in WiFi module, which can transmit and receive up to 150Mbps, which is more than enough for our project. The Hackberry was the obvious choice. Table 4-1: Different Board Specifications Board Hackberry A10 Olimex Olinuxino A13 pico-SAM9G45 CPU 1.2GHz Allwinner A10 A13 Cortex A8 processor at 1GHz, ARM9, 400Mhz, ARM Cortex A8 ARM926EJ-S, 32/32K Audio input 3.5mm microphone jack 3.5mm microphone jack NONE Memory DDR3 1GB, ~100MB is 512 MB RAM 256MB DDR2 Boot from Micro-SD card Boot from Micro-SD reserved for the GPU Boot Boot from SD card and internal storage via u-boot Power NEMA 2-pin power card 6-16VDC input power supply, 29 6-40V support via DC adapter included Input noise immune design barrel connector AC100-240V-0.4A 50/60Hz Output DC5v Size 110 x 80 mm 120 x 120 mm 80x100mm Power With 3A Li-Ion Battery, it No Info Given No Info Given Consumption lasts 5 hours (drawing 500-700ma) WiFi Module WIFI 802.11n 150Mbit Not Built-In Not Built-In Cost $65 $60.35 $69 Even though there are different kinds of development boards, the Miniand Hackberry A10 fit our need the best due to having a fast CPU, WiFi module, Audio Input and reasonably priced and small sized. 4.2 Custom Printed Circuit Board Now that the proof of concept worked, if Übercaster ever went into full production, we would need a custom PCB that tailored only to our needs. A custom PCB was developed using EagleCad. It is a very popular tool to develop and design printed circuit board. After consulting with Prof. Kim, our team realized that it was impossible to create a PCB with this high frequency, time constraint, lack of in-depth experience and budget. He gave us an estimate that it would take at least 6 months to develop such feat. It was clear that we couldn’t design a custom PCB board in the given project duration from scratch. So we decided to adapt and modify an open source PCB by Olimexvi. We chose the A13-Olinuxino version to base our design. Allwinner’s A13 is an inferior chip compared to the A10 model in the sense that the video processor in A13 lacks a lot of features from the A10 model. Since video processing was not in our scope, we chose A13 because it was cheaper. We also realized that not that much memory is required to run the Übercaster. So even though A13 has a maximum of 512MB RAM it wasn’t an issue. Now using the A13-Olinuxino as a framework, the designing of the Übercaster’s PCB process was a series of massive reduction. Allwinner’s A13 data sheet manual, Olimex’s Board data sheet and schematic outline were heavily consulted to make a custom PCB that had the sole requirements of the Übercaster. Since the A13-Olinuxino was developed using EagleCAD already, it was simple in determining which design software was to be used. Although EagleCAD is not very good at optimizing the board and costs money for the full suite, from different PCB design software that was free such as ExpressPCB, EagleCad, 30 SunStone, and DesignSpark, EagleCAD was still the choice. It is important to understand that Allwinner’s A13 is a System on Chip. What this means that it is not just a CPU, but many different peripherals encased together. In Figure 4.2 the necessary peripherals of the Übercaster’s A13 SoC use is demonstrated. Using the block diagram that is laid out the custom PCB was developed. In Figure 4.3 shows the Custom Übercaster PCB board layout and in Figure 4.4 shows the schematic layout. Key components are outlined in Table 4.2 Table 4-2: Custom PCB Specifications System on Chip (SoC) Allwinner A13 (Cortex A8 processor running at 1Ghz) WiFI Module WM-294 (WiFi 802.11n 150Mbit WIFI module) Memory Hynix H5TQ1SG833BFR (4 x 256MB x8 with two 2Gbit chips) NAND 4GB Audio Input AC97 Power AXP209 Figure 4-1: Custom Übercaster PCBvii 31 Figure 4-2: Custom Übercaster PCB 32 Figure 4-3: Übercaster PCB Schematic Some quick facts about the custom PCB are organized in Table 4.3 33 Table 4-3: Facts about the custom PCB Number of Layers 4 Maximum signal speed 1.5Ghz Total board area 22.09 Inch^2 Part count 244 1 PCB production cost $154viii Cost of Complete Prototype Manufacturing with Enclosure $84.00 per unit* and Packaging @10,000 units *The cost will be explained in the Business Plan section in Chapter 8 4.3 Power Supply Selection A Lithium-Ion (LI) battery is to be used for the Übercaster. Two other battery types were considered: Nickel-Metal Hydride (NiMH) and Nickle Cadmium (NiCd) battery. The criteria considered can be found bellow in Table 4.4. Positives for the LI battery were its high charge/discharge efficiency, its selfdischarge rate, its lack of maintenance, and non-hazardous disposal. The cons were its less desirable operating temperature than NiMH, and its lower maximum charging cycle. We decided that the pros outweighed the cons so went for the LI. Table 4-4: Battery Comparisonix LI-ion NiMH NiCd Specific-Energy 100-265 W-h/kg 60-120 W-h/kg 40-60W-h/kg Energy Density 250-730 W-h/L 140-300 W-h/L 50-150 W-h/L Charge/discharge Efficiency 80-90% 66% 70-90% Energy/price 2.5 W-h/$ 2.75W-h/$ Self-Discharge rate per month 18% 30% 20% Cycles 400-1200 500-1000 2000 Operating Temperature from -20 to 60C from -40 to 60C from -20 to 60C 34 Required Discharge None every 60 - 90 days every 30 - 60 days Disposal Non-hazardous Hazardous Hazardous LI batteries are the most commonly used in portable electronic devices. The Dev Kit used for the Übercaster uses a power input of 5V, which was handled by a rechargeable LI battery. Using the recommendation, it was decided we use a rechargeable 6000mAh 3.3V LI-PO battery. This battery has overcharge and short circuit protection, and has dimensions of 50x34x8mm, which is small enough to fit into the Übercaster enclosure. The Dev Kit used has a built in LI-PO charger that charges the battery to 100% once the battery is detected. There is also a power jack that can be used. The kit accepts a voltage range of 9-30V and has a DC/DC implemented that keeps the power consumption constant no matter what voltage is used. This eliminates the need for a voltage regulator. 35 5 5.1 Physical Design Specification System Enclosure The system enclosure houses the Übercaster electrical and hardware components. It will be designed to be aesthetically pleasing and to meet the previously discussed physical requirements. 5.1.1 Case Design The prototype Übercaster’s visible features include a 3.5-mm jack for a microphone or other device (e.g. guitar), a power button, and a power cord charger port. An image of the prototype can be seen in the below figures. If Übercaster was to go into the market a few variations would be made. A mini USB charging port would be substituted for the current power jack, and broadcast/connected indicator lights would be added to the top of the case. A CAD rendering of the potential final device can also be seen below. Figure 5-1: Prototype Übercaster (Front) Figure 5-2: Prototype Übercaster (Back) 36 The indicator lights were initially supposed to represent the number of devices (smartphones) connected to the Übercaster but our estimates of a maximum of 10 people connected was surpassed. Since over 200 people can connect to the device, and having over 200 lights on the device did not support our “clean” design, the function of the indicator lights changed from indicating how many people to notifying the Übercaster user that audio was being broadcast. USB chargers are very useful for their versatility. Most small electrical devices today have USB chargers which make it very easy for an individual to access a charger even if theirs is not available. We need to care for our customer and having a USB charger does that by reducing the possibility of them losing power to the device without them being able to charge. Figure 5-3: CAD Drawing of Übercaster 5.1.2 Material Selection We decided that a plastic be used for the enclosure because of the combined durability, impact absorption, and ease of molding most plastics have. The potential plastics considered for the production of Übercaster were ABS (Acrylonitrile Butadiene Styrene), Noryl, and, High Density Polyethylene (HDPE). All three materials met the physical requirements for Übercaster, but HDPE has a much lower Modulus of elasticity (170,000psi) as opposed to ABS (320,000psi) and Noryl (350,000psi) so that option was dropped. ABS is the least expensive option for a large volume. Noryl costs $0.35/lbx, and ABS costs 37 $0.30/lbxi. Though the price difference between ABS and Noryl is not that much, ABS was eventually chosen because of its availability. ABS is the most widely used plastic in the production of enclosures. It is used for its strength and toughness as well as its low water absorption, which is important for changing weather conditions. It is also a recyclable material an important goal for being a good steward of this Earth. The drawback of ABS is that it does not do well with UV exposure. To take care of UV rays, three options were considered: 1) The enclosure could be sprayed with a UV resistant paint 2) Black Carbon, which is UV resistant, could be added to the ABS which would protect the enclosure 3) The enclosure could be encased with an aluminum cover. Coating the device with paint would be cost effective (11 oz can/$10xii) however it would not be practical for coating a large number of devices being manufactured because of the time it would take to adequately coat each device. It is also not a permanent fix. Adding black carbon, which cost $2.2/kg, to the ABS resin used to make the enclosure would be a good option because not only does it effectively deal with UV exposure, it also increases the tensile strength of the material from 37 MPa to 52 MPa. The drawbacks to using black carbon are 1) it increases the percentage of water that might get through the enclosure (from 0.023% to 0.11%xiii). Much literature cannot be found on the effects black carbon has to ABS but what has been found says that the material becomes more brittle. An aluminum outer case would be cost effective and it would provide 100% water resistance as well as adequate UV protection. Using an aluminum cover would be the best option for protecting the enclosure from UV exposure. 38 6 Prototype and Year End Deliverables Over the course of the 2012-2013 school year, research and development was done by Team 10 on Übercaster. By the end of the year, there was a functional device. The device was able to broadcast at least one audio signal to the Smartphone of at least 10 people within a 248ft range. The Android app was completed and uploaded onto Google Play Store, while the iOS app was also completed but was not uploaded to the Apple App Store. A prototype enclosure made out of high strength Arcylic was built that adequately housed all the internal electrical and hardware components. A plan of action to proceed with Übercaster as a business, post graduation, was also included in the final deliverables. 39 7 System Integration Testing Because there are three discrete parts that work together closely, we tested all parts separately and in conjunction to ensure that the entire system works as expected. 7.1 Übercaster We began our testing of the Übercaster by testing the AVCONV program. This program has a utility built in that gives a visual representation of the data coming into the program. On the Übercaster board, AVCONV can visualize the audio data coming in through the audio port. With a screen connected to the board via HDMI, we used this to determine if audio data is reaching the board and CPU properly, and if the AVCONV program is properly receiving the data. We then used laptops with Linux and AVCONV installed on them to receive the streaming audio from the Übercaster and play it. Here too, AVCONV gives a visual representation of the incoming data, as well as plays it. The combination of these two feedback systems allowed us to determine if the Übercaster was streaming audio properly. It also allowed us also to test the delay of the audio broadcast. While the board is streaming the audio data, we took two or more laptops, connected them to the Übercaster’s WiFi channel, and began to receive and play the stream. We could hear immediately if the delay was noticeable to the human ear. If it was, we could measure the delay. For example, we connected an electric guitar to the Übercaster and played a riff of quickly changing notes. The delay is easily heard if the quickly changing notes do not match or overlap other notes. The delay could be estimated or measured with a precise stopwatch, if the delay as long enough for human hand mechanics to react to the changes. In our tests, the delay was not large enough to be consistently noticeable to the human ear. In our second round of tests, we discovered that VLC, a multipurpose media player available on OSX, Windows, and several flavors of Linux, was capable of playing UDP streams. We used a MacBook Pro with VLC installed on it to test the range in an environment with walls as obstacles in the way. One team member placed the Übercaster on a chair at one end of the Calvin College Engineering Building. A second team member carried the laptop at stomach level and walked at a constant and even pace away from the first team member. A third team member held an imperial measuring roller to measure the distance the second team member walked form the first team member. The third team member walked with the second team member throughout the testing. Both team members listened to the audio playing on the laptop and waited for a break in the audio. We considered a sufficient break in audio to be half a second in duration. Once a break was heard, the two-team members walked at a slower pace until the audio signal was completely lost. The distance was then recorded in a table. This measurement represents 40 the boundary of the maximum broadcast range. Table 7.1 below contains the data taken during this testing. Table 7-1: Inside range testing data Maximum Range 218 ft +/- 5 ft In our third round of tests, we used VLC installed on a MacBook Pro to test the broadcast range of the Übercaster. We performed our testing in the parking lot behind the Calvin College Engineering Building. Here, there is a lot of open space to measure the maximum, uninterrupted range of the Übercaster’s broadcast. One member of our team stood at one end of the parking lot and held the Übercaster at stomach height. A second member held the MacBook Pro at stomach height and walked at a consistent, even pace away from the first team member. VLC was connected to the audio stream and playing it. A third team member held an imperial measuring roller to measure the distance the second team member was from the first team member. The third team member walked with the second team member throughout the testing. Both the second and third team members listened to the audio playing on the laptop and waited for a break in the audio, and then continued walking at a slower pace until the audio signal was completely lost. This distance was recorded in a table. Table 7.2 below shows the data taken during this experiment. Table 7-2: Outside range testing data Maximum Range 468 ft 2 in 7.2 Übercaster Latency Test Latency testing was a bit tricky. If the latency resolution was couple seconds, the tests should have been pretty straightforward, but due to the resolution being couple hundred milliseconds, it was clear that a finer detection testing was needed. Through a creative process that we developed, we were able to get a very precise measurement of the latency. This is how it works. Avplay, a command line tool, produces a visualization of the sound input on the Hackberry A10 dev board. We had a sensitive microphone plugged into the input of the dev board. So by broadcasting and then locally playing back the audio, we got an 41 instantaneous response of the audio. Now we have a client that is connected and streaming audio. Now here is the part that got interesting, the Avplay has a moving bar that refreshes everything in its path. On my 22 inch TV screen, it took the bar about 10.26 seconds to go from one end to the other. Now when we spoke into the microphone, we got an instantaneous response on Avplay, a white mark. After a brief moment, we got a sound on the client device and the mic picks up the sound. We essentially looped the audio to determine how long it took to go around the circle. (See the picture below) So then by simple division, we were able to get a good estimation of the latency. It is important to note that the latency varied from 75-300ms. We believe this was due to missing packets and buffering. Figure 7-1: The Latency Measurement 7.3 Übercaster Client App Testing the mobile app began by ensuring that the app builds without errors. Making sure that the code is syntactically correct is an essential, but often overlooked, facet of testing. Once the app is built, it was loaded on to one or more testing devices. For the iOS app, a 4th generation iPod Touch using the armv7 architecture and running iOS 5.1, and an iPhone 5 using the armv7s architecture and running iOS 6.1 were used for testing. We were able to learn a lot from this first test. Whenever any change was made to the app, it was built and run on a test device to ensure that the changes worked as expected. For example, we wanted the volume slider on the screen to integrate with the volume buttons on the side of the Apple device. After adding the proper code to perform the task, the app compiled and built correctly. But when the app was run on an actual device, there were two volume sliders on the screen. This showed us that 42 even though the code was syntactically correct, there was a problem with our implementation of the code, and this had to be changed. We deleted one of the volume sliders form the storyboard and unlinked its code from the volume view, and then recompiled and rebuilt the app. When we ran it on a device the second time, there was only one volume view and it worked properly. The second part of our testing was to make sure that the app could run not only on different operating systems, but on different architectures and different screen sizes. The app was optimized for use on iOS 5.1 and later and to run on both the armv7 and armv7s architectures. It also has the capability of shifting elements on the screen to properly fit on both the 3.5” and 4” screens. Now that Apple has devices with two screen sizes, apps must be able to support both of these sizes. This is important not only to be competitive in the App Store, but to maintain our design norm of caring. By supporting many different device screen sizes, many operating systems, and many architectures, users do not need to go out and spend money to buy new devices that are able to run the app. They can use the technology that they already have. For the people that have the new technology already, they do not have to worry that the app will not run properly or look bad because it supports old hardware or different screen resolutions. Users can be confident that no matter what device they use, the experience will be the same across any device. Next, the app was tested to see if it was accepting the audio stream data from the WiFi channel. This was done by adding some code to the app that printed to the Xcode terminal information about the data frames received, such as frame byte size and presentation time. If no data showed up, no debugging information was printed. Also, this testing phase was only implemented when testing RTP streaming. We learned from this phase of testing that RTP would not fit our needs as we had originally thought. The amount of time and effort that it took to get the app to a point that it could be tested for stream receiving functionality was too great and would not give leave us enough time to complete the app by the end of the semester. We decided to change from RTP to RTSP streaming. These two streaming protocols are similar, but community documentation for RTSP exists in much larger volumes and is much more understandable than that for RTP. The next phase of testing occurred after the transition to RTSP streaming. We tested to make sure that the transition did not break any functionality that was in place and working for RTP streaming. The app still received the frames of data from the WiFi stream, and the debugger output showed that this worked. Once the app received the data frames as it did before the transition, the next phase of testing was performed to see if the frames were being decoded and could be played back to the user. When the audio queue and decoder were written and integrated, some code was added to display a message when a frame of data was decoded. It was not necessary to add any code to test if the decoded frames were being played as we only had to simply listen to the device to hear if the playback was working properly. After building the app and running it on a device, we connected it to the Übercaster 43 network, played music through the Übercaster, and pressed the connect button in the app. The app printed debugging messages for both receiving the data stream form the Übercaster and for decoding the data. But on listening to the device, the sound coming from it was not the music that we should have heard, but static noise. We learned from this test that the data was being decoded, but not in the right manner. The decoding process had to be changed to properly decode the frames. We also learned from this test that, while we were able to make significant progress in using RTSP streaming instead of RTP streaming, using the real time streaming protocol would still take longer to finish implementing than the time we had left to complete the project. As a result, we decided to switch the protocol once again from RTSP to HTTP. Our reasoning for this switch was that both Apple and Android natively support HTTP streaming, and there was significantly more documentation on the use of HTTP streaming as a result. There was still a problem, though. HTTP streaming has a higher latency than RTP and RTSP streaming. We made the design decision to sacrifice some latency for ease of implementation. Instead of using third party libraries, we could use native libraries provided by Apple and Android to implement the streaming, and therefore have a usable app sooner than using the live555 or ffmpeg libraries. Once the http streaming code was written, we began our next phase of testing. Because the framework of HTTP streaming is highly documented by Apple, we decided to take a risk and skip right to testing if the decoding and playback of the app worked. We played music through the Übercaster, started up the app and connected to the stream as before, and we listened for the sound that the app would play. The app played exactly what was being input to the Übercaster’s audio jack. Admittedly, this last test could have been performed more recursively and thoroughly, but out gamble definitely paid off in this case, and saved us a great deal of debugging and testing time that we used to add extra features to the app. One of these features was the web viewer. Testing the web viewer was relatively simple. After the code was written for the web viewer, the app was compiled and built, and run on a test device. After connecting to the Übercaster network, we opened the app and tapped the web viewer tab. The web page that we had created loaded just as it should. Finally, an overall functionality test of the app was performed. We wanted to make sure that all of the separate parts of the app worked at the same time, regardless of what parts were already running, and what order they were initiated. Our first test checked to make sure that the web view would load if the audio streamer was running in the first view controller. We did not want switching views to terminate whatever processes were running in the view. After setting up the Übercaster, we ran the app and connected to the stream. When music was playing, we opened the web viewer. The web page we created loaded right away, and the music continued to play without any noticeable gaps or glitches. We then wanted to run a test for the opposite scenario: loading the web page and then opening a stream. After 44 setting up the Übercaster and force quitting the app so that any previous data was cleared, we ran the app and opened the web viewer. Once the web page loaded, we switched to the first view and connected to the audio stream. The app played the stream just as it should, with no problems. This meant that the view controllers were distinct and could run separately, without interfering with each other. We then tested the apps to see of hardware differences caused the streaming process to change in any way. We loaded the app onto the two different test devices that are detailed above: the device running iOS 5.1 on the armv7 architecture and the device running iOS 6.1 on an armv7s architecture. We opened the app on both devices, connected both to the Übercaster network, and then pressed the connect button on both devices at the same time. We listened to the audio coming from both devices and determined that the audio was in sync. We then let both devices run the app for half an hour. At the end of this time, we listened to the audio of both devices again. We determined that the device with the newer and faster armv7s architecture was ahead of the other device by a fraction of a second. We decided that this is acceptable for several reasons: first, the delay is very small and is not significant to cause users any annoyance. Secondly, users will nearly always have only one device each that they are streaming to, and therefore will not notice if one device differs from another in stream speed. Third, in the unlikely event that a user is using several devices, the user would need to stream for a long time in order to notice any differences in stream speed. While this is a good possibility, the fact still remains that the user will have a hard time noticing any difference in stream speed. 7.4 Übercaster Web App We have tested the admin app with the smartphone and laptop. The admin works by the user accessing the webpage at 10.0.0.1:5000. The user then can input the id and password to login. The user then can control the Übercaster. The user can turn on and off to minimize battery consumption. 7.5 Übercaster Physical Structure Testing the physical structure began by fitting all internal components inside the enclosure. Once this was done, the device was weighed to make sure it was below the specified maximum weight. The weight and other physical attributes were then used to test the durability of the device. Using the following equations 𝑣= 𝑣! ! + 2×𝑔×𝑠 1.1 𝑣! 2×𝑑 𝑎 𝐺! = 𝑔 1.2 𝐹! = 𝑊×𝐺! 1.4 𝑎= 45 1.3 𝑃! = 𝐹! 𝐴! 1.5 Where v is velocity upon impact (ft/s), 𝑣! is initial velocity (ft/s), 𝑔 is acceleration due to gravity (32.2ft/s2), s is falling distance, 𝑎 is rate of deceleration (ft/s2), d is deceleration distance (ft), 𝐺! is GForce, 𝐹! is force at impact (lbf), W is weight of device (lbf), 𝐴! is impact area (in2), and 𝑃! is pressure exerted on impact area (psi). These equations show the effect of dropping the device on a hard surface from a height (s). The stress endured by the device due to the pressure would be found using computer aided design (CAD) software. The actual calculations can be found below. W = 1 [lbf] Vol = 5.125 [in] · 4.5 [in] · 2.125 [in] s = 4 [ft] g = 32.2 [ft/s2] v0 = 0 [ft/s] d = 0.25 [in] Velocity Upon Impact v = [v02 + 2 · g · s]1/2 Rate of Deceleration 𝑣! 𝑎= 1[ft] 2·d· 12[in] G-Force ! Gf = ! Force of Impact Fi = W ·Gf Surface Area of Impact Ai = 2.125 [in] · 1 / 4 · p · 2 · 0.3 [in] Pressure of Impact ! Pi = ! !! SOLUTION Unit Settings: Eng F psia mass deg a = 6182 [ft/s2] Ai = 1.001 [in2] Cs = 362594 [lbf/in2] d = 0.25 [in] Fi = 192 [lbf] g = 32.2 [ft/s2] Gf = 192 Pi = 191.74 [lbf/in2] s = 4 [ft] v = 16.05 [ft/s] Vol = 49.01 [in3] v0 = 0 [ft/s] W = 1[lbf] Ys = 6160 [lbf/in2] Solidworks, a design program, was also used to simulate the enclosure being dropped from various heights. Results of how much Von Miss stress and displacement occurred can be found in the below table and graphs. 46 Table 7-3: Drop test results Distance(ft) Von Miss Stress (Mpa) Max Displacement (mm) 4 16.9 0.6 5 18.2 0.63 6 19.8 0.68 7 21.4 0.74 8 22.9 0.79 9 24.3 0.84 10 25.8 0.89 Von Mises Stress (Mpa) Drop Test Height Vs. Stress 30 25 20 15 10 4 5 6 7 8 9 10 Height (ft) Figure 7-2: Stress Experienced at Dropped Height DeYlection (mm) Drop Test Height Vs. Max DeYlection 1 0.9 0.8 0.7 0.6 0.5 4 5 6 7 8 9 Height (ft) Figure 7-3: Displacement Experienced at Dropped Height 47 10 To reduce complexity of the testing, it was decided that the simulation should be done with the device being dropped on an edge which would account for the worst case scenario. If the device passes the test at its most critical point, then it could be assumed that the rest of the device would endure a drop from the specified height. An image of the simulated “dropped” device can be seen in the bellow figure. Figure 7-4: Simulated Dropped Enclosure Initially, heat vents were considered to be added to the design. Having vents would deal with overheating of the device; however they would also cause a problem for REQ 3.1e, which states that, the device should be waterproof. To test if the vents were required, we ran the Übercaster for 32 hours straight and felt for how hot it got. The components did not get hot to the touch, so it was determined that vents would be surplus to the design. 7.6 Übercaster Current Draw Test We wanted the device to last 4 hours at least when it was actively broadcasting. We tested the current draw of the board when it actively broadcasting. Figure 7.2. In a 10-minute test period, the current draw ranged from 467mA to 584mA when broadcasting and a current draw of 380mA – 400mA when it was on IDLE setting. 48 Figure 7-5: The Current Draw Test Setup 7.7 FCC Regulation Test We realized that if our product were going to go on market, it would need to pass a rigorous FCC test. Radiation is a issue that is often times overlooked, since we are transmitting via high radio frequencies, it is very important that our product doesn’t harm anyone. We want to be good stewards and be transparent about the potential harm, if it ever imposed any. In 15.245 of the FCC guideline, it says that products using bands 2435-2465 MHz need to have the following specifications. Table 7.3 shows the limits of the harmonic and fundamental field strengths. Table 7-4: FCC regulation test results Fundamental frequency Field strength of fundamental Field strength of harmonics (MHz) (millivolts/meter) (millivolts/meter) 2435-2465 500 1.6 Since we will be frequency hopping, if needed, to minimize congestion, we will also need to meet the requirements of the following statement. “Frequency hopping systems in the 2400-2483.5 MHz band shall use at least 15 channels. The average time of occupancy on any channel shall not be greater than 0.4 seconds within a period of 0.4 seconds multiplied by the number of hopping channels employed. 49 Frequency hopping systems may avoid or suppress transmissions on a particular hopping frequency provided that a minimum of 15 channels are used.” We realized that the chip used in the USB Wi-Fi module (Realtek RTL8188CUS) was already approved by the FCCxiv . This resulted in a safe promise that the FCC requirements were met and that we can safely inform the users that the Übercaster is FCC approved. 50 8 8.1 Business Plan Vision and Mission Statement Übercaster’s vision is to create a product that is simple, distinctive, and reliable. The product should be something that everyone can use and love. We want to personalize broadcasting anywhere. We want to build a product that is efficient in terms of production. We want to research and find innovative ways to improve our product further, so that it may perform better and drive the price down. We want to implement the latest technology such as the new 802.11ac protocol. We want Übercaster to be an experience, not just a product. We respect greatly the designs of Dieter Rams and Jon Ives. Our design philosophy is not simplicity just for the sake of simplicity, but functional simplicity. 8.2 8.2.1 Industry Profile and Overview Competition Our competitions to Übercaster can be broken down in two categories: WiFi/4G broadcast and FM broadcast. WiFi/4G broadcast competitions are a company called LiveStream, Ustream, and Spreaker. LiveStream broadcasts in Real-time HD videos to the Internet via WiFI, 4G, and the Ethernet. Ustream and Spreaker are alike in the sense that it allows users to easily broadcast themselves using the Internet with a Computer or an iPhone, however both of them depended on an Internet service provider or a carrier. The distinct feature about the Übercaster is that it is a Hotspot. We broadcast locally, not to the Internet. FM broadcast competitions are Vox Network and Williams Sound. Vox Network distributes FM receiver and transmitter devices to tour guide industries and Williams Sound develops and distributes FM systems worldwide. 8.2.2 Limitations and Regulations Since Übercaster allows anyone to stream any audio signal, there is a chance that Übercaster might run into problems concerning the issue of copyright. YouTube, Napster, and Kazaa had to shutdownxv or had to pay reparationsxvi for the copyright infringement to recording and media companies. Since this is broadcasting, if we wanted to market the product in the US or in Europe, we would have to pass a rigorous test by FCC or BEREC. Radiation is a issue that is often times overlooked, since we are transmitting via high radio frequencies, it is very important that our product doesn’t harm anyone. In 15.245 of the FCC guideline, it says that products using bands 2435-2465 MHz need to have the following specific fundamental and resonance field strength. 51 8.2.3 Trends in Society The current trend in society is to have a product that is highly functional, but also looks beautiful. Apple is a master of this. They have very innovative products that are intuitive, beautiful, and powerful. Sharing one’s individuality seems to be more prominent more than ever through YouTube, Facebook, Kickstarter. Now anyone can broadcast his or her individuality without the dependence of an infrastructure. 8.2.4 The Cost of Entry We believe that the cost of entry is $1,106,900 assuming that 10,000 units of Übercasters are sold. The detailed analysis and report is found in section 8.8. If we ever pursue to market the product, we are hoping to receive funding from StartGarden and let distribution and manufacturing companies take stake/equity in the company in exchange for reduced costs. 8.2.5 Necessities for Success Our company is relying on the fact that people want to personally broadcast information and that the smartphone sales increases more and more. Organizations such as churches and museums must be willing to try a different way of broadcasting than FM transmitters. 8.2.6 Projections for the Future After TwistThink, a design company in Holland MI, showed interest in our idea, we realized that there could be partnership in the future. I proposed to Mr. Ryne DeBoer, new business developer at TwistThink, whether they would be interested in taking equity if we do start a company. Übercaster would then get help from their engineers and designers. We also had correspondence and meetings with Rick DeVos and the StartGarden team to share our vision. We had very positive response and our team believes that we can get initial seed funding to kickstart our development. We also got the approval to test the Übercaster during ArtPrize. Our goal is to stay lean as possible and grow organically as much as possible. We are designing our product so that museums, street musicians, and tour guides can use it. We are proud to say we are in contact with at least one from each market: The GRAM, The Busking Project, and a local tour guide company in Grand Rapids. Our company plans to further improve the initial design. Since our product is a niche market, it would be economically more beneficial to go international initially. We want to implement the newer WiFi module that uses the 802.11ac protocol. We want to have a chat function so that clients can chat with each other. 52 8.3 8.3.1 Business Strategy SWOT Analysis Strength: Unique. There are products with the similar philosophy to change the way people broadcast, but our method is unique in the sense that it is service provider independent. Übercaster is focused on the near field range, not the world. Weakness: no capital, relatively low tech. The technologies that are used in the Übercaster is low tech. The Übercaster can be built relatively easily. Also with the increasing performance of the smartphone, it might be possible to eliminate the hardware aspect of the Übercaster. Opportunities: Work with World Federation of Tour Guides Association, ArtPrize, GRAM, and The Busking Project, Witte Travel and Tour to promote the use of Übercaster. Partner with manufacturing companies in China. Threats: Large designers implement our function in smartphones. China develops a lower cost version of our product. 8.4 8.4.1 Marketing Strategy Target Customers From our market research, we have determined there is a large potential for customers in Tour guide systems for museums, streaming live music at music venues, translations or audio enhancements for churches, and live music streaming for street musicians to receive a larger audience. These are the markets we shall mainly focus on but there are others that shall benefit from our product as well. 8.4.1.1 Tour Guides After talking to the tour guide director of Witte Travel and Tour, Mr. Nate Barendse, he said that it would save them quite a bit of cost by not purchasing a FM transmitter and receiver set said they just paid $4000 for 1 transmitter and 50 receivers system. They are a pain to manage (battery change, lost, stolen, broken devices) Übercaster can be used in loud and quiet places, which allows for a wider variety of applications for tours. Tours can be given in quiet museums or in city streets with loud ambient noise. Some tour guides use FM transmitters and receivers to handle the situation. However, this can cost anywhere from $2,000 to $6,000xvii as demonstrated by Witte Travel and Tour. Übercaster’s goal is to have one device that transmits and audiences can use their smartphone to listen in. Tourists can stream the 53 content directly to their smartphone whether it is live or recorded. This application received a very positive response from the local tour guide company. 8.4.1.2 Public Events For large audiences, we are developing a larger scale version of Übercaster that shall allow several hundred listeners to connect and stream the audio live. This shall mainly be for large concerts in which people want to hear the musicians without ambient noise. We met with met with Rick DeVos and rest of his team at StartGarden to present our product. We got the permission to use our product during ArtPrize when we felt that Übercaster was ready to be tested. The team also suggested that we submit our project on StartGarden. 8.4.1.3 Street Musicians Street musicians can simply plug their instruments into Übercaster and broadcast to audiences within a 450 ft. radius like shoppers or bystanders who want to hear without ambient noise. Nick Broad, the founder of the Busking Project, has been in contact with us quite a bit. He has connections to 4000 street musicians worldwide. He connected me with few well-known street musicians such as Dave Crowe of HeyMoonShaker and Bryson Andres. We shared our idea and vision with him and both of them had a very positive response saying they would definitely be interested in getting one whenever they are available. 8.4.1.1 Museums Museums really use to amplify the interaction between the tourists. Currently a lot of museums use VOX system, which is a looping playback player. However the cost of these devices are once again irrationally high and also it is hard to manage. Also It often times disappoints the tourists because they must pay a high fee to rent out these devices. By having multiple Übercaster through a museum, tourists can easily access the device and stream audio or rich media content. 8.4.2 Customer Benefits In general, customers benefit from the following: saves cost by using less hardware than previously used and broadcasts becomes more personal. Übercaster allows for social broadcasting. In the future, we will include features like chat and website function built into the Übercaster. 8.4.3 Market Size There are 17,500 museumsxviii in the U.S, thousands of street musicians, and 95,000 churchesxix in the U.S as well. We contacted TheBuskingProject.com to ask about the approximate numbers of street musicians 54 in the U.S. We got a message back saying that the number of total street musicians is unknown. From the email I received from Nick Broad, who is the founder of The Busking Project, he said that his website has 4000 registered street musicians around the world. There are approximately 200,000 individual tour guides across 70 different countriesxx. We imposed a hypothetical question to both The Busking Project and the World Federation of Tour Guides Association by asking for their estimation of people who would be interested in this product. Busking Project said about 2000 and from the 200,000 individual tour guides from their database, they expected at least 8000 would be interested in using our device. When we talked to Witte Travel and Tour, the tour guide director ‘purchased’ 20 Übercasters on the condition it did what was pitched by our team. 8.4.4 Logo Display Each team member designed their own logo and out of each, one shall be chosen for use for each of our implementations of Übercaster including the main screen on the app. 8.4.5 Pricing Based on our estimates from the market size, initially we plan to sell 10,000 units. In order to break even, we need to sell at a price point of $130. The calculation of the price can be found in the financial statement section. 8.4.6 Advertising Our company shall use Google AdWords to set up campaigns. By using keywords such as “Wireless audio transmitter” or “personal broadcaster,” we can reach on a monthly average basis of 1.3 million users. We shall ask bloggers and tech writers to do a story and review of Übercaster such as on TechCrunch, The Next Web, and Gizmodo. Informally we shall an AMA on Reddit and start a KickStarter campaigns. 8.4.7 Production We will make use of the one stop manufacturing company, Arcadia Concepts. They gave us a quote of $84.00 per device if we made around 10,000 units. By using labor in China, we can reduce the costs drastically. 8.4.8 Distribution We have been talking to a company called Williams Sound. Williams Sound is an international distributor and producer in FM transmitter and receiver devices. Williams Sound has market presence, so it would be a great partnership to manufacture the devices in China and use Williams Sound as a channel. We made a 55 very convincing case suggesting that the Übercaster can really revolutionize what it means to broadcast locally. 8.5 8.5.1 Financial Analysis Forecasting The United States economy is still recovering from the recession. As a result, early adopters and investors are hesitant to take up new products for fear of losing valuable capital. By the time Übercaster is ready to roll out the first product, however, the market conditions shall be better and more favorable to new products and ideas. 8.5.2 Key Assumptions Rather than setting up a ‘full’ business, we thought that it would be convenient as well as economical to partner with two major companies: Arcadia Concepts and Williams Sound. Since the production and distribution channels of the companies are well setup, it would be, initially, the best way to start our business. We start as a fabless small company. We will make use of consultants to save costs in the initial years. We are assuming that we sell at least 10,000 units in the first year based on our market size study. We are assuming that we can partner with Arcadia Concepts and Williams Sound. We assumed that we would have a steady annual sales growth of 30%, which is a typical growth rate for a small successful company in the initial years. We are also assuming that our revenue is constant throughout each month. We will base our fixed and variable costs on producing 10,000 units. We are assuming that we will have the minimum capital to start our business. 8.5.3 Financial Statement Based on costs shown below, the financial statement has been devised in Table 8-1. Variable Costs Prototyping Consulting Engineers Attorneys and Legal as Consultants Accountants and Financial on Consultants Cost Justification $1,500 $20,000 $8,000 5 custom designs @ $300 200 hours at $100/hr $200/hr*40hr = $8000 $6,500 $165/hr*40hr = $6500 PCB and Enclosure production/Assembly Packaging $840,000 Arcadia Conceptsxxi 56 Shipping Costxxii $125,000 Total $1,001,000 Fixed Costs Cost Insurance $5,000 Website $10,000xxiii Total $15,000 Overheadxxiv Entrepreneur $12.50*10,000=$125,000 Cost Justification $65,000 Engineer, CEO, Marketer Research and Development Fringe Benefits Total $20,000 Extraneous Costs to cover further development of the product $5,900 $90,900 Grand Total $1,106,900 Table 8-1:Übercaster Financial Statement Sales revenue Variable Cost of Goods Sold Fixed Cost of Goods Sold Depreciation Gross Margin Variable Operating Costs Übercaster Pro-­‐Forma Statement of Income 1,300,000 1,001,000 -­‐ -­‐ 299,000 15,000 57 Year 1 1,690,000 1,301,300 -­‐ -­‐ 388,700 15,000 Year 2 Year 3 2,197,000 1,691,690 -­‐ -­‐ 505,310 15,000 Fixed Operating Costs Operating Income Interest Expense Income Before Tax Income tax (40%) Net Income After Tax Beginning Cash Balance Net Income After Tax Depreciation expense Invested Capital (Equity) Increase (decrease) in borrowed funds Equipment Purchases Ending Cash Balance 8.5.4 90,900 193,100 -­‐ 193,100 77,240 115,860 90,900 282,800 -­‐ 282,800 113,120 169,680 90,900 399,410 -­‐ 399,410 159,764 239,646 Übercaster Pro-­‐Forma Statement of Cash Flows -­‐ 115,860 -­‐ -­‐ -­‐ -­‐ 115,860 Year 1 115,860 169,680 -­‐ -­‐ -­‐ -­‐ 285,540 Year 2 Year 3 285,540 239,646 -­‐ -­‐ -­‐ -­‐ 525,186 Break-Even, Revenue, and Profit Analysis If we are able to sell 10,000 units at $130 then our revenue shall be $1.3 Million in our initial year, which means we will have a profit of $115,860 after tax. If we grow at the assumed rate, then our cash balance will increase 8% in the first year and then 19% in the 2nd year. The analysis is shown in Table 8-2. Table 8-2: Analysis and Justification of Break-Even, Revenue, and Profit Analysis Justification Break-Even Unit 8515 Units Revenue $1,300,000 Total Costs $1,106,900 Profit after 40%Ttax $115,860 58 9 Project Management Designing and producing the Übercaster prototype depended on the scheduling and structure of tasks distributed among the team members. Management of our project was one of the most important aspects in moving forward with development. A lack of management is an ignorance of knowing how team members function and work together. The main side effect is a lack of communication which leads to slow progress and poor team member relationships. Our team has been through the ups and downs of these project management effects but has come out gaining valuable experience in learning how to work on a large project with a diverse team of engineers. We have done our best to overcome these struggles and to finish our project with something we are proud of. 9.1 Team Organization Through the use of online applications like Trello (Fig. 10.3) and Smartsheet (Fig. 10.2), we have organized and assigned tasks to be completed. We have also set up means of communication with each other in order to evaluate how each member is progressing with their tasks and redistribute the workload if needed. Organizing the team means setting the workload to be consistent and smooth. To do this, each team member has been assigned responsibilities corresponding to their strengths. 9.1.1 Division of Work 9.1.1.1 Bob Because of his experience in iPhone app development, Bob has taken on the client and admin aspects of the smart phone applications on the software side of Übercaster. He has also had experience in designing PCB boards in a past internship, which shall help in designing our PCB board with the components tested with the development boards. 9.1.1.2 Nate For most of the year, Nate took on the role of project manager. Having this role means assigning and scheduling tasks, planning the meeting times, and making sure each team member keeps the others accountable for getting their tasks finished. Because this role was sometimes put on the back burner due to a busy last half of the semester, KJ took over the role. Nate has also contributed a major role to the Android app development. 59 9.1.1.3 Afa Afa has been assigned all the mechanical aspects of Übercaster since he is the only mechanical engineer in the group. He shall be designing the enclosure for the PCB which includes finding the best materials to use and optimizing the space within the device. Afa is also in charge of the power management and try to minimize its power consumption and allow a decent battery life. 9.1.1.4 KJ The concept developer was assigned to KJ. This means he was responsible for making Übercaster come alive. He works with the embedded software and hardware of Übercaster. He also is in charge of the network protocol making sure the WiFi network can be created and that audio can be broadcasted. He is the team’s researcher for finding the best development boards to accomplish our goal and understanding how the transmission from client to host shall work with Übercaster. KJ also manages the budget and is in charge of analyzing our business and market capabilities. 9.1.2 Team Advisors and Support The team’s primary advisor is Professor VanderLeest from Calvin College's Engineering Department. Also in the College’s Engineering Department is Professor Kim who has helped a great deal with showing us the steps we should take for making a proof of concept and moving on from there. Prof. Kim has also sponsored us by providing one of our development boards for testing the proof of concept. Professor Medema from the Business Department teaches the concurrent Business Aspects for Engineers course and has helped a great deal with our business plan. Bob DeKraker, the Department Lab Manager has helped us order the parts we need. The team also set up meetings with Twisthink and Start Garden to talk about the feasibility of our project and possibly turning it into a business. Both meetings were fruitful and we received great feedback on our device. They liked what they saw and shared some ideas on what the direction of our project should take and what kind of markets we should be tapping into. For the Android development, we received guidance from Stephen Clemenger who is a fellow student that has had experience with Android app development. He helped debug he issues we were having the RTP stream and recognized the problem of the android.net.rtp library not having the necessary codec needed to decode the audio signal. 60 9.1.3 Team Meetings The team puts in an effort to meet at least once a week outside of class go over upcoming deadlines and make sure everyone is on track with their assignments. We try to keep each other accountable and help out when another team member is overloaded with assignments. If tasks are finished early, we take on more responsibilities to lighten the load later in the year. 9.1.4 File Management In order to keep our assignments and files organized, we set up a Dropbox folder which acts as a normal folder on each of our individual computers but all files in that folder is shared with the other teammates (Figure 9-1). Our Dropbox folder is divided into sub-folders for hardware, software, mechanical, business, and anything that is important and large enough that needs organization. We also use Google drive to make and store block diagrams and other designs using Lucidchart. Figure 9-1: The top level organization of our file sharing structure utilizing Dropbox. 61 9.2 Schedule Early in the project we created a Work Breakdown Schedule (WBS) in which we planned the tasks for the whole year deciding what needed to be done and when it should be completed. Over the course of the year, it has been edited to reflect a better understanding of certain tasks as well as design decisions. It can be downloaded and viewed herexxv. In order to visualize what tasks need to be done and better prioritize them, we use the website https://trello.com (Figure 9-2) and assign tasks to members of the team and estimate times for them to be finished. Trello only shows upcoming tasks. For a look tasks for the whole year, we turn to our Gantt chart which is compiled on https://smartsheet.com (Figure 9-3). Figure 9-2: Organizing and scheduling tasks through Smartsheet. 9.2.1 Schedule Management Using tools like Trello and Smartsheet, the project manager can easily visualize what needs to get done and communicate with the team members so that each member knows what still needs to be done. An example of this website can be seen in Figure 9-2. Every week, Nate reminds the team what needs to be completed and makes sure everyone does his or her part. The schedule is important to maintain in order to stay on track with design. We must also stay on schedule to take into account any unforeseen setbacks and be able to adjust for them. 62 9.2.2 Critical Path Übercaster has four different areas which have their own critical paths: Mechanical, Hardware, Software, and Business. There is a necessary sequence of events inside and outside these four areas since tasks in some of these depend on tasks in others. For example, designing the enclosure requires a significant amount of knowledge of the development board’s dimensions so it is critical to obtain the necessary development board before the enclosure design is made. Dependencies like this are accounted for in our Gantt chart and have ultimately shaped our critical path (Figure 9-4). We anticipate unexpected deviations from our plan which shall prevent us from making our later version of Übercaster (Figure 9-5) but our goal is to build and test our created design by Senior Design night. Figure 10.6 below shows these major tasks and when we expect to be finished with them. Figure 9-3: Example of how we utilize trello.com 63 Figure 9-4: Desired Critical Path From First Semester Übercaster v0.1 Übercaster v1.0 Übercaster v2.0 Have Dev. Board be able to: Include v0.1 and: Include v1.0 but: - Broadcast WiFi network - Make enclosure for dev. Board - Have designed PCB - Play MP3 - have the board battery powered - Have enclosure for PCB - Play back audio from mic - Have updated Smartphone apps. - Have desired functionality - Broadcast audio on network Have Smartphones be able to: Have Linux Machine be able to: - Download our app. - Connect to network - Connect to network - Stream audio from network. - Stream audio from network. Figure 9-5: Desired versions of Übercaster to be achieved by end of year. 64 9.2.3 End of the Year Schedule Assessment The critical path in Fig. 9-4 shows that many of the tasks were completed far behind schedule. This proves that when working on a project like this, things do not often get completed on time and is important to schedule a buffer time near the end of the project. For some of the tasks, we were able to achieve an appropriate buffer time but other tasks were nearly left uncompleted. Another way to see the effort put into completing the tasks on time is to look at the hours from the entire year in Table 9-1. The last week before the project needed to be finished was when the team members put in the most amounts of hours from the entire year. The team ended the first semester with a total of 178 hours and was far behind schedule. Since the proof of concept was not completed at the end of the semester as was planned, the team estimated that they were around 35% finished with the project. Thanks to KJ, Übercaster v0.1 (from Figure 9-5) was born in late January in the year 2013 and the team could catch up to their desired schedule. Near the start of the second semester, the team estimated that the project was about 500 hours from completion judging from the schedule of tasks (WBS) and estimated work completion from first semester. This leaves 125 hours per person which was thought to leave plenty of buffer room. From Table 9-1, the team’s estimation was very close with an actual team total of 475.5 hours (average of 119 hours each) in the second semester. Judging from the correlation of the estimated to the actual completion time, the team had we well scheduled project with all the tasks lay out for the whole year. Knowing what tasks to work on does not a mean they will get done on time, however. From the critical path in Figure 9-4, it is obvious that the team struggled to finish tasks on time; it was only because of smart scheduling that they did not fall hopelessly behind. Table 9-1: Summary of hours for entire year. Week 1 2 3 4 5 6 7 8 Afa 2 2 2 1.25 6.25 5 2.25 2 Bob 1 2.5 0.5 0 4.5 3 3.5 4.33 KJ 5 3 0 0 9.5 9 7 6 65 Nate 2.5 2 1.5 0 3.5 0 2 7 Team 10.5 9.5 4 1.25 23.75 17 14.75 19.33 Date 9/16-­‐9/22 9/23-­‐9/29 9/30-­‐10/6 10/7-­‐10/13 10/14-­‐10/20 10/21-­‐10/27 10/28-­‐11/3 11/4-­‐11/10 9 10 11 12 13 Sem. Total Christmas Break Interim 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Sem. Total Year Total 9.3 6.5 7.25 1.5 2 17.25 0 4.5 0 4 8.5 9 8 3 8 28 6 4 6 8 24 0 2 0 0 2 44.25 45.08 50 40.5 179.83 5 0 20 15 40 15 6 40 0 61 0 3 0 12.5 15.5 6 2.5 10 12.5 31 4 6.5 4 6 20.5 2 3 2.5 2 9.5 3.5 15 6 5 29.5 3 4 2 4 13 7 5 3 5 20 12 5 3 8 28 2 1 3 7 13 10 7.5 3 5 25.5 8.5 9.5 4 11 33 5 10.5 5 9 29.5 20 4 22 10 56 30 36.5 22 30 118.5 7 10 8 8 33 120 123 97.5 135 475.5 184.25 174.08 207.5 190.5 756.33 11/11-­‐11/17 11/18-­‐11/24 11/25-­‐12/1 12/2-­‐12/8 12/9-­‐12/15 12/15-­‐1/2 1/3-­‐1/26 1/27-­‐2/2 2/3-­‐2/9 2/10-­‐2/16 2/17-­‐2/23 2/24-­‐3/2 3/3-­‐3/9 3/10-­‐3/16 3/17-­‐3/23 3/24-­‐3/30 3/31-­‐4/6 4/7-­‐4/13 4/14-­‐4/20 4/21-­‐4/27 4/28-­‐5/4 5/5-­‐5/11 Operational Budget The budget for Übercaster is managed by Nate Snippe and is seen below in Table 9-2. The team decided that a budget of $750 for the whole year was necessary to produce Übercaster. The major spending in the fall semester included the development board and accessories for initial testing. During the spring semester, most of our budget went towards three iterations of a 3-D printed enclosure for Übercaster. After the project was deemed finished, we had a surplus of $125.11. 66 Table 9-2: Operating budget for Übercaster throughout the year. Date 10/25/2012 10/25/2012 10/31/2012 11/29/2012 1/31/2013 2/4/2013 2/28/2013 4/12/2013 5/2/2013 Description Beginning Balance Router Batteries and Charger USB WIFI module, dev board, TFT screen, linux sound card, DC power plug Rectangular Header Miniand A10 3-D printed enclosure 1.0 3-D printed enclosure 2.0 3-D printed enclosure 3.0 67 Debit Total Used 30.00 36.31 30.00 66.31 Remaining Balance $750.00 $720.00 $683.69 152.94 2.64 85.00 90.00 108.00 120.00 219.25 221.89 306.89 396.89 504.89 624.89 $530.75 $528.11 $443.11 $353.11 $245.11 $125.11 10 Conclusions 10.1 Accomplishments We have successfully built a platform for streaming audio. We have chosen a development board to use, installed a custom operating system on it, used a specialized program to encode audio data form the board, and stream the data over a WiFi channel. We have successfully received the stream with laptops and played it with minimal delay. We have successfully designed and created an enclosure for the development board. Using Calvin’s 3D printer, we have an enclosure to test and revise for future implementations of Übercaster. We have created apps for both the Android and iOS mobile operating systems. Both apps have a functional user interface and code to receive the data stream. 10.2 Lessons Learned This project has taught us many lessons about ourselves, and each other. We have learned how to work as a team, and have a better understanding of each other’s strengths and weaknesses. We also have learned that communication is essential for our group to succeed. When we do not communicate, we become very disorganized and loose in our focus. In addition, we have learned about how we interact with each other. We have different personalities, and tend toward certain ideas and beliefs of the scope, the direction, and the individual tasks of the project. We have learned how to cooperate and compromise on different aspects of the project, and how to better listen to each other and give feedback. Our biggest lesson learned is that staying on track with the schedule and keeping each other accountable for their work is very important. We have fallen behind with poor team management. Recently, Nate has volunteered to take a more direct role as the manager for the team. What he plans to do has been mentioned in the sections above. 10.3 Credits and Acknowledgments Team 10 would like to thank the following people for their contribution to the success of this design project. 68 • Professor Steven VanderLeest of Calvin College Engineering Department for his professionalism and commitment to support the team as an advisor. • Professor Yoon Kim of Calvin College Engineering Department for donating parts for experimenting and for providing insight into the scope of the project. • Professor Ned Nielsen of Calvin College Engineering Department for his contribution in developing production options and cost analysis. • Glenn Remelts of Hekman Library for his assistance in research. • Phil Jasperse for his metalwork class. • Bob DeKraker for placing orders for all senior design teams. • Our Interns from the Business Department of Calvin College who did market research and talked to local museums, churches, and performers. • To Team 03 from class of 2012 for their model of writing a PPFS 69 11 References http://www.machinist-materials.com/comparison_table_for_plastics.htm http://www.machinist-materials.com/comparison_table_for_plastics.htm https://www.olimex.com/Products/Duino/Duinomite/_resources/DuinoMite-UM-1-03.pdf http://rxwen.blogspot.com/2011/10/stream-audio-via-udp-on-android.html http://en.wikipedia.org/wiki/Streaming_media http://en.wikipedia.org/wiki/Multicast http://jas-hacks.blogspot.com/2012/09/hackberry-wireless-access-point.html http://ubuntuforums.org/showthread.php?t=1127000 http://ubuntuforums.org/archive/index.php/t-1544946.html http://www.patheticcomputing.com/?p=134 http://sonnati.wordpress.com/2011/08/30/ffmpeg-%E2%80%93-the-swiss-army-knife-of-internetstreaming-%E2%80%93-part-iv/ https://www.virag.si/2012/11/streaming-live-webm-video-with-ffmpeg/ http://superuser.com/questions/53957/what-do-alsa-devices-like-hw0-0-mean-how-do-i-figure-out-whichto-use http://ffmpeg.org/trac/ffmpeg/wiki/StreamingGuide http://stackoverflow.com/questions/14150365/how-to-send-receive-rtp-audio-stream-c http://www.alsa-project.org/main/index.php/FramesPeriods http://www.cs.odu.edu/~cs778/jmflects/lect8RTPPresenting.html 70 i http://www.centrumsound.com/digi-wave_tour_guide_system.html http://www.netmarketshare.com/report.aspx?qprid=8&qptimeframe=M&qpsp=171&qpch=350&qpmr=1 00&qpdt=1&qpct=3&qpcustomd=1&qpcid=fw54549&qpf=1 iii http://www.w3.org/Protocols/HTTP/AsImplemented.html iv http://developer.android.com/about/dashboards/index.html v http://stackoverflow.com/questions/1613737/server-to-stream-rtsp-to-android vi https://github.com/OLIMEX/OLINUXINO/tree/master/HARDWARE/A13-OLinuXino vii https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino/resources/A13-Brief.pdf ii viii http://be.eurocircuits.com/shop/element14/pcbproto.aspx?cadsoft=1&customerid=0&customeremail=&tid =eab8d983-ffe1-5afe-1d74-151bf5b2e631&n=117528e7-cdde-476d-8b79-c3f88b86a680# ix http://batteryuniversity.com/learn/article/whats_the_best_battery http://www.energizer.com/learning-center/Pages/battery-comparison.aspx http://www.diffen.com/difference/Li-ion_vs_NiCad http://en.wikipedia.org/wiki/Lithium-ion_battery http://en.wikipedia.org/wiki/Nickel%E2%80%93metal_hydride_battery http://en.wikipedia.org/wiki/Nickel%E2%80%93cadmium_battery ix http://blog.ides.com/plastics_marketplace/2012/01/noryl-gtx-830-hips-nylon-petg-pbt-tpe-pet-ldpe-ppplastic-materials-for-sale.html ix http://www.ides.com/resinpricing/Secondary.aspx x http://blog.ides.com/plastics_marketplace/2012/01/noryl-gtx-830-hips-nylon-petg-pbt-tpe-pet-ldpe-ppplastic-materials-for-sale.html xi http://www.ides.com/resinpricing/Secondary.aspx xii xiii http://www.custompartnet.com/materials/acrylonitrile-butadiene-styrene https://apps.fcc.gov/tcb/GetTcb731Report.do?applicationId=738688&fcc_id=A5LRTL8188CUS xv http://www.pcworld.com/article/91144/article.html xvi http://www.techdirt.com/articles/20090519/1127454934.shtml xvii http://www.centrumsound.com/digi-wave_tour_guide_system.html xviii "WebCite Query Result." WebCite Query Result. American Association of Musueums, 10 July 2012. Web. 01 Dec. 2012. <http://www.webcitation.org/693Qzdy15>. xix "Oddity Software - Databases, Development and Design." U.S. Churches Database. Oddity Software, n.d. Web. 01 Dec. 2012. <http://www.odditysoftware.com/page-datasales38.htm>. xx http://wftga.org/who-we-are/what-wftga xxi http://www.arcadiaconcepts.com/ xxii Shipping Cost = $12.50 * 10,000 (http://www.cypressindustries.com/faq_freight.html) xiv 71 xxiii Estimated cost of annual website maintenance, security and design update. We don’t want to have security failures. Websites are one of the most recurring costs for a small business that is growing. xxiv These values are the national average for the occupation estimated through http://www.salary.com/ xxv https://www.dropbox.com/s/8w69ohoyymqbhhn/Team10.WBS.pod.pod 72