Trådlös CO2 sensor med graf

Detta blir ett lite större projekt där en micro:bit mäter CO² och skickar detta trådlöst till andra micro:bits som kan visualisera detta med en ledstrip eller som en graf på en dator.

Detta projekt är inspirerad av detta exempel.

Viktigt: Se till att aldrig få kortslutning mellan sladdarna. Täck över alla krokodilklämmor innan du sätter på strömmen. Jag har en sensor som beter sig konstigt, och jag misstänker att det är på grund av kortslutning.

Vad du behöver

  • 2 eller mer micro:bits med USB-sladd
  • GSS CO² sensor [Länk 162$]
  • 4 han-hona prototypsladdar
  • 4 eller 7 sladdar med krokodilklämmor
  • (valfri) liten ledstrip av valfri längd (t.ex. 8 pixels) och form

Koppla upp sensorn

Nu ska vi koppla fyra sladdar mellan vår sensor och micro:bit. Håll upp sensorn så att du tittar på baksidan och pinnarna finns längst upp (se bilden).

Nu ska vi koppla in sladdarna som i bilden. Varje sladd är en kombination av en hona-hane prototypkabel och en sladd med krokodilklämmor. Se till att inte få kortslutning mellan alla sladdar för då kan sensorn gå sönder. Se till att täcka över alla krokodilklämmor innan du sätter på strömmen.

  • Pinnen längst ner till vänster på sensorn kopplas till GND på micro:bit
  • Andra pinnen från vänster på sensorn kopplas till 3V på micro:bit
  • Tredje pinnen från vänster på sensorn kopplas till pin 0 på micro:bit
  • Fjärde pinnen från vänster på sensorn kopplas till pin 1 på micro:bit

Gröna och gula sladden används för att skicka data mellan sensorn och micro:bit via ett sett att kommunicera som kallas seriell kommunikation (Engelska: serial communication). Via gula sladden går data från micro:bit till sensorn, via gröna sladden går data från sensorn till micro:bit.

Programmera sensor micro:bit

Gå in på makecode.microbit.org och skapa ett nytt projekt. Det första vi behöver är att lägga till ett tillägg som gör det enkelt för oss att använda sensorn. Scrolla ner i menyn och klicka på Avancerat och scrolla sen ner och klicka på tillägg. Sök på cozir och klicka på tillägget Cozir för att lägga till den (Mer info om den här). Du får nu en ny kategori i menyn som heter Let’s talk science!. Där hittar vi block som vi kan använda för att läsa ut mätvärden från vår sensor.

För att kunna prata med vår sensor från micro:biten behöver vi ställa in micro:bit så att den gör sin seriella kommunikation över pins 0 och 1, istället för det standard läget där det går över USB-sladden. I menyn, under Avancerat hittar du kategorin Seriell. Därifrån tar vi det stora blocket som börjar med Seriell omredigera till.. och drar det till vid start. Här fyller vi i att TX=P0 (micro:bit skickar från pin 0), RX=P1 (micro:bit tar emot på pin 1), och överföringshatighet=9600 (hur snabbt sensorn och micro:bit ska prata). För att ge micro:bit lite tid att ställa in detta lägger vi också till en paus av 500 millisekunder (=en halv sekund) från Grundläggande.

serial.redirect(
    SerialPin.P0,
    SerialPin.P1,
    BaudRate.BaudRate9600
)
basic.pause(500)

Länk till koden.

För att testa att sensorn fungerar ska vi nu skriva kod så att vi kan visa upp ett värde när vi trycker på A-knappen. Dra ut ett när knapp A trycks-block från Input. I den lägger vi ett visa siffra-block från Grundläggande. Vilken siffra vill vi visa upp? Mätvärden från vår sensor. Den hittar vi som ett CO2 (PPM)-block från den Let’s Talk Science! kategorin.

serial.redirect(
	SerialPin.P0,
	SerialPin.P1,
	BaudRate.BaudRate9600
)
basic.pause(500)
input.onButtonPressed(Button.A, function () {
    basic.showNumber(COZIR.Co2())
})

Länk till koden.

Ladda ner koden till din micro:bit och tryck på A-knappen. Du borde nu se ett siffra som kan vara allt från ett tiotal till flera tusental ungefär. Om du bara får en nolla hela tiden kan det betyda att något gick fel.

