Robotics Platform Progress
The robotics platform uses the Crickit HAT on a Raspberry Pi Zero. The platform has a range of sensors including proximity sensing and line following. The platform is also used as a testbed for experimenting with electronics and software.
Back to project blog contentsWeather Station Progress
The weather station uses a Raspberry PI Zero and Pico, measuring a range of outside and inside sensors. The data is send via MQTT to an AdaFruit IO backend, where we can display the data in graphical format. The data is also sent to a local database for further analysis.
Back to project blog contentsStripe Payment Processing
A qurik that caught me out in my Stripe checkout code is the changing Stripe customer ID.
If between the checkout.session.completed and invoice.paid notifications your payment has to be authorized by your banking application you will get a different Stripe customer number.
Chatter Box - Using the Web Speech API
Chatter Box now uses the Web Speech API to allow chat texts to be dictated and spoken out aloud. This is a great feature to have as it allows a visually impaired user to hear the chat text out aloud.
Back to project blog contentsMobile Application Development
My journey into mobile cross platform application development has began with new reading material - .NET MAUI in Action by Matt Goldman.
Back to project blog contentsThe Robot Car
The robot car has been assembled. The next mini project following the black line...
Back to project blog contentsdotnet build failure
All my dotnet build commands were failing. After a bit of research the solution was to create an empty directory - C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages
Back to project blog contentsChatter Box Back on Line
Completed Chatter Box's upgrade to MongoDB version 6. It is now back online and can be accessed at Chatter Box.
Back to project blog contentsChatter Box - Upgrade to MonogoDB Version 6 on Atlas
Atlas has decided to upgrade accounts to version 6 of MongoDB. Great but it breaks the code i use to access the DB, including the connection string. So I have had to put the ChatterBox application into maintaince mode to make the codig chamges. Back as soon as possible...
Back to project blog contentsChatter Box - Network Timing Issues
When using Chatter Box on a network with a slower connection speed, timing issues can fall into 3 categories:
- Image Loading
- Room List, etc. Data Loading (JSON format)
- Aviator Image Loading
I changed to loading the JSON data files to be done synchronously therfor ensuring the data is avialable before containing. Also add a data loading dialog to inform the user that the system is initializing. Back to project blog contents
Coding Updates
The web speech API - The function getVoices() is executed asynchronously after the web page has loaded. This means that its data is not immediately available and the list is not fixed. A solution is to use the following promise based code: function getVoiceList() {
return new Promise(
function (resolve, reject) {
let synth = window.speechSynthesis;
let id;
id = setInterval(() => {
if (synth.getVoices().length !== 0) {
resolve(synth.getVoices());
clearInterval(id);
}
}, 10);
}
)
}
const chooseVoice = async (lang) => {
const voices = (await getVoiceList()).filter((voice) => voice.lang == lang)
return new Promise((resolve) => {
resolve(voices[0]) // returns the first voice in the list
})
}
And to use the function...
async function speakText(text,lang) {
var msg = new SpeechSynthesisUtterance();
msg.voice = await chooseVoice(lang);
msg.volume = 1; // 0 to 1
msg.rate = 1; // 0.1 to 10
msg.pitch = 1; //0 to 2
msg.text = text;
//msg.voiceURI = 'native';
//msg.lang = 'en-US';
speechSynthesis.speak(msg);
}
Reading Material Updates
Docker in Action by Jeff Nickoloff and Stephen Kuenzli. Docker provides a method of having development environments that can be run in isolated containers, without installing any system software on the computer. It also provides a way of replicating the production environment in a container to test your software.
Back to project blog contentsResponsive Website Design
Redesign of the End House Software website using responsive techniques. Using CSS3 techniques such as max-width, flexbox and grid to produce a website that scales across multiple devices with different screen sizes.
Rahul Chhodde has written an excellent article on the new viewport units that can be found at https://blog.logrocket.com/improving-mobile-design-latest-css-viewport-units/ and CSS breakpoints for Responsive Design by Rob O'Leary that can be found at https://blog.logrocket.com/css-breakpoints-responsive-design/.
Chatter Box
A NodeJS application that uses the ExpressJS framework including among others new HTML5 features (canvas, new audio controls, etc.), FAQ using Microsoft's QnA Maker, Google/Azure language translation APIs and a SignalR hub to process the chat messages. Find it on Chatter Box.
Back to project blog contentsWeather Station - Mark 1
I have finally started to build a weather station. I have been looking at the Raspberry Pi Pico for a while now and I have been thinking about what I could do with it. I have a few ideas but I have decided to start with a weather station. The idea is to expand this to a full outside weather logging station. I am using the Anvil dashboard application as the frontend.
Back to project blog contentsReading Material
Current reading projects - It never hurts to read books on areas you already know, hence 'CSS in Depth'. Also on the revision list is 'Web Components in Action' allowing me to produce reuseable components to use across my websites. Python and Rust are two new languages I am learning. Python for all the Rasberry Pi projects and Rust as it seems to be emerging as a trending topic both in terms of performance and simplicity.
Back to project blog contentsWelcome Message
Welcome to my project blog. I will be posting updates on my projects here. This blog was officially started in January 2023. I will be updating it with earlier projects as I get time.
Back to project blog contents