By Feng Yuan and Roxanne Henry
The project is a continuation of Feng’s experiment 3 morse code project. In this iteration, we configure two feathers to be able to send and receive morse code signals from one another. The input remains the same, but the output now goes to an on-board OLED display, which displays the signal’s letter equivalent.
The original plan was a portable wireless Morse code signals sender. Feng and Roxanne imaged this device should be a bracelet attached with a led screen and several buttons. The batteries and feather board will be hidden inside the bracelet. The buttons could be used to enter the Morse code signals, and the screen would be used to display the receiving message. (As the image below)
Because of the limitation of time and equipments( a sew machine would boot the craft process ), they switched their idea and decided to make a tabletop paper-made morse code device. This device would still include two parts: a button-board(input the message) and a screen (output the signals). They decided to use white board papers. The final result would be white, clean and neat.
Here is the link to the video
Here is the link to the code
Step One: The first step of the project, ideation, had essentially already been done in the previous experiment when Feng and Roxanne decided to reuse the idea and add networking to it. The biggest hurdle they encountered in the ideation phase was the physical design of the finished product. This would not affect the code necessary to get the product functioning, however, so Feng and Roxanne put that aside for the beginning.
The first step to getting the code working was to reexamine the way Feng’s original code functioned. It wasn’t too challenging to transfer the functionality of publishing results via serial to publishing to PubNub. There was some consideration about whether or not Feng and Roxanne wanted to send whole words at a time or not, but in the end, the decision kept the status quo. Single letters were sent per package in order to maintain the spirit of morse code messaging, and for simplicity sake.
Feng and Roxanne have experiment various output methods : LCD screen, Buzzer Speaker, LED lights, and LED screen.
- Standard 16×2 LCD Screen is too big for this project.
- Piezo Buzzer can’t make a tone and volume is very limited. And a morse code buzzing noise can convert the morse code to something easily “readable”
- LED lights look delightful, but also can’t make the signals readable.
After testing all these methods, they found the OLED feather wing most match with our project. The OLED screen could be easily applied with feather board. And int values and string values could be displayed on the screen. Based on the results of testings, they chose to use OLED feather wing as the output section.
Following the implementation of the publishing function and decisions about button layout, Feng and Roxanne looked into subscriptions. At first, it seemed to be doing fine. The tests were scripted and didn’t leave much room for error.
- Load program on each device
- Send from device A
- Receive on device B
- Send from device B
- Receive on device A
The trouble arose when device B would try to receive a message before device A managed to send one by using a timer to activate the subscription function. Roxanne initially suspected the Feather of running out of memory and experimented with adjusting the buffer size, as well as adjusting the timing of memory allocation for the messages.
Of course, none of these things were the problem. The issue was with the actual subscribe function. PubNub’s official documentation describes the functionality as such:
“Listen for a message on a given channel. The function will block and return when a message arrives.”
This means that whenever the server had nothing to provide as far as a new message went, the feather’s program would essentially hang, and wait, and wait, and wait, until PubNub answered with something. This would happen despite the timeout being specified. Roxanne suspects there is a bug in the API and is very upset about this.
So, Roxanne and Feng decided to implement the subscription function to be activated on button-press. They used the built in button B on the OLED wing to accomplish this.
The final step of the project was to build the physical product. While deciding the layout of the wires, Feng and Roxanne decided it would be a good idea to try and conserve space by attaching both the ground and input wires directly onto the resistor. Upon testing this model, they found that this did not work.
One solution they tentatively tried was to use copper tape instead of wires for the input pin connection. They discovered that the copper tape they had acquired was not conductive on both side. Since the layout required a lot of turns, it was impossible to create a path without overlapping the tape. In the future, they are certain copper tape with conductive adhesive would have been a better choice.
So, Roxanne desoldered all the fancy Ys she had put together and mournfully put the input wire on the opposite side of the button where it belonged.
Feng and Roxanne choose to use the white hard paper boards as the bottom of the device and the white thin paper to make the case hiding the feather board and wires.
1. Measure the sizes of the board and button.
2. Layout the button position and board position on the hard paper board.
3. Make the box and stick the box on the paper board
4. Engrave the button holes for make the space for buttons
5. Organize the wires and make them orderly
6. Connect the buttons with the board
7. Hide the wires and close the box.