Difference between revisions of "BeagleBoard/GSoC/2019Proposal/GPIOParallelBidirComm"

From eLinux.org
Jump to: navigation, search
(Progress till now)
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
[[Category: BeagleBoard]]
 +
[[Category: GSoC]]
 +
[[Category: GSoCProposal]]
 +
 
Reference Design For A GPIO-based Parallel Bi-Directional Bus
 
Reference Design For A GPIO-based Parallel Bi-Directional Bus
  
 
''Student'': Pranav Kumar <br>
 
''Student'': Pranav Kumar <br>
''Mentors'': Andrew Henderson, Zubeen Tolani<br>
+
''Mentors'': Andrew Henderson, Kumar Abhishek, Hunyue Yau<br>
''Code'': <br>
+
''Code'': https://github.com/pranav083/bi-dir-com-beagle <br>
 
''Wiki'': https://elinux.org/index.php?title=/BeagleBoard/GSoC/GPIO-parallel-bi-dir-bus<br>
 
''Wiki'': https://elinux.org/index.php?title=/BeagleBoard/GSoC/GPIO-parallel-bi-dir-bus<br>
  
Line 19: Line 23:
 
''Github'': https://github.com/pranav083 <br>
 
''Github'': https://github.com/pranav083 <br>
 
''E-Linux Username'': pranav083<br>
 