Nu vi vet att sensorn fungerar ska vi få denna micro:bit att skicka ut värdena till andra micro:bit. För detta använder vi radiofunktionen. Först ska vi ställa in på vilken kanal vi ska sända. På micro:bit kallas detta för grupp. (Du kan tänka dig på samma sätt att man kan lyssna på olika radio kanaler på en bilradio genom att välja frekvens.) Om du sänder på samma grupp som någon annan nära dig kan det bli förvirrande resultat. Dra ut blocket radio ställ in grupp från radio och välj ett siffra mellan 0 och 255. Kom ihåg vilken grupp du använder, vi behöver ställa in vår andra micro:bit senare på samma grupp.

Nästa steg är att skicka mätvärden. Dra ut radio sänd nummer från radio och lägg den i för alltid-loopen. Numret vi vill skicka är vår CO² värdet. Dra ut det blocket från Let’s Talk Science och lägg den i sänd nummer-blocket. För att inte bombardera andra micro:bit med för mycket data i kort tid kan vi lägga till en liten paus i för alltid-loopen. Du kan sätta den till 5 millisekunder. Nu är vår kod för denna micro:bit färdig. Glöm inte att ladda upp den till din micro:bit.

input.onButtonPressed(Button.A, function () {
    basic.showNumber(COZIR.Co2())
})
serial.redirect(
    SerialPin.P0,
    SerialPin.P1,
    BaudRate.BaudRate9600
)
basic.pause(500)
radio.setGroup(58)
basic.forever(function () {
    radio.sendNumber(COZIR.Co2())
    basic.pause(5)
})

Länk till koden.

Koppla in ledstrip

Nu ska vi bygga en micro:bit som visualiserar värdet med hjälp av en liten ledstrip. I detta exempel använder jag en strip av 8 pixlar. Det finns varianter i olika längder och former, så din kanske ser lite annorlunda ut. Tänk på att en micro:bit inte kan leverera ström till för många pixels samtidigt från sitt 3V pin. Rekommendationen är att inte ha mer än 8 om man ger ström till din ledstrip från denna pin.

Koppla upp plus från din ledstrip till 3V pin på micro:bit. (Denna kan kallas +, vcc, 5v, eller liknande på din ledstrip). GND (=jord) kopplas till GND på micro:bit. Data sladden (Din) kopplar du till pin 0 på micro:bit (om du väljer en annan pin, tänk på att det stämmer överens med din kod).

Programmera ledstrip micro:bit

För att styra vår ledstrip behöver vi lägga till tillägget Neopixel. När du scrollar ner och går in till tillägg visas den där i listan utan att man behöver söka.

Vi börjar med att berätta till vår micro:bit att den har en ledstrip kopplat till sig. Från Neopixel dra ut Sätt strip till Neopixel … och lägg det i vid start eftersom vi bara behöver göra det en gång. Fyll i på vilken pin du har kopplat din ledstrip (pin 0) och hur många pixels den har (8).

let strip = neopixel.create(DigitalPin.P0, 8, NeoPixelMode.RGB)

Länk till koden.

Nu ska vi tända ledstrippen baserad på vilket mätvärde vi tar emot. Lägg ett radio ställ in grupp-block i vid start och fyll i det gruppnummer som du valde tidigare. Dra ut ett när radio mottages receivedNumber-block från radio och lägg det nånstans på arbetsytan. Detta block kommer köras igång varje gång vi tar emot ett värde via radion. Värdet vi får ligger då i en variabel som heter receivedNumber. Det finns många olika sätt att visualisera data med en ledstrip. Vi kommer nu använda ett enkelt sett som är inbyggd som ett block. Du kan såklart också hitta på dina egna idéer. Från Neopixel dra ut strip show bar graph och lägg den i radio blocket. Som första siffran i detta ska vi fylla i den data vi tar emot. Hitta receivedNumber från variabler och lägg den där. Andra siffran använder vi för att ställa in högsta värdet på vår skala. Ett CO² värde av 10.000ppm är ganska högt, så vi kan ta den som vår max. Ppm står för parts per million (antal per miljion).

radio.onReceivedNumber(function (receivedNumber) {
    strip.showBarGraph(receivedNumber, 10000)
})
let strip: neopixel.Strip = null
strip = neopixel.create(DigitalPin.P0, 8, NeoPixelMode.RGB)
radio.setGroup(58)

Länk till koden.

Visa data som graf på datorn

Nu ska vi visualisera data som en graf i makecode editorn på din dator. Det första vi behöver är att du gör detta i chrome webbläsaren. Denna nya teknik fungerar inte i andra webbläsaren (i dagsläget).

