Final project journal¶
introduction¶
As part of our joint project. I will be focusing on a wireless notification/pager system. We build a printing press for DIY merchandising at concerts or events. Part of the system is a series of wireless pucks that tell the customer when his print is ready to pick up. It resembles the systems used in some restaurants to notify you when your order is ready. The system uses a sender station that can talk to different pucks wireless via Lora (or wifi). The pucks have an internal timer code and notify you by means of flashing RGB leds and a vibration motor. The design and look is inspired by the arc reactor of Iron Man.
The sender station lets you connected to a webpage to control it. It uses an ESP chip to serve the webpage as a standalone wifi access point. From a smartphone or tablet you can send a message to each puck. To set the amount of time and the color of the leds and start the countdown procedure.
Final aim is to have a system with around 30 pucks and and a base station to control them via web interface on an standalone hotspot. Pucks will use a wireless recharging station. The pucks need to be strong to be used on events. So plan is to cast them in epoxy or PUR or maybe in a silicone.
Slide¶
Video¶
link to project development page¶
project development weekly assignment
Pink-to-matic pager work progress¶
Planning//todo:
- [x] lora code
- [x] puck design
- [x] puck test 3D print
- [ ] puck mold design
- [ ] puck milling
- [ ] puck casting
- [x] Webinterface ESP
- [x] Sender protocol and receiver protocol
- [x] timing code
- [ ] sender housing ???
- [ ] charging station
- [ ] how to charge??
- [x] silicone bumper design
- [x] bumper mold 3d print
- [x] bumper mold milling
- [x] bumper casting
1. Receiver Board¶
I am testing out the ATtiny1614 board with Lora I made in the networking week I wanted to add a neopixel ring but the adafruit library would not compile for this chip.
Luckily SpenceConde has as part of his megaTInycore package also a library for using neopixels. The tinyneopixel library https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/extras/tinyNeoPixel.md
You can download the tinyneopixel library here
Works just like the adafruit one!!
Now I have the board change random color when a message arrives. I will have to build a protocol to know what boardID it is and what color to make based on the message
So i need a message parser!!!
But first lets test if i also can get noise and vibration
That works to and everything works on the batterypower.
Have to find out how i would charge the batteries
I also have to add timer code inside the 1614 to count down!!
2. Adjusting my esp12E board to be a LORA sender.¶
Since I already did some coding and testing on commercial boards with the lora modules attached. see the networking week
I had to keep track of what pins where used when and how to connect the modules to the different boards. And also adjust this in the code.
So I made a small table to keep track of those.
LORA Pins | arduino | ESP12E pins | wemos |
---|---|---|---|
3.3V | 3.3V | 3.3V | 3.3 |
MISO | D12 | D12 | gpio12/D6 |
MOSI | D11 | D13 | d7/gpio13 |
SCK | D13 | D14 | gpio14/D5 |
RST | D9 | D16 | gpio5 /D1 |
Dio0 | D2 | D5 | gpio4/D2 |
NSS | D10 | D4 | gpio15 / d8 |
GND | GND | GND | gnd |
Simple Lora sender code works now on my esp12e board.
Time to redesign some boards and make them.
Sender board done, milling failed! I still keep struggling with the milling part of the pcbs.
I will need to try again. This time it was good enough to solder everything on it.
I also made an extra receiver board. SO now I h#ave to devices and a sender to test the setup with. I also added the final Led ring and motor to them.
3. puck design/making¶
The design idea of the portable device that lights up started with some inspiration of the Iron Man Arcreactor. So I drew something similar.
I usee Fusion360 to design a model. I would like to make a mold out of it to cast the pucks in epoxy resin. But for intial testing I decide to 3D print them first.
It took some tweaking and reprinting to get to a final design. I needed to adjust the space inside to be able to fit all parts in the puck itself.
But in the end i got everything fitting nicely inside.
By this time I also decided that it would be better for time management that I go with 3D printed housing instead of the casted ones. The mold and casting will be for next spiral.
4. software web interface¶
I am making a simple html/javascript interface to control the pucks. Adjust the timing and RGBcolor and send the info to the right id. I started developing this during week 14 interfaces
More advanced code together with wifi and a server for the interface gives me resets of the board????
After a day of testing and debugging. I asked Edu for help. We thought it was a power issue that made the board reset. But I tested with bigger psu and batteries, but no luck. Then later I found out that I had to use a different server library
#include <ESP8266WebServer.h>
instead of the
#include "ESPAsyncWebServer.h"
I had to rewrite a bunch of code to use the other library. The way arguments in the URL are read where different. But finally I got it working.
This is how the final interface looks like
5. Coding the boards¶
I already did a lot of the coding for this project in week 13 Networking
A. Sender board¶
The sender board does the following functions:
- act as access point, so we can use an independent WIFI network through the esp module.
- act as a webserver to serve the html interface.
- receive and handle incoming data from the webpage on the internal server and use them to prepare a message for the lora network.
- send out a structured message to all connected lora devices
B. Receivers¶
the receiver boards do the following:
- act as lora node in the lora network
- listen for incoming packets on the lora network
- handle the packetdata and determine the data is for this node.
- start the internal timer based on the timer data received.
- when the timer interval is passed alert the user by:
- activating the small vibration motor
- animate the Neopixel ring based on the color data received.
6. silicone bumper¶
To make the pucks somewhat more robust I wanted to cast silicone rubber bumpers to put around them.
I started designing a 3 part mold based on the intial puck design. I also did this in Fusion360.
For testing I 3D printed the parts of the mold.
And did some silicone mixing, pouring and casting :-)
And the next day I could demold and see if it was what I expected.
The results could be better and my mold needs some adjustments. But that will be for next iteration.
7. laser cut plywood tablet stand¶
As a last minute solution to have a housing for the sender module and also make everything look more finished. I deceided to draw a quick and easy tabletstand where I also could put the sender board inside.
I used a box generator to create a basic console style box, it is called boxes.py I adjusted the svg in Coreldraw to add a little ruler to rest the tablet on.
I used 4mm plywood to lasercut this press fit box. At the back there is a small panel that opens up to put the electronics inside.
Source files¶
code - LoRaReceiver1614 code esp_lora_sender_and_webserver_2 - ESP_LoRaSender code
electronics - tiny1614_lora schematic - tiny1614_lora pcb - tiny1614_lora kicad - esp_lora_sender_board schematic - esp_lora_sender_board pcb - esp_lora_sender_board kicad
designs - puck design - bumper mold top part - bumper mold bottom part - bumper mold inner part - sender console
Daily journal of last weeks.¶
25/5 Milling and soldering done of the sender board!
26/5 ALso made an extra receiver board. Now have 2 self made boards and 1 wemos.
27/5 Today I modelled a mold to cast a silicone bumper. I will 3D print it to try out if it works. Later i can mill parts to make a better mold. I decided to go with 3D printed housing for now, don’t have the time to mill and cast housings in epoxy. That will be for a next version.
Still have to fit everything in the housings.
Also still have to fix the timing part of the code. More specific the repeating vibration and lights after the time is passed. I have to doublecheck if the timer works correctly.
Also I want to make some small changes to the web interface
28/5
print final test housing. think of sender housing, lasercut?? stand for tablet also?? think of charging station. Milled out in 2 parts, wood
29/5 3D printed the mold for the silicone bumper. Going to test it and cast some silicone on monday. Also found the bug in the timer code. Now it works as it should be. I forgot a flag to enable the timer only once. And had to put the millis update, before the loop. Otherwise i never got to the interval. Maybe I should also add a little blink every second to see that it is alive??
31/5 silicone mold parts are printed, now cleaning and trying to cast. also printing back part of the puck
updating the webpage interface
1/6 demolded the silcone casting. Looks promising and useable. Maybe make the sides somewhat higher Make the middle part smoother for better casting. Put a varnish coating on the printed part. Next time print the middel part in 2 pieces and glue together for smooter surface
enlarge the pour holes.
Cleaning up with scalpel is a patience job ;-)
2/6 Did cast next version of the bumper. 3D printed another adjustment to the housing. Again 🙂 It think all will fit inside now.
should i add a reset function in the code to stop the vibration and leds????
Update of the webinterface Update of the puck code I should finetune the breathing algoritm