''E-Linux Username'': pranav083<br>
''School'': UIET,Panjab University,Chandigarh<br>
+
''School'': [http://www.uiet.puchd.ac.in/ UIET,Panjab University],Chandigarh<br>
 
''Country'': [https://en.wikipedia.org/wiki/India India]<br>
 
''Country'': [https://en.wikipedia.org/wiki/India India]<br>
 
''Primary language'': English,Hindi<br>
 
''Primary language'': English,Hindi<br>
''Typical work hours'': 9:30 - 23:00 IST [https://www.worldtimebuddy.com/?qm=1&lid=2643743,1275339,5128581,5391959&h=2643743&date=2018-3-4&sln=4-18.5 GMT/EST/PST to Ist Adjusted Time]<br>
+
''Typical work hours'': 9:30 - 23:00 IST [https://www.worldtimebuddy.com/?qm=1&lid=2643743,1275339,5128581,5391959&h=2643743&date=2018-3-4&sln=4-18.5 GMT/EST/PST to Adjusted Time]<br>
 
''Previous GSoC participation'': This is my first time participation in gsoc .I got intrested for it by seeing the vast amount of development for open source hardware around the world .And i also want to become a part of it. <br>
 
''Previous GSoC participation'': This is my first time participation in gsoc .I got intrested for it by seeing the vast amount of development for open source hardware around the world .And i also want to become a part of it. <br>
 
Skills: C,Python,ROS,OpenCV,Embeddded C,Electronics Prototying,circuit designing  
 
Skills: C,Python,ROS,OpenCV,Embeddded C,Electronics Prototying,circuit designing  
  
Tools(proficient) : Git, Linux
+
Tools(proficient): Git, Linux, C
 
    
 
    
Experience : C, Python, Java, HTML, CSS, JavaScript, Arduino
+
Experience: C, Python, OpenCV, Arduino
  
Hardware Skills: Raspberry Pi, ICs, Circuit Designing, Atmel chip, I2C, circuit debugging
+
Hardware Skills: Raspberry Pi, ICs, Circuit Designing, Atmel chips, I2C, circuit designing, circuit debugging.
  
 
== Reference Design For A GPIO-based Parallel Bi-Directional Bus ==
 
== Reference Design For A GPIO-based Parallel Bi-Directional Bus ==
Line 45: Line 49:
 
As it can be seen that GPIO having simple input /output (without pinmux) are very less in number which makes it really hard to use pocket beagle to use in projects where their large requirement of I/O pins. Buts as it has two powerful PRU of with a 32‐bit RISC processor at 200MHz with single-­cycle pin access for hard realme. So it makes it very easy for implementing multiple inputs and outputs control at high speed through a few GPIO pins.<br>
 
As it can be seen that GPIO having simple input /output (without pinmux) are very less in number which makes it really hard to use pocket beagle to use in projects where their large requirement of I/O pins. Buts as it has two powerful PRU of with a 32‐bit RISC processor at 200MHz with single-­cycle pin access for hard realme. So it makes it very easy for implementing multiple inputs and outputs control at high speed through a few GPIO pins.<br>
  
[[File:Gpio2.png|600px|thumb|center|gpio without pinmux]]
+
[[File:Gpio2.png|600px|thumb|center|GPIO without pinmux in Pocket beagle]]
Pins are shown above that have a boundary of yellow rectangle shows the no. of pin available in pocket beagle that is without pinmux with them.<br>
+
'''GPIO used in this project for Pocket Beagle'''
 
+
Pins are shown above that have a boundary of yellow rectangle shows the no. of pin available in Pocket beagle, That is without pinmux with them.<br>
 +
[[File:BBB_I-O_pins_.png|thumb|500px|center|GPIO without pinmux in BeagleBone Black]]
 +
Pins are shown above that have a boundary of violet rectangle shows the no. of pin available in Beaglebone Black, That is without pinmux with them.<br>
 
===  Project Overview===
 
===  Project Overview===
  
Line 55: Line 61:
 
=== Detailed Description ===
 
=== Detailed Description ===
  
 +
====Progress till now====
 +
* I started with the study of the internal mapping of the PRU in the pocket Beagle (as available with me) and find out the usable GPIO in the pocket beagle that will be suitable for this project.<br>
 +
[[File:Gpio used.png|500px|thumb|left|GPIO used in thePocket beagle]]
 +
[[File:Bbb_us1.png|470px|thumb|right|GPIO used in the BeagleboneBone Black]]<br>
  
 
+
* Then, I interfaced shift register [http://www.ti.com/lit/ds/symlink/sn74hc595.pdf 74hc595] with the pocket Beagle and controlled a series of 8 LEDs with it by writing a C code in the user space. <br>
===Progress till now===
 
* First of all, I studied the internal mapping of the PRU in the pocket Beagle and find out the usable GPIO in the pocket beagle that will be suitable for this project.<br>
 
[[File:Gpio used.png|500px|thumb|right|GPIO used in this project]]
 
* Then, I was able to interface swift register [http://www.ti.com/lit/ds/symlink/sn74hc595.pdf 74hc595] with the pocketBeagle and control the series of 8 LED with it by writing C code in the user space. <br>
 
 
   ** [https://github.com/pranav083/pocket_beagle-work/tree/master/1.shift Code] for controlling the shift register.
 
   ** [https://github.com/pranav083/pocket_beagle-work/tree/master/1.shift Code] for controlling the shift register.
 
   ** [https://youtu.be/dBE2C6aXK7E YouTube] video of the working code uploaded.<br>   
 
   ** [https://youtu.be/dBE2C6aXK7E YouTube] video of the working code uploaded.<br>   
* As the 8-bit universal shift register stated was not available to me when I started a search for another swift register that was 74hc299 and in the meantime, I started to study this shift register and make the circuit for the interfacing of the different module that can be made by using pocket beagle, logic level converter,74hc299. Here is the link of the different file [https://github.com/pranav083/pocket_beagle-work GitHub].<br>
+
* As the shift register( SN54F299) 8-bit universal shift register stated was not locally available I started looking for another shift register and found 74hc299, so I started studying this shift register and made the circuit interfacing the different modules pocket beagle, logic level converter,74hc299. Here is the link of the different file [https://github.com/pranav083/pocket_beagle-work GitHub].
* see the general configurable [[https://github.com/pranav083/pocket_beagle-work/blob/master/2.shift_bi/swift_bi_bb.png circuit]] that can be used in this project.  
+
* see the general configurable [https://github.com/pranav083/pocket_beagle-work/blob/master/2.shift_bi/swift_bi_bb.png circuit] that can be used in this project.
* Added a [https://github.com/pranav083/bi-dir-com-pocket GitHub] repository for the project as there was no repository made for it.
+
 
* studied about kernel module, device driver development and little about device tree execute small for example [https://github.com/pranav083/learn_kernel_mod code] for it.
+
[[File:Gen_bb.png|700px|thumb|center|General Circuit of 74hc299 and Pocket beagle]]
'''[hendersa]: Mention your existing C code here and link to the GitHub project for it. For additional preliminary work, consider adding a few functions in your C code to set the read/write mode of the bus and to read/write data to/from the bus. This way, you can show that you've thought through the entire bus interfacing process and have a preliminary prototype that uses the (very slow) filesystem I/O interface. The logic in this prototype can then be used as a blueprint to build a more complex code. This will make your proposal much stronger.'''
+
 
 +
* Created a [https://github.com/pranav083/bi-dir-com-beagle GitHub] repository for the project.
 +
* Started studying different aspects of kernel including Linux kernel module, device driver development and little about device tree and tried out a small [https://github.com/pranav083/learn_kernel_mod code] for it.
 +
 
 +
====Timeline:====
  
===Timeline:===
+
======Community Bonding Period======
  
==== Community Bonding Period ====
+
* Studying and getting further in-depth knowledge of the PRU and discussing more use cases of the project with the mentor and other community members.
*Studying and getting further in-depth knowledge of the PRU and knowing the further use cases of the project through the mentor and another community member.  
+
* Discussing the type of coding standard to be followed with the mentors.
*Discussing the type of coding standard to be followed in the code with the mentors
+
* Make any changes in the project according to suggestions.
*If any changes are suggested making changes in according to that
+
* Discuss the guidelines to be followed for documentation.
*Discussing the guideline followed for documentation
+
* Explore more about the device tree and device driver development.
*study the device tree of the pocketbeagle for
+
* Study the datasheet so that during the implementation period it makes easier to apply things in a more smooth way.
*Studying the Datasheet so that during the implementation period it makes easier to apply things in a more smooth way.
 
===== Week 1 : Milestone #1 =====
 
*As I was already working on the swift register interfacing with the pocket beagle will work on further improving the code for different use cases
 
*Testing it with different input and output modes on different GPIOs   
 
===== Week 2 : Milestone #2 =====
 
* Check for signal accuracy and any delay if occurring which occurring while running different test cases using CRO.
 
* In the meantime check for any loss which is occurring in this circuit
 
* Testing and Debugging the circuit making circuits for the by implementing it with different input and output with different programs and making the design of the circuit on PCB as an addon for pocketbeagle. 
 
* As I will get be known to most aspect of the hardware and PRU for now so it will be easier to exploit more from it, to move toward the development of kernel drivers     
 
===== Week 3 : Milestone #3 =====
 
* developing Linux kernel module for the kernel userspace
 
* testing and debugging if any problem is caused in between the development
 
  
===== Week 4 : Milestone #4 =====
+
======Week 1: Milestone #1======
* expanding device driver capability to communicate taking input or output at different baud rates
+
* Continue working on the shift register (74hc299) interfacing with the pocket beagle and Beaglebone Black.
* Testing the communication and synchronization with other peripherals and logic analyzer  
+
* Testing the output on the available GPIOs by interfacing it with different circuits (7-segment display, array of LEDs, LCD)  .
* Preparing slides of the completed work and check for any bugs in the driver.  
+
* Check for switching timing of data and clock signal and any delay if occurring while running different test cases using CRO and logic analyzer.
 +
* Deliverable - Video and code of the working circuits mentioned above and the test report of the signal timing studied.
  
 +
======Week 2: Milestone #2======
 +
* Start working on the communication protocol like using bit banging etc. understating the effect on the signal that arises due to the cascading of the shift registers.
 +
* Start understanding the device tree of beaglebone.
 +
* Testing and debugging of the circuit for taking parallel inputs on the single GPIO(data line) using shift register made on breadboard.
  
 +
======Week 3 : Milestone #3======
 +
* As I will get to know the different aspects of the hardware and PRU it makes easier to move toward the development of PRU firmware and device drivers (LKM).
 +
* Try using the interrupt handler for more efficient functioning of GPIO.
 +
* Testing and debugging of any problem that is caused in between the development.
  
'''by this time the time for Phase I evaluation: I will deliver kernel driver, circuits, effects of shift register on the different GPIOs of the pocket beagle '''
+
======Week 4 : Milestone #4======
===== Week 5 : Milestone #5 =====
+
* Continue working on device driver (LKM) development.
* Try to fix any bug if it is there in the kernel driver
+
* Documenting and preparing slides.
* start to develop library in c for the userspace
 
* Documenting the work
 
===== Week 6 : Milestone #6 =====
 
* making  first project that will be a game controller using the pocket beagle
 
* testing and writing code for it as 
 
  
===== Week 7 : Milestone #7 =====
+
'''Phase I evaluation:'''  '''''Deliver device driver (LKM), and fritzing circuit models to be used with Beaglebone Black and Pocket Beagle.'''''
  
 +
======Week 5: Milestone #5======
 +
* Try to fix any bugs found in previous evaluation phase in the device driver (LKM) and if something proposed during evaluation.
 +
* By this time start developing a C library for the userspace that can be easily used for different applications.
  
===== Week 8 : Milestone #8 =====
+
======Week 6: Milestone #6======
 +
* Continue to work on the development of the userspace library.
 +
* Compensat delay in the signal by making suitable changes in the developed library.
 +
* Expand device driver capability to communicate at different baud rates.
 +
* Deliverables - Making progress video for the same for the above work.
  
'''By this time the time for Phase II evaluation: I will be able to deliver library for the user space,
+
======Week 7: Milestone #7======
===== Week 9 : Milestone #9 =====
+
* Making an easy to use library in C for different popular shift register available in the market that are of the same type.
* fixing bugs error and making support for  
+
* Fixing bugs and adding any wanted material for the library if it left during the development period.
* making or implementing the library made a with a game controller pocket beagle.
+
* Documenting the work done for now and preparing slides of the completed work.
* creating and modifying code so that it usability can increase
 
* expanding the support for the driver support in python
 
  
===== Week 10 : Milestone #10 =====
+
======Week 8 : Milestone #8======
 +
* Fixing bugs and making changes as suggested during evaluation.
 +
* Mak some ready to use library support (example codes) for general project applications (like interfacing with multiple inputs, array of LEDS or display modules like LCD ) 
 +
* Documentation of the work for using the library with an example project with the Beaglebone hardware.
 +
* Deliverables - Test program and their working videos
 +
'''Phase II evaluation: ''I will be deliver library for the userspace, example code for easy to use documentation.'''''
  
===== Week 11 : Milestone #11 =====
+
======Week 9 : Milestone #9======
 +
* Making the first project that will be a game controller using the pocket beagle.
 +
* Functional video of using the game controller to play game.
 +
* Documentation of the work done for the project.
 +
* Making an easy DIY guide for this on the beaglebone project page.
 +
* Deliverables - Instructions Guide  and working video with code.
  
===== Week 12 : Milestone #12 =====
+
======Week 10 : Milestone #10======
 +
* Start with the second project of interfacing a simple memory unit with the shift register and do read/write operation.
 +
* Testing the communication and synchronization of memory units with cascaded configuration of shift register.
 +
* Documenting the work and making project ready.
 +
* Get the review of the project from mentor and community members.
 +
* Deliverables - Instruction guide and working video with code.
  
===== Week 13 : Milestone #13 =====
+
======Week 11 : Milestone #11======
As the another p
+
* Making the final circuit diagram for the project and a small PCB layout for the cape compatible with both Pocket Beagle and Beaglebone.
===== Week 14 : Milestone #14 =====
+
* Making changes according to the feedback on the project .
 +
* Preparing final slides, video and the documentation.
  
 
== Final Goals: ==
 
== Final Goals: ==
Line 142: Line 165:
  
 
=== Contributions to this project ===
 
=== Contributions to this project ===
There was no upstream repository for this project. So, I make one and started contributing to it by starting from the interfacing shift register [https://github.com/pranav083/pocket_beagle-work github]. And for this project, I have created another repository on GitHub [https://github.com/pranav083/pocketbeagle-bi-dir-comm https://github.com/pranav083/pocketbeagle-bi-dir-comm].  
+
There was no upstream repository for this project. So, I make one and started contributing to it by starting from the interfacing shift register [https://github.com/pranav083/pocket_beagle-work github]. And for this project, I have created another repository on GitHub [https://github.com/pranav083/bi-dir-com-pocket https://github.com/pranav083/bi-dir-com-pocket].<br>
 +
All the future update for the project will get updated in the GitHub link listed above.
 +
 
 
=== Participations ===
 
=== Participations ===
 
* Participated in Hacktober fest 2018.
 
* Participated in Hacktober fest 2018.
Line 157: Line 182:
 
  Sure, that would be very useful. You'll have to think about how you'd do that in the PRU firmware.
 
  Sure, that would be very useful. You'll have to think about how you'd do that in the PRU firmware.
 
                                             -Andrew Henderson('''hendersa''')
 
                                             -Andrew Henderson('''hendersa''')
 +
 +
==== If your mentor isn’t around? ====
 +
First of all, before asking any question in with the mentor I would like to know the problem personally through google it and if then I am not able to find the answer then ask it the IRC channel and there is always likely to be someone in the community that can issue the problem in case if mentor is not around their.
  
 
== Future Contributions ==  
 
== Future Contributions ==  
  
 
As always I will like to contribute further in the open source community and spread my word to my local community by spreading the easy of making project using beaglebone family and its advantages over other controllers, And the way people help each other especially.
 
As always I will like to contribute further in the open source community and spread my word to my local community by spreading the easy of making project using beaglebone family and its advantages over other controllers, And the way people help each other especially.

Latest revision as of 07:56, 22 May 2019


Reference Design For A GPIO-based Parallel Bi-Directional Bus

Student: Pranav Kumar
Mentors: Andrew Henderson, Kumar Abhishek, Hunyue Yau
Code: https://github.com/pranav083/bi-dir-com-beagle
Wiki: https://elinux.org/index.php?title=/BeagleBoard/GSoC/GPIO-parallel-bi-dir-bus

Status

Create a hardware/software design will incorporate shift registers (and potentially logic level converter solutions as appropriate) to allow BB.org hardware to communicate with hardware via a parallel, bi-directional bus.

Tasks Done

I have completed the task required as described on the ideas page, and created a pull request, as listed here

About Me

IRC: pranav_kumar
Github: https://github.com/pranav083
E-Linux Username: pranav083
School: UIET,Panjab University,Chandigarh
Country: India
Primary language: English,Hindi
Typical work hours: 9:30 - 23:00 IST GMT/EST/PST to Adjusted Time
Previous GSoC participation: This is my first time participation in gsoc .I got intrested for it by seeing the vast amount of development for open source hardware around the world .And i also want to become a part of it.
Skills: C,Python,ROS,OpenCV,Embeddded C,Electronics Prototying,circuit designing

Tools(proficient): Git, Linux, C

Experience: C, Python, OpenCV, Arduino

Hardware Skills: Raspberry Pi, ICs, Circuit Designing, Atmel chips, I2C, circuit designing, circuit debugging.

Reference Design For A GPIO-based Parallel Bi-Directional Bus

Project name: Reference Design For A GPIO-based Parallel Bi-Directional Bus

Introduction

swift register 74hc299

In digital circuits, a shift register is a cascade of flip flops, sharing the same clock, in which the output of each flip-flop is connected to the 'data' input of the next flip-flop in the chain, resulting in a circuit that shifts by one position the 'bit array' stored in it, 'shifting in' the data present at its input and 'shifting out' the last bit in the array, at each transition of the clock input.

This is 74hc299 which is 8-bit universal shift register figure on the right side of the page .

As many projects require a large number of input/output pins to make the project interfacing other the other microcontroller it's having a huge requirement GPIO(e.g game controller etc.). As pocket beagle is small yet very power packed low-power board in which the GPIO are pinmux with the other peripherals and having many functionalities on the same pin like (SPI, USART), that led to the shortage of pins on the board.

As it can be seen that GPIO having simple input /output (without pinmux) are very less in number which makes it really hard to use pocket beagle to use in projects where their large requirement of I/O pins. Buts as it has two powerful PRU of with a 32‐bit RISC processor at 200MHz with single-­cycle pin access for hard realme. So it makes it very easy for implementing multiple inputs and outputs control at high speed through a few GPIO pins.

GPIO without pinmux in Pocket beagle

GPIO used in this project for Pocket Beagle Pins are shown above that have a boundary of yellow rectangle shows the no. of pin available in Pocket beagle, That is without pinmux with them.

GPIO without pinmux in BeagleBone Black

Pins are shown above that have a boundary of violet rectangle shows the no. of pin available in Beaglebone Black, That is without pinmux with them.

Project Overview

the BeagleBone family has a large number of pins available on their P8/P9 headers, projects requiring a large amount of GPIO I/O may still be infeasible due to pinmux conflicts with other interfaces (SPI, UARTs, etc.). The newer PocketBeagle platform is even more restricted in the number of available GPIOs for interfacing. In addition, bi-directional bus communication using GPIOs is infeasible, as each GPIO is configured for either input or output. This project will combine your hardware and software skills to address these limitations by creating a shift register-based hardware design that will allow serial streams of data going in/out of the PocketBeagle or BeagleBone family GPIOs to be mapped into a bi-directional communications bus. Some practical uses of this are for GPIO-based game controller inputs (using *lots of buttons*), communication address/data buses for interfacing with older microcontrollers and microprocessors, and providing large numbers of logical bi-directional GPIOs.

Sometimes a project needs to have multiple inputs /outputs just for example interfacing LCD Display ,Interfacing a multiple button controller like game controller, there is need for interfacing external memory like (eg. 8kx8 SRAM older low memory version or 28f400 Flash Memory ) in which their needs to be need of multiple data line to be there in a controller to use it.

Detailed Description

Progress till now

  • I started with the study of the internal mapping of the PRU in the pocket Beagle (as available with me) and find out the usable GPIO in the pocket beagle that will be suitable for this project.
GPIO used in thePocket beagle
GPIO used in the BeagleboneBone Black


  • Then, I interfaced shift register 74hc595 with the pocket Beagle and controlled a series of 8 LEDs with it by writing a C code in the user space.
  ** Code for controlling the shift register.
  ** YouTube video of the working code uploaded.
  • As the shift register( SN54F299) 8-bit universal shift register stated was not locally available I started looking for another shift register and found 74hc299, so I started studying this shift register and made the circuit interfacing the different modules pocket beagle, logic level converter,74hc299. Here is the link of the different file GitHub.
  • see the general configurable circuit that can be used in this project.
General Circuit of 74hc299 and Pocket beagle
  • Created a GitHub repository for the project.
  • Started studying different aspects of kernel including Linux kernel module, device driver development and little about device tree and tried out a small code for it.

Timeline:

Community Bonding Period
  • Studying and getting further in-depth knowledge of the PRU and discussing more use cases of the project with the mentor and other community members.
  • Discussing the type of coding standard to be followed with the mentors.
  • Make any changes in the project according to suggestions.
  • Discuss the guidelines to be followed for documentation.
  • Explore more about the device tree and device driver development.
  • Study the datasheet so that during the implementation period it makes easier to apply things in a more smooth way.
Week 1: Milestone #1
  • Continue working on the shift register (74hc299) interfacing with the pocket beagle and Beaglebone Black.
  • Testing the output on the available GPIOs by interfacing it with different circuits (7-segment display, array of LEDs, LCD) .
  • Check for switching timing of data and clock signal and any delay if occurring while running different test cases using CRO and logic analyzer.
  • Deliverable - Video and code of the working circuits mentioned above and the test report of the signal timing studied.
Week 2: Milestone #2
  • Start working on the communication protocol like using bit banging etc. understating the effect on the signal that arises due to the cascading of the shift registers.
  • Start understanding the device tree of beaglebone.
  • Testing and debugging of the circuit for taking parallel inputs on the single GPIO(data line) using shift register made on breadboard.
Week 3 : Milestone #3
  • As I will get to know the different aspects of the hardware and PRU it makes easier to move toward the development of PRU firmware and device drivers (LKM).
  • Try using the interrupt handler for more efficient functioning of GPIO.
  • Testing and debugging of any problem that is caused in between the development.
Week 4 : Milestone #4
  • Continue working on device driver (LKM) development.
  • Documenting and preparing slides.

Phase I evaluation: Deliver device driver (LKM), and fritzing circuit models to be used with Beaglebone Black and Pocket Beagle.

Week 5: Milestone #5
  • Try to fix any bugs found in previous evaluation phase in the device driver (LKM) and if something proposed during evaluation.
  • By this time start developing a C library for the userspace that can be easily used for different applications.
Week 6: Milestone #6
  • Continue to work on the development of the userspace library.
  • Compensat delay in the signal by making suitable changes in the developed library.
  • Expand device driver capability to communicate at different baud rates.
  • Deliverables - Making progress video for the same for the above work.
Week 7: Milestone #7
  • Making an easy to use library in C for different popular shift register available in the market that are of the same type.
  • Fixing bugs and adding any wanted material for the library if it left during the development period.
  • Documenting the work done for now and preparing slides of the completed work.
Week 8 : Milestone #8
  • Fixing bugs and making changes as suggested during evaluation.
  • Mak some ready to use library support (example codes) for general project applications (like interfacing with multiple inputs, array of LEDS or display modules like LCD )
  • Documentation of the work for using the library with an example project with the Beaglebone hardware.
  • Deliverables - Test program and their working videos

Phase II evaluation: I will be deliver library for the userspace, example code for easy to use documentation.

Week 9 : Milestone #9
  • Making the first project that will be a game controller using the pocket beagle.
  • Functional video of using the game controller to play game.
  • Documentation of the work done for the project.
  • Making an easy DIY guide for this on the beaglebone project page.
  • Deliverables - Instructions Guide and working video with code.
Week 10 : Milestone #10
  • Start with the second project of interfacing a simple memory unit with the shift register and do read/write operation.
  • Testing the communication and synchronization of memory units with cascaded configuration of shift register.
  • Documenting the work and making project ready.
  • Get the review of the project from mentor and community members.
  • Deliverables - Instruction guide and working video with code.
Week 11 : Milestone #11
  • Making the final circuit diagram for the project and a small PCB layout for the cape compatible with both Pocket Beagle and Beaglebone.
  • Making changes according to the feedback on the project .
  • Preparing final slides, video and the documentation.

Final Goals:

Successfully completing the project and creating a library for it and making a whole new open source code and DIY guides by which it help the community further to explore the Pocket Beagle.

Experience

As I am from Electronics background and always involved in creating in making projects related to micro-controller.I like to learn new things in my day to day life. I have made a 3D printer that works both as a 2D printer and 3D printer using the hardware modules of a 3d printer and Open Source Marlin Firmware. Worked on finite state machines using an embedded system. And I take sessions in our college to spread knowledge among ourself with common interests. I love to contribute to open source where people can help each and clearing one another problems.


Previous Contributions to Open-Source

  • Making a lighter and less complex multifunctional line Following algorithm using FSM that is easy to implement and build.
  • Lead the team of NGO making projects for school going children with full DIY guide and Documentation Github.
  • Making a short script for login into our university wifi Github Link.
  • Take the initiative to have an Open-Source Community section of India on OSRF official ROS-Discourse so that people can openly know to each other.

Contributions to this project

There was no upstream repository for this project. So, I make one and started contributing to it by starting from the interfacing shift register github. And for this project, I have created another repository on GitHub https://github.com/pranav083/bi-dir-com-pocket.
All the future update for the project will get updated in the GitHub link listed above.

Participations

  • Participated in Hacktober fest 2018.
  • Suggesting an efficient prototype of Harvester at eYIC, IIT Bombay(Country level competition) Docs.
  • Won PocketBeagle from Mouser electronics event at IIT Roorkee, India.

Approach

As I will be on my break period from my college after semesters exam. So, I can devote my full time on this project and there will be enough time for me to learn, explore and implement new things and successfully able to complete this project on time.

Benefit

It will largely impact the way people who want multiple inputs or output capability in their projects or those who want to interface different memory device with the pocket beagle. it also opens new capability by open an entire world of a new project that can get incorporated with the help of pocket beagle for ex. making a scientific calculator with the help of it, etc.

What community members speak

After making this project for the community, I am looking forward to working more with the hardware-software integrated project and want to help pocketbeagle to made easy to use in projects for newbies.

Sure, that would be very useful. You'll have to think about how you'd do that in the PRU firmware.
                                            -Andrew Henderson(hendersa)

If your mentor isn’t around?

First of all, before asking any question in with the mentor I would like to know the problem personally through google it and if then I am not able to find the answer then ask it the IRC channel and there is always likely to be someone in the community that can issue the problem in case if mentor is not around their.

Future Contributions

As always I will like to contribute further in the open source community and spread my word to my local community by spreading the easy of making project using beaglebone family and its advantages over other controllers, And the way people help each other especially.