Nästa steg är att det som kallas för firmware på din micro:bit är uppdaterad till en tillräcklig ny version. Firmware är den koden som körs som en grundläggande program på din micro:bit för att göra det möjligt att köra kod som du skriver själv. Det är lite jämförbart med att din dator har ett operativ system som gör det möjligt att man kan köra vanliga program som till exempel en text editor eller webbläsare.

För att kolla vilken version som körs på din microbit, öppna utforskaren och gå in på din micro:bit. Där hittar du en textfil som heter details.txt. Öppna den och sök efter en rad där det står version: 0123 eller Interface version: 0123. Om din version är 0249 eller högre behöver du inte uppdatera den. Du kan dubbelkolla att det då finns ordet webUSB på en rad som handlar om USB Interfaces. Om din versionsnummer är lägre får du följa stegarna för att uppdatera firmware.

Uppdatera micro:bit firmware

  1. Gå till denna länk, och ladda ner senaste firmware. Detta är en .hex fil som du sparar någonstans på din dator.
  2. Koppla ut din micro:bit.
  3. Medans du håller ner reset knappen på baksidan av din micro:bit, kopplar du den in till din dator igen.
  4. Nu ska du i din utforskare se en enhet som heter MAINTENANCE istället för MICROBIT.
  5. Kopiera den nedladdade filen till denna enhet.
  6. Så fort du har gjort det kommer den att uppdatera sig och starta om automatiskt (och heta MICROBIT igen). Nu är du färdig med uppdateringen.
  7. Om du vill kan du kolla vilken version du nu har, på samma sett som innan.

Paira ihop dator och micro:bit

Nu när vi har en micro:bit med en uppdaterad firmware får vi nya spännande möjligheter.

Koppla in din micro:bit med USB-sladden. Klicka på kugghjulsikonen lägst upp till höger i editorn, välj Pair device och tryck på gröna Pair device-knappen. I det fönstret som nu dyker upp ska du se en enhet, som är din micro:bit. Selektera den och välj connect. Du borde se en text (som försvinner) som säger att du har pairad ihop dig med din micro:bit.

Det första coola vi kan göra nu är att så fort du trycker på Ladda ned-knappen går din kod direkt till din micro:bit. Då slipper du alla steg med att först ladda ned till din dator och sen flytta över filen. På det sättet kan du spara massa med tid (och fel när man laddar upp fel fil)!

För det andra coola, vilket är att visa upp en graf på din dator, behöver vi lägga till lite kod. Du kan antingen fortsätta från den micro:bit som har en ledstrip, eller börja med en ny. Det vi behöver ha kvar/kopiera från förra steget är radio ställ in grupp och när radio mottages. (Du kan lämna kvar ledstrip koden utan problem.)

radio.onReceivedNumber(function (receivedNumber) {
	
})
radio.setGroup(58)

Vad vi nu vill lägga till är att vår micro:bit börjar skicka mätvärdena till vår dator, via USB-sladden. Här kommer vi använda samma teknik som vi i början användde för att prata mellan CO² sensorn och micro:bit: seriell kommunikation. Denna gång behöver vi inte ställa in på vilka pinnar det ska hända, eftersom det är standard läge att göra det över USB-sladden. Vi kan helt enkelt direkt börja skicka data. För att få en graf i vår editor behöver vi in bara skicka vårt mätvärde, men också en ”enter”, det vill säga ett karaktär som betyder att det var slutet på raden. Så vi drar ut blocket seriell skriv rad och lägger det i när radio mottages-blocket. Värdet vi vill skicka är variabeln receivedNumber, så den drar vi ut från variabler kategorin och lägger in i seriell blocket. Nu är koden klar. Ladda upp den!

 radio.onReceivedNumber(function (receivedNumber) {
    serial.writeLine("" + receivedNumber)
})
radio.setGroup(58)

Länk till koden.

Se till att också ha din micro:bit med sensor igång, så att den skickar ut data. Så fort din andra micro:bit börjar tar emot data, och skickar vidare det till din dator med seriell kommunikation via USB-sladden ska du se den här knappen i din editor:

Tryck på knappen och du borde se en graf med realtids data från din sensor!

Testa att blåsa lite på din sensor för att påverka CO² värdet, och se hur grafen ändras! Vilka experiment kan du hitta på med detta? Testa att trycka på den blåa knappen upp till höger. Där laddar du ner all data som har passerats grafen som en .csv fil, vilket du kan öppna i excel eller liknande program för att göra grafer av och analysera data.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *