March 2021

DIY Geiger Counter  Python Script

DIY Geiger Counter

After watching HBO's Chernobyl Series and stumbling upon this awesome article about someone building a steampunk desktop background radiation monitor I was inspired to build a radiation monitor myself. I'm aleady being using a Raspberry PI with pi-hole so I only needed to buy a a radiation detector from Amazon UK.

61Slv1uad0L-AC-SL1000.jpg

The following image shows to connect the pi with the Geiger-Counter-RadiationD-v1.1-CAJOE board.

pi-geiger-simple.png
How it works can be read here. Essentially there is a J305 pulse halogen tube connected to an Arduino board that will measure gamma rays from 20mR/h to 120mR/h and beta rays from 100~1800.

We can access the raspberry pi pins with the GPIO API. If we run pinout we see the following pin configurations.
pinout.png
The red cable goes on pin 2 and the black cable goes to pin number 6. Finally the green cable goes to pin number 7 which we use in our python script to count and measure pulse events which can we can then multiply with the J305 tube usvh ratio constant. Et voilà my living room has a background radiation between 0.13 and 0.35 µSv per hour.  
Screenshot-2021-03-28-at-154935.png

Is that a lot? Not really. 0.1 μSv is also known as BED (Banana Equivalent Dose)

Here is a great video to get radiation into perspective:

cURL pushes for Firebase Cloud Messaging (FCM) and Huawei Cloud Messaging (HCM)

MVP vs MVVM vs MVI

Short summary of this really well written article:

Pattern overview

MVP, MVVM, and MVI are some of the common patterns in Android and they can broadly be thought of as different flavours of the same core concept — abstracting logic from the UI into classes without references to Android. The main way in which they differ is how those classes accept their inputs and how they then output updates to the UI.

Generally speaking the goal is to separate concerns and have a Unidirectional Data Flow.


MVP

The defining feature of MVP is that data is communicated back to the view imperatively.


MVVM

MVVM differs from MVP is in how data is communicated back to the view. Rather than imperatively calling the view, in MVVM changes are described by data which are then observable by the view. The UI can then reactively re-compose itself based on the new data.


MVI

This is a very similar pattern to MVVM, with some important differences. In many ways it’s a merging of MVVM & Redux. MVI pre-defines a selection of events the ViewModel handles and the view publishes a stream of these events as they happen. But the major difference is communication back to the view. Whereas in MVVM there is usually a separate publisher for each piece of data, in MVI a single object defining the entire state of the view is published. Often there’s a section of MVI which follows Redux style reducing.